学生成绩管理系统课程设计(论文)
摘 要
“学生成绩管理系统”主要用于完成日常教育工作中对学生成绩档案的数字化管理。该系统可使学校教职员工减轻工作压力,系统地对教务、学生选课、教学和学生成绩等各项服务和信息进行管理。同时,可以有效减少学生成绩管理工作量、提高查询速度和方便分析。
本论文从系统分析、系统设计、系统实施和使用等几个方面对学生成绩管理系统的功能需求、体系结构和开发等进行了介绍,较好实现了该系统的一个原型系统。
关键字:原型系统;需求分析;系统设计;系统实施;系统使用;C#
目录
11引言
11.1开发背景
21.2开发前景
31.3开发目的
42系统需求分析
42.1系统问题的提出
52.2系统必要性
63 系统总体设计
63.1系统主要功能
63.2系统流图和主要界面展示
63.2.1系统流图
83.2.2 系统主界面
83.3 系统的主要模块
83.3.1增加学生记录:
103.3.2修改学生记录模块
133.3.3保存文件模块
143.3.4学生记录排序
173.3.5结束语提示模块
194 系统测试
194.1 增加学生记录测试
194.2 打开文件测试
204.3 学生成绩排序
224.4 查询学生成绩记录
234.5 退出学生成绩查询系统
255 课程设计总结
27参考文献
28附录
1引言
1.1开发背景
随着计算机应用的日益普及,数据库技术已成为越来越重要的技术基础。数据库即使是保证应用软件质量的重要环节,专业化、高效的应用系统对于数据库技术的要求也越来越高。数据库是数据管理的最新技术,是计算机学科的重要分支。十余年来,数据库管理系统已从专用的应用的程序包发展成为通用的系统软件。由于数据库具有数据结构化、最低冗余度、较高的程序与数据独立性、易于扩充、易于编制应用程序等优点,较大的信息系统都是建立在数据库设计之上的。
数据库技术是计算机领域中最为活跃的技术之一,是计算机科学的重分支,它的出现对于许多企事业单位提高科学管理水平都起到举足轻重的作用。对于一个企事业单位来说,数据库的建设规模、数据库信息量的大小和使用频度已成为衡量这个机构信息化程度的重要标志。数据库技术是计算机科学与技术中发展最快的领域之一,也是应用最广的技术之一,它已成为计算机信息系统与应用系统的核心技术和重要基础。数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储效率,保证数据的完整和一致。
数据库是数据管理的最新技术,是计算机科学的重要分支。今天,信息资源已成为各个部门的重要财富和资源。建立一个满足各级部门信息处理要求的行之有效的信息系统也成为一个企业生存和发展的重要条件。因此,作为信息系统核心和基础的数据库技术得到越来越广泛的应用,从小型单项事务处理系统到大型信息系统,越来越多新的应用领域采用数据库技术来存储和处理信息资源。
数据库设计是建立数据库及其应用系统的技术,是信息系统开发和建设中的核心技术,具体说,是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。数据库一个信息系统的各个部分能否紧密地结合在一起以及如何结合,关键在数据库。
学生成绩管理系统是一个单位不可缺少的部分,它的内容对于单位的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的的查询手段。
1.2开发前景
在我国,各大中小学校的各类信息管理系统并非一个新的课题,但也有的学校所有的工作几乎还是手工操作来完成。计算机技术在日新月异的发展,但是有很多学校,,学校的各种业务管理都依然由手工操作来完成,十分落后,效率极低,成本很大。随着社会的发展,信息化是社会进程的必然趋势,学校管理只有快,准,精和公平才能更好地发挥其社会价值。
所以机器代替人力是必然的历史发展趋势,只有领导的重视和支持才能从人工操作改为计算机的自动化系统。人工操作必将被计算机代替。
1.3开发目的
学生成绩管理系统如果可以为学校所使用,将会改变以往靠手工管理学生成绩的状况,可以树立良好的办学形象,提高工作效率,节省人力和物力。
2系统需求分析
2.1系统问题的提出
随着计算机技术的发展,特别是计算机网络技术与数据库技术的发展,使人们的生活与工作方式发生了很大的变化。网络技术的应用使得计算机之间通信和信息共享成为可能,而数据库技术的应用则为人们奠定了数据存储、信息检索和数据分析等应用功能的基础,使得各项业务工作通过信息化技术高效运转和被处理。
数据库始于20世纪60年代,经过40多年的发展,现在已经形成了理论体系,成为计算机软件的一个重要分支。数据库技术体现了当代先进的数据管理方法,使计算机的应用真正渗透到国民经济各个部门,在数据处理领域发挥着越来越大的作用。而互联网技术的出现,更是进一步丰富的人类生活,数字化生存已经一步步走进人们日常的生活与工作。互联网技术与数据库技术的结合为计算的在人类生活中的应用带来了巨大的影响。产业信息化,管理现代化,科学化已经成为行业发展的重要课题,这不仅是企业提高自身竞争力,甚至是国家提高综合国力,走向国民富强的重要手段。
在我国,教育是一个影响着国富民强的重要行业,随着改革开放和市场经济的发展根据中国特有的国情发展,教育得到了国家的大力扶持与社会各界的高度重视,从而使教育业向现代
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
化的方向高速发展,但是同发达国家相比,我国的教育行业的信息技术的应用程度还很低,只有在大城市中发展较早、规模较大的院校中才使用计算机进行教学管理,从教学和学生管理等方面提高工作效率,取得良好的社会和经济效益。而一些边远地区传统的、规模较小的教育机构还没有全部具备通过计算机和信息化技术全面进行教学管理的能力。因此可见,随着我国教育的迅速发展,信息技术在其上的应用会更加地广泛和深入。
2.2系统必要性
在信息技术迅速发展的今天,网络对于大对数人已经不再陌生,并且其应用在人们的工作、学习和生活中越来越多地发挥着不可替代的作用。很多学校纷纷根据自身的需要,采用了先进的信息技术来加强教学管理、提高教学质量。网上考试作为网络教育不可缺少的组成部分,它与传统的考试方式相比较而言,减少了教师出题,组织考试、批改试卷等工作量,提高了教师的工作效率,并且使考试更客观公正。但是目前很多考试系统都是由软件开发公司来开发并销售的,多数考试系统力求功能全面,从而存在着设置参数过多、操作较难、成本较高等问题。所以开发一个实用够用、操作简单、使用方便、成本较低的考试系统是很必要的。
3 系统总体设计
3.1系统主要功能
一个基于系统开发的总体任务是实现学生成绩管理,主要完成的功能有:保存学生成绩记录、修改学生成绩记录、统计学生信息和查询学生记录。其中查询学生记录还包括对全体学生所有科目成绩进行查询,也能单独对某个学生某一科进行查询并能实现添加、删除记录。成绩表包括的字段:学号、姓名、课程号、课程名、成绩。
3.2系统流图和主要界面展示
学生成绩管理系统主要包括增加学生记录以及查询记录、修改学生记录以及删除记录、保存文件以及打开文件和统计信息以及显示记录;
3.2.1系统流图
学生学生成绩管理系统的主要流程:
图3.1系统的主要结构
其中查询学生记录排序中还分别按姓名、学号和名次进行升序和降序排列图3.2
图3.2学生记录排序方法
3.2.2 系统主界面
程序运行直接进入主界面,主界面是系统的菜单所有的功能都能在界面展示
图3.3主界面
图3.3是学生成绩管理系统的主界面;它主要包括增加学生记录、查询学生记录、修改学生记录、学生记录排序、统计信息、打开文件、保存文件、显示记录和退出系统。
3.3 系统的主要模块
3.3.1增加学生记录:
增加学生记录包括:
增加学生人数、输入学号、输入姓名、输入性别、输入各科成绩;
其主要函数为:
void addrecord(student stud[]) /*增加记录*/
{
int i=0,j,num;
char str[5];
if(numstus!=0)
{
printf("已有记录存在是否覆盖?(y/n)\n");
gets(str);
if(str[0]=='Y'||str[0]=='y')
i=0;
else i=numstus;
}
printf("请输入增加的学生信息条目数:");
scanf("%d",&num);
if(i==0)
numstus=num;
else numstus+=num;
if(numstus>lens)
{
lens+=50;
pointer=(student *)realloc(pointer,lens*LEN);
}
printf(":\n");
for(;i
=0)
{
printf("要删除这个学生的信息吗?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
{
deleterecord(stud,i);
count(stud);
}
else
{
printf("确定要修改这个学生的信息吗?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
{
printf("下面请重新输入学生的信息:\n");
printf("请输入学号:");
gets(stud[i].number);
printf("请输入姓名:");
gets(stud[i].name);
printf("请输入性别(男/女 1/0):");
gets(str);
if(str[0]=='0')
strcpy(stud[i].sex,"女");
else
strcpy(stud[i].sex,"男");
stud[i].score=0;
printf("请按顺序输入成绩:");
for(j=0;j=0)
{
for(j=i;jnumstus)
{
printf("没有查找所要的信息。\n");
return -1;
}
return i;
}
}
//#include"head.h"
int openfile(student stu[]) /*打开文件*/
{
int i=0,j;
FILE *fp;
char filename[20],str[2];
if(numstus!=0)
{
printf("已经有记录存在,是否保存?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(stu);
}
printf("请输入文件名:");
gets(filename);
numstus=0;
if((fp=fopen(filename,"rb+"))==NULL)
{
printf("无法打开该文件\n");
return(-1);
}
fscanf(fp,"%d",&numstus);
fgetc(fp);
while(i0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortnum2(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortname(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortname2(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortcount(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;istud[j].index)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortcount2(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;istud[j+1].index)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
//#include"head.h"
void statistic(student stud[]) /*新增功能,输出统计信息*/
{
int i,j=0,k=0;
char c1,str[2];
float average[numsubs],sum=0;
if(numstus==0)
printf("没有可被查找的记录\n");
else
{
while(1)
{
printf("下面将统计考试成绩\n");
printf("请选择你要统计哪科的成绩 1.线代 2.高数 3.英语 4.C语言 5.物理\n");
c1=getchar();
printf("\t一共有个%d记录\n",numstus); /*总共记录数*/
switch(c1)
{
case '1':
for(i=0;istud[i].subject[0]) k=i;
if(stud[j].subject[0]stud[i].subject[1]) k=i;
if(stud[j].subject[1]stud[i].subject[2]) k=i;
if(stud[j].subject[2]stud[i].subject[3]) k=i;
if(stud[j].subject[3]stud[i].subject[4]) k=i;
if(stud[j].subject[4]
void amendrecord(student stud[])
{
char str[5]; /*供用户输入*/
int i=-1,j;
if(numstus==0) /*没有记录返回*/
printf("没有可供修改的记录!");
while(i<0)
{
i=findrecord(stud);
if(i>=0)
{
printf("要删除这个学生的信息吗?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
{
deleterecord(stud,i);
count(stud);
}
else
{
printf("确定要修改这个学生的信息吗?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
{
printf("下面请重新输入学生的信息:\n");
printf("请输入学号:");
gets(stud[i].number);
printf("请输入姓名:");
gets(stud[i].name);
printf("请输入性别(男/女 1/0):");
gets(str);
if(str[0]=='0')
strcpy(stud[i].sex,"女");
else
strcpy(stud[i].sex,"男");
stud[i].score=0;
printf("请按顺序输入成绩:");
for(j=0;j=0)
{
for(j=i;jstud[i].score)
stud[i].index++;
}
}
void addrecord(student stud[]) /*增加记录*/
{
int i=0,j,num;
char str[5];
if(numstus!=0)
{
printf("已有记录存在是否覆盖?(y/n)\n");
gets(str);
if(str[0]=='Y'||str[0]=='y')
i=0;
else i=numstus;
}
printf("请输入增加的学生信息条目数:");
scanf("%d",&num);
if(i==0)
numstus=num;
else numstus+=num;
if(numstus>lens)
{
lens+=50;
pointer=(student *)realloc(pointer,lens*LEN);
}
printf(":\n");
for(;i0)
{
i=menu_select(); /*控制菜单*/
switch(i)
{
case 1:addrecord(pointer);break; /*增加学生信息*/
case 2:findrecord(pointer);break; /*查询学生信息*/
case 3:amendrecord(pointer);break; /*修改学生信息*/
case 4:sort(pointer);break; /*学生信息排序*/
case 5:statistic(pointer);break; /*统计信息*/
case 6:openfile(pointer);break; /*打开文件*/
case 7:writetotext(pointer);break; /*保存文件*/
case 8:display(pointer,0,numstus-1);break; /*显示记录*/
case 0:
if(numstus!=0) printf("是否保存当前记录?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(pointer);
i=-1;break; /*退出系统*/
default:printf("请输入数字0~8:\n");i=1; /*输入错误*/
}
}
printf("\t\t☆☆欢迎再次使用☆☆\n\n");
display1();
}
学生成绩管理系统
增加学生记录
查询学生记录
修改学生记录
学生记录排序
统计信息
打开文件
保存文件
显示记录
记录排序
按姓名排序
按学号排序
按名次排序
升序排列
降序排序
升序排列
降序排序
升序排列
降序排序
1
PAGE