版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、课程设计的内容
(1)信息维护:
要求:学生信息数据要以文件的形式保存,能实现学生信息数据
的维护。此模块包括子模块有:增加学生信息、、删除学生信息、修改
学生信息
(2)信息查询:
要求:查询时可实现按姓名查询、按学号查询
(3)成果统计:
要求:A输入随意的一个课程名(如数学)和一个分数段(如
60-70),统计出在此分数段的学生状况。
(4)排序:能对用户指定的随意课程名,按成果升序或降序排列学生
数据并显示排序结果(运用表格的形式显示排序后的输出结果)
(运用多种方法排序者,加分)
(二)其它要求:
(1)只能运用C/C++语言,源程序要有适当的注释,使程序简洁阅
读
(2)至少采纳文本菜单界面(假如能采纳图形菜单界面更好)
(3)学生可自动增加新功能模块(视状况可另外加分)
(4)写出课程设计报告,具体要求见相关说明文档
一、课程设计的要求及数据
1、进一步驾驭和利用C语言进行程设计的实力;
2、进一步理解和运用结构化程序设计的思想和方法;
3、初步驾驭开发一个小型好用系统的基本方法;
4、学会调试一个较长程序的基本方法;
5、学会利用流程图或N-S图表示算法;
6、驾驭书写程序设计开发文档的实力。
三、课程设计应完成的工作
1、编写完成相应题目的程序;
2、编写课程设计报告,课程设计报告的内容应包括以下6个部分:
1)需求分析:包括设计题目、设计要求以及系统功能需求分
析;
2)总体设计:包括系统总体设计框架和系统功能模块图;
3)具体设计:包括主要功能模块的算法设计思路以及对应的
工作流程图;
4)调试分析过程描述:包括测试数据、测试输出结果,以及
对程序调试过程中存在问题的思索(列出主耍问题的出错现
象、出错缘由、解决方法及效果等,适当的包含结果截图);
5)总结:课程设计完成了哪些功能,有没有什么扩展功能?
还有哪些地方须要改进?课程设计过程中的学习体会及收
获、对本次课程设计的相识以及自己的建议等内容;
6)附录:主要源程序代码,含必要的注释。
3、答辩:在试验室建立程序运行的环境,并在指导老师的监督
下,独立解
决问题、运行程序和回答老师提出的问题。
目录
1设计目的及要
求.................................................P4
2总体设
计.......................................................P4
3具体设
计.......................................................P5
3.1功能模块设
计.................................................P5
XX功能模块(可选).......................................
P5
YY功能模块(可选).......................................
P6
ZZ功能模块(可选).......................................
P7
3.2数据结构设
计P8
4调试分
析......................................................P9
4.1结构
体......................................................P9
4.2链
表........................................................PH
5遇到的问题及解决方法分
析P12
6总
结...........................................................
-P13
7源文
件
P13
7.1链
表...........................................................P13
7.2结构
体.........................................................P28
1、目的及要求
一目的:编制一程序实现对学生成果的管理,让自己既动手又动脑,
独立实践,将课本上的理论学问和实际应用问题进行有机结合,熬炼
自己分析、解决实际问题的实力,提高自身项目开发及程序调试实力。
二要求:
1、整个系统均用C语言实现;
2、利用指针、结构体、链表来实现学生成果的数据结构设计;
3、系统具有输入、显示、查询(查询时可实现按姓名查询、按学号
查询)、删除、排序、插入,保存、读取基本功能;
4、系统的各个功能模块都用函数的形式来实现;
5、学生信息数据要以文件的形式保存,能实现学生信息数据的维护。
此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息;
6、可以输入随意的一个课程名(如数学)和一个分数段(如60-70),
统计出在此分数段的学生状况;
7、能对用户指定的随意课程名,按成果升序或降序排列学生数据并
显示排序结果;
8、可自动增加新功能模块;
9、可以将学生信息从文件中读取出来。
2总体设计
1、主函数main()
利用if-else,While循环语句和switch。实现各函数的调用,系统
依据输入的数字选项来调用相应的函数。
2、菜单选择函数voidmenu。;
这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有
显示系统的13大功能,依据每个功能前面的序号进行选择。等执行
完每一个函数功能后,按任'0'键回到主界面也要通过这个函数提
示来实现!
3、自定义函数voidprintstart()voidWrong()>voidNofind()
voidprintcO、voidprinte(Node*p)
用voidWrong。来提示输入错误,用voidNofind()提示没有找到学
生资料,用voidprintcO来输出中文,用voidprinte(Node*p)
来输出中文。
main()
voidAdd(Link----1)
voicMaths(Link1)
voidQur(Link1)
voidEnglish(Link1)
voidDel(:Link1)
voicselect(Link1)
voidModify(Linl1)voic
Save(Link1)
voidDisp(Link1)
voicmenu()
vcid___________TongjLtLink1)
voicprintcO
voidChinese(Link1)
voicprinte(Node*p)
3具体设计
3.1功能模块设计
排序数学成果功能模块
函数voidMaths(Link1)
该函数用于对数学成果进行降序,11二(Link)mal1oc(sizeof(Node))
用于做新的链表连接,假如原链表为空的话,返回;不为空的话,
p=l->next;建立接点用于保存信息,对指定链表地址进行排序。流
程图如图所示:
显示学生资料功能模块
函数voidDisp(Link1)
该函数负责显示学生资料,这是一个不返同值函数。
算法:先将P结点的指针指向第一个结点,将P结点(即第一个结点)
的数据输出。然后再将p结点的指针指向p指针的的指针(即下一结
点),将P结点(即第一结点)的数据输出。重复执行此步聚直到P指
函数voidDel(Link1)
该函数用于有选择地删除学生资料,假如原来的链表为空的话,会返
回;不为空的话,选择用按哪种类型删除,假如按学号删除,就输入
学号,后推断是否取得地址,取得就执行删除;按名字删除就输入名
字,运行同学号一样。流程图如图所示:
一个结构体变量中可以存放一组数据(如一个学生的学号、姓名、成
果等数据)。一个结构体变量的指针就是该变量所占据的内存段起始
地址。可以设一个指针变量,用来指向一结构体变量,此时指针变量
的值是结构体的起始地址。指针量变也可以用来指向一结构体数组中
的元素。
structstudent
charnum[10];/*学号*/
charname[20];
charsex[4];
intcgrade;
intmgrade;
integrade;
inttotle;
intave;
charneartime[10];/*最近更新时间*/
typedcfstructnode
structstudentdata;
structnode*next;
}Node,*Link;
6总结
经过一个多星期的C语言课程设计,感觉自己收获不少!
首先是:要达到这样的功能,运用链表相当便利,但不简洁理解,所
以在这方面我很了许多的时间看课本,使C语言的学问强化了不少。
其次,在做课程设计的过程中,发觉了平常许多没有留意到的问题,
例如:返回值函数和不返回值函数两者在主函数中的调用是不同
的........
更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,
让我见识到了C语言的重要性。这个学生成果管理系统都是在自己学
问范围内完成的,所以界面清楚简洁,可能不是很好看,但肯定好用!
从这里我也得到一个体会,做一个程序,或者开发一个软件,应当着
重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。
信任这次的课程设计使我的C语言学问扎实了许多。
由于这是第一次进行设计,写文档,难免会写得不好!
7源程序
7.1链表
#include〃stdio.h〃
#include"sldlib.h〃
#include"string.h〃
intshoudsave=0;/**/
structstudent
charnum[10];/*学号*/
charname[20];
charsex[4];
intcgrade;
intmgrade;
integrade;
inttotle;
intave;
charneartime[10];/*最近更新时间*/
typedefstructnode
structstudentdata;
structnode*next;
}Node,*Link;
voidmenu()
y—yi,f
Il*T\*T»*T»*T^*T^#T»*T»*T»
\•
*fsX^**TS*TS*TS^T**lSZ7**Ts*lSZ^**lSI
printfC\tl登记学生资料\t\t\t\t\t2删除学生资料\n〃);
printfC\t3查询学生资料\t\t\t\t\t4修改学生资料\n〃);
printfr\t5显示学生资料\t\t\t\t\l6统计学生资料\n〃);
printf(,z\t7排序语文成果\t\t\t\t\t8排序数学成果\n〃);
printfC\t9排序英语成果\t\t\t\t\tlO选出分段分数\n〃);
printfCXtll保存学生资料\t\t\t\t\tl2帮助信息\t\t\n〃);
printf(/z\t0退出系统\t\t\t\t\t\t\t\n");
-9^py-^^,f
II*7**7%^Tw#TW^T%
«X^.]*\•、
^T**iSZT**TSZT**TS*iS*TSZ^*\I1
voidprintstart()
printf(〃---------
-\n〃);
voidWrong()
printf("\n===》提示:输入错误!\n〃);
voidNofind()
printf(〃\n===>提示:没有找到该学生!\n〃);
voidprintcO/*本函数用于输出中文*/
printf(〃学号\t姓名\t性别语文成果数学成果英语
成果总分平均分、\n〃);
voidprinte(Node*p)/*本函数用于输出英文*/
,z,,
printf(%-12s%s\t%s\t%d\t%d\t%d\t%d\t%d\n)p->data.num,p-
>data.name,p->data.sex,p->data.egrade,p->data.mgrade,p->dat
a.cgrade,p->data.totle,p->data.ave);
Node*Locate(Link1?charfindmess[],charnameornum[])/*该
函数用于定位连表中符合要求的接点,并返回该指针*/
Node
if(strcmp(nameornum,,,numz,)==0)/*按学号查询*/
r=l->next;
while(r!=NULL)
if(strcmp(r->data.num,findmess)==0)
returnr;
r=r->next;
elseif(strcmp(nameornum,"name")=0)/*按姓名查询*/
r=l->next;
while(r!=NULL)
if(strcmp(r->data.name,findmess)=0)
returnr;
r=r->noxt;
return0;
voidAdd(Link1)/*增加学生*/
Node*p,*r,*s;
charnum[10];
r=l;
s=l->noxt;
while(r->next!=NULL)
r=r->next;/*将指针置于最末尾*/
while(1)
printf(〃请你输入学号(以'O'返回上一级菜单:)〃);
scanf(〃%s〃,num);
if(strcmp(num,,/0,,)==0)
break;
whi1e(s)
if(strcmp(s->data.num,num)==0)
printf(〃===>提示:学号为‘%s'的学生已经存在,若要修改请你选
择‘4修改‘!\n”,num);
printstart();
printc();
printe(s);
printstart();
printf(〃\n〃);
return;
s=s->next;
p=(Node*)malloc(sizcof(Node));
strcpy(p->data.num,num);
printf(〃请你输入姓名:〃);
scanf(〃%s〃,p->data.name);
getchar();
printf(〃请你输入性别:〃);
scanf(〃/s〃,p->data.sex);
getchar();
printf(〃请你输入语文成果:〃);
scanf(〃%d〃,&p->data.cgrade);
getchar();
printf(〃请你输入数学成果:〃);
scanf&p->data.mgrade);
getchar();
printf(〃请你输入英语成果:〃);
scanf(〃%d〃,&p->data.egrade);
getchar();
p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle/3;
/*信息输入已经完成*/
p->next=NULL;
r->next=p;
r=P;
shoudsave=l;
voidQur(Link1)/*查询学生*/
intsei;
charfindmess[20];
Node*p;
if(!l->ncxt)
printf(〃\n===>提示:没有资料可以查询!\n〃);
return;
printf(〃\n===>l按学号查找\n===>2按姓名查找\n〃);
scanf(〃%d〃,&sel);
if(sel==l)/*学号*/
printf("请你输入要查找的学号:〃);
scanf(〃%s〃,findmess);
p=Locate(1,findmess,〃num〃);
if(p)
printfC\t\t\t\t查找结果\n〃);
printstart();
printc();
printe(p);
printstart();
else
Nofind();
elseif(sel==2)/*姓名*/
printf(〃请你输入要查找的姓名:〃);
scanf(〃%s〃,findmess);
p=Locate(l,findmess,z/name,z);
if(p)
printf(z,\t\t\t\t查找结果\n〃);
printstart();
printc();
printe(p);
printstart();
else
Nofind();
else
Wrong();
voidDel(Link1)/*删除*/
intsei;
Node*p,*r;
charfindmess[20];
if(!l->next)
printf(〃\。==二〉提示:没有资料可以删除!\口〃);
return;
printf(z/\n=™>l按学号删除\.:=>2按姓名删除\n〃);
scanf(绘d〃,&sel);
if(sel==l)
printf(〃请你输入要删除的学号:〃);
scanf(〃%s〃,findmess);
p二Locate。,findmess,〃num〃);
if(p)
r=l;
whi1e(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n===>提示:该学生已经胜利删除!\n");
shoudsave=l;
else
Nofind();
elseif(sel-2)
printf(〃请你输入要删除的姓名:〃);
scanf(〃%s〃,findmess);
p=Locate(1,findmcss,"name");
if(p)
r=l;
while(r->ncxt!=p)
r=r->next;
r->next=p->next;
free(p);
printf(〃\n===>提示:该学生已经胜利删除!\n〃);
shoudsave=l;
else
Nofind();
else
Wrong();
voidModify(Link1)
Node*p;
charfindmess[20];
if(!l->next)
printf(〃\n===>提示:没有资料可以修改!\n〃);
return;
printf(〃请你输入要修改的学生学号:〃);
scanf(〃%s〃,findmess);
p=Locate。,findmess,^num^);
if(p)
printf(“请你输入新学号(原来是%s):〃,p->data.num);
scanf(〃%s〃,p->data.num);
prinlf(〃请你输入新姓名(原来是%$):〃,p->data.name);
scanf(〃%s〃,p->data.name);
getchar();
printf(〃请你输入新性别(原来是%s):〃,p->data.sex);
scanf(〃%s〃,p->data.sex);
printf(〃请你输入新的语文成果(原来是%(1分):〃,p->data.cgrade);
scanf(飞d〃,&p->data.cgrade);
getchar();
printf(〃请你输入新的数学成果(原来是%(1分)/z,p->data.mgrade);
scanf(〃%d〃,&p->data.mgrade);
getchar();
printf(〃请你输入新的英语成果(原来是%d分)p->data.egrade);
scanf(z/%d",&p->data.egrade);
p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle/3;
printf(〃\n===>提示:资料修改胜利!\n〃);
shoudsave=l;
else
Nofind();
voidDisp(Link1)
intcount=0;
Node*p;
p=l->next;
if(1p)
printf(〃\『二=》提示:没有资料可以显示!\n〃);
return;
printf(/z\t\t\t\t显示结果\n");
printstart();
printc();
printf(〃\n〃);
whi1e(p)
printe(p);
p=p->next;
printstart();
printf("\n");
voidTongji(Link1)
Node*pm,*pe,*pc,*pt,*pa;/*用于指向分数最高的接点*/
Node*r=l-〉next;
if(!r)
printf(〃3===》提示:没有资料可以统计!\n〃);
return;
pm=pe=pc=pt=pa=r;
while(r!=NULL)
if(r->data.cgrade>=pc->data.cgrade)
pc=r;
if(r->data.mgrade>=pm->data.mgrade)
pm=r;
if(r->data.egrade>=pe->data.egradc)
pe=r;
if(r->data.totle>=pt->data.totle)
pt=r;
if(r->data.ave>=pa->data.ave)
pa=r;
r=r->next;
printfC-------------------------------统计结果
---------------------------------\n〃);
printf("总分最高者:\t%s%d分
\n〃,pt->data.name,pt->data.totle);
printf(〃平均分最高者:\t%s%d分
\n〃,pa->data.name,pa->data.ave);
printf(,z英语最高者:\t%s%d分
\n〃,pe->data.name,pe->data.egrade)
printfC数学最高者:\t%s%d分
\n〃,pm->data.name,pm->data.mgrade)r
printf(/z语文最高者:\t%s%d分
\n〃,pc->data.name,pc->data.cgrade);
printstart();
voidChinese(Link1)
Link11;
Node*p,*rr,*s;
ll=(Link)malloc(sizeof(Node));/*用于做新的连表*/
ll->next=NULL;
if(l->next==NULL)
printf(〃\n===>提示:没有资料可以排序!\n〃);
return;
p=l->next;
while(p)
s=(Node*)malloc(sizeof(Node));/*新建接点用于保存信息*/
s->data=p->data;
s->next=NULL;
rr=ll;
while(rr->next!=NULL&&
rr->next->data.egrade>=p->data.egrade)
rr=rr->next;
if(rr->next==NULL)
rr->ncxt=s;
else
s->next=rr->next;
rr->next=s;
p=p->next;
free⑴;
l->next=ll->next;
printf(〃\11===》提示:排序已经完成!\n〃);
voidMaths(Link1)/*对数学排序*/
Link11;
Node*p,*rr,*s;
11=(Link)malloc(sizeof(Node));/*用于做新的连表*/
ll->next=NULL;
if(l->next-NULL)
printf(〃\n===>提示:没有资料可以排序!\n〃);
return;
p=l->next;
while(p)
s=(Node*)malloc(sizeof(Node));/*新建接点用于保存信息*/
s->data=p->data;
s->next=NULL;
rr=ll;
while(rr->next!=NL'LL&&
rr->next->data.mgrade>=p->data.mgrade)
rr=rr->next;
if(rr->ncxt==NULL)
rr->next=s;
else
s->next=rr->next;
rr->next=s;
p=p->next;
free⑴;
l->next=ll->next;
printf(〃\n===>提示:排序已经完成!\n〃);
voidEnglish(Link1)/*对英语排序*/
Link11;
Node*p,*rr,*s;
11=(Link)malloc(sizeof(Node));/*用于做新的连表*/
ll->next=NULL;
if(l->next==NULL)
printf(〃\n===>提示:没有资料可以排序!\n〃);
return;
p=l->next;
while(p)
s=(Node*)malloc(sizeof(Node));/*新建接点用于保存信息*/
s->data=p->data;
s->next=NULL;
rr=ll;
while(rr->next!=NULL&&
rr->next->data.cgrade>=p->data.cgrade)
rr=rr->ncxt;
if(rr->next==NULL)
rr->next=s;
else
s->next=rr->next;
rr->next=s;
p=p->next;
free⑴;
l->next=l]->next;
printf("\n===>提示:排序已经完成!\n");
voidselect(Link1)
inti;
intj,k;
Node*pc=1;〃用于指向分数最高的接点
Node*r=l->next;
if(jr)
printf(〃\n===》提示:没有资料可以筛选!\n〃);
return;
printf(〃输入课程名1,语文2.数学3.英语〃);
scanf(〃/d〃,&i);
if(i==l)
printf(〃请输入筛选分数的上限:〃);
scanf;
printf(〃请输入筛选分数的下限:〃);
scanf(〃%d”,&k);
printf(z,-------------------------------筛选结果
\n〃);
printf(〃学号\t姓名\t性别语文成果数学
成果英语成果总分平均分\n〃);
printstart();
while(r!=NULL)
if(k<=(r->data.egrade)&&(r->data.egrade)<j)
printe(r);
r=r->next;
elseif(i==2)
printf(〃请输入筛选分数的上限:〃);
scanf(〃%d〃,&j);
printf(〃请输入筛选分数的下限:〃);
scanf(〃/d〃,&k);
printf(,z-----------------------------------筛选结果
\n〃);
printf(〃学号\t姓名\t性别语文成果数学
成果英语成果总分平均分\n〃);
printstart();
while(r!=NULL)
if(k<=(r->data.mgrade)&&(r->data.mgradc)<j)
printe(r);
r=r->next;
elseif(i==3)
printf(〃请输入筛选分数的上限:〃);
scanf&j);
printf("请输入筛选分数的下限:");
scanf(〃%d",&k);
printf(,z筛选结果
\n〃);
printf(〃学号\t姓名\t性别语文成果数学
成果英语成果总分平均分\n〃);
printstart();
while(r!=NULL)
if(k<=(r->data.cgrade)&&(r->data.cgrade)<j)
printe(r);
r=r->next;
else
Wrong();
voidSave(Link1)
FILE*fp;
Node*p;
intflag=l,count=0;
fp二fopen(〃c:\\student〃,〃wb〃);
if(fp二二NULL)
printf(〃\n===>提示:重新打开文件时发生错误!\n〃);
exit(1);
p=l->next;
while(p)
if(fwrite(p,sizeof(Node),1,fp)==1)
p=p->next;
count++;
else
flag=O;
break;
if(flag)
printf(〃\n===>提示:文件保存胜利.(有%d条记录已经保
存.)\n〃,count);
shoudsave=0;
fclose(fp);
voidmain()
Link1;/*连表*/
FILE*fp;/*文件指针*/
intsei;
charch;
charjian;
intcount=0;
Node*p,*r;
printf(〃\t\t\t\t学生成果管理系统\n\t\t\t06自动化2班蔡
晓庆3106000849\t\t\t\t\n/z);
1=(Node*)maHoc(sizeof(Node));
l->next=NULL;
r=l;
fp=fopen(〃C:\\student〃,〃wb〃);
loop:menu();
printf(〃请你选择操作:〃);
scanf(〃%d〃,&sel);
if(sel==0)
if(shoudsave==1)
{getcharO;
printf(〃\n===>提示:资料已经改动,是否将改动保存到文件中
(y/n)?\n〃);
scanf(〃%c”,&ch);
if(ch='y'||ch='Y')
Save(1);
printf(〃\n===>提示:你已经退出系统,再见!\n〃);
return;
switch(sei)
case1:Add(1);gotoloop;break;/*增加学生*/
case2:Del(1);gotoloop;break;/*删除学生*/
case3:Qur(1);gotoloop;break;/*查询学生*/
case4:Modify(1);gotoloop;break;/*修改学生*/
case5:Disp(l);gotoloop;break;/*显示学生*/
case6:Tongji(1);gotoloop;break;/*统计学生*/
case7:Chinese(1);gotoloop;break;/*语文排序*/
case8:Maths(1);gotoloop;break;/*数学排序*/
case9:English(l);gotoloop;break;/*英语排序*/
case10:select(1);gotoloop;break;A选择分段分数*/
case11:Save(l);gotoloop;break;A保存学生*/
case12:printf(z,\t\t\t==========%gbM==========\n/?);goto
loop;break;
default:Wrong();getchar();break;
7.2结构体
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
structstudent
charclass_0[20];
charnum[20];
charname[20];
floatmath;
floatc_prog;
floateng;
floatpolity;
floatsport;
floatave;}stu[1000];
charj,h;
/*函数声明*/
voidluru();
voidchaxun();
voidcharu();
voidtongji();
voidxiugai();
voidshanchu();
voidpaixuO;
voidtuichu();
FILE*fp;〃指向学生信息的文件指针
voidmain()
loop:
printf(z,\t\i********************************************
printf("\t\t欢迎运用学生信息管理系统
\t\t\n");
printf(z/\t\t
\t\t\n/z);
printfC\t\t制作人:电力4史素
芬\t\t\n");
printf(〃\t\t
\t\t\n〃);
printf(〃\t\t
\t\t\n/z);
printfCz\t\tl.录入学生成果\n〃);
printfC\t\t2.排序学生成果\n〃);
printf(〃\t\l3.统计输出成果\n〃);
printf(〃\t\t4.查询学生成果\n〃);
printfCz\t\t5.插入学生成果\n");
printf(z/\t\t6.修改学生成果\n〃);
printf(z/\t\t7.删除学生成果\n〃);
printf(z,\t\t8.退出管理系统\n");
intn;
printf(〃请选择功能\n\n〃);
scanf("%d〃,&n);
system(〃cls〃);
switch(n)
case1:
printfC\t\t录入学生成果\n\n");
luru();
gotoloop;
case2:
printfC\t\t排序学生成果\n\n〃);
paixuO;
gotoloop;
case3:
printfC\t\t统计输出学生成果\n\n〃);
tongji();
gotoloop;
case4:
printfCz\t\t查询学生成果\n\n〃);
chaxun();
gotoloop;
case5:
printfr\t\t插入学生成果\n\n〃);
charu();
gotoloop;
case6:
printf(,z\t\t修改学生成果\n\n〃);
xiugai();
gotoloop;
case7:
printfC\t\t删除学生成果\n\n〃);
shanchu();
gotoloop;
case8:
printf程序退出。\t感谢运用!\n\n〃);
exit(0);
default:
printf(〃您的输入有误,请重试!\n\n〃);
fflush(stdin);
gotoloop;
printf(z,\n按随意键返回.....〃);
voidluru()
inti,m;
FTLE*fp;
printf(〃请输入学生人数:〃);
scanf(〃%d〃,&m);
if(m>1000|m<0){printf(〃\n错误\n\n");return;}
else
for(i=0;i<m;i++)
{printfC\n请输入第%d位学生的成果:\n〃,i+1);
printf("班级:”);
scanf("%s〃,stu[i].class_0);
printf(〃学号:〃);
scanf(飞s〃,stu[i].num);
printf(〃姓名:〃);
scanf(〃%s〃,stu[i].name);
printf(〃高等数学成果:〃);
scanf(〃%f〃,&stu[i].math);
printfCC程序设计成果:〃);
scanf(z,%fz/,&stu[i].cprog);
printf(〃高校英语成果:〃);
scanfeng);
printf(〃马克思主义政治经济学成果:〃);
scanf(zz%fz/,&stu[i].polity);
printf(〃高校体育成果:〃);
scanf.sport);
stu[i].ave=(stu[i].c_prog+stu[i].eng+stu[i].math+stu[i].
polity+stu
[i].sport)/5;
fp二fopen("stud.c〃,〃w〃);
for(i=0;i<m;i++)
if(fwritesizeof(struct
student),1,fp)!=1)
printfC\n打开文件失败\n\n\n〃);
fclose(fp);
fp二fopen("stud.c〃,〃r〃);
printf(〃\n已录入的学生成果:\n〃);
printf(〃\n班级学号姓名高等数学C程序设计高
校英语马克思主义经济学高校体育平均分\。〃);
for(i=0;i<m;i++)
{fread(&stu[i],sizeof(structstudent),1,fp);
printf(,z\n%-6s%-6s%-6s%-9.2f%-10.2f%-9.2f%-17.2f%-9.2f%-
6.2f\n〃,stu[i].class0,
stu[i],num,stu[i].name,stu[i].math,stu[i].c_prog,stu[i].
eng,
stu[i].polity,stu[i].sport,stu[i].ave);
fclose(fp);
getchar();
voidpaixu()
loop:
printf(-\t=================l,平均成果排序
printf(〃\t=========2,高数成果排序
printf(,z\t=================3,C语言成果排序
printf(z,\t=================4,英语成果排序
printf(〃\t=========5,马克思经济学成果排序
=====\n〃);
printf(/z\t=================6,高校体育成果排序
\nO;
printf(〃\t=========7,学号排序
==========\n〃);
printf(〃请输入你的选择\n〃);
intt;
scanf(〃%d〃,&t);
FILE*fp;intx,y,z;structstudenttemp;
if((fp=fopen(z,stud.c〃,〃r〃))二二NULL)
{printf(z,\n无法打开文件\n\n\n〃);return;)
for(x=0;fread(&stu[x],sizeof(struct
student),1,fp)!=0;x++)
printf("\n");
fclose(fp);
z=x;
for(x=O;x<z;x++)
for(y=x+l;y<z;y++)
if(stu[x].ave<stu[y].ave)
{temp=stu[x];
stu[x]=stu[y];
stu[y]=temp;
printf(〃\n排序后的数据:\n〃);
printf(〃\n班级学号姓名高等数学C程序设计高
校英语马克思主义经济学高校体育平均分\n〃);
fp二fopen("stud.c〃,〃w〃);
for(x=0;x<z;x++)
{fwrite(&stu[x],sizeof(structstudent),1,fp);
printf(,z\n%-6s%-6s%-6s%-9.2f%-10.2f%-9.2f%-17.2f%-9.2f%-
6.2f\n,/,stu[x].class_0,
stu[x].num,stu[x].name,stu[x].math,stu[x].c_prog,stu[x].
eng,
stu[x].polity,stu[x].sport,stu[x].ave);
printf('\n");getchar();
fclose(fp);
return;
elseif(t=2)
FILE*fp;intx,y,z;structstudent
gaoshu;
if((fp=fopen("stud.c〃,"r"))=二NULL)
{printf(/z\n无法打开文件\n\n\n〃);return;)
for(x=0;fread(&stu[x],sizeof(struct
student),1,fp)!=0;x++)
printf(〃\n〃);
fclose(fp);
z二x;
for(x=0;x<z;x++)
for(y=x+l;y<z;y++)
if(stu[x].math<stu[y].math)
{gaoshu=stu[x];
stu[x]=stu[y];
stu[y]=gaoshu;
printf(〃\n排序后的数据:\n〃);
printf(〃\n班级学号姓名高等数学\n〃);
fp二fopen("stud,c","w〃);
for(x=0;x<z;x++)
{fwrite(&stu[x],sizeof(structstudent),1,fp);
printf(,z\n%-6s%-6s%-6s%-9.2f\n〃,stu[x],class_0,
stu[x].num,stu[x].name,stu[x].math);
printf(〃\n");getchar();
fclose(fp);
return;
elseif(t=3)
FILE*fp;intx,y,z;structstudent
yuyan;
if((fp=fopenCstud,c","rO)==NULL)
{printf(,z\n无法打开文件\n\n\n〃);return;}
for(x=0;fread(&stu[x],sizeof(struct
student),1,fp)!=0;x4-+)
printf(〃\n〃);
fclose(fp);
z=x;
for(x=0;x<z;x++)
for(y=x+1;y<z;y++)
if(stu[x].c_prog<stu[y].c_prog)
{yuyan=stu[x];
stu[x]=stu[y];
stu[y]=yuyan;
printf(〃\n排序后的数据:\n〃);
printf(〃\n班级学号姓名C语言\n〃);
fp=fopen(z/stud.c〃,〃w〃);
for(x=0;x〈z;x++)
{fwrite(&stu[x],sizeof(structstudent),1,fp);
printf(,z\n%-6s%-6s%-6s%-9.2f\n,z,stu[x].class0,
stu[x].num,stu[x].name,stu[x].c_prog);
printf(〃\n〃);getchar();
fclose(fp);
return;
elseif(t=4)
FILE*fp;intx,y,z;structstudent
ying;
if((fp二fopen("stud.c〃,)=NULL)
{printf(z,\n无法打开文件\n\n\n〃);return;}
for(x=0;fread(&stu[x],sizeof(struct
student),1,fp)!=0;x")
printf(〃\n〃);
fclose(fp);
z二x;
for(x=0;x<z;x++)
for(y=x+l;y<z;y++)
if(stu[x].eng<stu[y].eng)
{ying=stu[x];
stu[x]=stu[y];
stu[y]=ying;
printf(〃\n排序后的数据:\n〃);
printf(〃\n班级学号姓名英语\n〃);
fp二fopen(〃stud.c〃,〃w〃);
for(x=O;x<z;x++)
{fwrite(&stu[x],sizeof(structstudent),1,fp);
printf(z,\n%-6s%-6s%-6s%-9.2f\nzz,stu[x].class_O,
stu[x].num,stu[x].name,stu[x].eng);
printf(〃\n");getchar();
fclose(fp);
return;
elseif(t=5)
FILE*fp;intx,y,z;structstudent
makesi;
if((fp=fopen("stud.c〃,〃r〃))二二NULL)
{printf(z,\n无法打开文件\n\n\n〃);return;)
for(x=0;fread(&stu[x],sizeof(struct
student),1,fp)!=0;x++)
printf("\n");
fclose(fp);
z=x;
for(x=0;x<z;x++)
for(y=x+l;y<z;y++)
if(stu[x].polity<stu[y].polity)
{makesi=stu[x];
stu[x]=stu[y];
stu[y]=makesi;
printf(〃\n排序后的数据:\n〃);
printf(〃\n班级学号姓名马克思经济学\n〃);
fp=fopen(/zstud.c〃,〃w〃);
for(x=0;x<z;x++)
{fwrite(&stu[x],sizeof(structstudent),1,fp);
printf(z,\n%-6s%-6s%-6s%-9.2f\n〃,stu[x].class_0,
stu[x].num,stu[x].name,stu[x].polity);
printf(〃\n〃);getchar();
fclose(fp);
return;
elseif(t=6)
FILE*fp;intx,y,z;structstudent
tiyu;
if((fp=fopenCstud.c","r"))=NULL)
{printf(z/\n无法打开文件\n\n\n〃);return;}
for(x=0;fread(&stu[x],sizeof(struct
student),1,fp)!=0;x++)
printf(〃\n");
fclose(fp);
z=x;
for(x=0;x〈z;x++)
for(y=x+l;y<z;y++)
if(stu[x].sport<stu[y].sport)
{tiyu=stu[x];
stu[x]=stu[y];
stu[y]=tiyu;
printf(〃\n排序后的数据:\n〃);
printf(〃\n班级学号姓名高校体育\n〃);
fp=fopen(〃stud.c","w〃);
for(x=0;x<z;x++)
{fwrite
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福建体育职业技术学院《运动控制系统》2025-2026学年期末试卷
- 福建江夏学院《工程结构荷载与可靠度设计原理》2025-2026学年期末试卷
- 徽商职业学院《病理学与病理生理学》2025-2026学年期末试卷
- 宁德职业技术学院《应用文写作》2025-2026学年期末试卷
- 厦门演艺职业学院《劳动与社会保障法》2025-2026学年期末试卷
- 宁德师范学院《中国民间音乐概述》2025-2026学年期末试卷
- 柔性穿戴设备行业趋势
- 学校学生日常行为管理规范制度
- 露天矿物开采辅助工成果转化知识考核试卷含答案
- 可控震源操作工岗前品质考核试卷含答案
- 发电工程钢筋铁件加工制作施工投标文件
- 制氢装置转化炉设计简介
- 智能浇花系统
- 城市园林绿化养护方案
- 大学二级管理办法
- HXD1D制动系统培训CCBII
- 钢板表面质量问题检查要求优质资料
- GB/T 3375-1994焊接术语
- 宁骚公共政策学考试大纲考点分析报告
- 润滑油检测项目基础知识讲解学习课件
- 强迫及相关障碍课件
评论
0/150
提交评论