C语言课程设计学生成绩管理系统

上传人:仙*** 文档编号:33676868 上传时间:2021-10-18 格式:DOC 页数:12 大小:77.54KB
收藏 版权申诉 举报 下载
C语言课程设计学生成绩管理系统_第1页
第1页 / 共12页
C语言课程设计学生成绩管理系统_第2页
第2页 / 共12页
C语言课程设计学生成绩管理系统_第3页
第3页 / 共12页
资源描述:

《C语言课程设计学生成绩管理系统》由会员分享,可在线阅读,更多相关《C语言课程设计学生成绩管理系统(12页珍藏版)》请在装配图网上搜索。

1、学生成绩管理系统#include stdio.h #include stdlib.h #include string.h / int shoudsave=0; struct student char num10;char name20; char sex4; int cgrade; /*C语言成绩*/int mgrade; /*高数成绩*/int egrade; /*英语成绩*/int totle; /*总分*/int ave; /*平均分*/; typedef struct node struct student data; struct node *next; Node,*Link; vo

2、id menu() printf(*); printf(t1登记学生资料ttttt2删除学生资料n); printf(t3查询学生资料ttttt4修改学生资料n); printf(t5保存学生资料ttttt0退出系统n); printf(*n); void printstart() printf(-n); void Wrong() printf(n=提示:输入错误!n); void Nofind() printf(n=提示:没有找到该学生!n); void printc() printf(学号t 姓名 性别 英语成绩 数学成绩 C语言成绩 总分 平均分n); void printe(Node

3、*p) printf(%-10s%st%st%dt%dt%dt%dt%dn,p-data.num,p-data.name,p-data.sex,p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.totle,p-data.ave); Node* Locate(Link l,char findmess,char nameornum) /* 该函数用于定位连表中符合要求的接点,并返回该指针 */ Node *r; if(strcmp(nameornum,num)=0) /* 按学号查询 */ r=l-next; while(r!=NULL) if(st

4、rcmp(r-data.num,findmess)=0) return r; r=r-next; else if(strcmp(nameornum,name)=0) /* 按姓名查询 */ r=l-next; while(r!=NULL) if(strcmp(r-data.name,findmess)=0) return r; r=r-next; return 0; void Add(Link l) /* 增加学生 */ Node *p,*r,*s; char num10; r=l; s=l-next; while(r-next!=NULL) r=r-next; /* 将指针置于最末尾 */

5、while(1) printf(请你输入学号(以0返回上一级菜单:); scanf(%s,num); if(strcmp(num,0)=0) break; while(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(sizeof(Node); strcpy(p-data.num,num); printf

6、(请你输入姓名:); scanf(%s,p-data.name); getchar(); printf(请你输入性别:); scanf(%s,p-data.sex); getchar(); printf(请你输入c语言成绩:); scanf(%d,&p-data.cgrade); getchar(); printf(请你输入数学成绩:); scanf(%d,&p-data.mgrade); getchar(); printf(请你输入英语成绩:); scanf(%d,&p-data.egrade); getchar(); p-data.totle=p-data.egrade+p-data.cg

7、rade+p-data.mgrade; p-data.ave=p-data.totle / 3; /* 信息输入已经完成 */ p-next=NULL; r-next=p; r=p; /shoudsave=1; void find(Link l) /* 查询学生 */ int sel; char findmess20; Node *p; if(!l-next) printf(n=提示:没有资料可以查询!n); return; printf(n=1按学号查找n=2按姓名查找n); scanf(%d,&sel); if(sel=1)/* 学号 */ printf(请你输入要查找的学号:); sca

8、nf(%s,findmess); p=Locate(l,findmess,num); if(p) printf(tttt查找结果n); printstart(); printc(); printe(p); printstart(); else Nofind(); else if(sel=2) /* 姓名 */ printf(请你输入要查找的姓名:); scanf(%s,findmess); p=Locate(l,findmess,name); if(p) printf(tttt查找结果n); printstart(); printc(); printe(p); printstart(); el

9、se Nofind(); else Wrong(); void Del(Link l) /* 删除 */ int sel; Node *p,*r; char findmess20; if(!l-next) printf(n=提示:没有资料可以删除!n); return; printf(n=1按学号删除n=2按姓名删除n); scanf(%d,&sel); if(sel=1) printf(请你输入要删除的学号:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) r=l; while(r-next!=p) r=r-next; r-next

10、=p-next; free(p); printf(n=提示:该学生已经成功删除!n); /shoudsave=1; else Nofind(); else if(sel=2) printf(请你输入要删除的姓名:); scanf(%s,findmess); p=Locate(l,findmess,name); if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=提示:该学生已经成功删除!n); /shoudsave=1; else Nofind(); else Wrong(); void Modify(L

11、ink l) Node *p; char findmess20; if(!l-next) printf(n=提示:没有资料可以修改!n); return; printf(请你输入要修改的学生学号:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) printf(请你输入新学号(原来是%s):,p-data.num); scanf(%s,p-data.num); printf(请你输入新姓名(原来是%s):,p-data.name); scanf(%s,p-data.name); getchar(); printf(请你输入新性别(原来是

12、%s):,p-data.sex); scanf(%s,p-data.sex); printf(请你输入新的c语言成绩(原来是%d分):,p-data.cgrade); scanf(%d,&p-data.cgrade); getchar(); printf(请你输入新的数学成绩(原来是%d分):,p-data.mgrade); scanf(%d,&p-data.mgrade); getchar(); printf(请你输入新的英语成绩(原来是%d分):,p-data.egrade); scanf(%d,&p-data.egrade); p-data.totle=p-data.egrade+p-d

13、ata.cgrade+p-data.mgrade; p-data.ave=p-data.totle/3; printf(n=提示:资料修改成功!n); /shoudsave=1; else Nofind(); void Disp(Link l) int count=0; Node *p; p=l-next; if(!p) printf(n=提示:没有资料可以显示!n); return; printf(tttt显示结果n); printstart(); printc(); printf(n); while(p) printe(p); p=p-next; printstart(); printf(

14、n); void Tongji(Link l) Node *maxm,*maxe,*maxc,*maxt,*maxa; /* 用于指向分数最高的接点 */ Node *r=l-next; if(!r) printf(n=提示:没有资料可以统计!n); return ; maxm=maxe=maxc=maxt=maxa=r; while(r!=NULL) if(r-data.cgrade=maxc-data.cgrade) maxc=r; if(r-data.mgrade=maxm-data.mgrade) maxm=r; if(r-data.egrade=maxe-data.egrade) m

15、axe=r; if(r-data.totle=maxt-data.totle) maxt=r; if(r-data.ave=maxa-data.ave) maxa=r; r=r-next; printf(-统计结果-n); printf(总分最高者:t%s %d分n,maxt-data.name,maxt-data.totle); printf(平均分最高者:t%s %d分n,maxa-data.name,maxa-data.ave); printf(英语最高者:t%s %d分n,maxe-data.name,maxe-data.egrade); printf(数学最高者:t%s %d分n,m

16、axm-data.name,maxm-data.mgrade); printf(c语言最高者:t%s %d分n,maxc-data.name,maxc-data.cgrade); printstart(); / void Sort(Link l) / /Link ll; /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=(Nod

17、e*)malloc(sizeof(Node); /* 新建接点用于保存信息 */ /s-data=p-data; /s-next=NULL; /rr=ll; /while(rr-next!=NULL & rr-next-data.totle=p-data.totle) /rr=rr-next; /if(rr-next=NULL) /rr-next=s; /else / /s-next=rr-next; /rr-next=s; / /p=p-next; / /free(l); /l-next=ll-next; /printf(n=提示:排序已经完成!n); / void Save(Link l)

18、 FILE* fp; Node *p; int flag=1,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=0; break; if(flag) printf(n=提示:文件保存成功.(有%d条记录已经保存.)n,count); /shoudsave=0; fclose(fp); void main() Link l;

19、/* 链表 */ FILE *fp; /* 文件指针 */ int sel; char ch; char ok; int count=0; Node *p,*r; printf(tttt学生成绩管理系统ntttt-光电信息工程1002班 刘俊华 (12)n); l=(Node*)malloc(sizeof(Node); l-next=NULL; r=l; fp=fopen(C:student,rb); if(fp=NULL) printf(n=提示:文件还不存在,是否创建?(y/n)n); scanf(%c,&ok); if(ok=y|ok=Y) fp=fopen(C:student,wb);

20、 else exit(0); printf(n=提示:文件已经打开,正在导入记录.n); while(!feof(fp) p=(Node*)malloc(sizeof(Node); if(fread(p,sizeof(Node),1,fp) /* 将文件的内容放入接点中 */ p-next=NULL; r-next=p; r=p; /* 将该接点挂入连中 */ count+; fclose(fp); /* 关闭文件 */ printf(n=提示:记录导入完毕,共导入%d条记录.n,count); while(1) menu(); printf(请你选择操作:); scanf(%d,&sel);

21、 if(sel=0) /if(shoudsave=1) getchar(); printf(n=提示:资料已经改动,是否将改动保存到文件中(y/n)?n); scanf(%c,&ch); if(ch=y|ch=Y) Save(l); printf(n=提示:你已经退出系统,再见!n); break; switch(sel) case 1:Add(l);break; /*增加学生信息*/ case 2:Del(l);break; /*删除学生信息*/ case 3:find(l);break; /*查询学生信息*/ case 4:Modify(l);break; /*修改学生信息*/ case 5:Save(l);break; /*保存学生信息*/ case 9:printf(ttt=帮助信息=n);break; default: Wrong();getchar();break;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!