




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学号10210411107武汉理工大学华夏学院课 程 设 计课程名称 c语言课程设计题 目 学生成绩管理系统的设计专 业 计算机班 级 1111姓 名 成 绩 指导教师 2012年2月13日至2012年2月17日课程设计任务书学生姓名: 专业班级:计算机1111指导教师: 工作单位: 设计题目:学生成绩管理系统的设计要求完成的主要任务:1. 任务描述 要求设计一个学生成绩管理的程序。实现:1、学生基本信息及所选科目成绩的录入;2、信息的查询(分系、班级;分科目)与修改;3、对每个系每个班各科成绩进行分析(即求单科平均成绩、及格率和优秀率);4、对所开课程的成绩分析(求其平均成绩,最高分和最低分);5、对考生考试成绩进行排名。2. 本课程涉及的知识点 变量的定义、输入和输出函数、产生随机数函数、if语句、数据文件及其他相关的函数等。 3. 要求完成的任务 完成整个规定任务的设计及调试,得出正确结果,并经教师检查及答辩; 写出规范的课程设计说明书; 课程设计结束后交设计说明书等文档和设计内容。 从2月14日起,学生每天至少要到设计教室半天以上; 设计报告撰写格式要求:设计报告的主要内容是详细写出在设计过程中所用到的主要技术或方法;课程设计报告按国际通用格式书写,具体格式要求请见资料:“课程设计说明书的书写内容与格式”时间安排:第一天: 学生先在实验室集中,由指导教师介绍课程设计的目的、布置任务后选题;第二天-第四天:学生在实验室完成设计,经教师检查并回答提问,确认设计完成;第五天: 教师在计算机上先检查设计报告、学生修改后打印提交指 导 教 师 签 字: 2012年2月 13日系 主 任 签 字: 2012年2月 13日19流程图设计考试成绩管理系统管理员输入学生的资料所有学生的总分和平均分所有课程的平均分按平均分排序按学号查询学生的各科成绩及平均成绩修改学生信息删除学生信息程序代码#include #include #include #define len sizeof(struct scorenode)#define debug#include struct scorenodeint number;/*学号*/char name10;/*姓名*/float yuwen;/*语文成绩*/float yingyu;/*英语成绩*/float shuxue;/*数学成绩 */float save;/*平均成绩 */struct scorenode *next;typedef struct scorenode score;int n,k;/*n,k score *creat(void)/*函数creat,功能:创建链表,此函数带回一个指向链表头的指针*/score*head;score *p1,*p2,*p3,*max,*p;int i,j;float fen; char t10;file *fp;char filepn20;/*用来存放文件保存路径以及文件名*/n=0; p1=p2=p3=(score *)malloc(len);head=p3; /*开辟一个新单元*/ printf(请输入学生资料,输0退出!n);repeat1: printf(请输入学生学号(学号应大于0):);/*输入学号,学号应大于0*/ scanf(%d,&p1-number);if(p1-number=0) goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/else p3=head;if(n0) for(i=0;inumber!=p3-number) p3=p3-next; else printf(学号重复,请重输!n); goto repeat1; /*当输入的学号已经存在,程序报错,返回前面重新输入*/ printf(请输入学生姓名:); scanf(%s,&p1-name);/*输入学生姓名*/ printf(请输入语文成绩(0100):);/*输入语文成绩,成绩应在0-100*/ scanf(%f,&p1-yuwen); while(p1-yuwenyuwen100)getchar();printf(输入错误,请重新输入语文成绩);/*输入错误,重新输入语文成绩直到正确为止*/ scanf(%f,&p1-yuwen); printf(请输入英语成绩(0100):);/*输入英语成绩,成绩应在0-100*/ scanf(%f,&p1-yingyu); while(p1-yingyuyingyu100)getchar();printf(输入错误,请重新输入英语成绩);/*输入错误,重新输入英语成绩直到正确为止*/ scanf(%f,&p1-yingyu); printf(请输入数学成绩(0100):);/*输入数学成绩,成绩应在0-100*/ scanf(%f,&p1-shuxue); while(p1-shuxueshuxue100)getchar();printf(输入错误,请重新输入数学成绩); scanf(%f,&p1-shuxue);/*输入错误,重新输入数学成绩直到正确为止*/ head=null;while(p1-number!=0) n=n+1;if(n=1) head=p1;else p2-next=p1; p2=p1; p1=(score *)malloc(len); printf(请输入学生资料,输0退出!n);repeat2:printf(请输入学生学号(学号应大于0):); scanf(%d,&p1-number);/*输入学号,学号应大于0*/ while(p1-numbernumber); /*输入学号为字符或小于0时,程序报错,提示重新输入学号*/if(p1-number=0) goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/elsep3=head;if(n0) for(i=0;inumber!=p3-number) p3=p3-next; else printf(学号重复,请重输!n); goto repeat2; /*当输入的学号已经存在,程序报错,返回前面重新输入*/ printf(请输入学生姓名:); scanf(%s,&p1-name);/*输入学生姓名*/ printf(请输入语文成绩(0100):); scanf(%f,&p1-yuwen);/*输入语文成绩,成绩应在0-100*/ while(p1-yuwenyuwen100)getchar(); printf(输入错误,请重新输入语文成绩); scanf(%f,&p1-yuwen);/*输入错误,重新输入语文成绩直到正确为止*/ printf(请输入英语成绩(0100):); scanf(%f,&p1-yingyu);/*输入英语成绩,成绩应在0-100*/ while(p1-yingyuyingyu100)getchar(); printf(输入错误,请重新输入英语成绩); scanf(%f,&p1-yingyu);/*输入错误,重新输入英语成绩直到正确为止*/ printf(请输入数学成绩(0100):); scanf(%f,&p1-shuxue);/*输入数学成绩,成绩应在0-100*/ while(p1-shuxueshuxue100)getchar(); printf(输入错误,请重新输入数学成绩); scanf(%f,&p1-shuxue);/*输入错误,重新输入数学成绩直到正确为止*/ end: p1=head; p3=p1;for(i=1;in;i+) for(j=i+1;jnext; if(max-numberp1-number) k=max-number; max-number=p1-number; p1-number=k; /*交换前后结点中的学号值,使得学号大者移到后面的结点中*/ strcpy(t,max-name); strcpy(max-name,p1-name); strcpy(p1-name,t); /*交换前后结点中的姓名,使之与学号相匹配*/ fen=max-yuwen; max-yuwen=p1-yuwen; p1-yuwen=fen; /*交换前后结点中的语文成绩,使之与学号相匹配*/ fen=max-yingyu; max-yingyu=p1-yingyu; p1-yingyu=fen; /*交换前后结点中的英语成绩,使之与学号相匹配*/ fen=max-shuxue; max-shuxue=p1-shuxue; p1-shuxue=fen; /*交换前后结点中的数学成绩,使之与学号相匹配*/ max=head;p1=head;/*重新使max,p指向链表头*/ p2-next=null;/*链表结尾*/ printf(输入的学生数为:%d个!n,n);printf(请输入文件路径及文件名:);scanf(%s,filepn);if(fp=fopen(filepn,w+)=null)printf(不能打开文件!n);return 0; fprintf(fp, 考试成绩管理系统 n); fprintf(fp,-n); fprintf(fp,|学号t|姓名t|语文t|英语t|数学t|n); fprintf(fp,-n);/*打印表格域*/while(p1!=null)fprintf(fp,%dt%st%.1ft%.1ft%.1ftn,p1-number,p1-name,p1-yuwen,p1-yingyu,p1-shuxue);p1=p1-next;/*下移一个结点*/fclose(fp);printf(文件已经保存!n);if(head=null) printf(n没有任何学生资料!n);elseprintf(%dn,n);printf(-n);printf(|学号t|姓名t|语文t|英语t|数学t|n);printf(-n);/*打印表格域*/p=head; do printf(|%dt|%st|%.1ft|%.1ft|%.1ft|n,p-number,p-name,p-yuwen,p-yingyu,p-shuxue); printf(-n);/*打印表格域*/ p=p-next;while (p!=null);/*打印完成了*/return(head);score *statistics_sall(score *head)float ssum=0;score *p=head;int y=0,i=0;if(head=null) printf(n没有任何学生资料!n);return(head);/*链表为空*/ else printf(-n); printf(|学号t|姓名t|语文t|英语t|数学t|总分t|平均分t|n); printf(-n);/*打印表格域*/ while(p!=null) ssum=p-yuwen+p-yingyu+p-shuxue; /*计算个人总分*/ p-save=ssum/3;/*计算个人平均分*/ printf(|%dt|%st|%.1ft|%.1ft|%.1ft|%.1ft|%.1ft|n,p-number,p-name,p-yuwen,p-yingyu,p-shuxue,ssum,p-save); /*打印结果*/ printf(-n);/*打印表格域*/ p=p-next; return(head);score *caverage(score *head)float sum1=0,sum2=0,sum3=0,ave1=0,ave2=0,ave3=0;score *p=head;int x=0,y=0,i=0;if(head=null) printf(n没有任何学生资料!n);return(head);/*链表为空*/ while(p!=null) sum1=sum1+p-yuwen; sum2=sum2+p-yingyu; sum3=sum3+p-shuxue;/*计算总分*/ y=y+1; ave1=sum1/y; ave2=sum2/y; ave3=sum3/y;/*计算平均分*/ p=p-next;/*使p指向下一个结点*/ printf(语文平均分是%.1fn,ave1); printf(英语平均分是%.1fn,ave2); printf(数学平均分是%.1fn,ave3);/*打印结果*/ return(head);score *taxis(score *head) score *p,*max;int i,j;float fen,ssum;char t10; if(head=null)printf(n没有任何学生资料,请先建立链表!n);return(head);/*链表为空*/max=p=head;for(i=1;in;i+) for(j=i+1;jnext; if(max-savep-save) k=max-number; max-number=p-number; p-number=k; /*交换前后结点中的学号值,使得学号大者移到后面的结点中*/ strcpy(t,max-name); strcpy(max-name,p-name); strcpy(p-name,t); /*交换前后结点中的姓名,使之与学号相匹配*/ fen=max-yuwen; max-yuwen=p-yuwen; p-yuwen=fen; /*交换前后结点中的语文成绩,使之与学号相匹配*/ fen=max-yingyu; max-yingyu=p-yingyu; p-yingyu=fen; /*交换前后结点中的英语成绩,使之与学号相匹配*/ fen=max-shuxue; max-shuxue=p-shuxue; p-shuxue=fen; /*交换前后结点中的数学成绩,使之与学号相匹配*/ max=head; p=head;/*重新使max,p指向链表头*/printf(%dn,n);printf(-n); printf(|学号t|姓名t|语文t|英语t|数学t|平均分t|n); printf(-n);/*打印表格域*/ while(p!=null) ssum=p-yuwen+p-yingyu+p-shuxue; /*计算个人总分*/ p-save=ssum/3;/*计算个人平均分*/ printf(|%dt|%st|%.1ft|%.1ft|%.1ft|%.1ft|n,p-number,p-name,p-yuwen,p-yingyu,p-shuxue,p-save); /*打印结果*/ printf(-n);/*打印表格域*/ p=p-next;return(head);score *search(score *head)/*函数search,功能:查询学生成绩*/int number;score *p1,*p2;printf(输入要查询的学生的学号,);scanf(%d,&number);while(number!=0) if(head=null)printf(n没有任何学生资料!n);return(head); printf(-n); printf(|学号t|姓名t|语文t|英语t|数学t|n); printf(-n);/*打印表格域*/ p1=head; while(number!=p1-number&p1-next!=null)p2=p1;p1=p1-next; if(number=p1-number) printf(|%dt|%st|%.1ft|%.1ft|%.1ft|n,p1-number,p1-name,p1-yuwen,p1-yingyu,p1-shuxue); printf(-n);/*打印表格域*/ else printf(%d不存在此学生!n,number); printf(输入要查询的学生的学号,); scanf(%d,&number);printf(已经退出了!n);return(head);score *alter(score *head)score *p; int number; p=head;printf(请你输入要修改的学生学号:); scanf(%d,&number); getchar();if(head=null) printf(n没有任何学生资料!n); return(head); else while(p-number!=number) p=p-next;printf(请你输入新学号:); scanf(%d,&p-number); printf(请你输入新姓名(原来是%s):,p-name); scanf(%s,p-name); getchar(); printf(请你输入新的语文成绩(原来是%f分):,p-yuwen); scanf(%f,&p-yuwen); getchar(); printf(请你输入新的英语成绩(原来是%f分):,p-yingyu); scanf(%f,&p-yingyu); getchar(); printf(请你输入新的数学成绩(原来是%f分):,p-shuxue); scanf(%f,&p-shuxue); printf(n=提示:资料修改成功!n); return(head);score *del(score *head)/*函数del,功能:删除学生资料*/score *p1,*p2;int number;printf(输入要删除的学生的学号(输入0时退出):);scanf(%d,&number);getchar();while(number!=0)/*输入学号为0时退出*/if(head=null) printf(n没有任何学生资料!n); return(head);p1=head;while(number!=p1-number&p1-next!=null) /*p1指向的不是所要找的首结点,并且后面还有结点*/ p2=p1;p1=p1-next; /*p1后移一个结点*/ if(number=p1-number) /*找到了*/ if(p1=head) head=p1-next; /*若p1指向的是首结点,把地二个结点地址赋予head*/ else p2-next=p1-next; /*否则将下一个结点地址 赋给前一结点地址*/ printf(删除:%dn,number);n=n-1;else printf(%d不存在此学生!n,number);/*找不到该结点*/printf(输入要删除的学生的学号:);scanf(%d,&number);getchar();#ifdef debug printf(已经退出了!n);#endifprintf(现在的学生数为:%d个!n,n)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年互联网金融平台用户信任度评估与金融科技风险评估报告
- 行政管理与公共关系的协调机制试题及答案
- 工程经济与行业竞争力的影响试题及答案
- 2025年工程经济重要数据试题及答案
- 年产20万吨多晶硅建设项目可行性研究报告(范文模板)
- 项目团队建设的重要性试题及答案
- 2025年管理学考察标准试题及答案
- 城市旅游发展与市政管理试题及答案
- 2025内蒙古准格尔旗国众人力资源服务有限责任公司招考50人笔试参考题库附带答案详解
- 2025年工程项目管理发展战略试题及答案
- JGT334-2012 建筑外墙用铝蜂窝复合板
- 个体防护装备PPE重要性课件
- 图纸会审记录表格
- 量子力学主要知识点复习资料
- 如何编制过程流程图、PFMEA、控制计划文件
- 湖南省2023年跨地区普通高等学校对口招生第一次联考(语文对口)参考答案
- 液化石油气充装操作规程
- 初中《道德与法治》课堂有效教学的建构、实施与创新
- 供应链公司成立方案
- 质量风险与机遇分析评价表完整
- 宠物美容与护理PPT全套完整教学课件
评论
0/150
提交评论