学生信息管理系统程序设计课程设计报告(36页).docx





《学生信息管理系统程序设计课程设计报告(36页).docx》由会员分享,可在线阅读,更多相关《学生信息管理系统程序设计课程设计报告(36页).docx(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-学生信息管理系统程序设计课程设计报告-第 35 页程序设计课程设计报告题 目_学生信息管理系统 _学 院_计算机学院_专 业_计算机科学与技术_年级班别_2014级A(4)_学 号_3114005953_学生姓名_林超_指导教师_曾安_ 成 绩 程序功能完成情况测试用例全面情况报告格式是否与要求相符报告内容是否准确全面2015年05月 备注声明(此程序在dosbox上运行TC通过需要每个文件前面都需要声明结构体,我自己去机房TC则不需要,本程序在源代码上暂时把每个结构体注销掉,如果编译不通过可以取消每个文件前面的结构体声明)题目要求:C 课程设计题目第一套 难度:1题目1:学生成绩管理系统设
2、计一个学生成绩管理系统,在动态链表程序的基础上,设计要求如下:(必须使用结构体和动态链表等数据结构) 对在校学生几学期几门课程的考试成绩进行统一管理,具有查询和检索功能,并且能够对指定文件操作,也可将多个文件组成一个文件。一、 设计内容1、学生个人信息包括学号、姓名、性别、专业、年级、电话号码。示例如下:学生个人信息:学号 姓名 性别 专业 年级 电话号码2015001 张三 男 计算机科学与技术 一 189000000012、选课记录包括某个学生某学期所选的课程、课程编号、学分、平时成绩、实验成绩、卷面成绩、综合成绩。示例如下(综合成绩=平时成绩*20%+实验成绩*40%+卷面成绩*40%)
3、:学期 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩第一 1 高等数学 3 80 70第一 2 大学英语 3 77 70第一 3 大学物理 2 85 70 60第二 1 高等数学 3 70 80第二 4 程序设计 2 90 90 903、录入功能:可以一次完成若干条记录的输入。4、统计功能:统计所有学生各学期所有课程的平均分;5、查找功能:完成按学号查找该学生的基本个人信息;或按学号查找该学生某学期所选的所有课程的成绩;或按课程编号和学期查找所有学生该门课程该学期的成绩;并显示。6、删除功能:删除某个学生的所有信息;删除所有学生某门课程的成绩6、排序功能:按某学期所选某门课
4、程对所有学生的成绩排序(升序或降序);对某学期所有学生所有课程的平均分进行排序(升序或降序)。7、系统集成:编写程序主界面,调用各功能,调用界面和各个功能的操作界面应尽可能清晰美观 !二、 设计要求已知有多名学生(至少15 名)的成绩信息(学生个人信息和所有课程成绩等)的文件student.dat(该文件自行建立),要求编程序实现成绩录入、统计、查询、删除、排序和退出等功能。具体要求如下:A要求显示如下界面1- 录入2- 统计3- 查询4- 删除5- 排序6- 退出通过选择1-6 来确定要执行哪一步操作。B若选 1,则出现如下界面输入学生个数:请输入第1 名学生的信息:学号:姓名:性别:专业:
5、年级:电话号码:学期:课程编号:课程名称:(此处省略,请自行补充)并保存数据保存到文件student.dat 中。C 若选2,统计所有学生各学期所有课程的平均分;D 若选3,则出现如下界面3.1-按学号查询学生个人信息3.2-按学号查找该学生某学期所选的所有课程的成绩3.3-按课程编号和学期查找所有学生该门课程该学期的成绩通过选择 3.1-3.3 来确定要做哪一个操作,有符合的记录输出到屏幕,若无,则输出相关提示信息。E若选 4,则出现如下界面:4.1- 删除某个学生的所有信息4.2- 删除所有学生某门课程的成绩通过选择 4.1-4.2 来确定要执行哪一步操作,有符合的把删除后剩下的数据保存到
6、文件student1.dat,若无,则输出相关提示信息。F若选5,则出现如下界面:5.1- 某学期某门课程对所有学生的成绩升序5.2- 某学期某门课程对所有学生的成绩降序5.3- 某学期所有学生所有课程的平均分进行升序5.4- 某学期所有学生所有课程的平均分进行降序通过选择 5.1-5.4 来确定要执行哪一步操作,有符合的记录输出到屏幕,若无,则输出相关提示信息。G不同的模块都要有出错处理,并能给出出错提示。如输入数据错误,文件操作错误等等H以上各个功能均编写成子函数,由主函数调用实现。I利用结构体和动态链表实现消费记录的数据结构设计;三、测试数据要求1)不少于20 名学生,不少于3 个学期,
7、不少于6 门课程2)应保证测试用例测试到程序的各种边缘情况题目:学生信息管理系统 系统简介本人设计的学生信息管理系统包括6个功能1. 录入学生信息,可以实现对学生学号,姓名,性别,专业,年级,电话号码,的录入,对每个学期录入某一门课程的分数。2. 统计学生和课程信息,可以根据某一学期,某一门课程统计出这一门课程所有学生的平均分。3. 查询学生信息,查询信息分为3个子功能,3.1可以根据学生的学号查询学生的个人信息;3.2可以根据学号和某一学期查询某一位学生的所有课程的成绩。;3.3可以按照课程编号和学期查找所有学生某门课程的成绩4. 删除学生信息,删除功能分为2个子功能,4.1可以删除某个学生
8、的所有信息,4.2可以删除所有学生某门课程的成绩5. 对学生的课程分数进行排序,排序功能分为4个子功能,5.1可以根据某门课程对所有学生的成绩升序;5.2可以根据某门课程对所有学生的成绩降序;5.3可以根据某学期所有学生的平均分进行升序;5.4可以根据某学期所有学生的平均分进行降序。6. 查找出某个学期某门课程不及格的学生。结构图:详细设计:主函数模块:一个main函数,用于调用各种功能函数。创建链表模块:void filewritecourse(struct course *chead) /*用于把课程链表存入到course.dat 文件中。参数就是传入课程链表的头节点*/void file
9、writestudent(struct student *head)/*用于把学生链表存入到student.dat文件中参数是传入学生链表的头结点*/将链表写入的是时候是采取文本文件方式写,用fprintf进行写操作,原因是方便查看,虽然速度远不如二进制文件写,但是在后来测试数据时比较方便,容易看到文件里面的内容,这样就能知道程序对数据的处理有没有错误。struct course *creatcourse(int studentnumber1,char studentname1)/*用于创建一个课程链表,参数用于把某一门课程对应某一个学生*/struct student *creatstude
10、nt()/*用于创建一个学生链表*/从文件读取链表模块:struct course* readcourse()/*从文件读取课程链表*/struct student* readstudent()/*从文件中读取学生链表*/因为采用了文本文件进行写操作,所以读出来也要用文本文件来读这里采用fscanf函数来读,在打程序是必须注意要“&”,当时因为忘记打了这个,程序运行到这里一直崩,也是让我找了好久才发现统计模块:void account(struct course*chead1,int cournumber1,int term1)/*统计学生平均分*/void searchfail(int te
11、rm1,int coursenumber1,struct course *head1)/*统计不及格学生*/NY无数据查找模块:void searchstudent(int studentnumber1,struct student *head)/*用于查找一个学生的信息,参数是学生链表的头结点,和学生编号*/void searchcourse(int studentnumber1,int term1,struct course *chead)/*用于查找某一门课程,参数是课程链表和要查找的学生号和学期*/void searchallstudentscore(int coursenumber1
12、,int term1,struct student *head,struct course *chead)/*用于查找所有学生某门课程的分数,参数是课程链表的头结点,学生链表的头节点和要查找的课程号和学期*/YNYY无数据删除模块:struct student *delestudent(int studentnumber1,struct student *head)/*用于删除某个学生的信息,参数是传入学生的头结点,和被删除学生的学号*/struct course *delethecourse(int studentnumber1,struct course*chead1)/*用于删除学生课程
13、成绩*/struct course*delecourse(int coursenumber1,int term1,struct course *chead1)/*用于删除某一门课程,参数是传入课程链表的头结点,和被删除课程的课程编号*/删除功能就是释放一个节点,当输入一个数据,遍历整个链表,查找到与这个数据相同的链表,通过free()函数释放掉这个节点无数据NY排序功能:struct newcourse*newcreatlist(int coursenumber1,int term1,struct course *chead1)/*创建一个新的链表存放某门课程最终成绩,参数是传入要排序的课程号
14、和学期,还有课程链表的头结点*/struct stuaver *creatnewlist1(int term1,struct course *chead1,struct student *head1)/*创建一个新链表存放学生某学期平均分,参数是传入要排序的课程号和学期,还有学生链表的头结点*/struct newcourse *ascend(struct newcourse *nhead)/*对学生某门课程分数进行升序,参数是传入新链表(存放课程分数)的头结点*/struct newcourse *descend(struct newcourse *nhead)/*对学生某门课程分数进行降序
15、,参数是传入新链表(存放课程分数)的头结点*/struct stuaver *ascend1(struct stuaver *shead)/*对学生某学期平均分进行升序参数是传入新链表(存放课程平均分)的头结点*/struct stuaver *dascend1(struct stuaver *shead)/* 对学生某学期平均分进行降序传入新链表(存放课程平均分)的头结点*/排序是应用选择排序法,通过循环找出最大(最小)的一个数据,交换起始节点和当前节点两个节点里面的内容。无数据NYY数据结构:本程序采用两条大链表的结构来存储数据,一条是学生链表,一条是课程链表,他们之间用一个学生号联系起来
16、,学生链表存储在“student.dat” 文件中,课程链表储存在“course.dat”文件中。要用到里面的数据时,先用readcourse(),和readstudent()函数把里面的内容读取出来进行操作,然后在操作完再存回文件中。其中学生结构体如struct studentint studentnumber;char name20;char sex;char profession30;char clas20;char tel20;struct student *next;课程结构:struct courseint studentnumber; int coursenumber;char
17、studentname20;char coursename20;int term;float CR;float normalmark;float experimentmark;float testmark;float finalmark;struct course *next; 在排序的时候,为了对原数据保护,我也采取了新建一条链表来存储排序需要用到的数据,但这样程序效率低下的问题也显示了出来。这是在排序某门课程的分数时创建的一个新结构体:struct newcoursechar stuname20;char courname20;int cournumber;float couscore;s
18、truct newcourse *next;这是排序学生某一学期平均分时创建的新结构体:struct stuaverchar name20;float aver;struct stuaver *next;通过这两条链来实现排序功能。下面是测试结果:这是一个开始见面,首先进去的时候根据提示,输入一个数字进去,开始接下来程序(其实这里本来是可以不用的,由于TC没有链接到浮点型库,这里通过输入一个浮点型数使它链接到浮点型库里面,就可以使用浮点型的数了)这是菜单界面输入对应数字就能实现对应功能这是学生信息的录入,在这里你可以选择你要录入的学生的数量,然后一次录入学生的学期,和每学期的课程。当你不想录入
19、时,可以在学生number和学期term输入时输入0即可停止录入。由于在测试前已经做好了数据放在student.dat和course.dat文件中。接下来的测试是采用已经放在文件里面的数据来测试。选择2后,选择学期和课程编号就能统计某每门课程所有学生平均分。选择3 进入如下界面,选择其中的选项输入学生号出现下面的学生信息选择3-2输入学生号码和学期出现下面这里可以显示这个学生所有成绩,不过因为界面太小,上面的东西不能看到(其实是有A,B,C,D,E,F6门课程的)。输入3-3,出现上述界面,输入相应学期和课程编号出现下面选择4-1,输入要删除的学生编号,出现下面界面,表示删除了这个学生的所有信
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 信息管理 系统 程序设计 课程设计 报告 36

限制150内