《学生信息管理系统程序设计课程设计报告 广东工业大学》由会员分享,可在线阅读,更多相关《学生信息管理系统程序设计课程设计报告 广东工业大学(55页珍藏版)》请在金锄头文库上搜索。
1、程序设计课程设计报告程序设计课程设计报告题 目_学生信息管理系统 _学 院_计算机学院_专 业_计算机科学与技术_年级班别_2014 级 A(4)_学 号_3114005953_学生姓名_林超_指导教师_曾安_成 绩 程序功能完成情况测试用例全面情况报告格式是否与要求相符报告内容是否准确全面2015 年 05 月 备注声明(此程序在 dosbox 上运行 TC 通过需要每个文件前面都需要声明结构体,我自己 去机房 TC 则不需要,本程序在源代码上暂时把每个结构体注销掉,如果编译不通过可以 取消每个文件前面的结构体声明) 题目要求: C 课程设计题目第一套 难度:1 题目1:学生成绩管理系统设计
2、一个学生成绩管理系统,在动态链表程序的基础上,设计要求如下:(必须使用结 构体和动态链表等数据结构) 对在校学生几学期几门课程的考试成绩进行统一管理,具有 查询和检索功能,并且能够对指定文件操作,也可将多个文件组成一个文件。 一、 设计内容 1、学生个人信息包括学号、姓名、性别、专业、年级、电话号码。示例如下: 学生个人信息: 学号 姓名 性别 专业 年级 电话号码 2015001 张三 男 计算机科学与技术 一 18900000001 2、选课记录包括某个学生某学期所选的课程、课程编号、学分、平时成绩、实验 成绩、卷面成绩、综合成绩。示例如下(综合成绩=平时成绩*20%+实验成绩 *40%+
3、卷面成绩*40%): 学期 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 第一 1 高等数学 3 80 70 第一 2 大学英语 3 77 70 第一 3 大学物理 2 85 70 60 第二 1 高等数学 3 70 80 第二 4 程序设计 2 90 90 90 3、录入功能:可以一次完成若干条记录的输入。 4、统计功能:统计所有学生各学期所有课程的平均分; 5、查找功能:完成按学号查找该学生的基本个人信息;或按学号查找该学生某学期所选的 所有课程的成绩;或按课程编号和学期查找所有学生该门课程该学期的成绩;并显示。6、删除功能:删除某个学生的所有信息;删除所有学生某门课程
4、的成绩6、排序功能:按某学期所选某门课程对所有学生的成绩排序(升序或降序);对某学期所 有学生所有课程的平均分进行排序(升序或降序)。 7、系统集成:编写程序主界面,调用各功能,调用界面和各个功能的操作界面应尽可能清 晰美观 ! 二、 设计要求 已知有多名学生(至少15 名)的成绩信息(学生个人信息和所有课程成绩等)的文件 student.dat(该文件自行建立),要求编程序实现成绩录入、统计、查询、删除、排 序和退出等功能。具体要求如下: A要求显示如下界面* 1- 录入 2- 统计 3- 查询4- 删除 5- 排序 6- 退出* 通过选择1-6 来确定要执行哪一步操作。 B若选 1,则出现
5、如下界面* 输入学生个数: 请输入第1 名学生的信息: 学号: 姓名: 性别: 专业: 年级: 电话号码: 学期: 课程编号: 课程名称: (此处省略,请自行补充)* 并保存数据保存到文件student.dat 中。 C 若选2,统计所有学生各学期所有课程的平均分; D 若选3,则出现如下界面* 3.1-按学号查询学生个人信息 3.2-按学号查找该学生某学期所选的所有课程的成绩 3.3-按课程编号和学期查找所有学生该门课程该学期的成绩* 通过选择 3.1-3.3 来确定要做哪一个操作,有符合的记录输出到屏幕,若无,则输 出相关提示信息。 E若选 4,则出现如下界面:* 4.1- 删除某个学生的
6、所有信息 4.2- 删除所有学生某门课程的成绩* 通过选择 4.1-4.2 来确定要执行哪一步操作,有符合的把删除后剩下的数据保存到 文件student1.dat,若无,则输出相关提示信息。 F若选5,则出现如下界面:* 5.1- 某学期某门课程对所有学生的成绩升序 5.2- 某学期某门课程对所有学生的成绩降序 5.3- 某学期所有学生所有课程的平均分进行升序 5.4- 某学期所有学生所有课程的平均分进行降序*通过选择 5.1-5.4 来确定要执行哪一步操作,有符合的记录输出到屏幕,若无, 则输出相关提示信息。 G不同的模块都要有出错处理,并能给出出错提示。如输入数据错误,文件操作错误等等 H
7、以上各个功能均编写成子函数,由主函数调用实现。 I利用结构体和动态链表实现消费记录的数据结构设计; 三、测试数据要求 1)不少于20 名学生,不少于3 个学期,不少于6 门课程 2)应保证测试用例测试到程序的各种边缘情况题目:学生信息管理系统系统简介本人设计的学生信息管理系统包括6个功能 1.录入学生信息,可以实现对学生学号,姓名,性别,专业,年级,电话号码,的录 入,对每个学期录入某一门课程的分数。 2.统计学生和课程信息,可以根据某一学期,某一门课程统计出这一门课程所有学生 的平均分。 3.查询学生信息,查询信息分为3个子功能,3.1可以根据学生的学号查询学生的个人 信息;3.2可以根据学
8、号和某一学期查询某一位学生的所有课程的成绩。;3.3可以 按照课程编号和学期查找所有学生某门课程的成绩 4.删除学生信息,删除功能分为2个子功能,4.1可以删除某个学生的所有信息,4.2 可以删除所有学生某门课程的成绩 5.对学生的课程分数进行排序,排序功能分为4个子功能,5.1可以根据某门课程对所 有学生的成绩升序;5.2可以根据某门课程对所有学生的成绩降序;5.3可以根据某 学期所有学生的平均分进行升序;5.4可以根据某学期所有学生的平均分进行降序。6.查找出某个学期某门课程不及格的学生。结构图:开始1录入2统计3查询学生个人 信息某学期课 程成绩所有学生 某门课程 成绩4删除删除学生删除
9、课程5排序课程分数 升序课程分数 降序课程平均 分升序课程平均 分降序6查找不及 格学生退出详细设计:详细设计:主函数模块: 一个main函数,用于调用各种功能函数。创建链表模块: void filewritecourse(struct course *chead) /*用于把课程链表存入到course.dat 文 件中。参数就是传入课程链表的头节点*/ void filewritestudent(struct student *head)/*用于把学生链表存入到student.dat文 件中参数是传入学生链表的头结点*/ 将链表写入的是时候是采取文本文件方式写,用fprintf进行写操作,原
10、因是方便查看,虽 然速度远不如二进制文件写,但是在后来测试数据时比较方便,容易看到文件里面的内容, 这样就能知道程序对数据的处理有没有错误。开始结点是否为 空?将结点保存至文件 夹否是结束指针指向下一个结 点struct course *creatcourse(int studentnumber1,char studentname1)/*用于创建一 个课程链表,参数用于把某一门课程对应某一个学生*/ struct student *creatstudent()/*用于创建一个学生链表*/选择录入功能录入输入录入学生个数录入学生信息录入课程信息从文件读取链表模块: struct course*
11、readcourse()/*从文件读取课程链表*/ struct student* readstudent()/*从文件中读取学生链表*/ 因为采用了文本文件进行写操作,所以读出来也要用文本文件来读这里采用fscanf函数来读,在打程序是必须注意要“ char name20; char sex; char profession30; char clas20; char tel20; struct student *next; ; 课程结构: struct course int studentnumber;int coursenumber; char studentname20; char co
12、ursename20; int term; float CR; float normalmark; float experimentmark; float testmark; float finalmark;YY无数据Nstruct course *next; ;在排序的时候,为了对原数据保护,我也采取了新建一条链表来存储排序需要用到的数据, 但这样程序效率低下的问题也显示了出来。这是在排序某门课程的分数时创建的一个新结 构体: struct newcourse char stuname20; char courname20; int cournumber; float couscore; s
13、truct newcourse *next; ; 这是排序学生某一学期平均分时创建的新结构体: struct stuaver char name20; float aver; struct stuaver *next; ; 通过这两条链来实现排序功能。下面是测试结果:这是一个开始见面,首先进去的时候根据提示,输入一个数字进去,开始接下来程序(其 实这里本来是可以不用的,由于 TC 没有链接到浮点型库,这里通过输入一个浮点型数使 它链接到浮点型库里面,就可以使用浮点型的数了)这是菜单界面输入对应数字就能实现对应功能这是学生信息的录入,在这里你可以选择你要录入的学生的数量,然后一次录入学生的学 期
14、,和每学期的课程。当你不想录入时,可以在学生 number 和学期 term 输入时输入 0 即 可停止录入。 由于在测试前已经做好了数据放在 student.dat 和 course.dat 文件中。接下来的测试是采用已 经放在文件里面的数据来测试。选择 2 后,选择学期和课程编号就能统计某每门课程所有学生平均分。选择 3 进入如下界面,选择其中的选项 输入学生号出现下面的学生信息选择 3-2 输入学生号码和学期出现下面这里可以显示这个学生所有成绩,不过因为界面太小,上面的东西不能看到(其实是有 A,B,C,D,E,F6 门课程的) 。输入 3-3,出现上述界面,输入相应学期和课程编号出现下面选择 4-1,输入要删除的学生编号,出现下面界面,表示删除了这个学生的所有信息选择 4-2,输入要删除的课程编号,学期,出现下面界面表示删除了某学期某一门课程选择 5-1 出现下面界面输入相应的学期和课