1、 课课 程程 设设 计计 说说 明明 书书 课程名称 数据结构用 C 语言描述 设计课题 统计成绩 专 业 计算机科学与技术 班 级 学 号 姓 名 完成日期 2013 年 6 月 13 号 课课 程程 设设 计计 任任 务务 书书 设计题目:设计题目:统计成绩 设计内容与要求:设计内容与要求: 内容内容: 练习各种数据结构,存储结构和一些基本运算的实现,锻炼数据结构与算法的 结合,本次实习采用了结构体数组,包括学生基本信息。 要求要求: 运用所学的知识进行实际问题的分析,系统的设计,以及程序的编写,测试,独 立的解决问题。 本次设计要求完成一个成绩统计系统。输入学生的基本信息,进行成绩统计,
2、计 算出每个学生的总成绩,进行有序的排列,并打印出名次 指导教师: 2013 年 6 月 1 3 号 课课 程程 设设 计计 评评 语语 成绩:成绩: 指导教师: 年 月 日 1 【问题描述】 给出 n个学生的 m 门考试的成绩表,每个学生的信息由学号、姓名以及各科 成绩组成。对学生的考试成绩进行有关统计,并打印统计表。 【基本要求】 (1) 按总数高低次序,打印出名次表,分数相同的为同一名次; (2) 按名次打印出每个学生的学号、姓名、总分以及各科成绩。 【测试数据】 (1) 输入 5(n)个学生的学号,姓名基本信息以及 3(m)课考试成绩; (2) 对每个学生的各科考试成绩进行求和,求出总
3、成绩; (3) 对 5(n)个学生的总成绩按成绩降序打印出来。 【算法思想】 (1) 首先定义一个 struct student 类型的结构体,包含学生的学号,姓名,名 次,各科成绩等基本信息; (2) 从键盘输入学生的基本信息,输入完毕打印所输入的基本信息,检查是 否有错; (3) 总分统计:计算出每个学生的三科成绩的总分并打印出来学号,姓名, 总分; (4) 排序:调用直插排序算法,对学生的总成绩进行从低到高的排序,最后 按从高分到低分的顺序打印出来,并列出名次,若有总分相同的为同一个名次。 【模块划分】 (1) 学生信息输入模块,包括学号姓名,成绩进本信息; (2) 总分计算模块,计算出
4、学生各科成绩总和; (3) 成绩排序模块,总成绩从高到低排列出来。 【数据结构】 struct project float yuwen; float shuxue; float yingyu; ; struct student int num; char name30; 2 struct project score; float zong; int mingci; stu5; 【测试情况】 (1) 输入学生基本信息及各科考试成绩并打印; (2) 求出每个学生的各科成绩之和并打印; (3) 按总成绩从低到高进行排序打印出各科成绩及总分,总成绩相同的为同 一个名次。 3 【心得】 通过一个周的课程
5、设计,我对数据结构有了更深的认识,加深了对结构体定 义的掌握,了解了系统的设计的一些知识,对于简单系统的设计有了进一步的认 识和了解。 课程设计的过程中也遇到了很多问题,例如:在对学生成绩进行排序时,由 于刚开始写函数时,只是一味的照搬课本上的算法,忽视了实际问题,导致排序 时出现了重复排序的现象,后来在自己上网搜索以及同学的帮助下解决了问题, 最终能正确的运行出程序。 课程设计是对我们一学期学习知识的一次检验,设计的过程中会遇到很多问 题,我们应该积极地与老师同学进行交流,认真的思考,才能解决问题,提高我 们发现问题解决问题的能力, 引导我们把课本上所学习到的知识运用到生活中去。 这次课程设
6、计我要感谢王伟静老师以及帮助我的同学,在他们的帮助下,我才能 顺利的完成此次课程设计。 【源程序】 #include struct project float yuwen; float shuxue; float yingyu; ; struct student int num; char name30; struct project score; float zong; int mingci; stu5; void input(struct student stu5) /信息输入 4 printf(“学号 姓名 yuwen shuxue yingyu n“); for (int i=0;i5;i+) scanf(“%d“, scanf(“%s“,stui.name); scanf(