软件工程学年设计学生成绩管理系统.docx
《软件工程学年设计学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《软件工程学年设计学生成绩管理系统.docx(18页珍藏版)》请在冰豆网上搜索。
软件工程学年设计学生成绩管理系统
软件工程学年课程设计
课程名称:
学生成绩管理系统
姓名:
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++SourceFile,同时输入文件名,建立保存目录——点击确定,创建源文件成功。
编写程序,再编译,链接,执行等。
四总体设计
1数据描述:
学生基本内容数据表:
名称
类型
大小
是否是关键字
序号(num)
整形
4字节
是
名字(name)
字符串
20字节
否
性别(sex)
字符串
5字节
否
年龄(age)
整形
4字节
否
生日(dataa)
结构体
12字节
否
地址(address)
字符串
50字节
否
电话(tel)
字符串
11字节
否
分数(scorec)
结构体
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图
五详细设计
针对要处理的学生信息和数据格式的实际情况,本程序使用了结构体型数据、全局变量和宏定义,用结构体型数据存放学生的各种信息,存储在结构体的数组内,所以只能处理,内存当中的信息,用宏定义使程序更加简洁也使程序更容易更改
#defineMY1printf("学号\t姓名\t性别\t年龄\t生日")
#defineMY2printf("\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)
#defineMY3printf("家庭住址联系方式高数英语大物总成绩")
#defineMY4printf("\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)
#defineMAX50
1.主程序界面
2录入学生信息:
姓名,学号,性别,年龄,电话,生日,家庭地址,分数。
函数为:
putin_message();
输入:
姓名,学号,性别,年龄,电话,生日,家庭住址,分数;
输出:
NULL;
功能:
录入学生信息;
putin_message()
{system("cls");
…
printf("\n\n***********输入学生信息****************\n\n");
…
printf("\n***********************学生信息输入完毕**********************\n");
}
3输出学生的信息,信息是指先本次操作的的内容。
函数名:
out_message();
输入:
NULL
输出:
学生信息
功能:
显示操作内容
voidout_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()调用。
intinquire_num()
{
…
}
函数名:
inquire_name();
输入:
NULL
输出:
学生信息
功能:
查询姓名函数,被inquire_message()调用。
intinquire_name()
{
…
}
函数名:
inquire_gao();
输入:
NULL
输出:
学生信息
功能:
查询成绩函数,被inquire_jige()调用。
intinquire_gao()
{
…
}
函数名:
inquire_ying();
输入:
NULL
输出:
学生信息
功能:
查询成绩函数,被inquire_jige()调用。
intinquire_ying()
{
…
}
函数名:
inquire_wu();
输入:
NULL
输出:
学生信息
功能:
查询姓名函数,被inquire_jige()调用。
intinquire_wu()
{
…
}
函数名:
inquire_jige();
输入:
NULL
输出:
学生信息
功能:
查询姓名函数,被inquire_message()调用。
intinquire_jige()
{
…
}
/*查询学生信息模块*/
inquire_message()
{
…
}
6排名信息,包括:
按学号排名,按成绩排名
函数名:
rank_num();
输入:
NULL
输出:
学生信息
功能:
查询姓名函数,被rank_message()调用。
intrank_num()
{
…
}
函数名:
rank_score();
输入:
NULL
输出:
学生信息
功能:
查询姓名函数,被rank_message()调用。
intrank_score()
{
…
}
函数名:
rank_message();
输入:
NULL
输出:
学生信息
功能:
排名,被main()调用。
intrank_message()
{
…
}
7.统计学生的信息
函数名:
count_nn();
输入:
NULL
输出:
学生信息
功能:
统计学生信息,被main()调用。
intcount_nn()
{
…
}
8.删除学生信息,包括:
按学号删除,按姓名删除
函数名:
del_num();
输入:
NULL
输出:
学生信息
功能:
统计学生信息,被del_message()调用。
del_num()
{
…
}
函数名:
del_name();
输入:
NULL
输出:
学生信息
功能:
统计学生信息,被del_messege()调用。
intdel_name()
{
…
}
函数名:
del_message();
输入:
NULL
输出:
NULL
功能:
统计学生信息,被main()调用。
del_message()
{
…
}
删除操作:
9保存本次操作的为文件
函数名:
save_message();
输入:
NULL
输出:
NULL
功能:
将学生信息保存到文件,被main()调用。
save_message(intsum)
{
}
10查询文件中的学生信息内容
函数名:
putout_message();
输入:
NULL
输出:
文件信息
功能:
将学生信息保存到文件的信息输出,被main()调用。
voidputout_message()
{
…
}
文件内容:
显示内容:
六总结
经过两个多星期的折腾,总算把程序设计给完成了,这是一个坚苦而又漫长的过程,学习C语言已经接近三年了,虽然是一个小型学生成绩系统设计,看着自己的成果,那几个熬夜的晚上还是很值得的,很欣慰!
在本次设计的全过程中,我对三年所学的知识有了一个比较系统的认识和理解。
涉及了各方面的知识,大大扩展了我的知识面,同时是我学会了如何使用所学的知识去解决一些实际的问题。
在设计中我深知自己掌握的知识还远远不够,掌握的一些理论知识应用到实践中去,总会出现这样或那样的问题,不是理论没有掌握好,而是光知道书本上的知识是远远不够的,一定要把理论知识和实践结合起来。
把学到的知识应用到时间中去,多做多练,才可以把理论的精华发挥出来。
知识不是知道,了解就好,一定要去应用它,发展它,让它在现实生活中得到充分的应用,从而解决一些问题,这才是学习的根本目的。
而且知识又不是单一的,它是互相联系的,学科与学科之间都有着内在的联系。
计算机是一门非常复杂且庞大的学科,一项课题往往需要多项技术才可以完成的。
在设计阶段,通过对课题的深入分析与研究,迫使我对技术有了一定的了解。
在遇到问题时,得到了指导老师与同学的悉心帮助,使我感受到集体的力量是无穷的。
通过这次设计,我学会了和别人配合工作,因为一个人所学的知识不可能面面俱到的,只有通过合作,发挥自己的优点,体现团队精神,才能使工作做得更为出色。
通过这次设计,我学到了许多书本上学不到的知识,增强了自己的动手能力。
即将大三结束,我十分珍惜这次锻炼的机会,我按部就班的完成了自己的设计任务,但由于自己的知识水平有限,仍然存在很多的不足之处,恳请老师多多指教!
当今的社会是竞争的社会,而人才的竞争则是竞争的焦点,课程设计对于我们这些没有接触过实际项目的同学来说,是离校前很好的一次锻炼,使我们各方面的能力都有了很大的提高,为我们踏出校门,走上社会增强了能力与自信!
计算机技术的高速发展,使我深深地认识到只有不断的加强学习,才能在计算机技术方面不至于被淘汰,今后,我还要加强学习,努力使自己成为一位专业的计算机人员,为我自己所从事的工作服务。
参考文献
(1)C程序设计(第三版)作者:
谭浩强著出版社:
清华大学出版社
(2)C程序设计题解与上机指导(第三版)谭浩强主编
出版社:
清华大学出版社
(3)《C语言程序设计》--张磊出版社:
高等教育出版社
4《C语言最新编程技巧200例》作者:
鲁沐浴,电子工业出版社