您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 成绩管理系统V6.0
HarbinInstituteofTechnologyC语言实验大作业课程名称:C语言程序设计报告类型:程序设计报告实验题目:学生成绩管理系统v6.0实验类型:(综合设计型/创新研究型)所在院系:航天学院电子信息类学生类别:本科生指导教师:郭萍学生姓名:王福海班级和学号:电子信息五班1162100527实验时间:2017.5.20成绩评定:哈尔滨工业大学1实验目的将教材中所包含的内容系统化考察,考察一维、二维数组,函数的调用,排序、查找、统计分析等常用算法,指针,动态数组以及结构体的应用。2实验内容和要求1.实验内容学生成绩管理系统V6.0。某班有最多不超过30人(具体人数由键盘输入)参加最多不超过六门的考试(具体门数由键盘输入),定义结构体类型,用结构体数组作函数参数,编程实现学生成绩的管理。2.实验要求采用自顶向下、逐步求精的模块化设计思想设计小型数据库管理系统,对学生成绩进行管理。要求按系统的需求分析、系统设计(总体设计、各个模块的设计)、系统实现(各个模块的实现)、系统测试等过程组织报告内容,说明采用了什么数据结构和算法,遇到哪些问题,这些问题是如何解决的,本设计的亮点和难点在哪里,实验结果如何,有哪些收获和学习体会。3.系统功能需求分析本系统主要实现下面的功能:(1)录入每个学生的学号和考试成绩;(2)计算每门课程的总分和平均分;(3)计算每个学生的总分和平均分;(4)按成绩由高到低排出名次表;(5)按成绩由低到高排出名次表;(6)按学号由小到大排出成绩表;(7)按姓名字典的排序排出成绩表;(8)按学号查询学生排名及其考试成绩;(9)按姓名查询学生排名及其考试成绩;(10)按优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)5个类别,统计每个类别的人数以及所占的百分比;(11)输出每个学生学号姓名各科成绩及每门考试的总分平均分;(12)将每个学生信息写入文件;(13)从文件中读取每个学生信息并显示;4.实验环境采用win10操作系统,使用软件Dev-c++。3系统设计1.系统功能模块划分2.主要算法排序:进行学生成绩的排序从而出现排名表查找:通过多种方式如学号,姓名查找特定学生的成绩3.数据结构学生成绩管理系统五个档次录入成计算总分平均排名排标准分录入文件读取每个学生每门课按学号排序按学生成绩排名按姓名排序输出每个学生学号姓名各科成绩及每门考录入每个学生的学号和考试成绩计算每门课程的总分和平均分将每个学生信息写入文件从文件中读取每个学生信息并显示按学号由小到大排出成绩表计算每个学生的总分和平均分按成绩由高到低排出名次表按成绩由低到高排出名次表用户输入指令4.各模块(函数)的功能和接口设计:序号函数名函数功能函数参数1Menu显示菜单获得输入的选项无2Readscore录入学生信息STUstu[],m,n3Aversumofeverystudent计算每个学生总成绩平均值STUstu[],m,n4Aversumofeverycourse计算每门课程总成绩平均成绩STUstu[],m,n5Sortbyscore按成绩排序STUstu[],m,n6Ascending升序floata,b7Descending降序floata,b8Assortbynum按学号排序STUstu[],m,n9Sortbyname按姓名排序STUstu[],m,n10Searchbynum按学号查询学生信息STUstu[],m,n11Searchbyname按姓名查询学生信息STUstu[],m,n12StatisticAnlysis(STUstu[],intn,intm)分析学生成绩五个分数段所占百分比STUstu[],m,n13PrintScore打印输出学生成绩STUstu[],m,n14WritetoFile写入程序D盘student.txtSTUstu[],m,n15ReadfromFile读取文件STUstu[],m,n4系统实现1.系统的总流程图:显示菜单——输入用户的选择——根据用户的输入选择不同的操作退出case1:Readscore(stu,n,m);break;case2:Aversumofeverystudent(stu,n,m);break;case3:Aversumofeverycourse(stu,n,m);break;case4:Sortbyscore(stu,n,m,Descending);printf(\n成绩降序排序\n);Printscore(stu,n,m);break;case5:Sortbyscore(stu,n,m,Ascending);printf(\n成绩升序排序\n);Printscore(stu,n,m);break;case6:Assortbynum(stu,n,m);printf(\n学号升序排序\n);Printscore(stu,n,m);break;case7:Sortbyname(stu,n,m);printf(\n姓名升序排序\n);Printscore(stu,n,m);break;case8:Searchbynum(stu,n,m);break;case9:Searchbyname(stu,n,m);break;case10:StatisticAnlysis(stu,n,m);break;case11:Printscore(stu,n,m);break;case12:Writetofile(stu,n,m);break;case13:Readfromfile(stu,&n,&m);break;case0:printf(Endofprogram!\n);exit(0);2.程序的全部源代码:1#includestdio.h2#includestdlib.h3#includestring.h4typedefstructstudent5{6longnum;7charname[10];8floatscore[6];9floatsum;10floataver;11}STU;12intMenu(void);13voidReadScore(STUstu[],intn,intm);14voidAverSumofEveryStudent(STUstu[],intn,intm);15voidAverSumofEveryCourse(STUstu[],intn,intm);16voidSortbyScore(STUstu[],intn,intm,int(*compare)(floata,floatb));17intAscending(floata,floatb);18intDescending(floata,floatb);19voidSwapFloat(float*x,float*y);20voidSwapLong(long*x,long*y);21voidSwapChar(charx[],chary[]);22voidAsSortbyNum(STUstu[],intn,intm);23voidSortbyName(STUstu[],intn,intm);24voidSearchbyNum(STUstu[],intn,intm);25voidSearchbyName(STUstu[],intn,intm);26voidStatisticAnalysis(STUstu[],intn,intm);27voidPrintScore(STUstu[],intn,intm);28voidWritetoFile(STUstu[],intn,intm);29voidReadfromFile(STUstu[],int*n,int*m);30intmain()31{32charch;33intn=0,m=0;3435STUstu[30];3637printf(Inputstudentnumber:(lessthan30)\n);38scanf(%d,&n);3940printf(Inputcoursenumber:(lessthan6)\n);41scanf(%d,&m);4243while(1)44{45ch=Menu();46switch(ch)47{48case1:ReadScore(stu,n,m);49break;50case2:AverSumofEveryCourse(stu,n,m);51break;52case3:AverSumofEveryStudent(stu,n,m);53break;54case4:SortbyScore(stu,n,m,Descending);55printf(\nSortindescendingorderbyscore:\n);56PrintScore(stu,n,m);57break;58case5:SortbyScore(stu,n,m,Ascending);59printf(\nSortinascendingorderbyscore:\n);60PrintScore(stu,n,m);61break;62case6:AsSortbyNum(stu,n,m);63printf(\nSortinascendingorderbynumber:\n);64PrintScore(stu,n,m);65break;66case7:SortbyName(stu,n,m);67printf(\nSortindictionaryorderbyname:\n);68PrintScore(stu,n,m);69break;70case8:SearchbyNum(stu,n,m);71break;72case9:SearchbyName(stu,n,m);73break;74case10:StatisticAnalysis(stu,n,m);75break;76case11:PrintScore(stu,n,m);77break;78case12:WritetoFile(stu,n,m);79break;80case13:ReadfromFile(stu,&n,&m);81break;82case0:printf(Endofprogram!\n);83exit(0);8485default:printf(Inputerror!\n);86}87}88return0;89}90/*Menu:显示菜单并获得用户键盘输入的选项*/91intMenu(void)92{93inta;9495printf(ManagementforStudents'scores\n);96printf(1.Inputrecord\n);97printf(2.Caculatetotalandaveragescoreofeverycourse\n);98printf(3.Caculatetotalandaveragescoreofeverystudent\n);99printf(4.Sortindescendingorderbyscore\n);100printf(5.Sortinascendingorderbyscore\n);101printf(6.Sortinascendingorderbynumber\n);102printf(7.Sortindictionaryorderbyname\n);103printf(8.Searchbynumber\n);104printf(9.Searchbyname\n);105printf(10.Statisticanalysis\n);106printf(11.Listrecord\n);107printf(12.Writetoafile\n);108printf(13.Readfromafile\n);109printf(0.Exit\n);110printf(PleaseInputyourchoice:);111112scanf(%d,&a);113114returna;115116}1
本文标题:成绩管理系统V6.0
链接地址:https://www.777doc.com/doc-5662481 .html