




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 C语言程序设计课程设计实习报告题 目:学生成绩管理班 级:电气111学 号:.姓 名:*同组人员:* *指导老师:*1.问题描述: 编写一个程序来管理学生成绩,本系统能实现以下功能: 输入信息:学生学号、姓名以及各门课程成绩的输入,要求至少有三门课程成绩;计算学生的总成绩和平均分; 修改信息:对学生学号、姓名以及各门课程成绩进行修改; 增加信息:添加新学生信息; 插入信息:在制定位置插入学生信息; 删除信息:删除制定学生信息; 查询:根据姓名查询某个学生的成绩;根据学号区间段查询某些学生的成绩;根据课程编号或名称查询某门课程的成绩; 排序:根据要求,能按学生的学号、姓名、总分或者平均分分别进
2、行升序和降序排序,并显示排序后的结果; 统计:根据课程编号或名称、学生成绩总分或者平均分统计出不同分数段的学生人数和百分比; 输出:输出所有学生信息或者查询结果。2.设计提示 1)先确定学生成绩管理的数据结构。如每个学生信息:学号、姓名、课程1、课程2总分、平均分等,每个数据项各用什么数据类型; 2)划分实现学生成绩管理的功能模块:如主菜单、输入数据、修改、增加、插入、删除、查询、统计与输出等功能,并确定各功能模块的实现算法; 3)画出各模块的流程图; 4)选择C语言的技术:普通数组、结构体数组、函数、指针、单链表或文件等; 5)编写程序代码。3.程序功能模块退出系统修改记录查找记录删除记录输
3、入记录主菜单选项 退出学生成绩管理系统学生学号、姓名、各科成绩的输入,并计算总分和平均分删除制定的学生记录修改制定的学生记录查找制定的学生记录结束S=2?S=1?1=4?输入选项代号S开始4.主函数流程图输出主菜单S=0?输出出错提示执行输入命令执行删除命令执行查找命令执行修改命令S=3?Ave=total/3Total=cgrade+mgrade+egrade输入数学成绩mgrade输入语文成绩cgrade输入姓名nameNum是否存在?Num=0?结束输入英语成绩egrade输入学号num输出:输入学号(输入“0”返回菜单):开始5.输入函数流程图是否退出?结束输出未找到Name是否存在?
4、Num是否存在?删除指定姓名的学生记录输入姓名name删除指定学号的学生记录输入学号num输出输入已存在的学号numS=1?输入操作选择S输出请选择(1 OR 2)输出 1.按照学号2.按照姓名学生记录是否存在?输出输入已存在的姓名name开始6.删除函数流程图输出操作选择S是否退出?结束输出未找到Name是否存在?输入姓名name输入学号num输出输入已存在的学号numS=1?输入操作选择S输出请选择(1 OR 2)输出 1.按照学号2.按照姓名学生记录是否存在?输出输入已存在的姓名name开始7.查找函数流程图输出操作选择SNum是否存在?输出指定姓名的学生记录输出指定学号的学生记录继续修
5、改?结束输出修改后的学生记录输出修改成功输入修改赋值Num是否存在?输入学号num输出没有学生记录输出指定学号的学生记录输出请输入已存在的学号学生记录是否存在?开始8.修改函数流程图9.详细程序清单#includestdio.h#includestdlib.h #includestring.h#includeconio.h#define M 学号 姓名 语文 数学 英语 总分 平均 名次 n#define K %-7s %-5s %-1d %3d %3d %3d %-6.2f %3d n#define L p-data.num,,p-data.egrade,p-data.
6、mgrade,p-data.cgrade,p-data.total,p-data.ave,p-data.mingcitypedef struct studentchar num10;char name15;int cgrade;int mgrade;int egrade;int total;float ave; int mingci;data;typedef struct nodestruct student data;struct node *next;Node,*Link;void menu();void printfdata(Node *);void Notfind();void pri
7、ntfsign();void Error();void Disp(Link);void stringinput(char *,int,char *);Node * Locate(Link,char *, char *);void Add(Link);void Qur(Link);void Del(Link);void Edit(Link);void Insert(Link);void Count(Link);void Sort(Link);void Save(Link);int numerinput(char *);void printfsign();int saveflag=0;void m
8、enu()system(cls); printf(n); printf(1: 输入记录n);printf(2: 删除记录n); printf(3: 查找记录n);printf(4: 修改记录n); printf(5: 插入记录n);printf(6: 统计记录n); printf(7: 排序记录n);printf(8: 保存记录n); printf(9: 输出记录n);printf(0: 退出系统n);void printfdata(Node *pp)Node *p;p=pp;printf(K,L);void printfsign() printf(M);void Error()printf(
9、n请按任意键返回n);getchar();void Notfind()printf(n没有找到该学生!n);void Disp(Link l)Node *p;p=l-next;if(!p)printf(n没有学生记录!n);getchar();return;printf(nn);printfsign();while(p)printfdata(p);p=p-next;getchar();void stringinput(char *t,int lens,char *notice)char n255;doprintf(notice);scanf(%s,n);if(strlen(n)lens)pri
10、ntf(n超出所需长度!n);while(strlen(n)lens);strcpy(t,n);int numberinput(char *notice)int t=0;doprintf(notice);scanf(%d,&t);if(t100 | t100 | tnext;while(r)if(strcmp(r-data.num,findness)=0)return r;r=r-next;else if(strcmp(nameornum,name)=0)r=l-next;while(r)if(strcmp(,findness)=0)return r;r=r-next;r
11、eturn 0;void Add(Link l)Node *p,*r,*s;char ch,flag=0,num10;r=l;s=l-next;system(cls);Disp(l);while(r-next!=NULL)r=r-next;while(1)while(1)stringinput(num,10,输入学号(输入“0”返回菜单):);flag=0;if(strcmp(num,0)=0)return ;s=l-next;while(s)if(strcmp(s-data.num,num)=0)flag=1;break;s=s-next;if(flag=1)getchar();printf
12、(学号s不存在,重试?(y/n):,num);scanf(%c,&ch);if(ch=y|ch=Y)continue;elsereturn;elsebreak;p=(Node*)malloc(sizeof(Node);if(!p)printf(n分配内存失败);return ;strcpy(p-data.num,num);stringinput(,15,姓名:);p-data.cgrade=numberinput(语文0100:);p-data.mgrade=numberinput(数学0100:);p-data.egrade=numberinput(英语0100:);p
13、-data.total=p-data.cgrade+p-data.mgrade+p-data.mgrade;p-data.ave=p-data.total/3.0;p-data.mingci=0;p-next=NULL;r-next=p;r=p;saveflag=1;return ;void Del(Link l)int sel;Node *p,*r;char findmess20; if(!l-next)system(cls);printf(n没有学生记录!n);getchar();return ;system(cls);Disp(l);printf(操作选择:);printf(n 1按照学
14、号 n);printf(n 2按照姓名 n);printf( 请选择(1 or 2):);scanf(%d,&sel);if(sel=1)stringinput(findmess,10,输入已存在的学号:);p=Locate(l,findmess,num);if(p)r=l;while(r-next!=p)r=r-next;r-next=p-next;free(p);printf(n删除成功!n);getchar();saveflag=1;elseNotfind();getchar();else if(sel=2)stringinput(findmess,15,输入已存在的学生姓名:);p=L
15、ocate(l,findmess,name);if(p) r=l;while(r-next!=p)r=r-next;r-next=p-next;free(p);printf(n删除成功!n);getchar();saveflag=1;elseNotfind();getchar();elseError();getchar();void Qur(Link l)int select;char searchinput20;Node *p;if(!l-next)system(cls);printf(n没有学生记录!n);getchar();return ;system(cls);printf(操作选择:
16、);printf(n 1按照学号 n);printf(n 2按照姓名 n);printf( 请选择(1 or 2):);scanf(%d,&select);if(select=1)stringinput(searchinput,10,输入已存在的学号:);p=Locate(l,searchinput,num);if(p)printfsign();printfdata(p);printf(任意键返回.);getchar();elseNotfind();getchar();else if(select=2)stringinput(searchinput,15,输入已存在的学生姓名:);p=Loca
17、te(l,searchinput,name);if(p)printfsign();printfdata(p);printf(任意键返回.);getchar();elseNotfind();getchar();elseError();getchar();void Edit(Link l)Node *p;char findmess20;if(!l-next)system(cls);printf(n没有学生记录!n);getchar();return ;system(cls);Disp(l);stringinput(findmess,10,输入已存在的学号:);p=Locate(l,findmess
18、,num);if(p)printf(学号: %s,n,p-data.num);printf(姓名:%s,n,);stringinput(,15,请输入新姓名:);printf(语文:%d,n,p-data.cgrade);p-data.cgrade=numberinput(语文0100:);printf(数学:%d,n,p-data.mgrade);p-data.mgrade=numberinput(数学0100:);printf(英语:%d,n,p-data.egrade);p-data.egrade=numberinput(英语0100:);p-
19、data.total=p-data.cgrade+p-data.mgrade+p-data.mgrade;p-data.ave=p-data.total/3.0;p-data.mingci=0;printf(n修改成功!n);Disp(l);saveflag=1;elseNotfind();getchar();void Insert(Link l)Link p,v,newinfo;char ch,num10,s10;int flag=0;v=l-next;system(cls);Disp(l);while(1)stringinput(s,10,请输入在学号后插入的位置:);flag=0;v=l
20、-next;while(v)if(strcmp(v-data.num,s)=0)flag=1;break;v=v-next;if(flag=1)break;elsegetchar();printf(n学号%s不存在,重试?(y/n):,s);scanf(%c,&ch);if(ch=y|ch=Y)continue;elsereturn ; stringinput(num,10,输入新学号:);v=l-next;while(v)if(strcmp(v-data.num,num)=0)printf(新学号%s已经存在!n,num);printfsign();printfdata(v);printf(
21、n);getchar();return;v=v-next; newinfo=(Node *)malloc(sizeof(Node);if(!newinfo)printf(n内存分配失败);return ;strcpy(newinfo-data.num,num);stringinput(,15,姓名:);newinfo-data.cgrade=numberinput(语文0100:);newinfo-data.mgrade=numberinput(数学0100:);newinfo-data.egrade=numberinput(英语0100:);newinfo-
22、data.total=newinfo-data.cgrade+newinfo-data.mgrade+newinfo-data.mgrade;newinfo-data.ave=newinfo-data.total/3.0;newinfo-data.mingci=0;newinfo-next=NULL;saveflag=1;p=l-next;while(1)if(strcmp(p-data.num,s)=0)newinfo-next=p-next;p-next=newinfo;break;p=p-next;Disp(l);printf(nn);getchar();void Count(Link
23、l)int pm=0,pe=0,pc=0,pt=0;Node *r=l-next;int countc=0,countm=0,counte=0;if(!r)system(cls);printf(n没有学生记录!n);getchar();return ;system(cls);Disp(l);while(r)if(r-data.cgradedata.mgradedata.egradedata.cgrade60) pc+;if(r-data.mgrade60) pm+;if(r-data.egrade60) pe+;if(r-data.total180) pt+;r=r-next;printf(
24、语文 小于60:%d人n,countc);printf( 数学 小于60:%d人n,countm);printf( 英语 小于60:%d人n,counte);printf( 平均分大于60:%d人n,pt);printf( 英语成绩大于60:%d人n,pe);printf( 数学成绩大于60:%d人n,pm);printf( 语文成绩大于60:%d人n,pc);getchar();void Sort(Link l)Link ll;Node *p,*rr,*s;int i=0;if(l-next=NULL)system(cls);printf(n没有学生记录!n);getchar();retur
25、n ;ll=(Node*)malloc(sizeof(Node);if(!ll)printf(n分配内存失败);return;ll-next=NULL;system(cls);Disp(l);p=l-next;while(p)s=(Node*)malloc(sizeof(Node);if(!s)printf(n分配内存失败);return ;s-data=p-data;s-next=NULL;rr=ll;while(rr-next!=NULL & rr-next-data.total=p-data.total)rr=rr-next;if(rr-next=NULL)rr-next=s;else
26、s-next=rr-next;rr-next=s;p=p-next;l-next=ll-next;p=l-next;while(p!=NULL)i+;p-data.mingci=i;p=p-next;Disp(l);saveflag=1;printf(n排序完成!n);void Save(Link l)FILE *fp;Node *p;int count=0;fp=fopen(e:student.tex,wb);if(fp=NULL)printf(n打开文件错误!n);getchar();return ;p=l-next;while(p)if(fwrite(p,sizeof(Node),1,fp)=1)p=p-next;count+;elsebreak;if(count0)getchar();printf(nnnn保存文件完成,总保存的记录数是:%dn,count);getchar();saveflag=0;elsesystem(cls);printf(当前连接为空,没有学生记录保存!n);getchar();fclose(fp);void main()Link l;FILE *fp;int select;char ch;int count=0;Node *p,*r;l=(No
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大庆市中医院胰腺超声诊断考核
- 佳木斯市人民医院内镜注水注气系统功能测试笔试试题
- 延边州人民医院一次性物品管理考核
- 忻州市中医院皮肤软组织扩张术考核
- 中国颗粒磷肥项目商业计划书
- 中国十八硫醇项目投资计划书
- 中国动力电池铝塑膜项目商业计划书
- 中国呋虫胺原药项目商业计划书
- 贸促会职能介绍
- 中国海上石油钻井平台项目创业计划书
- 2025-2030中国骆驼奶制品营养价值研究及产业化开发可行性分析报告
- 2025年药师资格药管和法规真题预测考卷(含答案)
- 2025年南通市中考语文试题卷(含答案)
- 宁乡辅警考试试卷必刷题
- 高端定制家具成本优化2025年研究报告
- 2025年-《中华民族共同体概论》课后习题答案-新版
- 2025重庆碳管家科技有限公司招聘1人笔试历年参考题库附带答案详解
- 吊装储罐施工方案
- 尾矿库施工安全培训课件
- 智慧政务智能人事管理系统创新创业项目商业计划书
- 2025年电工证考试题及答案测试卷测试题(答案)
评论
0/150
提交评论