C语言学生信息管理系统.docx
- 文档编号:26927871
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:26
- 大小:41.71KB
C语言学生信息管理系统.docx
《C语言学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《C语言学生信息管理系统.docx(26页珍藏版)》请在冰豆网上搜索。
C语言学生信息管理系统
1・课程设计目的和要求(一级标题)。
2
2.课程的主要内容。
2
3.实践要求:
2
4.课程设计题目描述和要求。
3
5.程序代码。
3
(1)•文件头部,对函数要调用到的系统函数的声名。
3
(2).定义无空函数。
4
(3).主函数。
5
(4).显示菜单函数。
5
(5).输入函数,并把输入的信息读入文件。
7
(6).显示函数,对学生信息的显示。
8
(7)•增加函数(增加学生的信息)。
9
(8).删除函数。
11
(9).删除函数(按学号査找删除)。
11
(10).删除函数(按姓需査找到后删除)。
13
(11).修改(详细对学生信息的修改)。
14
(12)-.统汁(将学生的信息全部显示岀来,并判断哪个学生不极格和不极格的总人数,
并将它显示出来)。
16
(13).对学生信息的查找。
18
(14)査找函数(用学号进行查找)。
18
(15).査找(用姓名查找)。
19
(16).排序函数。
20
(17).排序函数(按学号排序)。
21
(18).排序函数(按总分排序)。
22
(19).学生信息的恢复(可恢复到当初输入的状态)。
23
(20)•保存函数。
24
(21).退出函数。
24
6.总结25
7.参考书目:
25
1/25
1・课程设计目的和要求(一级标题)
本课程设讣是针对刚学完C语言的计算机类专业学生的课程设计教学。
C语言是学生的第一门计算机高级语言课程,课程结束后,学生已经对C语言程序设讣有了较全面的了解,但接触的基本上是为了阐述相关概念或知识点而列举的示例,都是较小的程序,程序功能单一,因此缺乏整体观点和编写一个具体实用的综合程序的思想。
本课程设计的U的是要培养学生初步具有系统分析思想,并能利用开发工具开发一个简单实用的综合程序。
为学生提供了一个既动手乂动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力,提高学生适应实际,实践编程的能力。
要求学生以TC或VC为开发工具,完成一个小型应用软件的设计和开发。
进一步提高学生进行程序设计的能力。
2.课程的主要内容
(1)选题
(2)进行系统分析
(3)程序设计实现
(4)系统测试
(5)编写、上交课程设计报告
3.实践要求:
(1)系统设计要实用。
(2)对系统进行功能模块分析、控制模块分析正确,要画出主要功能模块的流程图。
(3)编程简练,可用,界面友好,功能全面。
(4)课程设计报告、流程图要清楚。
4.课程设计题目描述和要求
本课程设讣选题为“学生成绩管理系统”。
系统主要功能是管理学生成绩信息,要求能实现学生成绩添加、删除、修改、查找,总分、平均分讣算、按成绩排序等功能。
……
经过分析,确定本系统结构图如下图所示:
图1系统结构图
5・程序代码。
⑴.文件头部,对函数要调用到的系统函数的声名.
include
#include
#include
#include
#defineN20/*定义宏N为学生结构体的总数可
structstudent/*这义学生结构体*/
longnum;charname[20];charsex[4];
intscore[3];
intsum;
intave;
};
structstudentstu[N];
intt=l,pl=O;
/*定义两个全变量,学生总数变量和增加的学生变量勺
(2).定义无空函数.
voids();
/*以下为定义无参函数*/
voidinput();
/*输入*/
voidshow();
/*显示*/
voidincrease();
/*增项*/
voiddelet();
/*删除*/
voidamend();
/*修改*/
voidpreside();
/*统计*/
voidfint();
/*查找*/
voidarrange();
/*排序*/
voidresume();
/*恢复*/
voidsave();
/*保存*/
voidoutput();
/*退出*/
voiddeleta();
/*学号查找后删除*/
voiddeletb();
/*姓名查找后删除*/
voidfinta();
/*学号查找*/
voidmain()/*主函数*/
{
intpasword;/*这义密码*/
system(nclsH);
printf("\n\n\n\n\n\n\n\n\n\t\t\t请输入密码,密码为:
123456.\n");
scanf("%d",&pasword);/*输入密码*/
if(pasword==123456)
s();
else
{
printf("密码有误,请重新输入An");
getch();
main();
)
}
⑷•显示菜单函数.
voids()
{intselect,w;chark;/*定义变量*/
system(HclsH);
printf(-C语言课程设计An“);/*以下显示主菜单*/
printf(Hl.录入・\n2・显示・\n3・增项An4•删项・\n5•修改・\n6・统i|\\n7.查找・\n&排序An9・恢复AnlO•保存Anll.ig出AnJ;
printf("\»选悸项目执行相应功能.”);/*以下是显示编;定人的姓名。
*/printf("\n\n\t\t\t\t\txxx软件⑴班2\n\n\n\t\t\t\t\txxx软件
(2)班2\n");scanf(H%dH,&select);
switch(select)
{case1:
input();break;/*以下是选惮执行菜单上的哪个函数。
*/
case2:
show();break;
case3:
increase();break;
case4:
delet();break;
case5:
amend();break;
case6:
preside();break;
case7:
fint();break;
case8:
arrange();break;
case9:
resume();break;
case10:
save();break;
case11:
output();break;
default:
w=l;
}
if(w=l)
(printf("输入有误,按任意键重新选烽An");
k=getchar();
getch();
s();
}
}
(5).输入函数,并把输入的信息读入文件.
voidinput()〃该函数为输入函数,并把输入的信息读入文件,以便再恢
复。
{FILE*fp;
intx,count=0,i;charw,r[20],o;structstudent*p;/*定义变量和指向结构体的指针变量。
*/
system("cls");
p=stu;
printf(”\t\t\t学生信息的录入An”);
do{pl++;
printf(“请输入第%d个学生的信息An\n“,t);/*逐个步骤的实现学生信息的输入。
*/
printf("学号:
\n");scanf("%ld",&p->num);printf("\n");
printf("姓名:
\n");scanf("%s'\p->name);printf("\nM);
printf("性别:
\n");gets(r);gets(p->sex);printf("\n");
printf(“三门成绩:
1.高数.2.C语言.3.英语An“);
for(i=0;iv3;i++)
scanf("%d",&p->score[i]);
p->sum=p->score[0]+p->score[l]+p->score[2];
p->ave=p->sum/3;
printf(”\n\n是否要继续输入学生信息,如果是请按y;不是请按n.\n“);
o=getchar();/*接收回车键。
*/
w=getchar();
if(w=yIIw=Y)/*选惮是否输入更多的学生*/
{
t++;
x=l;
P++;
else
x=0;
)while(x==l);
if(w='n'IIw=='N')
{
if((fp=fopen("stulist",”wb”))=NULL)
{
printf(Hcannotopenthe
return;
}
for(i=0;ivN;i++)/*实现对学生信息读入文件,以便恢复到输入状态。
*/
if(fwrite(&stu[i],sizeof(structstudent),l,fp)!
=l)
printf("error.\n");
fclose(fp);
printf("按任意键返回An");
getch();
s();
}
}
(6).显示函数,对学生信息的显示。
voidshow()〃显示函数,对学生信息的显示。
{intj,i;
system("cls");
printf("\t\t\t学生成绩显示An\n”);/*以下实现显示。
*/
printf(,,%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\nH,"学号",“姓名性别”,”高数
",”C语言英语”,”平均分“,”总分”);
for(i=0;i {printf("%-81d%-8s%-8s",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<3;j++) printf("%-8d",stu[i].score[j]); printf("%-8d",stu[i].ave); printf("%-8d",stu[i].sum); printf("\n\n"); ) printf("\n按任意键返回.\n”); getch(); s(); } ⑺•壊加函数(増加学生的信息). voidincrease()〃增加学生的信息。 {inti,x;chara,w;structstudent*p; system("cls"); printf("\t\t\t你增加的信息会加到其它学生的后面An”); p=stu+t; do/*以下是逐个学生信息的增加。 */ { printf(“请输入第%d个学生的信息.\n\n",t+l); printf(”学号: \n”); scanf(',%ld,\&p->num); printf(n\n"); printf(”姓名: \nj; scanf(H%s,\p->name); printf(”\n“); printfC*性别: \n“); scanf(H%s,\p->sex); printf(M\nn); printfC*三门成绩: 1.高数.2.C语言.3.英语An”); for(i=0;i<3;i++) scanf(n%dM,&p->score[i]); for(i=0;i<3;i++) p->sum=p->score[0]+p->score[l]+p->score[2]; p->ave=p->sum/3; a=getchar(); printfC'Xii是否要继续输入学生信息,如果是请按y;不是请按n.\ii\n");w=getchar();p++;t++;/*判断是否继续对学生信息的增加。 */ if(w='y'llw=='Y') { x=l; ) if(w==In,llw==,N,) { x=0;break; ) }while(x=l); if(x==O) { printf(”\n”); printfC*按任意键返回.5”); getch(); s(); ⑻.删除函数。 voiddelet()〃删除函数。 {inti; system("cls"); printf("\t\t\t请选烽用哪种方式删除学生信息An“); printf("1.学号An2.姓名An"); scanf(“%d”,&i);/*选悸用哪种方式对学生信处进行删除。 */ switch(i) { case1: deleta();break; case2: deletb();break; default: printf("输入有误,请按任意键返回An"); } getch(); s(); } (9).删除函数(按学号査找制除)。 voiddeleta()〃删除函数(按学号查找删除)。 {longnum_a;intz,j;charc,x,m,b,o;structstudent*p;/*定义变量,接收字符。 */system("cls"); do {printf("请输入要删除的学号An”); scanf("%ld,',&num_a);/*输入学号。 */ for(p=stu;p */ if(p->num==num_a)break; else printf("不存在该学生,请按任意键返回An”); getch(); s(); } printfC*你要删除的学生为显示要删除的信息。 */printf("%-81d%-8s%-8s',,p->num,p->name,p->sex); for(j=0;j<3;j++) printf("%-8d",p->score[j]); printf("%-8d'\p->ave); printf("%-8df',p->sum); printf("你确定要删除吗? 如是请输入y;不是请输入n.\n“); x=getchar();/*接收回车键。 */ c=getchar(); if(c=='y,llc==,Y,)/*判断是否要删除该学生的信息。 */ {for(;p *p=*(p+l);t-; ) if(c=='n'll,N,)z=0; printf(“是否要继续删除: 是请按1.不是请按2.\n”);m=getchar();b=getchar();o=getchar(); )while(b=,y,llb=,Y,);/*是否继续删除学生信息*/printfC系统已为你删除信息,请按任意键返回An”);getch(); s(); (10)•删除函数(按姓名査找到后删除)O voiddeletb()〃删除函数(按姓名查找到后删除)。 */ {charname_b[20],c,mbr,d;intj,z;stnjctstudent*p; system(”cis"); do {printf("请输入要删除的姓名An”); gets(name_b);r=getchar();/*输入姓名。 */ for(p=stu;p if(strcmp(p->name,name_b)==O)/*判断是否存在该学生。 */ break; else {printf("不存在该学生,请按任意键返回An”); getch(); s(); } printfC"你要删除的学生为: \n”);/*显示要删除的学生。 */printf("%-81d%-8s%-8s",p->num,p->name,p->sex); for(j=0;j<3;j++) printf("%-8d",p->score|j]); printf("%-8d",p->ave); printf("%-8d",p->sum); printf("你确定要删除吗? 如是请输入y;不是请输入n.\n"); c=getchar(); if(c=yllc==Y)/*判断是否确定要删除。 */ {for(;p *p=*(p+l); if(c=='n'll,N,)z=0; printfC1是否要继续删除: 是请按y.不是请按n.\n”); d=getchar();m=getchar();b=getchar(); }whilc(b='y'llb='Y'); printf(”请按任意键返回.\n"); getch(); s(); } (11).修改(详细对学生信息的修改)。 voidamend()〃修改(详细对学生信息的修改)。 {longj;inti,z,r=t;charc,d,e,f,q,u,l,v,m,k;structstudent*p; system("cls"); printf("请输入要修改学生的学号: \n\n"); scanf(”%ld”,&j);/*输入要修改学生的学号。 */ for(p=stu;p if(p->num==j)/*判断是否存在该学生。 */ break; elser—; if(r==O) {printf(“你输入的学生不存在,请按任意键返回An“); getch(); s(); } printf("\n你要修改的学生为: \n"); printf("%-81d%-8s%-8s,\p->num,p->name,p->sex);/*将要修改的学生信息的显示。 */ for(j=0;j<3;j++) printf(H%-8d”,p->score[j]); printf("%-8d",p->ave); printf(”%・8d",p・>sum); printf("\n\n是否要修改学号: 是请按y;不是请按n.\n\n"); I=getchar(); c=getchar(); if(c==lylllc==YI)/*以下是判断对学生的哪一个信息的修改,并选烽是否进行修改。 */ { printf("请输入正确的学号: \n\n"); scanf("%ld",&p->num); } if(c==,n,llc=,N,) z=l; printf(M是否要修改姓名: 是请按y;不是请按n.\n\n”); q=getchar(); d=getchar(); m=getchar(); if(d=yild='Y') {printf("请输入正确的姓名: \n"); scanf(,'%s",p->name);u=getchar(); } if(d='n'llc=N) z++; printfC'Xii是否要修改性别: 是请按y;不是请按n.\n\n"); e=getchar();k=getchar(); if(e==,y,lle=='Y,) { printf("请输入正确的性别: \n“); scanf("%s",p->sex); if(e==Nlle==,n,) z++; printf("\n是否要修改三门成绩: 是请按y;不是请按n.\n\ii"); f=getchar(); if(f==,y,||f==,Y,) {printf("请输入正确的三门成绩: ”); for(i=0;i<3;i++) scanf(H%dn,&p->score[i]); p->sum=p->score[0]+p->score[l]+p->score[2];p->ave=p- >sum/3; } v=getchar(); if(f='n'llf='N'){printf("请按任意键返回.\n“);getch();s(); } } (12)•统计(将学生的信息全部显示出来,并判断哪个学生不极格和不极格的总人数, voidpreside()〃统计(将学生的信息全部显示出来,并判断哪个学生不极 格和不极格的总人数,并将它显示出来)。 {inti、j,o=0,b=10,r=60;structstudent*p; system(HclsH); printf("\t\t\t学生信息统计.\n\n"); printf(”%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n“,”学号”,”姓名",“性别”,”拓数”,”C语言”,"英语”,”平均分总分”); for(p=stu;p ♦/ {printf("%-81d%-8s%-8s",p->num,p->name,p->sex); for(j=0;j<3;j++) printf("%-8d",p->score[j]); printf("%-8d",p->ave); printf("%-8d",p->sum); printf("\n\n”); I printf(H\n\n\nn); pnntf(,,%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\H";'学号”,”姓名”,“性别”,”高数 ”,”C语言英语”,”平均分”,”总分“); for(p=stu;p {for(i=0;i<3;i++) if(p->score[i] */ {b=b-l;o=o+1; printf("%-81d%-8s%-8s",p->num,p->name,p->sex);/*以下是显示不极格的学生。 */ for(j=0;j<3;j++) printf(H%-8d'\p->score|j]); printf("%-8d",p->ave); printf(,,%-8d,\p->sum); printf(n\n\nH);break;} } if(b==10)printf("\n\n班上所有的人都通过考试An\n”); else if(b<10)printf("\n以上为不极格的同学,全班不极格的人数为: %d人.\ii\n",o); /*显示不极格学生的总人数。 */ printf(H\nH); printf(”统计完成,请按任意键返回An“); getch(); s(); (13).对学生信息的査找。 voidfint()〃对学生信息的查找。 {intLm;chare; system(HclsH); printf("\t\t\t请选择用哪种方式进行查找An”); printf("1.学号An2.姓名An”); scanf("%d",&i);/*输入是用姓名查找还是用学号查找。 */switch(i) {case1: finta();break; case2: e=getchar();fintb();break; default: m=l; } if(m==l) printf("输入有误,请按任意键返回.\n"); getch(); s(); } (14)査找函数(用学号进行査找)。 voidfinta()〃查找函数(用学号进行查找)。 {intij=t;longnum_a;structstudent*p;chara,b;system(HclsH); printf("\t\t\t请输入要查找的学生学
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 信息管理 系统