学生成绩管理系统 数据结构.docx
《学生成绩管理系统 数据结构.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统 数据结构.docx(12页珍藏版)》请在冰豆网上搜索。
![学生成绩管理系统 数据结构.docx](https://file1.bdocx.com/fileroot1/2022-12/14/2903688e-e961-4ddf-88ed-951fe6729193/2903688e-e961-4ddf-88ed-951fe67291931.gif)
学生成绩管理系统数据结构
学生成绩管理系统
摘要
C是一种通用的程序设计语言,C语言在很多方面继承和发展了以往许多高级程序设计语言的成功经验和特色,具有书写格式自由、数据类型丰富、语句功能强大、执行速度快和存储控制能力强等优点。
学生成绩管理系统设计是关于对学生成绩信息管理来设计的一个系统。
整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成学生成绩信息管理的全过程,包括创建学生成绩信息、查找学生成绩信息、修改学生成绩信息、插入学生成绩信息、删除学生成绩信息、打印学生成绩信息、按某科目或者总分排序、统计学生成绩信息等工作。
本文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。
重点说明了系统的设计思路、总体设计、各个功能模块的设计与实现方法。
关键词:
学生成绩管理系统,C语言数据结构
目录
1需求分析3
1.1数据需求分析3
1.2功能需求分析3
2系统总体设计4
2.1系统模块划分4
2.2系统模块结构图4
3系统详细设计5
3.1系统封面设计5
3.2系统主界面设计5
3.3插入新信息6
3.4更新维护7
3.5输出打印7
3.6数据查询7
3.7排序8
3.8退出9
3.9统计9
3.10图表11
4系统连编与运行13
5总结14
6参考文献15
1需求分析
随着学校规模的发展扩大,学校要向着大型化,规模化发展,而对于学生成绩信息管理系统有关的信息随之增加。
在这种情况下单靠人工来处理学生的成绩信息不但显得大不从心,而且极容易出错。
因此,需要开发学生成绩管理系统,该系统可以实现由计算机代替人工执行一系列复杂而繁琐的操作,使得学校管理人员可以轻松快捷的完成学生成绩管理的任务。
1.1数据需求分析
本系统的主要数据是学生成绩信息。
学生信息包括:
学生学号,姓名,性别,英语成绩,数学成绩,语文成绩,注释等。
1.2功能需求分析
本系统主要实现对学生成绩信息进行管理,需要实现以下几个方面的管理功能:
(1)创建学生成绩信息:
录入学生的信息。
(2)查找学生成绩信息:
按学号、姓名查找。
(3)修改学生成绩信息:
找到要修改的学号,修改相应信息。
(4)插入学生成绩信息:
插入一个新的学生。
(5)删除学生成绩信息;按学号、姓名删除。
(6)打印学生成绩信息:
输出全部学生信息。
(7)排序学生成绩信息:
按某科目或者总分排序。
(8)统计学生成绩信息:
统计各科目各分数段学生。
2系统总体设计
2.1系统模块划分
本系统主要是对学生成绩信息的管理,包括了有关学生成绩的创建、查询、修改、插入、删除、打印、排序、统计等功能。
整个系统分为以下几个模块。
1、欢迎界面模块
本模块提供欢迎界面的信息输出模式。
2、主系统界面模块
本模块提供学生成绩信息管理系统的主菜单界面,供管理员选择与执行各项成绩信息管理工作。
3、创建模块
本模块用于创建入库学生成绩的信息,包括学生的学号、姓名、性别、英语成绩、数学成绩、语文成绩、注释。
4、查询模块
本模块用于查询学生成绩信息,按学号或姓名查询等。
5、修改模块
本模块用于根据输入要查询的学号来修改其相应的信息。
6、打印模块
本模块主要用于输出库中学生信息。
7、排序模块
本模块将学生成绩按科目或者总分排序。
8、统计模块
本模块用于统计各科目各分数段学生信息。
2.2系统模块结构图
根据系统功能设计,对应的系统模块结构图如图1所示:
图1系统模块结构图
3系统详细设计
3.1系统封面设计
首先创建如图3所示的成绩管理系统系统登陆表单,并设定为顶层表单,按任意键即可即入密码验证界面进行密码验证根据不同的密码即入不同权限的用户界面
图3成绩管理系统登陆界面
3.2系统主界面设计
成绩管理管理系统的主界面提供进入系统其他功能模块的方法,使用户能方便地调用插入新信息、更新、输入打印、查询、排序、退出、统计、图表。
要求将成绩管理系统的应用程序主界面设计成如图4所示的界面。
图4登录界面
此表单的具体设计步骤如下:
3.3插入新信息
在插入新信息选项中从键盘上输入1进入信息录入界面首先输入此次要录入数据的条数然后输入学生的各项成绩
其代码如下:
studentcreatedatabase()/*构建学生信息库*/
{intn,i;
printf("\n\n请输入你要输入记录的条数\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{printf("第%d个学生的信息\n",i);
printf("请输入学号:
");scanf("%d",&List.data[i-1].xuehao);
printf("请输入姓名:
");scanf("%s",List.data[i-1].name);
if(strlen(List.data[i-1].name)>8)
{i--;clrscr();printf("你输入的姓名长度必须再0-5之间\n\n");continue;}
printf("请输入性别\n");scanf("%s",List.data[i-1].sex);
if(strcmp(List.data[i-1].sex,"men")&&strcmp(List.data[i-1].sex,"women"))
{i--;clrscr();printf("输入的性别必须是men或women\n\n");continue;}
printf("请输入英语成绩\n");scanf("%d",&List.data[i-1].eng);
if(List.data[i-1].eng<0||List.data[i-1].eng>150)/*判断输入的分数是否再0到150之间*/
{i--;clrscr();printf("输入的成绩必须再0-150之间\n\n");continue;}
printf("请输入数学成绩\n");scanf("%d",&List.data[i-1].math);
if(List.data[i-1].math<0||List.data[i-1].math>150)
{i--;clrscr();printf("输入的成绩必须再0-150之间\n\n");continue;}
printf("请输入yuwen成绩\n");
scanf("%d",&List.data[i-1].yuwen);
if(List.data[i-1].yuwen<0||List.data[i-1].yuwen>150)
{i--;clrscr();printf("输入的成绩必须再0-150之间\n\n");continue;}
printf("请输入备注\n");scanf("%s",List.data[i-1].dizhi);
List.len=n;}
3.4更新维护
在更新界面中从键盘上输入2按回车键进入信息更新维护界面中刺激面有两个选项1更新2删除输入一进入更新界面首先要输入您要更新的学生的学号其次要选择你要更新的科目和新的信息输入2进入删除界面首先要输入你要您要删除学生信息的学号然后按回车键。
如图
3.5输出打印
在输出打印界面中以表格化分页输出数据并打印
3.6数据查询
选择4进行查询界面选择1按学号查询选择2按姓名查询选择3按性别查询选择4按成绩查询在按成绩查询中又对成绩进行分科查询
3.7排序
按5进入排序界面该界面又可分为按学号排序按英语成绩、按数学成绩按语文成绩、按总成绩,用起泡法进行排序
其功能代码为:
for(j=0;j{
for(i=0;i{
if(List.data[i].xuehao>List.data[i+1].xuehao)
{
node1=List.data[i];
List.data[i]=List.data[i+1];
List.data[i+1]=node1;
}
其结果图为:
3.8退出
用户选择6结束整个程序
3.9统计
对于各科成绩进行分段统计
其功能代码如下:
tongji()
{inti;
duwenjian();
for(i=0;i{
if(List.data[i].eng>85)
temp[0][0]++;
elseif(List.data[i].eng>75)
temp[0][1]++;
elseif(List.data[i].eng>=60)
temp[0][2]++;
else
temp[0][3]++;
if(List.data[i].math>85)
temp[1][0]++;
elseif(List.data[i].math>75)
temp[1][1]++;
elseif(List.data[i].math>=60)
temp[1][2]++;
else
temp[1][3]++;
if(List.data[i].yuwen>85)
temp[2][0]++;
elseif(List.data[i].yuwen>75)
temp[2][1]++;
elseif(List.data[i].yuwen>=60)
temp[2][2]++;
else
temp[2][3]++;}
printf("+--------+--------+--------+--------+--------+\n");
printf("||优秀|良好|及格|不及格|\n");
printf("+--------+--------+--------+--------+--------+\n");
printf("|英语|%-3d|%-3d|%-3d|%-3d|\n",temp[0][0],temp[0][1],temp[0][2],temp[0][3]);
printf("+--------+--------+--------+--------+--------+\n");
printf("|数学|%-3d|%-3d|%-3d|%-3d|\n",temp[1][0],temp[1][1],temp[1][2],temp[1][3]);
printf("+--------+--------+--------+--------+--------+\n");
printf("|数学|%-3d|%-3d|%-3d|%-3d|\n",temp[2][0],temp[2][1],temp[2][2],temp[2][3]);
printf("+--------+--------+--------+--------+--------+\n");}
3.10图表
对于各分数段进行状统计可以更直观的了解学生的情况
其功能代码如下:
tubiao()
{inti,yx,lh,jg,bjg,t,x,y,z,q;
x=7;y=7;z=7;q=7;
duwenjian();tongji();clrscr();
printf("请输入你要查看的科目\n");
scanf("%d",&t);
if(t==1)
{printf("\n\n\t\t英语成绩柱状图:
");
yx=(int)(((float)temp[0][0]/List.len)*10);
lh=(int)(((float)temp[0][1]/List.len)*10);
jg=(int)(((float)temp[0][2]/List.len)*10);
bjg=(int)(((float)temp[0][3]/List.len)*10);
for(i=1;i<11;i++)
{if((10-yx)<=i){
gotoxy(27,x);printf("|");
}
if((10-lh)<=i)
{gotoxy(34,y);printf("|");}
if((10-jg)<=i)
{gotoxy(41,z);printf("|");}
if((10-bjg)<=i)
{gotoxy(48,q);printf("|");
}x++;y++;z++;q++;}
gotoxy(25,19);printf("%d",temp[0][0]);
gotoxy(32,19);printf("%d",temp[0][1]);
gotoxy(39,19);printf("%d",temp[0][2]);
gotoxy(47,19);printf("%d",temp[0][3]);
}
gotoxy(15,17);printf("-------------------------------------------");
gotoxy(25,18);printf("优秀");
gotoxy(32,18);printf("良好");
gotoxy(39,18);printf("及格");
gotoxy(47,18);printf("不及格");
}
4系统连编与运行
一个应用系统设计和创建完成后,还必须进行连编,以便生成一个可执行文件供最终用户使用。
连编完成后还要运行,以检查整个系统的完整性和准确性,同时还可增加程序代码的保密性。
(1)先进行编译,编译过之后再选择超级工具集然后选择中文DOS。
如图9所示:
图9工资管理项目
按图中所示运行程序,生成可执行文件.exe格式的文件。
5总结
本设计开发的工资管理系统从最后的测试结果来看,基本上实现了成绩管理系统的几大功能:
成绩信息录入、成绩信息的管理等。
并达到操作过程中的直观、方便、实用、安全等要求。
系统采用模块化程序设计的方法,既便于系统功能的组合和修改,又便于未参与系统开发的技术维护人员补充和维护。
本系统经过测试,证明其运行是稳定、可靠的。
但在系统设计中也也遇到很多的问题,并且本系统的功能还需要不断的完善和改进,在以后空闲时间里逐一进行完善,使系统功能更加完善,使本软件能够更好的为大中型企业服务,创造更大的社会价值。
在这次设计过程中,我得到了代老师的精心指导,在此,我由衷地感谢代老师!
6参考文献
[1]谭浩强.C程序设计[M].北京:
清华大学出版社.2005
[2]严蔚敏.数据结构(C语言版)[M].北京:
清华大学出版社.2008
[3]陈雁.数据结构[M].北京:
高等教育出版社,2004.