课设报告--班级成绩管理系统.doc_第1页
课设报告--班级成绩管理系统.doc_第2页
课设报告--班级成绩管理系统.doc_第3页
课设报告--班级成绩管理系统.doc_第4页
课设报告--班级成绩管理系统.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

课 程 设 计 报 告 课程名称课程名称 C 语言程序设计语言程序设计 课题名称课题名称 班级成绩管理系统班级成绩管理系统 专专 业业 信息管理与信息系统信息管理与信息系统 班班 级级 学学 号号 姓姓 名名 指导教师指导教师 2011 年年 6 月月 22 日日 湖南工程学院 课 程 设 计 任 务 书 课程名称 C 语言程序设 课 题 班级成绩管理系统 专业班级 学生姓名 学 号 指导老师 审 批 任务书下达日期 2011 年 6 月 4 日 任务完成日期 2011 年 6 月 22 日 一 设计内容与设计要求 1 课程设计目的 全面熟悉 掌握 C 语言基本知识 增强对不同的问题运用和灵活选择 合适的数据结构以及算法描述的本领 熟悉编制和调试程序的技巧 掌握 分析结果的若干有效方法 进一步提高上机动手能力 培养使用计算机解 决实际问题的能力 养成提供文档资料的习惯和规范编程的思想 为后继 课程 数据结构和数据库等课程 的实验以及课程设计打下较扎实的基础 2 课题题目 班级成绩管理系统 班级档案管理系统 飞机订票系统 猜数字游戏 电子英汉词典设计 通讯录管理系统 3 设计要求 1 掌握结构化程序设计的主体思想 以自顶向下逐步求精的方法编制程 序解决一些实际的中型问题 为将来开发软件积累一些典型的案例处理经验 具体要求如下 设计课题题目 每位同学根据自己学号除以 6 所得的余数加一选择相应 题号的课题 原则上不予换提 私自换题者不记成绩 2 根据自己对应的课题完成以下主要工作 完成系统需求分析 包括 系统设计目的与意义 系统功能需求 输入输出的要求 完成系统概要设 计 程序由哪些模块组成以及模块之间的层次结构 各模块的调用关系 每 个模块的功能 课题涉及的数据结构和数据库结构 即要存储什么数据 这 些数据是什么样的结构 它们之间有什么关系等 完成系统详细设计 包 括采用 C 语言定义相关的数据类型 写出各模块的类 C 码算法 画出函数的 调用关系图 调试分析 设计体会 测试数据 准备典型的测试数据和测 试方案 包括正确的输入及输出结果和含有错误的输入及输出结果 程序调 试中遇到的问题以及解决问题的方法 课程设计过程经验教训 心得体会 关键源程序 带注释 按规定格式完成课程设计报告 将其打印稿 A4 纸 上交给老师存档 不得抄袭他人程序 课程设计报告 每个人应体现自己的个性设计 二 进度安排 第 17 周 星期一 8 时 00 分 11 时 30 分 星期二 8 时 00 分 11 时 30 分 星期四 8 时 00 分 11 时 30 分 星期五 8 时 00 分 11 时 30 分 第 18 周 星期一 8 时 00 分 11 时 30 分 第 18 周 星期二 14 时 30 分 18 时 00 分 目录 1 系统需求分析 1 1 1 问题描述 1 1 2 功能需求 1 1 3 算法提示 1 1 4 测试数据 2 1 5 其它 2 2 概要设计 2 2 1 程序的模块组成 2 2 2 各模块的功能 2 3 详细设计 3 3 1 采用 C 语言定义相关的数据类型 3 3 2 显示主界面的函数 4 3 3 成绩录入函数 5 3 4 成绩显示函数 5 3 5 成绩保存函数 5 3 6 成绩排序函数 6 3 7 成绩修改函数 6 3 8 成绩统计函数 7 4 系统调试 8 4 1 函数关系调用图 8 4 2 程序中出现的问题及解决方法 9 5 运行结果 10 5 1 主界面 成绩录入 10 5 2 成绩显示 保存 11 5 3 成绩排序 12 5 4 成绩修改以及修改后保存 13 5 5 成绩统计 14 6 心得体会 15 7 附录 16 7 1 源代码 16 7 2 参考文献 22 8 评分表 23 0 1 系统需求分析 1 1 问题描述 对一个有 N 个学生的班级 每个学生有 M 门课程 该系统实现对班级成 绩的录入 显示 修改 排序 保存等操作的管理 1 2 功能需求 1 本系统采用一个结构体数组 每个数据的结构应当包括 学号 姓名 M 门课程名称 2 本系统显示这样的菜单 请选择系统功能项 a 成绩录入 b 成绩显示 c 成绩保存 d 成绩排序 e 成绩修改 要求先输入密码 f 成绩统计 1 显示每门课程成绩最高的学生的基本信息 2 显示每门课程的平均成绩 3 显示超过某门课程平均成绩的学生人数 g 退出系统 3 执行一个具体的功能之后 程序将重新显示菜单 4 将学生成绩保存到文件中 1 3 算法提示 1 数据结构 结构体类型数组 1 2 数据库结构 下表构成该系统的基本数据库 姓名学号课程名称 1 课程名称 2 charCharfloat float 1 4 测试数据 学生人数 N 10 课程门数 M 4 课程名 数学 语文 英语 政治 1 5 其它 对该系统有兴趣的同学可以在实现上述基本功能后 完善系统的其它功能 2 概要设计 2 1 程序的模块组成 整个系统除了主函数外 另外还有 7 个函数 实现七大功能 成绩录入功 能 成绩显示功能 成绩保存功能 成绩排序功能 成绩修改功能 成绩统计 功能 退出系统功能 2 2 各模块的功能 1 主函数 main 利用 while 输出函数主界面和 swithch 实现选择函数以及各函数的 调用 系统根据输入的数字选项来调用相应的函数 a 主界面函数 利用 while xz 语句 只要输入的 xz 0 就会输出主界面 2 b 菜单选择函数 用 switch XZ 开关语句 进入 功能选择 的界面 在这个界面里有 显 示系统的七大功能 当 XZ 时 根据每个功能前面的序号 XZ 进行选 择 等执行完每一个函数功能后 返回菜单 2 成绩录入函数 xxlr void xxlr struct student stu int n 实现对每个学生学号 姓名 四门课 程的成绩 总成绩 平均成绩的录入 3 成绩显示函数 xxxs void xxxs struct student stu int n 实现对每个学生的学生信息的输出 4 成绩保存函数 xxbc void xxbc struct student stu int n 实现对输入的信息保存在 c student txt 中 并且能从中读取学生的信息 5 成绩排序函数 xxpx void xxpx struct student stu int n 实现对学生总成绩的从大到 小的排 序 6 成绩修改函数 xxxg void xxxg struct student stu int n 实现对几个学生信息修改 再次选 择 xz 3 4 可将修改的程序重新保存 7 成绩统计函数 xxtj void xxtj struct student stu int n 实现以下三个分功能 a 每门课程成绩最高的学生信息 b 每门课程的平均成绩 c 显示超过某门课程平均成绩的人数 8 退出系统函数 用 if 语句表示 if xz 0 break 即选择 0 时就表示退出系统了 3 3 详细设计 3 1 采用 C 语言定义相关的数据类型 对要输入的学生信息采用结构体数组的形式 这样既方便又明了 而且也 使我自己对这种方式的表达更加熟悉 Struct student 结构体数组关于学生的信息 char num 11 char name 10 float score 4 float total float aver stu 11 本程序对要定义的学生信息中不同的信息采用了不同的数据类型 例如 在对学生的学号和名称用字符型 char num 11 char name 10 在对学生 的四门成绩 总成绩和平均成绩采用浮点型 float score 4 float total float aver 并且对后文程序中要定义的采用了相对应的类型 int i j 3 2 显示主界面的函数 用 while 语句实现 如 while 1 printf 学生成绩管理系统 n printf n printf 1 学生成绩录入 n printf 2 学生成绩显示 n printf 3 学生成绩保存 n printf 4 学生成绩排序 n printf 5 学生成绩修改 n 4 printf 6 学生成绩统计 n printf 0 结束程序 n printf n printf choose 1 2 3 4 5 6 0 n 只要括号中的数不为 0 就输出主界面 3 3 成绩录入函数 int i for i 0 i n i printf 输入学号 姓名 n scanf s s stu i num stu i name printf n 数学成绩 语文成绩 英语成绩 政治成绩 n scanf f f f f 利用循环语句 分别对每个学生的信息进行录入 3 4 成绩显示函数 int i printf n 学生信息 学号 姓名 数学成绩 语文成绩 英语成绩 政治成绩 总 成绩 平均成绩 n for i 0 i n i printf n s s f f f f f f n stu i num stu i name stu i score 0 stu i score 1 stu i score 2 stu i score 3 stu i total stu i aver printf n 和 3 3 一样 只是让成绩整体输出 在屏幕上显现出来而已 5 3 5 成绩保存函数 fp fopen c student txt w 先定义一个文件 fp 把要输入的信息保存在 c student txt 中 for i 0 i n i fprintf fp n s s f f f f f f n stu i num stu i name stu i score 0 stu i sc ore 1 stu i score 2 stu i score 3 stu i total stu i aver fclose fp 用 fprintf 语句使信息输入到文件中 并保存 fp fopen c student txt r for i 0 i n i fscanf fp n f f f f f f n stu i num stu i name stu i score 0 stu i s core 1 stu i score 2 stu i score 3 stu i total stu i aver 再次用只读的形式打开文件 在 fscanf 语句后再用 printf 输出学生信息 3 6 成绩排序函数 struct student t 定义结构体变量 用于下面的交换 for i 0 i n 1 i 第 i 个学生 for j i 1 jstu i total t stu j stu j stu i stu i t 用选择法的方式将总成绩最高的学生放在最前面 实现从大到小的排序 6 3 7 成绩修改函数 首先对密码的设置 用语句 if strcmp pass password 0 如果正确就进行 下步操作 输入要修改的学生学号 gets no 再次进行stu i num 和 no 的比较 if strcmp stu i num no 0 就对此学生的成绩进行修改 并输出 3 8 成绩统计函数 此函数对三个进行统计 1 for j 0 j 4 j max stu 0 score j 先赋初值 k 0 k 表示第 k 1 个学生 for i 0 imax max stu i score j k i 这样就得到了每门课成绩最高分的学生 然后在输出他的全部信息 2 for j 0 j 4 j sum 0 for i 0 i n i sum sum stu i score j aver cour j sum n printf 第 d 门课 课程的平均成绩为 f n j 1 aver cour j 对每门课程求取平均分 3 for j 0 j 4 j k 0 k 表示超过某门课平均成绩的人数 for i 0 iaver cour j k 7 printf 第 d 门课有 d 个同学超过平均分 n j 1 k 实现了计算超过某门课平均成绩的人数 总之 在一个函数中 用三个循环语句就实现了所要求的 4 系统调试 4 1 函数关系调用图 1 成绩 录入 函数 xxlr 2 成绩 显示 函数 xxxs 3 成绩 保存 函数 xxbc 4 成绩 排序 函数 xxpx 5 成绩 修改 函数 xxxg 6 成绩 统计 函数 xxtj 结束 main 函数 0 退出 系统 xxtc 开始 8 4 2 程序中出现的问题及解决方法 1 在信息保存在文件中的时候 未使用恰当的输入输出语句 应将 printf 语句改为 fprintf 语句 将 scanf 语句改为 fscanf 语句 才解决了学生信 息可在我保存的 c student txt 中显示出来 而不是一些乱码 2 在排序的时候 没有定义结构体变量 struct student t 而是定义为 float 型 float t 以至于成绩交换没有实现 t stu i total stu i total stu i 1 total stu i 1 total t 在我 改变这一个小小的地方后 这个子函数就可以正常 运行了 3 在求平均成绩时 aver cour j sum n 因 for 循环语句中 n 的值没弄清 一下就出现了错误 4 在 if 语句中 将数组的比较和值得比较弄混了 如 char pass 10 password 10 if stracmp pass password 0 printf 请输入要修改的学生信息的学号 只有用上面的 if 语句而不是 if pass password 才能输出正确的结果 5 在下面的语句中 scanf s s n stu i num stu i name 这条语句是 错误的 因为 scanf 语句是从电脑键盘上输入 不能直接输入换行符 n scanf 语句有严格的格式要求 你只能按照它的输出要求来办 另外 输入数 据时 企图规定精度 scanf 7 2f 这样做是不合法的 输入数据时不 能规定精度 再者 在不应加地址运算符 C 语言编译系统对数组名的处理是 数组名代表该数组的起始地址 且 scanf 函数中的输入项是字符数组名 不必要再加地址符 6 switch 语句中 每一个 case 之后又应有一个 berak 但最后一个应没 有 就是由于漏写了 break 语句 case 只起标号的作用 而不起判断作用 9 5 运行结果 5 1 主界面 成绩录入 5 1 主界面显示图 5 2 成绩录入 5 1 成绩录入图 10 5 3 成绩显示 保存 5 3 成绩显示 保存显示图 在显示和保存界面中 出现的是一样的 只是保存的时候在 c student txt 中可以体现出来 11 5 4 成绩排序 5 4 成绩排序显示图 12 5 5 成绩修改以及修改后保存 5 5 成绩修改及保存后的显示图 13 5 6 成绩统计 5 6 成绩统计显示图 图中包括 1 每门课成绩最高分的学生信息 2 每门课的平均分 3 超过某门课程平均分的人数 14 6 心得体会 回顾起此次课程设计 至今我仍感慨颇多 的确 从拿到题目到完成整个 编程这短短的一个多星期内 从理论到实践的转变 可以学到很多很多的东西 同时不仅可以巩固了以前所学过的知识 而且学到了很多在书本上所没有学到 过的知识 而且更加锻炼了我的动手能力以及串联知识和思维的转换能力 通过这次课程设计使我懂得了理论与实际相结合是很重要的 只有理论知 识是远远不够的 只有把所学的理论知识与实践相结合起来 从理论中得出结 论 才能真正为社会服务 从而提高自己的实际动手能力和独立思考的能力 在设计的过程中遇到问题 可以说得是困难重重 这毕竟第一次做的 难 免会遇到过各种各样的问题 同时在设计的过程中发现了自己的不足之处 对 以前所学过的知识理解得不够深刻 掌握得不够牢固 比如说结构体 当然 在最后完成的程序中 有许多模块是借鉴的 毕竟我还是处于初学者阶段 离 高手还有很多路要走 但是我不会灰心的 通过这次课程设计之后 我了解到设计程序也并非想象中的那么复杂 只 要多花点功夫就会有收获 其实很多内容都是老师上课时就讲了的 但我们就 是没有用心 缺少了那么一点灵动 所以 我们除了要扎实的学好基础知识之 外 那一点点小聪明还是必要的 此外 在不懂得的知识方面 应该及时向老 师提出问题或者跟同学一起讨论 以求能得出结论 不要不懂装懂 本次课程设计结束了 对于我的影响很大 我通过这次实践学到了许多知 识 学到了设计一个简单的系统 要注意哪些方面 也使我知道自己哪些方面 做得还不够 但我出总结出了一点点的经验如下 1 要对系统的功能和要求做出详细的分析 并合理分解任务 2 把分解出来的子任务 做给一个相对独立的模块 3 在设计一个模块之前 要简单构想一下总界面的显视情况 4 针对构想出来的界面进行程序的编写 5 对整体和细节方面都要考虑全面 不忽视每一个小地方 最后 感谢老师您对我的指导和从百忙中抽空看我的设计 谢谢 15 7 附录 7 1 源代码 include include include void lr struct student stu int n 成绩录入 void xs struct student stu int n 成绩显示 void bc struct student stu int n 成绩保存 void px struct student stu int n 成绩排序 void xg struct student stu int n 成绩修改 void tj struct student stu int n 成绩统计 void tc struct student stu int n 退出系统 struct student char num 11 char name 16 float score 4 float total float aver stu 11 void main int xz n printf 输入学生数 scanf d while 1 16 printf 学生成绩管理系统 n printf n printf 1 学生成绩录入 n printf 2 学生成绩显示 n printf 3 学生成绩保存 n printf 4 学生成绩排序 n printf 5 学生成绩修改 n printf 6 学生成绩统计 n printf 0 结束程序 n printf n printf choose 1 2 3 4 5 6 0 n scanf d switch xz case 1 lr stu n break case 2 xs stu n break case 3 bc stu n break case 4 px stu n break case 5 xg stu n break case 6 tj stu n break case 0 break default printf enter data error n if xz 0 break 1 学生成绩录入程序 xxlr c void lr struct student stu int n int i 17 for i 0 i n i printf 输入学号 姓名 n scanf s s stu i num stu i name printf n 数学成绩 语文成绩 英语成绩 政治成绩 n scanf f f f f stu i total stu i score 0 stu i score 1 stu i score 2 stu i score 3 stu i aver stu i total 4 2 学生成绩显示程序 xxxs c void xs struct student stu int n int i printf n 学生信息 学号 姓名 数学成绩 语文成绩 英语成绩 政治成绩 总 成绩 平均成绩 n for i 0 i n i printf n s s f f f f f f n stu i num stu i name stu i score 0 stu i s core 1 stu i score 2 stu i score 3 stu i total stu i aver printf n 3 学生成绩保存程序 xxbc c void bc struct student stu int n FILE fp int i fp fopen c student txt w 18 for i 0 i n i if fwrite printf file write error n fclose fp fp fopen c student txt r for i 0 i n i fread fscanf fp n f f f f f f n stu i num stu i name stu i score 0 stu i score 1 stu i score 2 stu i score 3 stu i total stu i aver printf n 学生信息 学号 姓名 数学成绩 语文成绩 英语成绩 政治成 绩 总成绩 平均成绩 n printf n s s f f f f f f n stu i num stu i name stu i score 0 stu i score 1 stu i score 2 stu i score 3 stu i total stu i aver 4 学生成绩排序程序 xxpx c void px struct student stu int n int i j struct student t for i 0 i n 1 i 第 i 个学生 19 for j i 1 jstu i total t stu j stu j stu i stu i t printf the sorted numbers n for i 0 i n i printf n 学生信息 学号 姓名 数学成绩 语文成绩 英语成绩 政治成绩 总成绩 平均成绩 n printf n s s f f f f f f n stu i num stu i name stu i score 0 st u i score 1 stu i score 2 stu i score 3 stu i total stu i aver 5 学生成绩修改程序 xxxg c void xg struct student stu

温馨提示

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

评论

0/150

提交评论