学生学籍管理系统的设计报告.docx
《学生学籍管理系统的设计报告.docx》由会员分享,可在线阅读,更多相关《学生学籍管理系统的设计报告.docx(25页珍藏版)》请在冰豆网上搜索。
学生学籍管理系统的设计报告
学生学籍管理系统的设计报告
一、需求分析
信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。
计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续用手工劳动。
为了适应现代社会人们高度强烈的时间观念,学籍管理系统软件将会为教学办公室带来了极大的方便。
学籍管理的繁索给具有强烈时间观念的人员带来了诸多不便,教学办公室缺少一种完善的学籍管理软件,为了对学生档案的管理方便,开发人员完成了全面的调查与分析,同时与目标用户进行了多次深入沟通,并在次基础上着手开发《学籍管理系统》软件。
二、概要设计
软件适用于教育界,对学生的学籍可以随时输入、输出、查找、修改。
1、功能需求
1能够游览学生学籍的所有信息
2能够制定招生计划并能进行学生注册登记管理
3能够通过学生的一个信息找到个人学籍的相关信息(例如:
知道学生的姓名能够找到该学生的所有有关的学籍信息)
4通过一条信息找到与之匹配的信息(例如:
查询同一专业的所有人员)
5相关人员能对包含学生的学籍信息进行管理(因为学生有关情况不是固定
不变的所以一旦学生信息发生改变就要对原有信息进行诸如添加,删除,
修改等的操作)
6必须能对学生有关信息进行相关统计计算(例如:
评定各项奖项,德育考评等)
7需要提供打印功能(能对要打印的各项内容都能进行打印服务)
8对毕业生进行档案管理
9能提供条形码进行刷卡服务
2、性能需求
数据精确度:
查询时应保证查全率,所有相应域包含查询关键字的记录都应能查到
时间特性:
一般操作的响应时间应在1-2秒内,对软磁盘和打印机及条形码刷卡服务响应时间也应在可接受的时间内完成。
适应性:
对前面提到的运行环境要求不应存在困难。
三、详细说明
本系统的主要任务是实现对学校教导处的学生信息管理、成绩管理、课程管
理及相关查询。
其主要功能包括:
1、学生信息管理功能
班级管理:
提供给班主任进行本班学生的信息更新、删除。
添加学生:
以班级为单位,进行学生入库。
其中分为单个添加和成批添加。
单
个添加学生供数量较少的学生信息入库;成批添加可以从现存的学生信息
EXCEL文件中成批录入到数据库中。
删除学生。
当学生毕业后,学生信息转移备份数据库中,系统的基本数据库中需要删除学生信息。
该功能主要进行成批地删除学生信息,如连续学号区段的多位学生信息删除,整个班级的删除,所有学生信息的删除。
新生管理。
本部分的功能主要有新生导入、分班、及设置学号。
新生导入实现从现存的EXCEL新生名单中录入学生信息。
分班功能实现按新生的报考专业、成绩及性别进行分班。
设置学号实现自动为各班学生编发学号。
学生信息备份。
在学生信息删除前,将其按班级为单位保存到备份数据库。
2•学生成绩管理功能
分数录入:
以班级为单位,录入各科目的期中、期末、总评成绩。
总分及名次:
计算指定班级学生的总分及名次。
补考成绩录入:
修改总评成绩,以决定最终补考人数。
成绩备份:
为指定班级及指定的学期数的学生成绩保存到备份数据库中。
3、课程信息管理功能
课程管理:
提供本学期各年级各专业所开课程名称的录入、修改、删除。
它是学生成绩管理的基础:
用以保证数据库中一致性原则。
4、查询功能。
学生信息查询:
根据用户的要求,查询学生数据库的所有可能的信息,其中包括成绩查询。
备份成绩查询:
按班级为单位查询备份数据库的学生信息,补考情况
四、软件编码
#include
#include
#include
#include
usingnamespacestd;
#defineNULL0
classstudent
{
public:
longnum;
stringname;
stringdizhi,dihua,banji;
student*next;
};
intn;//链结点的个数
student*head,*stu;
/////////////////////////////////////////////////////////////////////
//创建动
student*creat(void)
态链表返回以各指向链表头的指针
{student*head;
student*p1,*p2;
n=0;
p1=p2=newstudent;
单元,用P1P2指向
cout<<"按顺序输入学生的学号,姓名,地址,电话,班级,输入意字符)"<cin>>p1->num>>p1->name>>p1->dizhi»p1->dihua»p1->banji;head=NULL;
while(p1->num!
=O)
{n=n+1;
if(n==1)head=p1;
elsep2->next=p1;
p2=p1;
p1=newstudent;
cin>>p1->num>>p1->name>>p1->dizhi»p1->dihua»p1->banji;
}
p2->next=NULL;
return(head);
}
///////////////////////////////////////////作为二进制储存和读出二进制文件
voidwrite_read()
{student*p;
studentstud[1OO];
n=0;
for(p=head;p!
=NULL;p=p->next)
{stud[n].dizhi=p->dizhi;
stud[n].dihua=p->dihua;
stud[n].banji=p->banji;
stud[n].name=p->name;
stud[n].num=p->num;
n++;
}
ofstreamoutfile("student.dat",ios:
:
binary);
if(!
outfile)
{cerr<<"openerror...."<〃开辟新
0****就停止录入(*为任
//循环输入的作用
//开辟新单元,
//输入数据
〃p2指向最后
abort();
for(inti=O;ioutfile.write((char*)&stud[i],sizeof(stud[i]));outfile.close();
ifstreaminfile("student.dat",ios:
:
binary);
if(!
infile)
{cerr<<"openerror...."<abort();
}
for(intj=O;jinfile.read((char*)&stud[i],sizeof(stud[i]));
infile.close();
for(intk=O;k{cout<<"姓名:
"<cout<<"学号:
"<cout<<"地址:
"<cout<<"电话:
"<cout<<"班级:
"<}
}
///////////////////////////////////////////////////////////////
voidexit()
{
图形的输出
cout<<"
1
\n"
II
1
\n"
II
111
\n
II
11
\n"
n1
1
「\n"
1
n\n
"1
AAAAA谢谢使用AAAAAAA
I\n"
"1
I\n"
"1
偷得浮生半日闲
I\n"
"1
I\n"
"1
I\n"
"1
丄\n";
/////////////////////////////////////////////////////////////////////////////////////////////////////
//输出链表
voidprint(student*head)
{student*p;
cout<<"
student*del(student*head,longnum)
{student*p1,*p2;
if(head==NULL)
{cout<<"此为空表"<while(num!
=p1->num&&p1->next!
=NULL)
{p2=p1;p1=p1->next;}
if(num==p1->num)
{if(p1==head)head=p1->next;
elsep2->next=p1->next;
cout<<"删除"<n=n_1;}
else
cout<<"没有该同学数据!
"<return(head);
cout<//节点+1
查找学生
voidfind()
{student*p;
inta;
cout<<"请输入想要找的学生的学号"<cin>>a;
for(p=head;p!
=NULL;p=p->next)
{if(a==p->num)
地址地话
班级
{cout<<""<cout<<"学号姓名
"<cout<<""<cout<num
<name
<dizhi<dihua<banjicout<<""<break;
}
else
continue;
}
}
///////////////////////////////////////////////////////////////////////////////删除和添加的链表的多次执行的实现
voidlist()
{inta;
longdel_num;
student*creat(void);〃输入学生数据
student*cunt_put(student*);
student*del(student*,long);
student*insert(student*,student*);
voidprint(student*);
cout<<""<head=creat();
print(head);//输出全部结点
cout<<"如果要删除学生资料请输入1,如果需要添加请输入2"<cin>>a;
if(a==1)
{cout<<"输入要删除学号"<cin>>del_num;
while(del_num!
=0)
{head=del(head,del_num);
print(head);//调用输出函数
cout<<"是否继续删除:
是(输入学号),不是(输入0)"<cin>>del_num;
}
}
cout<<",往下执行就按任意数字"<cin>>a;
if(a==2)//操作选择
{cout<<"输入要添加的就输入学号"<stu=newstudent;//开创新的空间
cin>>stu->num>>stu->name>>stu->dizhi»stu->dihua»stu->banji;//输入数据
while(stu->num!
=0)//可以循
环删除,删除多个
{head=insert(head,stu);//调用添加函数
print(head);〃调用输
出函数
cout<<"如果需要添加请输入学号,无需添加输入0****就停止录入(*为任意字符)"<stu=newstudent;
cin>>stu->num>>stu->name>>stu->dizhi»stu->dihua»stu->banji;
}
}
cout<}
/////////////////////////////////////////////////////////////////////////调用各个函数
voidswich()
{inta;
list();//删除和添加调用
cout<<"退出软件输入9直接查看学生资料输入10"<cin>>a;
if(a==9)
exit();
if(a=10)
{for(intu=0;;u++)
{
cout<<"0按学号查某个学生的数据1查看成绩表3退出系统且读取二进制文
件"<intt;
cin>>t;
if(t==1)
{print(head);continue;
}
if(t==3)
{exit();
break;
}
if(t==0)
{find();continue;
}
}
}
cout<<"读取二进制文件如下"<write_read();
}
////////////////////////////////////////////////////////密码实现
voidmima()
{intn,m=1988825;
for(intj=O;;j++)
{
cout<<"这是我的地盘,请输入密码:
"<cin»n;
if(m==n)
{cout<<"恭喜你猜对了"<swich();
break;
}
else
{
cout<<"内有怪物,生人勿进!
"<continue;
}
}
}
//////////////////////////////////////////////////主函数
intmain()
{mima();
return0;
}
五、测试文档
1、集成测试
集成测试将测试每一个部件之间的工作是否正常。
在这个阶段,我们
假设所有的单元已通过开发人员个人在单元测试阶段测试全部通过,
没有任何错误。
集成测试包括以下内容:
连续集成测试数据库测试数据整合测试
2、功能测试功能测试环境操作系统:
windows98内存:
128M网络环境:
校园网本功能测试共分为:
系统功能测试测试是否可以正常添加用户和修改密码,系统正常退出测试是否可以正常对班级进行管理,学生的单个或成批添加,删除以及新生信息的导入和学生信息备份测试成绩管理中是否可以进行分数录入,汇总及排名和成绩备份等操作
测试课程信息模块中针对课程管理,老师和课程的关系之间操作是否正常
测试是否可以正常查询学生,老师和成绩
3、链接测试这一部分将测试系统各模块之间的超链接跳转是否正确
4、文档测试本章主要内容为:
测试文档是否包括全部内容测试软件功能描述与其他功能有没有冲突
查看软件功能描述是否是原来系统分析和需求
查看文档内容在特定的情况和进度下,以现有人力,物力和资源能否实现
5、负载测试
这一部分将测试正常情况下系统性能和用户数目之间的关系
本章主要内容为:
查看在多个用户同时使用本系统时是否正常
6、极限测试
这一部分将测试所有极端的情况,如速度非常快的情况下和速度非常慢的情况下,以及所有其它的极端情况。
本章主要内容为:
网络资源极限测试
综合极限测试
六、其它
简单的说明学籍管理系统数据库各数据表的结构如下。
(1)数据库名:
studen。
(2)student表(学生信息表)如表1-1所示。
表1-1student表(学生信息表)
字段名称
类型
宽度
允许空值
主键
说明
sno
char
8
NOTNULL
是
学生学号
sname
char
8
NOTNULL
学生姓名
sex
char
2
NULL
学生性别
native
char
20
NULL
籍贯
birthday
smalldate
4
NULL
学生出生日期
dno
char
6
NULL
学生所在院系编号
(外键)
spno
char
8
NULL
专业代码(外键)
classno
char
4
NULL
班级号
entime
smalldate
4
NULL
学生入校时间
home
varchar
40
NULL
学生家庭住址
tel
varchar
40
NULL
学生联系电话
(3)course表(课程信息表)如表1-2所示
表1-2course表(课程信息表)
字段名称
类型
宽度
允许空值
主键
说明
eno
char
10
NOTNULL
是
课程编号
spno
char
8
NULL
专业代码(外键)
cname
char
20
NOTNULL
课程名称
ctno
tinyint
1
NULL
课程类型编号(外
键)
experiment
tinyint
1
NULL
实验时数
lecture
tinyint
1
NULL
授课学时
semester
tinyint
1
NULL
开课学期
credit
tinyint
1
NULL
课程学分
(4)student_course表(学生选课成绩表)如表1-3所示。
表1-3student_course表(学生选课成绩表)
字段名称
类型
宽度
允许空值
主键
说明
sno
char
P8
NOTNULL
是
学生学号
tcid
smallint
2
NOTNULL
是
上课编号
score
tinyint
1
NULL
学生成绩
注意:
上课编号tcid是指teacher_cours&教师上课课表)中的tcid,而不是course表(课程信息表)中的课程编号eno。
(5)teacher表(教师信息表)如表1-4所示。
表1-4teacher表(教师信息表)
字段名称
类型
宽度
允许空值
主键
说明
tno
char
8
NOT
NULL
是
教师编号
tname
char
8
NOTNULL
教师姓名
sex
char
2
NULL
教师性别
birthday
smalldate
4
NULL
教师出生日期
dno
char
6
NULL
教师所在院系编号
(外键)
pno
tinyint
1
NULL
教师职务或职称编号
home
varchar
40
NULL
教师家庭住址
zipcode
char
6
NULL
邮政编码
tel
varchar
40
NULL
联系电话
email
varchar
40
NULL
电子邮件
(6)department表(院系信息表)如表1-5所示。
表1-5department表(院系信息表)
字段名称
类型
宽度
允许空值
主键
说明
dno
char
6
:
NOTNULL
是
:
院系编号
dname
char
20
NOTNULL
院系名称
header
char
8
NULL
院系负责人
addr
varchar
40
NULL
院系办公地址
del
varchar
40
NULL
联系电话
(7)user表(用户信息表)如表1-6所示。
表1-6user表(用户信息表)
字段名称
类型
宽度
允许空值
主键
说明
usrno
char
8
NOTNULL
是
用户名
usrpwd
char
8
NULL
密码
usrrights
int
4
NOTNULL
操作权限
(8)speciality表(专业信息表)如表1-7所示。
表1-7speciality表(专业信息表)
字段名称
类型
宽度
允许空值
主键
说
明
spno
char
8
NOTNULL
是
专业代码
dno
char
6
NOTNULL
院系编号
(外键)
spname
char
20
NOTNULL
专业名称
(9)class表(班级信息表)如表1-8所示。
表1-8class表(班级信息表)
字段名称
类型
宽度
允许空值
主键
说明
classno
char
4
NOTNULL
是
班级号
spno
char
8
NOTNULL
是
专业代码
header
char
8
NULL
班负责人
(10)teacher_course表(教师上课课表)如表1-9所示。
表1-9teacher_course表(教师上课课表)
字段名称
类型
宽度
允许空值
主键
说
明
tcid
smallint
2
NOTNULL
是
上课编号
tno
char
8
NULL
教师编号
(外键)
spno
char
8
NULL
专业代码
(外键)
classno
char
4
NULL
班级号
eno
char
10
NOTNULL
课程编号
(外键)
semester
char
6
NULL
学期
schoolyear
char
10
NULL
学年
classtime
varchar
40
NULL
上课时间
classroom
varchar
40
NULL
上课地点
weektim