学生管理系统C语言-课设报告_第1页
学生管理系统C语言-课设报告_第2页
学生管理系统C语言-课设报告_第3页
学生管理系统C语言-课设报告_第4页
学生管理系统C语言-课设报告_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Page1PAGEPage24PAGE24综合程序课程设计说明书课程设计名称:综合程序课程设计课程设计题目:学生成绩管理系统学院名称:信息工程学院专业:电子信息科学与技术班级:130431学号:13043137姓名:欧宏飞评分:教师:陶秋香2016年3月16日综合程序课程设计课程设计任务书2015-2016学年第二学期第1周-2周题目学生成绩管理系统内容及要求请用C(C++)编写一系统,实现学生信息管理,软件的入口界面应包括如下几个方面:功能要求:(1)信息维护:要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息(2)信息查询:要求:查询时可实现按姓名查询、按学号查询(3)成绩统计:要求:A输入任意的一个课程名和一个分数段,统计出在此分数段的学生情况。(4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果进度安排第一周分模块安排任务完成各个模块的设计。第二周将各个模块统一整合并调试,直到实现功能。学生姓名:欧宏飞指导时间3月1日至3月16日指导地点:综合楼南506室任务下达2016年3月1日任务完成2016年3月16日考核方式1.评阅□2.答辩□3.实际操作□4.其它□指导教师陶秋香系(部)主任注:1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档。摘要当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。目前随着个大高校的扩招,在校学生数量庞大。拥有一款好的学习成绩管理系统软件,对于加强对在校生的成绩管理起到积极作用。并且,可以为在校生随时查阅自己的成绩信息、教师录入成绩、管理员进行信息维护等提供方便,为学校节省大量人力资源本系统就是为了管理好学生成绩信息而设计的。我们这次设计通过分析用户需求针对性的设计了一个简易的学生管理系统来简单的实现记录、添加删除、排序等功能。关键字:管理、软件、成绩信息TOC\o"1-3"\h\u摘要 3学生成绩管理系统 5一、设计要求 5二、设计目的 5三、需求分析 61、问题的提出 62、系统的业务功能分析 63、数据字典 6四、概要设计 8五、详细设计 81)主要数据结构: 82)模块功能: 9六、源程序 11七、心得体会 23八、参考文献: 24学生成绩管理系统一、设计要求现有学生成绩信息,内容如下姓名学号语文数学英语政治张明明0167788290李成友0278918880张辉灿0368825687王露0456457767陈东明0567384770….......…请用C(C++)编写一系统,实现学生信息管理,软件的入口界面应包括如下几个方面:(一)功能要求:(1)信息维护:要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息(2)信息查询:要求:查询时可实现按姓名查询、按学号查询(3)成绩统计:要求:A输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。(4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)二、设计目的1)培养学生综合程序设计的能力,训练学生灵活应用所学数据结构知识,独立完成问题分析、总体设计、详细设计和编程实现等软件开发全过程的综合实践能力。2)巩固、深化学生的理论知识,提高编程水平,培养严谨的科学态度和良好的学习作风。为今后学习其他计算机课程打下基础。3)将书本上的理论知识和工作、生产实际有机地结合起来,从而锻炼学生分析问题、解决实际问题的能力,提高编程序能力和创新意识。三、需求分析1、问题的提出为了提高高校学生成绩信息的管理效率,方便学生和教师对学生成绩信息进行查询、方便学校里面管理员去管理和查询学生信息,建立一个学生成绩管理系统,使学生信息管理工作规范化,系统化,程序化,避免学生成绩管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改学生信息是必须而且十分迫切的工作。本次课程设计题目为《学生成绩管理系统》,涉及老师对学生成绩的查询、学生对学生成绩的查询、教务员对学生成绩的增删改查统计等内容。本功能实现对学生信息、教师信息情况信息的管理和统计、课程信息和成绩信息查看及维护。2、系统的业务功能分析学生成绩管理系统应当将学生与教务员区分开来,因为增、删、改、统计的权限应当只有教务员才拥有,学生只能查询与自己相关的记录,老师查询自己所授课程的记录,而教务员则录入数据,进行增删改与统计。另外,在日常学习生活中,为了方便老师和同学了解情况,需要提供平均分、最高(低)分、排名等供老师和学生查询。具体分析:①用户要能够查询自己所学课程的成绩,查看自己不同课程的成绩、GPA以及排名,查看个人信息等。②用户要实现对各分数段成绩单人数成绩的查询(排序功能),个人资料的修改等。3、数据字典(1).数据流①班级信息,包括班级编号,学院编号等信息。②学生信息,包括学生编号,学生姓名,性别,班级,联系方式等信息。③课程信息,包括课程号,课程名称,学分。(2).数据存储成绩表信息,包括学生编号,课程编号,课程绩点,课程成绩等信息。四、概要设计学生成绩管理系统学生成绩管理系统读取文件1读取文件2合并两文件放在文件3把补考的放在文件4退出查找文件中的人信息五、详细设计1)主要数据结构:structStudent{charID[20];charName[20];floatMark1;floatMark2;floatMark3; floatMark4;};2)模块功能:输入模块、输出模板、排序模板、删除模板、修改模块、查询模块1、生成文件3:实现对两个文件数据进行合并,生成新文件3.txt;2、查看文件3:显示文件3里的所有信息;3、生成文件补考文件4:抽取出三科成绩中有补考的学生并保存在一个新文件4.txt;4、查看文件4:显示文件4里的所有信息;5、排序后的文件3:对合并后的文件3.txt中的数据按总分降序排序(冒泡、插入);6、查找学生信息:按姓名查找学生的信息并输出结果(顺序、折半);3)调用关系主函数可调用其它函数图一、输出模块图二、排序模块图三、删除模块图四、修改模块六、源程序#include"stdio.h"#include"string"/*定义学生结构体*/structStudent{charID[20];charName[20];floatMark1;floatMark2;floatMark3; floatMark4;};/*声明学生数组及学生数量*/structStudentstudents[1000];intnum=0;/*通过学号返回数组下标*/intStudent_SearchByIndex(charid[]){inti;for(i=0;i<num;i++){if(strcmp(students[i].ID,id)==0){returni;}}return-1;}/*通过姓名返回数组下标*/intStudent_SearchByName(charname[]){inti;for(i=0;i<num;i++){if(strcmp(students[i].Name,name)==0){returni;}}return-1;}/*显示单条学生记录*/voidStudent_DisplaySingle(intindex){printf("%10s%10s%10s%10s%10s%10s%10s\n","姓名","学号","语文成绩","数学成绩","英语成绩","政治成绩");printf("\n");("%10s%10s%10.2f%10.2f%10.2f%10.2f\n",students[index].Name,students[index].ID,students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Mark4);}/*插入学生信息*/voidStudent_Insert(){while(1){ printf("请输入姓名:");scanf("%s",&students[num].Name);getchar(); printf("请输入学号:");scanf("%s",&students[num].ID);getchar();printf("请输入语文成绩:");scanf("%f",&students[num].Mark1);getchar();printf("请输入数学成绩:");scanf("%f",&students[num].Mark2);getchar();printf("请输入英语成绩:");scanf("%f",&students[num].Mark3);getchar(); printf("请输入政治成绩:");scanf("%f",&students[num].Mark4);getchar();num++;printf("是否继续?(y/n)");if(getchar()=='n'){break;}}}/*修改学生信息*/voidStudent_Modify(){//floatmark1,mark2,mark3;while(1){charid[20];intindex;printf("请输入要修改的学生的学号:");scanf("%s",&id);getchar();index=Student_SearchByIndex(id);if(index==-1){printf("学生不存在!\n");}else{printf("你要修改的学生信息为:\n");Student_DisplaySingle(index);printf("--请输入新值--\n");printf("请输入姓名:");scanf("%s",&students[index].Name);getchar();printf("请输入学号:");scanf("%s",&students[index].ID);getchar();printf("请输入语文成绩:");scanf("%f",&students[index].Mark1);getchar();printf("请输入数学成绩:");scanf("%f",&students[index].Mark2);getchar();printf("请输入英语成绩:");scanf("%f",&students[index].Mark3);getchar(); printf("请输入政治成绩:");scanf("%f",&students[index].Mark4);getchar();}printf("是否继续?(y/n)");if(getchar()=='n'){break;}}}/*删除学生信息*/voidStudent_Delete(){inti;while(1){charid[20];intindex;printf("请输入要删除的学生的学号:");scanf("%s",&id);getchar();index=Student_SearchByIndex(id);if(index==-1){printf("学生不存在!\n");}else{printf("你要删除的学生信息为:\n");Student_DisplaySingle(index);printf("是否真的要删除?(y/n)");if(getchar()=='y'){for(i=index;i<num-1;i++){students[i]=students[i+1];//把后边的对象都向前移动}num--;}getchar();}printf("是否继续?(y/n)");if(getchar()=='n'){break;}}}/*按姓名查询*/voidStudent_Select(){while(1){charname[20];intindex;printf("请输入要查询的学生的姓名:");scanf("%s",&name);getchar();index=Student_SearchByName(name);if(index==-1){printf("学生不存在!\n");}else{printf("你要查询的学生信息为:\n");Student_DisplaySingle(index);}printf("是否继续?(y/n)");if(getchar()=='n'){break;}}} //按语文成绩排序voidStudent_SortMark1(){ inti,j;structStudenttmp;for(i=0;i<num;i++){for(j=1;j<num-i;j++){if(students[j-1].Mark1<students[j].Mark1){tmp=students[j-1];students[j-1]=students[j];students[j]=tmp;}}}}//按数学成绩排序voidStudent_SortMark2(){ inti,j;structStudenttmp;for(i=0;i<num;i++){for(j=1;j<num-i;j++){if(students[j-1].Mark2<students[j].Mark2){tmp=students[j-1];students[j-1]=students[j];students[j]=tmp;}}}}//按英语成绩排序voidStudent_SortMark3(){ inti,j;structStudenttmp;for(i=0;i<num;i++){for(j=1;j<num-i;j++){if(students[j-1].Mark3<students[j].Mark3){tmp=students[j-1];students[j-1]=students[j];students[j]=tmp;}}}}//按政治成绩排序voidStudent_SortMark4(){ inti,j;structStudenttmp;for(i=0;i<num;i++){for(j=1;j<num-i;j++){if(students[j-1].Mark4<students[j].Mark4){tmp=students[j-1];students[j-1]=students[j];students[j]=tmp;}}}}/*显示学生信息*/voidStudent_Display(){inti;printf("%10s%10s%10s%10s%10s%10s\n","姓名","学号","语文","数学","英语","政治");printf("\n");for(i=0;i<num;i++){printf("%10s%10s%10.2f%10.2f%10.2f%10.2f\n",students[i].Name,students[i].ID,students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Mark4);}}/*将学生信息从文件读出*/voidIO_ReadInfo(){FILE*fp;inti;if((fp=fopen("Database.txt","rb"))==NULL){printf("不能打开文件!\n");return;}if(fread(&num,sizeof(int),1,fp)!=1){num=-1;}else{for(i=0;i<num;i++){fread(&students[i],sizeof(structStudent),1,fp);}}fclose(fp);}/*将学生信息写入文件*/voidIO_WriteInfo(){FILE*fp;inti;if((fp=fopen("Database.txt","wb"))==NULL){printf("不能打开文件!\n");return;}if(fwrite(&num,sizeof(int),1,fp)!=1){printf("写入文件错误!\n");}for(i=0;i<num;i++){if(fwrite(&students[i],sizeof(structStudent),1,fp)!=1){printf("写入文件错误!\n");}}fclose(fp);}/*主程序*/voidmain(){intchoice;IO_ReadInfo();while(1){/*主菜单*/printf("\n学生成绩管理系统\n");printf("1.增加学生记录\n");printf("2.修改学生记录\n");printf("3.删除学生记录\n");printf("4.按姓名查询学生记录\n");printf("5.按成绩排序\n");printf("6.退出\n");printf("请选择(1-6):");scanf("%d",&choice);getchar();switch(choice){case1:Student_Insert();break;case2:Student_Modify();break;case3:Student_Delete();break;case4:Student_Select();break;case5: printf("1.按语文排序\n"); printf("2.按数学排序\n"); printf("3.按英语排序\n"); printf("4.按政治排序\n");scanf("%d",&choice);getchar();switch(choice) { case1:Student_SortMark1();Student_Display();break; case2: Student_SortMark2();Student_Display();break; case3:Student_SortMark3();Student_Display();break; case4:Student_SortMark4();Student_Display();break; } break;case6:exit(0);break;}IO_WriteInfo();}}六、测试结果合并:图一排序:冒泡排序:

温馨提示

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

评论

0/150

提交评论