学生成绩管理系统设计书Word格式文档下载.docx
《学生成绩管理系统设计书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统设计书Word格式文档下载.docx(27页珍藏版)》请在冰点文库上搜索。
在系统保存学生资料的前提下,想删除某学生的资料,可以输入学生,系统查找该学生资料后,就可以删除了。
由于学生辍学,毕业等原因,及时对系统进行更新,删除一些没用的信息,可以使系统更加优化
(6)查找并显示学生资料模块
主要功能是用来查找学生资料。
在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生,这样系统就会显示该学生资料和各科成绩等信息
(7)按查找,修改学生资料模块
主要功能是用来修改学生资料。
在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生,系统就会显示该学生资料和各科成绩等信息,这样就可以修改该学生的资料,成绩等信息。
(8)从文件中读入数据模块
主要功能是用来从文件中读入学生数据。
由于一些资料可以用Word文档或Excel表格输入,故在此模块中增加了导入数据的功能。
这样就方便很多,不用把学生资料一个一个添加,节省了很多时间精力。
(9)储存学生资料并退出系统模块
主要功能是用来储存学生资料。
在对系统进行一系列操作,比如添加、删除、修改学生资料后,对系统的最新操作进行保存,及时更新系统,方便下一次的操作。
4、类的设计与分析
Student类类图
typedefclass
{
public:
charnum[10];
charcla[10];
charname[20];
charbyyl[10];
charjsjzc[20];
charsjk[10];
charjsjyy[20];
charjsdl[20];
}Student;
表1Student类说明表
名称
属性
说明
num
数据成员
说明学生学号
cla
说明学生班级
name
说明学生名字
byyl
说明学生数据结构成绩
jsjzc
说明学生离散数学成绩
sjk
说明学生大学物理成绩
jsjyy
说明学生大学英语成绩
Jssl
说明学生模拟电路成绩
5、特色算法分析
功能:
定义菜单函数,通过输出函数显示系统功能。
利用switch语句实现多分支选择结构。
算法思路:
switch语句的执行流程是:
首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句。
代码:
voidmain()//主函数调用。
intn=0;
for(;
;
)
{
switch(menu())
case1:
cout<
<
setw(15)<
"
"
输入学生资料"
endl;
n=Input(stu,n);
break;
case2:
输出所有学生资料"
Display(stu,n);
case3:
按排序"
Sort(stu,n);
system("
pause"
);
case4:
插入学生资料"
n=Insert(stu,n);
case5:
删除学生资料"
输入他(她)的:
n=Delete(stu,n);
case6:
查找学生"
Query(stu,n);
case7:
修改学生资料"
输入你要修改的学生的:
n=Xiugai(stu,n);
case8:
从文件中读入数据"
n=AddfromText(stu,n);
case0:
将所有资料写入文件"
WritetoText(stu,n);
}
}
6、功能测试
图1学生成绩管理系统主菜单页面
图二为输入学生资料模块
图三为输出学生资料模块
图四按学生进行排列模块
图五为添加学生资料模块
图六为按查找,删除该学生资料模块
图七为查找并显示学生资料模块
图八为按查找,修改学生资料模块
图九为从文件中读入数据模块
图十为储存学生资料并退出系统模块
7、存在的不足与对策
本学生成绩管理系统由九个模块组成,每个模块相互联系又相互独立。
这个学生成绩管理系统存在着很多不足之处,由于自己本身编程能力的问题,这个系统可以实现的功能非常有限。
只能实现学生管理系统最基本的功能,可以进行简单的输入、输出学生资料,查询和修改学生信息,能直接从文件中读入数据,能对系统所作的修改、操作进行保存等。
而且在每个模块也有不足的地方,比如在输入学生资料时,对每个信息项没有严格的规定,可以输入任何的字符。
同时有些模块还不能实现本应该有的功能,这有待以后努力,争能够实现该有的功能。
在21世纪的科技时代,科学技术突飞猛进,计算机已经不仅是在科技上应用,而且在生活中也是同样得到了广泛在应用。
如今,不管是小学、初中、高中、甚至是很多大学生的学生成绩管理基本上是靠人工进行管理,但随着时间的变化,学校规模的扩大,有关学生成绩管理工作和所涉及到的数据量越来越大越来越多,大多数学校不得不靠增加人力、物力、财力来进行学生成绩管理。
但是人工管理成绩档案具有效率低、查找麻烦、可靠性不高、性低等因素。
因此开发出一个不仅仅是适用于大中专院校以及其它高校通用的学生成绩管理系统是必要的。
开发一个学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高了办学效益和现代化水平。
为广大教师和学生提高工作效率,实现学生成绩信息管理工作流程的系统化、规化和自动化。
现在我国的大中专院校的学生成绩档案管理水平普遍都不是很高,有的还停留在全用纸介质基础上,这种管理方式已不能适应时代的发展,社会的需求,因为它浪费了大量的人力物力,也存在着许多不足的因素。
在今天信息时代这种传统的管理方法必然会被计算机为基础的信息管理系统所代替。
一个高效的学生成绩管理系统可以存储历届的学生成绩档案,不需要大量的人力,只需要几名专门录入员即可操作系统,节省大量人力,可以迅速查到所需信息、高效、安全,学生在能方便的查看自己的成绩。
8、程序源代码
#include<
iostream>
stdio.h>
ctype.h>
stdlib.h>
string.h>
iomanip>
usingnamespacestd;
charjsdl[20];
Studentstu[80];
intmenu()
charc;
c<
'
0'
||c>
8'
cls"
欢迎使用本学生成绩管理系统!
!
编程人员:
迪兆"
******************************学生成绩管理系统******************************"
setw(32)<
1.输入学生资料"
2.输出学生资料"
3.按学生进行排列"
4.添加学生资料"
5.按查找,删除该学生资料"
6.查找并显示学生资料"
7.按查找,修改该学生资料"
8.从文件中读入数据"
0.储存学生资料并退出系统"
setfill('
='
)<
setw(48)<
="
请选择(0-8):
c=getchar();
return(c-'
intInput(Studentstud[],intn)//输入数据。
inti=0;
charsign,x[10];
sign!
='
n'
&
&
sign!
N'
班级:
cin>
>
stud[n+i].cla;
学号:
stud[n+i].num;
:
stud[n+i].name;
数据结构:
stud[n+i].byyl;
离散数学:
stud[n+i].jsjzc;
大学物理:
stud[n+i].sjk;
大学英语:
stud[n+i].jsjyy;
模拟电路:
stud[n+i].jsdl;
gets(x);
setw(10)<
还有要输入的信息吗?
(y/n)"
sign;
i++;
return(n+i);
voidDisplay(Studentstud[],intn)//输出数据。
inti;
-'
setw(65)<
-"
班级学号数据结构离散数学大学物理大学英语模拟电路"
for(i=1;
i<
n+1;
i++)
printf("
\t\t%-9s%-9s%-9s%-9s%-9s%-9s%-9s\n"
stud[i-1].cla,stud[i-1].num,stud[i-1].name,stud[i-1].byyl,stud[i-1].jsjzc,stud[i-1].sjk,stud[i-1].jsjyy);
if(i>
1&
i%10==0)
setw(35)<
voidSort(Studentstud[],intn)//按名字排序。
inti,j;
chart[20];
for(i=0;
n-1;
for(j=0;
j<
n-1-i;
j++)
if(strcmp(stud[j].num,stud[j+1].num)>
0)
strcpy(t,stud[j+1].cla);
strcpy(stud[j+1].cla,stud[j].cla);
strcpy(stud[j].cla,t);
strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
strcpy(t,stud[j+1].byyl);
strcpy(stud[j+1].name,stud[j].byyl);
strcpy(stud[j].byyl,t);
strcpy(t,stud[j+1].jsjzc);
strcpy(stud[j+1].name,stud[j].jsjzc);
strcpy(stud[j].jsjzc,t);
strcpy(t,stud[j+1].sjk);
strcpy(stud[j+1].name,stud[j].sjk);
strcpy(stud[j].sjk,t);
strcpy(t,stud[j+1].jsjyy);
strcpy(stud[j+1].name,stud[j].jsjyy);
strcpy(stud[j].jsjyy,t);
strcpy(t,stud[j+1].jsdl);
strcpy(stud[j+1].name,stud[j].jsdl);
strcpy(stud[j].jsdl,t);
排序成功!
intInsert(Studentstud[],intn)//插入一条学生信息。
charx[10];
stud[n].cla;
stud[n].num;
stud[n].name;
stud[n].byyl;
stud[n].jsjzc;
stud[n].sjk;
stud[n].jsjyy;
stud[n].jsdl;
n++;
插入成功!
return(n);
intDelete(Studentstud[],intn)//按名字查找信息,删除信息。
chars[20];
inti=0,j;
s;
while(strcmp(stud[i].name,s)!
=0&
n)i++;
/*查找判断*/
if(i==n)
\t\t\t没有发现该学生资料!
\n"
/*返回失败信息*/
}
for(j=i;
j++)/*删除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
strcpy(stud[j].cla,stud[j+1].cla);
strcpy(stud[j].byyl,stud[j+1].byyl);
strcpy(stud[j].jsjzc,stud[j+1].jsjzc);
strcpy(stud[j].sjk,stud[j+1].sjk);
strcpy(stud[j].jsjyy,stud[j+1].jsjyy);
strcpy(stud[j].jsdl,stud[j+1].jsdl);
当前信息已删除成功!
/*返回成功信息*/
return(n-1);
voidQuery(Studentstud[],intn)//按名字查找信息
n)
/*输入失败信息*/
return;
stud[i].num<
stud[i].byyl<
stud[i].jsjzc<
stud[i].sjk<
stud[i].jsjyy<
stud[i].jsdl<
intXiugai(Studentstud[],intn)//修改信息。
n=Delete(stud,n);
输入你要修改的学生资料"
n=Insert(stud,n);
修改完成"
intAddfromText(Studentstud[],intn)//从文件中读入数据。
inti=0,num;
FILE*fp;
charfilename[20];
输入文件名:
filename;
if((fp=fopen(filename,"
rb"
))==NULL)
无法打开文件"
fscanf(fp,"
%d"
&
num);
num;
%s%s%s%s%s%s%s"
stud[n+i].cla,stud[n+i].num,stud[n+i].name,stud[n+i].byyl,stud[n+i].jsjzc,stud[n+i].sjk,stud[n+i].jsjyy,stud[n+i].jsdl);
n+=