学生成绩管理系统程序设计报告-(2)_第1页
学生成绩管理系统程序设计报告-(2)_第2页
学生成绩管理系统程序设计报告-(2)_第3页
学生成绩管理系统程序设计报告-(2)_第4页
学生成绩管理系统程序设计报告-(2)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

程序设计报告 201 201 学年 第 学期 题 目 学生成绩管理系统学生成绩管理系统 专专 业业 软件工程 软件工程 NIIT 学学 生生 姓姓 名名 班班 级级 学学 号号 指指 导导 教教 师师 成小惠成小惠 指指 导导 单单 位位 计算机软件学院计算机软件学院 日日 期期 2013 3 26 评分项评分项优秀优秀良好良好中等中等差差 遵守机房规章制度遵守机房规章制度 上机时的表现上机时的表现 学习态度学习态度 程序准备情况程序准备情况 程序设计能力程序设计能力 团队合作精神团队合作精神 课题功能实现情况课题功能实现情况 算法设计合理性算法设计合理性 用户界面设计用户界面设计 报告书写认真程度报告书写认真程度 内容详实程度内容详实程度 文字表达熟练程度文字表达熟练程度 评评 分分 细细 则则 回答问题准确度回答问题准确度 简简 短短 评评 语语 教师签名 教师签名 年年 月月 日日 评分等级评分等级备注备注 评分等级有五种 优秀 良好 中等 及格 不及格评分等级有五种 优秀 良好 中等 及格 不及格 学生成绩管理系统学生成绩管理系统 一 一 课题内容和要求课题内容和要求 设计一个简化的学生成绩管理系统 并用 C 或 C 语言实现 对该系统的要 求如下 1 该系统应实现以下功能 1 按班级按课程从文件中读入相应的平时成绩 期中考试成绩和期 末考试成绩 2 三个成绩对总评成绩的百分比被定义为常数 各占总成绩的 30 30 和 40 3 计算每位学生的总评成绩 4 算该班级本课程的总平均成绩 5 算处于优 良 中 及格 不及格的学生人数以及占总人数的百分比 其中 100 90 为优 89 80 为良 79 70 为中 69 60 为及格 60 分以下为不及 格 6 按要求输出成绩在优 良 中 及格 不及格各区间的学生学号 2 系统应有以下菜单 0 退出 1 计算每位学生的总评成绩 2 计算班级本课程总评成绩 3 统计优 良 中 及格 不及格的学生人数以及所占比例 4 查询成绩在优 良 中 及格 不及格各区间的学生学号 允许用户不断从这个菜单选择任一功能执行 直到选择退出 才退出整个 系统 二 需求分析二 需求分析 1 系统要从文件中读入相应的平时成绩 期中成绩和期末考试成绩 这里 就用到了 C 中的输入输出文件的操作 在 C 语言中进行文件操作的一般步骤 为 1 为要进行操作的文件定义一个流 2 建立 或打开 文件 3 进行读 写操作 4 关闭文件 另外从文件中读入的数据要在后面进行计算 所以应该把文件中的数据对 应到类或者结构体数组上去 在这个程序中用的是结构体数组 2 系统还要有计算的功能 这里的计算包括总评成绩的计算和平均值的计 算 因为要计算多个学生的成绩 所以利用循环语句来进行逐个学生成绩的计 算并输出 在这个程序中都是用的 for 循环 3 统计功能 需要运用到条件语句 既满足条件就加 1 以此来完成计数 统计 4 查询功能 同样是运用条件语句 判断符合条件就对屏幕输出 达到用 户查询的目的 5 菜单功能 用简单的菜单函数完成整体的框架 用到 switch 语句来完成 菜单函数的循环 三 概要设计三 概要设计 定义结构体数组 定义函数 读入文件 的函数 void file 对选项 3 统计计 算的函数 void readgrade 调用 file 函数 对选项 1 计算学生 总评成绩的函数 void readall 调用 file 函数 对选项 2 计算课程 总评成绩的函数 void readaverage 调用 file 函数 对选项 4 查询学号 的函数 void readABCDE 定义一个菜单函数 在这个函数中调用上面定义的函数 1 首先用 struct student 定义一个结构数组 里面应该包含学号 Id 平 时成绩 ps 期中成绩 qz 期末成绩 qm 总评成绩 all 等级 grade 2 定义函数 1 读入文件 fs open 对应到结构体数组中 利用 for 循环计算总 评成绩并用判断语句来判断等级 2 调用 file 函数 把计算的结果输出屏幕 并且按照要求保存到 out 文件中 ofstream fout out dat 3 调用 file 函数 计算平均成绩来得到课程的总评成绩 4 调用 file 函数 if 判断语句来统计人数并计算比例 然后输出屏 幕 5 if 判断语句 把符合用户输入等级的学生的学号输出到屏幕 四 详细设计四 详细设计 include 输入输出的头文件 include 对文件的操作 include 定义字符串变量 include struct student 定义一个结构数组 public char Id 10 float ps float qz float qm float all char grade stu 20 fstream fs int num char str5 100 学生学号 char str6 100 总评成绩 char str7 100 成绩等级 void file 定义一个函数 方便后面的调用 fs open note dat ios in ios out 对文件读入的操作 文件以输入输出方式 打开 fs num for int i 0 i stu i Id stu i ps stu i qz stu i qm 把文件中得数值对应到结 构数组中 for i 0 i num i 完成对总评成绩的计算 stu i all stu i ps 0 3 stu i qz 0 3 stu i qm 0 4 if stu i all 90 stu i grade A if stu i all 80 stu i grade B if stu i all 70 stu i grade C if stu i all 60 stu i grade D if stu i all 0 stu i grade E void readall 对选项 1 的实现 后面调用 file int i ofstream fout out dat 输出保存到 out 文件中 if fout 如果文件打开失败 cout Cannot open the file endl fout str5 t str6 t str7 endl 把表头文字存入文件 cout str5 t str6 t str7 endl 把表头文字输出屏幕 for i 0 i num i for 循环逐次输出学生的成绩 fout stu i Id t stu i all t stu i grade endl cout stu i Id t stu i all t t stu i grade endl void readaverage 对选项 2 的实现 后面调用 cout 本课程的总评成绩 file int i float a 20 p for i 0 i num i a i stu i all for i 1 i num i a i a i a i 1 p a num 1 num cout p endl endl void readgrade 对选项 3 的实现 后面调用 int i int j 0 int k 0 int x 0 int y 0 int z 0 file for i 0 i num i if stu i grade 65 j if stu i grade 66 k if stu i grade 67 x if stu i grade 68 y if stu i grade 69 z cout 成绩为优的学生人数 cout j endl cout 成绩为良的学生人数 cout k endl cout 成绩为中等的学生人数 cout x endl cout 成绩为及格的学生人数 cout y endl cout 成绩为不及格的学生人数 cout z endl float n cout 成绩为优的学生百分比 n float j num cout n endl cout 成绩为良的学生百分比 n float k num cout n endl cout 成绩为中等的学生百分比 n float x num cout n endl cout 成绩为及格的学生百分比 n float y num cout n endl cout 成绩为不及格的学生百分比 n float z num cout n endl endl void readABCDE 对选项 4 的实现 后面调用 char m 10 cout m if m 0 65 if m 0 65 cout str5 endl for int i 0 i num i if stu i grade A cout stu i Id endl if m 0 66 cout str5 endl for int i 0 i num i if stu i grade B cout stu i Id endl if m 0 67 cout str5 endl for int i 0 i num i if stu i grade C cout stu i Id endl if m 0 68 cout str5 endl for int i 0 i num i if stu i grade D cout stu i Id endl if m 0 69 cout str5 endl for int i 0 i num i if stu i grade E cout stu i Id endl cout endl void main 菜单函数 整体框架 int m 1 int n do cout 1 计算每位学生的总评成绩 endl cout 2 计算班级本课程的总评成绩 endl cout 3 统计优 良 中 及格 不及格的学生人数以及所占比例 endl cout 4 查询成绩在优 良 中 及格 不及格各区间的学生学号 endl cout 5 退出 endl cout n 实现菜单函数的循环 switch n case 1 readall break case 2 readaverage break case 3 readgrade break case 4 readABCDE break case 5 exit 0 break default cout Input error endl endl while m 1 五 测试数据及其结果分析五 测试数据及其结果分析 1 note dat 文件中的内容 20 06030201 88 75 5 66 06030202 91 79 5 76 06030203 85 75 77 06030204 79 82 80 5 06030205 66 70 63 06030206 53 60 52 06030207 90 90 98 06030208 86 77 83 06030209 88 56 69 06030210 75 59 60 06030211 68 69 70 06030212 66 80 89 06030213 55 59 56 06030214 70 52 90 06030215 90 88 97 06030216 88 52 60 06030217 60 80 56 06030218 80 68 77 06030219 90 80 5 82 06030220 75 5 88 66 2 out dat 文件中的内容 学生学号总评成绩成绩等级 06030201 75 45 C 0603020281 55B 0603020378 8 C 0603020480 5 B 0603020566 D 0603020654 7 E 0603020793 2 A 0603020882 1 B 0603020970 8 C 0603021064 2 D 06030211 69 1 D 0603021279 4 C 0603021356 6 E 0603021472 6 C 0603021592 2 A 0603021666 D 0603021764 4 D 0603021875 2 C 0603021983 95B 0603022075 45C 运行结果演示 1 运行程序后显示菜单 2 输入 1 并按 Enter 得到学生的总评成绩 3 输入 2 并按 Enter 得到课程的总评成绩 4 输入 3 并按 Enter 统计各等级的人数并计算比例 5 输入 4 并按 Enter 可输入要查询的等级 输入 A 输入 B 输入 C 输入 D 输入 E 六 调试过程中的问题六 调试过程中的问题 1 对于此次的程序书写 感悟良多 刚开始的时候 觉得课题不是很难 因为在课本上 有这样的例题 而此题与其余的学生成绩管理系统不同 它的 基本要求实现的对一个班级的成绩录入 个人成绩 班级信息等等 对于学生 的成绩计算包括了平时成绩 期中成绩 期末成绩 不是书本的例题似的 实 现多门科目的成绩录入 于是刚开始的难点就是考虑的如何实现这一功能 刚 开始 书本上的实现的时候 采用的是指针 链表 去实现 然后 我在去调 链表指针的时候 就要去用许多的头文件 要写 4 个左右的大量头文件 做了 4 天左右的时候 我们没有时候所要的功能 在编译的时候没有错误 但是程 序还是实现不了 于是 放弃采用链表 指针 选择数组 虽然数组在内存上 有很大的缺点 但对于此题 可能数组去实现 相对容易 2 实现学生的成绩录入功能的时候 我没能深的去了解题目所要求得实现 保存在 note dat 中 开始对文件没有深刻的去认识 于是我一根筋去认为首先 建一个 note dat 文件 然后用程序去读出这个文件的其中数据 于是 我无论 进行咋样的操作 还是发现程序中没有内容 后来考虑许久 发现没有理解题 目的意思 对与一个系统而言首先要实现录入功能 于是我就想 可以在程序 中实现程序的数据录入 然后去保存在 note dat 文件中 但于是写程序的时候 首先定义一个 save 函数用来存取学生的数据 在 main 函数中 在录入功能后 面增加一个选项 用来去实现保存的功能 开始存入一个人的信息的时候 我 没有发现错误 但是录入很多人的时候 发现在 note dat 文件存入的是一个人 的信息 于是我找不到错误 开始我去想可能是文件中输出格式有错误 可能是 r 的问题 因为我不太确定用的是 w 还是 r 后来分别去实验 发现 还是解决不了问题 后来仔细想了想 之所以只存入一个学生的信息 估计没 有加入录入成功或保存成功 于是我把 save 函数放在 input 函数 也就意思 是在实现对一个学生的录入功能的时候 顺便实现保存在文本中然后发现没录 入一个学生的成绩就要去保存 要是有很多的学生 那么就要用很多遍的去保 存 发现就是一个问题 于是在想到 之所以去调用一次 就是有 for 循环 于是我把 save 函数的方法 写在 for 循环的前面 系统实现默认的保存功能 这样不会出现提示的信息 问是不是需要实现保存 3 后来通过一系列的函数实现出个人成绩等级 总评 主要通过 for 循环 if 语句 因为我定义的 grade zongping number 是结构体的变量 而且是全 局的 这要对几个函数的调用很容易去实现到 在文件输出中 按要求输出三 项 分别是学号 总评 等级 按要求输出在一个文件中 开始的时候 输出 没有实现 因为录入没有实现保存的功能 于是发现输出的空 后来当实现了 保存的功能后 发现输出的功能自然解决 4 开始的时候 我把学生的学号定义为了 char 类型 当输出的时候在学 生的学号一栏的时候 发现的字母 后来 想到改成 int 型 从而实现正确的 输出 七 程序设计总结七 程序

温馨提示

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

评论

0/150

提交评论