下载此文档

学生成绩管理系统课程设计实验报告.pdf


文档分类:高等教育 | 页数:约22页 举报非法文档有奖
1/22
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/22 下载此文档
文档列表 文档介绍
该【学生成绩管理系统课程设计实验报告 】是由【青山代下】上传分享,文档一共【22】页,该文档可以免费在线阅读,需要了解更多关于【学生成绩管理系统课程设计实验报告 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..学生成绩管理系统课程设计实验报告学生成绩管理系统是一个用于管理学生基本成绩信息的系统,可以存储多种信息并进行各种操作。首先,该系统能够实现数据的输入,包括学生的班级、学号、姓名、性别、年龄、选修课程编号、名称、考试成绩、平时成绩和综合成绩等信息。同时,如果发现输入有误或需要修改学生信息,可以利用修改函数进行修改,并且可以修改任意需要修改的信息。此外,当需要添加学生信息时,可以使用添加函数及时补充所需信息。当所有学生信息输入完整无误后,该系统可以进行信息查询,支持按姓名和学号查询,能够显示出该生的所有信息。如果输入信息不正确,系统会提示错误并允许重新输入。此系统还可以进行信息删除,当有学生退学或休学时,可以使用删除函数删除特定的学生信息,从而减少冗余信息。该系统还可以显示输入的所有信息,并计算每个同学的平均成绩,对所有学生按平均成绩高低进行排序,输出排序后的成绩表。此外,该系统还能列出不及格学生的学号、姓名、课程和成绩,方便进行统一的管理。:..该系统的模块设计清晰,各模块的算法简单高效,整个系统由主函数调用各个模块而组成。可以将函数分为数据录入模块、数据修改模块、数据添加模块、数据查询模块(可分为姓名查询和学号查询)、数据删除模块、数据统计模块(包括成绩显示模块、成绩计算及排序模块和成绩分类模块)和文件保存模块,共计七大模块。主函数中包含界面模块。主控模块是整个系统的模块交汇点,使用者使用系统时先进入主控模块,通过主控模块可以调用任意的模块,达到预期的功能。:该模块允许录入学生的各种数据,并将信息存储在数组中,以便其他模块调用。:该模块可以修改已有的学生信息。当输入要修改的学生信息时,该模块会自动查找,若未找到则显示不存在,若找到则进入下一级列表,操作者可以根据界面标号进行任意修改。:该模块将学生的信息完整地存储在一个结构体数组中,以便其他模块调用。:..:该模块可以检索并筛选出符合要求的信息,并显示列表。若未搜索到信息,则显示未找到。(1)按姓名查询(2):该模块可以删除任意指定学生的信息。该模块首先会提醒操作者输入特定的学号,数据输入后进行搜索。若无此学生的信息,则显示不能找到;若找到此生信息,则显示删除成功。)成绩显示模块:输入选择号后,该模块可以显示已经输入系统的学生信息。2)成绩计算及排序模块:该模块可以利用平均成绩函数计算每位学生的平均成绩,并按学生平均成绩的高低进行排序,然后将学生姓名列表显示。3)成绩分类模块:该模块可以查找系统中不及格学生的信息,然后将该生的学号、姓名、不及格科目及分数显示出来。:..三、数据结构设计为了更好的管理和使用数据,本系统使用了数组来存储数据。定义了结构体来存放学生的各种类型的数据,使存放更合理,便于管理。为避免学生基本信息结构体stu太长,嵌套定义了一个选修课程结构体course。structcourse课程编号整型intnum;课程名字符串charname[10];考试成绩浮点型floatexam;平时成绩浮点型floatusual;综合成绩浮点型floattotal;structstu专业班级整型intclass;学生编号整型intnum;学生姓名字符串charname[10];性别字符串charsex[2];:..年龄整型intage;嵌套定义课程信息structcoursecourse[2];平均成绩浮点型floatavescore;程序后续模块都会用到以上结构体的信息,循环结构得以控制,能随时调用结构体中的信息。此函数实现查询功能。在屏幕提示下,操作者可选择按学号或姓名查询,接着输入相应的信息。查询成功后,会显示该学生的详细信息,否则显示“无学生信息”。()此函数实现删除功能。在屏幕提示下,操作者可选择按学号或姓名删除,接着输入相应的信息。删除成功后,会提示“删除成功”,否则显示“无学生信息”。()此函数实现排序功能。在屏幕提示下,操作者可选择按学号或平均分排序,接着按照选择的方式进行排序。排序成功后,会显示排序后的学生信息。():..此函数实现输出功能。在屏幕提示下,操作者可选择按学号或平均分输出,接着按照选择的方式进行输出。输出成功后,会显示所有学生的详细信息。()此函数实现数据保存功能。在屏幕提示下,操作者可选择保存到文件或数据库,接着按照选择的方式进行保存。保存成功后,会提示“保存成功”,否则显示“保存失败”。该函数用于实现查询功能。首先定义一个字符串数组来存储输入的学生姓名。操作者在屏幕提示下输入要查询的名字或学号,本模块采用字符串比较函数,当输入的字符串(名字或学号)与程序中的相同时,输出该生的所有信息(包括基本信息和选修信息),由for循环控制。此处采用了查询标志p:当查询正确时,p被赋值为1,显示信息;当没有查询信息时,p被赋值为0,在if语句控制下,显示“无学生信息”。由for语句控制循环。该函数用于实现删除功能。首先定义字符串变量name[15]和删除标志p。运用了字符串比较函数,当输入的字符串name与数据中的名字相同时,删除分两种情况::..。由for语句控制循环,运用了字符串比较函数,当输入的姓名存在时,从此学生开始,将后面的数组元素依次赋值给前面的数组元素(即覆盖掉),实现了删除的功能。同时,全局变量m会自减,p被赋值为1,显示“删除成功”。,直接m自减,在后面的输出函数output()的for(i=0;i<m-1;i++)语句中,m已经减1了,于是不输出最后一名同学的信息,没有实现物理内存上的删除,但实现了删除的功能。此时,p被赋值为1,显示“删除成功”。当输入的字符串name找不到相匹配的名字时,p被赋值为0,显示“没有学生档案”。该函数用于实现统计功能。1)该函数包含了输出功能。由printf函数将一系列的表格框架、表头及相关的信息输出,for(i=0;i<m-1;i++)语句控制基本信息循环。当前面插入了学生信息时,m自增,此时,输出函数会将加入的学生信息显示出来;当删除了某生的信息时,m自减,此时,输出函数不会显示被删学生信息。两个for语句控制课程信息的循环,输出对应学生的课程信息。:..2)该函数还包含了计算平均分的功能。通过for循环遍历每个学生的选修课程成绩,累加总分,并将总分除以选修课程数,计算出平均分。最后,通过printf函数输出平均分信息。,现在需要实现输出平均分及排序的功能。我们可以使用选择法排序,定义一个中间结构体变量temp。外层循环使用for(i=0;i<m-1;i++)控制排序的趟数,内层循环使用for(j=i+1;j<=m-1;j++)控制某趟中排序的次数。当stu[i].avescore<stu[j].avescore时,使用中间变量temp交换二者的信息,以实现高分在前,低分“沉”到最后。在外层循环中,输出学生姓名,实现从高到低的排序。。使用if语句判断,当stu[i].course[j].integral<60(综合分小于60)时,在for语句控制下,输出相关信息(包括学生姓名,课程名称,综合分数),以便于对学生进行安排。:..,为操作者提供时间进行其他操作。当某个模块运行完之后,屏幕显示“按任意键继续”,按键之后,回到操作界面可以进行其他操作。主函数说明::首先输入一个数字进入主菜单,包括输入信息、修改信息、插入信息、查询信息、删除信息、信息统计(全部输出、平均成绩信息及排序、不及格名单)、退出。在屏幕提示下,选择一个数字,实现相应的功能,完成之后按任意键回到主菜单,继续执行下一个任务。使用switch语句及它的多个case语句来完成,每个case语句中调用不同的数据模块,调用结束后使用break函数跳出,返回主菜单,继续执行下一个任务。:使用选择表格输出,最后一行提示输入相应的数字以进入相应的模块。:..input()函数,输入信息。:调用modify()函数,修改信息。:调用insert()函数,插入信息。:调用search()函数,查找信息。:调用delete()函数,删除信息。:全部输出output()函数,输出全部学生信息;平均分模块调用average()函数,输出平均分信息及按平均分排序;输出不及格名单unpassed()函数,输出综合分<60的名单。。3、在修改数据界面,用户可以分别修改学生基本信息和课程信息。4、用户可以在插入数据界面添加新信息。5、数据查询界面可以按姓名查询结果。:..7、在数据统计界面,用户可以显示全部数据、计算平均成绩并排序、输出不及格名单。六、课程设计总结经过两个星期的计算机实践,我们终于成功地完成了程序的编写和运行。这是一件多么美妙的事情!我们对C语言的认识从浅显到更深刻,这是一个从量变到质变的过程。每个人都有了很大的进步。我们深刻地体会到,说远比动手容易。一开始,我们认为这个题目并不难,只需要定义几个函数,在主函数中运用一个switch语句,然后再调用即可。但在实际的编程过程中,我们遇到了一系列的问题,如变量定义、函数定义、输入输出等。这些问题使我们的程序变得越来越复杂,一个小错误就可能导致整个系统的错误。最让我们头痛的是,在安排课程时我们犯了一个错误,导致综合分变成了自己输入,而不是按百分比计算,每个人的平均分也没有。我们很庆幸及时向老师请教,得以及时纠正。我们发现,对课本上的知识不熟悉也会导致编程进度缓慢。考试只是让我们简单地记忆知识,而这次的编译程序过程让我:..出错误。通过这次实践,我们收获颇丰!七、源程序代码includedefine___定义课程数目*/voidmenu();voidinput();___();voidinsert();voidmodify();voidsearch();voidtongji();voidoutput();voidaverage();voidunpassed();voidanykey();staticintm=3;/*全局变量*/structcourse/*定义课程结构体*/:..intnum;charname[10];floatcredit;floatscore;floatusual;floatintegral;structcourse{intnum;charname[10];floatcredit;floatscore;floatusual;floatintegral;structstu{intclass;intnum;charname[10];charsex[2];:..structcoursecourse[2];floatavescore;stu[50];voidinput(){intij。sum;for(i=<m。i++){请输入学生基本信息班级。&stu[i].class);学号。&stu[i].num);姓名。stu[i].name);性别。&stu[i].sex);年龄。&stu[i].age);请输入课程基本信息:..j++){课程编号。&stu[i].course[j].num);课程名称。stu[i].course[j].name);学分。&stu[i].course[j].credit);考试成绩。&stu[i].course[j].score);平时成绩。&stu[i].course[j].usual);stu[i].course[j].integral=stu[i].course[j].usual*+stu[i].course[j].score*;sum=sum+stu[i].course[j].integral;stu[i].avescore=sum/COURSENUM;anykey();voidinsert(){:..intj。sum;charch;do{请输入学生基本信息班级。&stu[m].class);学号。&stu[m].num);姓名。stu[m].name);年龄。&stu[m].age);性别。stu[m].sex);请输入课程基本信息for(j==<COURSENUM。j++){课程编号。&stu[m].course[j].num);课程名称。stu[m].course[j].name);:..学分。&stu[m].course[j].credit);考试成绩。&stu[m].course[j].score);平时成绩。&stu[m].course[j].usual);stu[m].course[j].integral=stu[m].course[j].usual*+stu[m].course[j].score*;sum=sum+stu[m].course[j].integral;stu[m].ave=sum/COURSENUM;m++;继续输入吗?ch=getchar();ch=getchar();while(ch=='Y'||ch=='y');学生基本信息:班级学号姓名性别年龄:..for(i=0;i<m;i++)。stu[i].class,stu[i].num,stu[i].name,stu[i].sex,stu[i].age);课程信息:课程编号课程名称学分考试成绩平时成绩综合成绩for(i=0;i<m;i++)for(j=0;j<COURSENUM;j++)urse[j].num,stu[i].course[j].name,stu[i].course[j].credit,stu[i].course[j].score。stu[i].course[j].usual,stu[i].course[j].integral);:..平均分信息:姓名平均分voidaverage()inti,j;structstutemp;平均分信息姓名|平均分按平均分从高到低排列:..for(inti=<m。i++){按平均分从高到低排列:姓名|平均分for(inti=<m。i++){for(intj=i+<=m-++){if(stu[i].avescore<stu[j].avescore){studenttemp=stu[i];stu[i]=stu[j];stu[j]=temp;:..anykey();不及格名单intk=0,sum;不及格名单姓名|课程名称|综合成绩for(inti=<m。i++){for(intj=0,sum=<COURSENUM。j++){if(stu[i].course[j].integral<60){k=1;stu[i].course[j].integral);stu[i].course[j].integral=stu[i].course[j].usual*+stu[i].course[j].score*;:..2010年7月3日如果要进入系统,请输入数字1,然后按回车键。接下来,将会显示菜单选项。当用户按下任意键后,程序将继续执行。

学生成绩管理系统课程设计实验报告 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数22
  • 收藏数0 收藏
  • 顶次数0
  • 上传人青山代下
  • 文件大小1.33 MB
  • 时间2024-03-25