C语言课程设计报告-- 学生成绩统计系统

上传人:dus****log 文档编号:125951836 上传时间:2022-07-27 格式:DOC 页数:15 大小:840KB
返回 下载 相关 举报
C语言课程设计报告-- 学生成绩统计系统_第1页
第1页 / 共15页
C语言课程设计报告-- 学生成绩统计系统_第2页
第2页 / 共15页
C语言课程设计报告-- 学生成绩统计系统_第3页
第3页 / 共15页
点击查看更多>>
资源描述
/ C语言课程设计书 设计题目: 学生成绩统计系统 课程名称: C语言课程设计 学 院 :物理与光电工程学院 专业班级: 电子科学与技术(1)班 学 号 : 3111008376 姓 名 : 何灿豪 联系方式 : 任课教师 : 刘力斌 2013 年 11月 10日 目录 设计目的 2 任务要求 2 总体设计 2 部分程序 4 调试分析过程 9 课程设计总结 13 题目:学生成绩统计一、设计目的:(1)该课程设计要求学生既动手又动脑,自学,查资料,独立实践。将上学期课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编(程的能力,使对C语言系统编程有一个大致的了解。(2)C语言的实践。掌握C语言函数的定义方法,函数的声明及函数的调用过程。掌握结构体类型变量的定义和使用,综合应用C语言的知识,实现一个完整的系统,提高编程能力,体会软件程序的开发过程。二、任务要求:假设某班有:30人(姓名自定)考试课程有:高等数学、物理、外语、C语言、德育5门课程。将所有同学的成绩保留在文件中,对文件中的数据处理,输出所要求的内容, 程序的功能主要包括3方面: 输入成绩到文件中 输出成绩 输出不及格学生名单 成绩排序 修改记录 删除记录 插入记录等主函数中对3个功能选择(菜单),调用对应的函数完成。三、总体设计:(1)程序设计组成框图1.按班级输出学生成绩单2.按姓名查询学生成绩管理系统3.增加学生4.删除学生5.按班级修改学生成绩6.保存所有学生信息7.显示不及格学生成绩8.按平均成绩排序并输出成绩9.退出(2)模块功能说明1 输出功能:显示全部学生的记录。2 查询功能:输入姓名可以查询学生的详细信息。3 增加功能:增加新学生的信息。 4 删除功能:删除学生信息。5 修改功能:修改学生的错误信息。6 保存功能:保存已输入信息。7读取功能:读取已输入信息。8显示功能:按照所需要的要求显示学生记录。9 排序功能:按照要求完成对学生信息的排序。 10 退出系统。(3)程序流程图开始学生成绩单结束输入数字平均分排序不及格名单保存信息增加学生退出按班修改按姓名查询删除学生四、部分程序代码如下:(1) 该函数功能:从文件中读学生信息到链表中void ReadInfoFormFile(void)FILE *fp;STUDENT *p;fp=fopen(student.txt,r);if(!fp)printf(文件不存在n);return;p=MallocNode();while(fscanf(fp,%s%s%s%f%f%f%f%f,p-studentNumber,p-studentName,p-className,&(p-mark1),&(p-mark2),&(p-mark3),&(p-mark4),&(p-mark5)0)InsertOneNode(p);p=MallocNode();fclose(fp);(2)该函数功能:显示菜单,根据用户的输入的数字完成对应的功能void DesplayMenu(void)STUDENT *p; printf(tt=欢迎来到学生成绩管理系统=n);printf(ttt-请选择相应功能-n);printf(tt|*|n);printf(tt|- 1 按班级输出学生成绩单 -|n);printf(tt|- 2 按姓名查询-|n);printf(tt|- 3 增加学生 -|n);printf(tt|- 4 删除学生 -|n);printf(tt|- 5 按班级修改学生成绩 -|n);printf(tt|- 6 保存所有学生信息 -|n);printf(tt|- 7 显示不及格学生名单-|n);printf(tt|- 8 按平均成绩排序并输出成绩-|n);printf(tt|- 9 退出 -|n);printf(tt|*|n);printf(tttttt制作者:何灿豪n); printf(tttttt制作时间:2013年11月10号n); scanf(%d,&choose);/*取得用户的选择*/switch(choose)case 1:OutputInformation();/*显示所有学生的信息*/break;case 2:DesplayInfoBystudentName();break;case 3:p=MallocNode();/*先申请一个新结点*/GetInformation(p);/*要求用户输入信息到新结点中*/InsertOneNode(p);/*将新结点加到链表中*/break;case 4:DeleteNodeBystudentNumber();/*根据用户输入的学号删除该学生*/break;case 5:ChangeMarkByName();/*根据用户输入的姓名修改学生成绩*/break;case 6:SaveLinkToFile();/*保存数据*/break;case 7:DesplayMarkSegment();/*显示不及格的学生成绩*/break;case 8:CompositorByTotalMark();/*按平均成绩排序*/break;case 9:SaveLinkToFile();/*保存数据后再退出*/free(headLink);exit(1);break;default:break;DesplayMenu();/*递归调用*/(3)函数功能:根据用户输入的学号删除该学生void DeleteNodeBystudentNumber(void)char studentNumber10;STUDENT *p,*q;char flag=0;printf(请输入要删除的学生学号:);scanf(%s,studentNumber);p=headLink;q=headLink-next;while(q) if(strcmp(q-studentNumber,studentNumber)=0) p-next=q-next; free(q); flag=1; break; p=p-next; q=q-next; if(!flag)printf(不存在该学号的学生n);return;printf(成功删除n);(4)该函数功能是:保存链表数据到文件中void SaveLinkToFile(void)STUDENT *p;FILE *fp;p=headLink-next;if(p=NULL)printf(现在没有学生信息,请先输入学生信息nn);return;fp=fopen(student.txt,w+);if(!fp)printf(文件不存在n);return;while(p)fprintf(fp,%s %s %s %f %f %fn,p-studentNumber,p-studentName,p-className,p-mark1,p-mark2,p-mark3,p-mark4,p-mark5);p=p-next;fclose(fp);(5)函数功能:输出不及格学生名单 void DesplayMarkSegment(void)STUDENT *p;p=headLink-next;printf(不及格学生的名单有:n);while(p)if(6(int)(p-mark1/10)|(6(int)(p-mark2/10)|(6(int)(p-mark3/10)|(6(int)(p-mark4/10)|(6(int)(p-mark3/10)/*只要有一科不及格就认为该生不及格*/printf(%sn,p-studentName);p=p-next;(6)该函数功能:按平均成绩进行排序void CompositorByTotalMark(void)STUDENT exchange,*r,*p,*q;r=headLink-next;if(r=NULL)printf(现在还没学生信息,请先输入学生信息n);return;while(r)/*两层while循环实现排序*/p=r;q=r-next;while(q)if(q-mark1+q-mark2+q-mark3+q-mark4+q-mark5)(p-mark1+p-mark2+p-mark3+p-mark4+p-mark5)strcpy(exchange.studentNumber,q-studentNumber);/*先复制q结点信息到exchange*/strcpy(exchange.studentName,q-studentName);strcpy(exchange.className,q-className);exchange.mark1=q-mark1;exchange.mark2=q-mark2;exchange.mark3=q-mark3;exchange.mark4=q-mark4;exchange.mark5=q-mark5;strcpy(q-studentNumber,p-studentNumber);/*再复制p结点信息到q*/strcpy(q-studentName,p-studentName);strcpy(q-className,p-className);q-mark1=p-mark1;q-mark2=p-mark3;q-mark3=p-mark3;q-mark4=p-mark4;q-mark5=p-mark5;strcpy(p-studentNumber,exchange.studentNumber);/*最后复制exchange结点信息到p*/strcpy(p-studentName,exchange.studentName);strcpy(p-className,exchange.className);p-mark1=exchange.mark1;p-mark2=exchange.mark2;p-mark3=exchange.mark3;p-mark4=exchange.mark4;p-mark5=exchange.mark5;q=q-next;r=r-next;OutputInformation();五、调试分析过程:界面:增加学生:输出学生成绩单:按姓名查询:删除学生:输出不及格的名单:按平均成绩排序输出:六、设计总结: 通过这次的课程设计,让我更加地对C语言有更深的了解,还有让我发现了在结构体和链表这方面的知识要有待加强。第一次编程这么多的程序,说实话真的有点难度,但是通过后面慢慢的看书,一点点地去解决问题。在编写程序是一定要注意细节的问题,因为一个小小错误会导致整个程序不能运行,例如分号一定要加,否则在编译的时候会出现错误,当然它会提示哪里有错误的,这种小错误最好能避免。一开始调试的时候出现了几十条错误的记录,其中包括小错误的,但是,只要慢慢的检查的话,程序就会趋向完善,最后程序就会运行的。C语言是计算机编程语言中最基础的语言,务必要熟练掌握。所以在以后的练习中,一定要多多写这样的程序,这样的话才能提高编程的能力。经过一周的编程实习,并在后一段的报告总结,我对C语言这门科有新的认识,本人实在是获益不浅!要想编写一个准确、高效并有使用价值的程序,一定先要对课本知识熟悉,还要掌握必要的上机操作能力,写程序其实很容易而关键在于调试程序。这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验。13
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


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

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


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