软件工程学年设计_学生成绩管理系统

guguohui

贡献于2012-10-24

字数:5138 关键词: C/C++开发

 软件工程学年课程设计 课程名称:学生成绩管理系统 姓 名:XXX 班 级:XXX 学 号:XXX 院 系:计算机科学与技术学院 指导教师:XXX 摘要 随着计算机的普及,计算机的应用越来越普遍。特别是学校政府科研机构,对计算机的的依靠也越显明显。 在学校或班级,我们经常会对某次考试中所有学生的成绩进行统计和管理,由于学生数目经常繁多,所以在处理统计学生总成绩和平时成绩时工作会相对繁琐,所以针对这种情况,同时我分析了成绩管理所需要的功能,在利用c语言及VC++6.0程序运行平台之下,设计了一种小型的学生成绩管理系统,该系统具有学生成绩相关信息的录入、查询、修改、排序、统计、显示、打开文件、保存文件等功能。 关键词:学生成绩管理系统;计算机;c语言;课程设计 一 可行性研究 1.1 问题的提出 随着学校的的教学任务越来越重,对学生成绩管理的也开始变得的繁琐,作为计算机学生的我们,写一个简单程序让它来代替繁重的工作量,这不仅提现了计算机的计算速度开,二且为我们节省现了大部分时间来完成其它的事情。何乐而不为呢!并且可以提高我们的编程。锻炼我们的能力。 1.2 国内外研究的现状 在国计算机内外,计算机的应用已延伸到各个领域,为了利用计算机解决生活中的实际问题,许多大小型应用软件应运而生。例如在各所学校,为了管理数目众多的学生的成绩,学生成绩管理系统软件成为各所学校必不可少的一项资源。但由于学生成绩管理系统应用十分普遍,所以从总体上来看针对此类的程序设计大都已经成熟,只是特定的处理功能需求根据实际需要而设计,所以就个人来说,无论以生活应用或是自我能力的提升作为出发点,去设计学生成绩管理系统都是很有必要的。 1.3 任务与分析 本课题主要的目的是利用c语言编写程序,实现学生成绩管理功能。 由于学生成绩管理具有学生成绩的录入、学生信息的显示和保存到文件、查询、修改和统计学生成绩鞥功能。那么首先我们可以定义一个结构体student,其中包含学生学号、姓名、性别、3门课成绩、总分、;然后通过相应的函数实现学生成绩管理的各种功能。 1.4 系统流程图 二 需求分析 2.1 系统要求:能满足对学生成绩的管理,并已文档存储。能够至少处理一个班的学生成绩。 2.2数据查询:按学号、按姓名或按总名次查询。 2.3数据修改:删除或重新录入指定学号、姓名、名次的学生的基本信息(学号、姓名等)以及课程信息(分数)。 2.4数据排序:按照学号、姓名、名次并选择进行升序还是降序进行排列。 2.5统计信息:可分别统计A、B、C、这三门课程的最高分、最低分与平均分。 2.6打开文件:读取已保存的文件。 2.7保存文件:保存正在编辑的文件。 2.8显示记录:显示正在编辑的数据的记录。 2.9退出系统:推出此系统。 三 程序运行平台 VC++6.0 具体操作如下: 打开VC++6.0,点击文件——点击新建——点击文件——选择c++ Source File,同时输入文件名,建立保存目录——点击确定,创建源文件成功。编写程序,再编译,链接,执行等。 四 总体设计 1 数据描述: 学生基本内容数据表: 名称 类型 大小 是否是关键字 序号(num) 整形 4字节 是 名字(name) 字符串 20字节 否 性别(sex) 字符串 5字节 否 年龄(age) 整形 4字节 否 生日(data a) 结构体 12字节 否 地址(address) 字符串 50字节 否 电话(tel) 字符串 11字节 否 分数(score c) 结构体 14字节 否 学生日数据表: 名称 类型 大小 年(year) 整形 4 月(month) 整形 4 日(day) 整形 4 学生各科成绩表: 名称 类型 大小 高数(gao) 整形 4 英语(ying) 整形 4 大物(wu) 整形 4 总分(total) 整形 4 2主要功能描述 1. 录入学生信息,包括:姓名,学号,性别,年龄,电话,生日,家庭地址,分数。 2. 输出学生的信息,信息是指先本次操作的的内容。 3. 更新学生信息,包括:更新本次录入的信息和添加新的数据。 4.查询学生信息,包括:按学号,按姓名,按各科成绩及格的学生。 5. 排名信息,包括:按学号排名,按成绩排名。 6. 统计学生的信息。 7. 删除学生信息,包括:按学号删除,按姓名删除。 8. 保存本次操作的为文件。 9. 查询文件中的学生信息内容。 3ER图 五 详细设计 针对要处理的学生信息和数据格式的实际情况,本程序使用了结构体型数据、全局变量和宏定义,用结构体型数据存放学生的各种信息,存储在结构体的数组内,所以只能处理,内存当中的信息,用宏定义使程序更加简洁也使程序更容易更改 #define MY1 printf("学号\t姓名\t性别\t年龄\t生日") #define MY2 printf("\n%d %6s %4s\t%2d %8d%2d%2d \n",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].a.year,s[i].a.month,s[i].a.day) #define MY3 printf("家庭住址 联系方式 高数 英语 大物 总成绩") #define MY4 printf("\n%4s %4s %2d %2d %2d %2d\n",s[i].address,s[i].tel,s[i].c.gao,s[i].c.ying,s[i].c.wu,s[i].c.total) #define MAX 50 1. 主程序界面 2录入学生信息:姓名,学号,性别,年龄,电话,生日,家庭地址,分数。 函数为:putin_message(); 输入:姓名,学号,性别,年龄,电话,生日,家庭住址,分数; 输出:NULL; 功能:录入学生信息; putin_message() {system("cls"); … printf("\n\n***********输入学生信息****************\n\n"); … printf("\n***********************学生信息输入完毕**********************\n"); } 3输出学生的信息,信息是指先本次操作的的内容。 函数名:out_message(); 输 入 :NULL 输 出 :学生信息 功 能 :显示操作内容 void out_message() … printf("\n*****************************学生信息表**********************\n\n"); … } 4更新学生信息 函数名:renew_message(); 输 入 :NULL 输 出 :NULL 功 能 :更新调用函数insert_message(),revise_message() renew_message() { printf("\n\n\n*****************更新学生信息*******************\n\n"); } 函数名:insert_message(); 输 入 :学生信息 输 出 :NULL 功 能 :插入新的学生信息 insert_message() { } 函数名:revise_message(); 输 入 :学生信息 输 出 :NULL 功 能 :更改的学生信息,可以修改,学号,姓名等基本信息。 /*修改学生信息*/ revise_message() } 5查询学生信息 函数名:inquire_num(); 输 入 :NULL 输 出 :学生信息 功 能 :查询学号函数,被inquire_message()调用。 int inquire_num() { … } 函数名:inquire_name (); 输 入 :NULL 输 出 :学生信息 功 能 :查询姓名函数,被inquire_message()调用。 int inquire_name() { … } 函数名:inquire_gao (); 输 入 :NULL 输 出 :学生信息 功 能 :查询成绩函数,被inquire_jige()调用。 int inquire_gao() { … } 函数名:inquire_ying (); 输 入 :NULL 输 出 :学生信息 功 能 :查询成绩函数,被inquire_jige()调用。 int inquire_ying() { … } 函数名:inquire_wu (); 输 入 :NULL 输 出 :学生信息 功 能 :查询姓名函数,被inquire_jige()调用。 int inquire_wu() { … } 函数名:inquire_jige(); 输 入 :NULL 输 出 :学生信息 功 能 :查询姓名函数,被inquire_message()调用。 int inquire_jige() { … } /*查询学生信息模块*/ inquire_message() { … } 6排名信息,包括:按学号排名,按成绩排名 函数名:rank_num(); 输 入 :NULL 输 出 :学生信息 功 能 :查询姓名函数,被rank_message()调用。 int rank_num() { … } 函数名:rank_score(); 输 入 :NULL 输 出 :学生信息 功 能 :查询姓名函数,被rank_message()调用。 int rank_score() { … } 函数名:rank_message(); 输 入 :NULL 输 出 :学生信息 功 能 :排名,被main()调用。 int rank_message() { … } 7.统计学生的信息 函数名:count_nn(); 输 入 :NULL 输 出 :学生信息 功 能 :统计学生信息,被main()调用。 int count_nn() { … } 8.删除学生信息,包括:按学号删除,按姓名删除 函数名:del_num(); 输 入 :NULL 输 出 :学生信息 功 能 :统计学生信息,被del_message()调用。 del_num() { … } 函数名:del_name(); 输 入 :NULL 输 出 :学生信息 功 能 :统计学生信息,被del_messege()调用。 int del_name() { … } 函数名:del_message(); 输 入 :NULL 输 出 :NULL 功 能 :统计学生信息,被main()调用。 del_message() { … } 删除操作: 9保存本次操作的为文件 函数名:save_message(); 输 入 :NULL 输 出 :NULL 功 能 :将学生信息保存到文件,被main()调用。 save_message(int sum) { } 10查询文件中的学生信息内容 函数名:putout_message(); 输 入 :NULL 输 出 :文件信息 功 能 :将学生信息保存到文件的信息输出,被main()调用。 void putout_message() { … } 文件内容: 显示内容: 六 总结 经过两个多星期的折腾,总算把程序设计给完成了,这是一个坚苦而又漫长的过程,学习C语言已经接近三年了,虽然是一个小型学生成绩系统设计,看着自己的成果,那几个熬夜的晚上还是很值得的,很欣慰! 在本次设计的全过程中,我对三年所学的知识有了一个比较系统的认识和理解。涉及了各方面的知识,大大扩展了我的知识面,同时是我学会了如何使用所学的知识去解决一些实际的问题。 在设计中我深知自己掌握的知识还远远不够,掌握的一些理论知识应用到实践中去,总会出现这样或那样的问题,不是理论没有掌握好,而是光知道书本上的知识是远远不够的,一定要把理论知识和实践结合起来。把学到的知识应用到时间中去,多做多练,才可以把理论的精华发挥出来。知识不是知道,了解就好,一定要去应用它,发展它,让它在现实生活中得到充分的应用,从而解决一些问题,这才是学习的根本目的。而且知识又不是单一的,它是互相联系的,学科与学科之间都有着内在的联系。计算机是一门非常复杂且庞大的学科,一项课题往往需要多项技术才可以完成的。在设计阶段,通过对课题的深入分析与研究,迫使我对技术有了一定的了解。在遇到问题时,得到了指导老师与同学的悉心帮助,使我感受到集体的力量是无穷的。 通过这次设计,我学会了和别人配合工作,因为一个人所学的知识不可能面面俱到的,只有通过合作,发挥自己的优点,体现团队精神,才能使工作做得更为出色。通过这次设计,我学到了许多书本上学不到的知识,增强了自己的动手能力。即将大三结束,我十分珍惜这次锻炼的机会,我按部就班的完成了自己的设计任务,但由于自己的知识水平有限,仍然存在很多的不足之处,恳请老师多多指教!当今的社会是竞争的社会,而人才的竞争则是竞争的焦点,课程设计对于我们这些没有接触过实际项目的同学来说,是离校前很好的一次锻炼,使我们各方面的能力都有了很大的提高,为我们踏出校门,走上社会增强了能力与自信! 计算机技术的高速发展,使我深深地认识到只有不断的加强学习,才能在计算机技术方面不至于被淘汰,今后,我还要加强学习,努力使自己成为一位专业的计算机人员,为我自己所从事的工作服务。 参考文献 (1) C程序设计(第三版) 作者:谭浩强 著 出版社:清华大学出版社 (2)C程序设计题解与上机指导(第三版) 谭浩强 主编 出版社:清华大学出版社 (3)《C语言程序设计》 -- 张磊 出版社:高等教育出版社   4《C语言最新编程技巧200例》 作者:鲁沐浴,电子工业出版社

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享文档获得金币 ]
0 人已下载

下载文档

相关文档