学籍管理系统详细设计方案.docx
《学籍管理系统详细设计方案.docx》由会员分享,可在线阅读,更多相关《学籍管理系统详细设计方案.docx(19页珍藏版)》请在冰豆网上搜索。
学籍管理系统详细设计方案
编号003
版本1.0
详细设计说明书
项目名称学生成绩管理系统
项目负责人
组员
2013年6月10日
学籍管理系统详细设计说明书
1引言
1.1编写目的
依据学生成绩管理系统的需求分析和总体设计详细说明学生管理系统各个层次中的每个程序和数据库系统的设计考虑,为后期程序员编码提供依据.
其中重点说明学生管理系统各个模块的执行流程和数据库系统的详细设计。
1.2背景
系统名称:
学生信息管理系统
由于学校的规模不断扩大,使得人工管理学生成绩变得越来越低效,故开发此系统提高工作效率。
该系统是基于C/S构架的桌面客户端软件,使用对象为学生和教师,学生用来查询个人成绩,教师通过软件录入各个学生的信息
1.3参考资料
[1]张海藩。
软件工程导论第五版。
清华大学出版社.2008
1.4术语定义及说明
成绩管理:
对学生的基本信息、课程选择、成绩的录入、修改、删除、查询等一系列的操作。
JREJavaRuntimeEnvironment
2设计概述
2.1任务和目标
2.1.1需求概述
业务需求:
学生使用各自的账号密码登入查询成绩,老师使用管理员权限可以录入和修改信息。
学生:
输入:
学生账号,密码,身份
输出:
学生的个人信息界面
教师:
输入:
管理员账号,密码,身份
输出:
管理系统界面
主要功能:
能够实现管理员和学生对成绩的管理,即完成一些基本的功能,查询,删除,添加,修改等,也要实现成绩的统计,并且能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果,同时也要实现权限的管理
性能需求:
a.响应时间:
少于3秒
b.更新处理时间:
少于2秒
c.数据的转换和传送时间少于5秒
说明对该软件的灵活性的要求,即当需求发生某些变化时,该软件对这些变化的适应能力,
a.操作方式上的变化:
更人性化
b.运行环境的变化:
在windowsXP或以上的版本都能运行
2.1.2运行环境概述
操作系统:
windows7
数据库系统:
文本文档
软件环境:
JRE
配置要求:
需将JRE路径配置到系统环境变量中
2.1.3条件与限制
1)由于系统较小,且在Windows7系统下开发,故在Windows环境下运行没有什么限制.
2)学生的一些私人信息必须要保护好。
3)该系统要受资金、寿命、社会等系列因素的制约和限制。
4)界面风格上受到Java特有风格的限制
2.1.4详细设计方法和工具
设计方法:
数据流程图
工具:
rationalrose
3系统详细需求分析
3.1详细需求分析
功能需求分析:
(1)信息维护:
实现学生信息维护,包括增加学生信息,删除学生信息,修改学生信息
(2)信息查询:
实现按姓名查询,按学号查询
(3)成绩统计:
输入任意一个课程名和一个分数段,统计在此分数段的学生情况
(4)排序:
用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)
性能需求分析:
(1)数据精确度:
所有在相应域中包含查询关键字的记录都应被查到同时保证准确率
(2)时间特性:
响应在一秒以内
(3)适应性:
满足运行环境在允许操作系统之间的安全转换
(4)灵活性:
在需求发生变化时,本系统的对这些变化的适应能力相对而言是比较强的,包括操作方式上的变化;运行环境的变化
系统运行环境和限制条件分析:
(1)硬件奔腾处理器以上的均可,操作系统XP以上均可
(2)安装了JRE的都可以,JRE基本都可以安装
3.2接口需求分析
硬件接口:
支持一般的PII获更高档微机,笔记本电脑
软件接口:
在这里主要考虑软件与操作系统的接口,可运行于多种操作系统之上.考虑到文档处理的需要有可能可以包括与较常用的办公软件的接口
4总体方案确认
4.1系统总体结构确认
系统组成确认:
系统结构确认:
学生表
课程表
成绩表
每个数据项都可以直接通过相关文件更新。
查询时,也可以直观的在页面输入查询条件,就可得到结果
系统工作流程确认:
业务流程
4.2系统详细界面划分
系统界面主要由前台登陆界面和后台功能界面组成,登陆界面负责确认信息,功能界面负责主要功能的实现
登陆界面:
包括简单的信息录入,确认
功能界面:
包括信息维护,信息查询,成绩统计,排序功能选项,同时提供退出和注销功能
界面的功能都通过后台数据库的交互来实现各自的功能,其中使用数据库提供的接口来实现查询,删除功能
5系统详细设计
5.1系统结构设计及子系统划分
系统结构设计:
前端:
登陆模块
功能模块
后端:
数据库模块
子系统划分:
前端功能模块划分:
信息维护,信息查询,成绩统计,排序,排名系统
后端数据库模块划分:
查找,删除,更新,插入,排序
5.2系统功能模块详细设计
模块名称:
查找(由于模块较多(详见代码),仅举一例)
输入:
学生姓名
处理:
publicstaticString[][]queryBySname(Stringsname)throwsIOException{
RandomAccessFilerf=readFile(STable);
longpos;
int[]where={0};
String[]who={sname};
ArrayListres=newArrayList();
pos=check(STable,0,where,who);
while(pos〉=0){
rf。
seek(pos);
Stringline=myReadLine(rf);
String[]atbs=line.split(",”);
String[][]eles=queryBySnum(atbs[1]);
for(inti=0;i〈eles。
length;i++)
res。
add(eles[i]);
pos=check(STable,rf。
getFilePointer(),where,who);
}
rf。
close();
returncastToStringArray(res);
}
算法描述:
按照姓名查询目标学生的所有信息
输出:
姓名,学号,课程名,成绩
//
模块名称:
删除
输入:
学号
处理:
publicstaticintdeleteStudent(Stringnum)throwsIOException{
if(num。
indexOf(’,')〉=0)
return—2;
RandomAccessFilerf=readFile(STable);
int[]iarr1={0};
String[]sarr1={num};
longtmppos;
RandomAccessFiletmprf=readFile(SCTable);
tmppos=check(SCTable,0,iarr1,sarr1);
while(tmppos>=0){
tmprf。
seek(tmppos);
myReadLine(tmprf);
delete(SCTable,tmppos,tmprf。
getFilePointer());
tmppos=check(SCTable,tmppos,iarr1,sarr1);
}
tmprf。
close();
int[]cols={1};
String[]values={num};
longpos=check(STable,0,cols,values);
if(pos〉=0){
rf。
seek(pos);
myReadLine(rf);
delete(STable,pos,rf。
getFilePointer());
}else{
rf。
close();
return-3;
}
rf。
close();
return0;
}
算法描述:
按学号删除学生表中的一行
输出:
操作成功0
学号不存在—3
数据不能包含逗号—2
//
模块名称:
更新
输入:
姓名,学号
处理:
publicstaticintupdateStudent(Stringname,Stringnum)
throwsIOException{
if(name。
indexOf(',’)〉=0||num。
indexOf(',’)>=0)
return-2;
RandomAccessFilerf=readFile(STable);
int[]cols={1};
String[]values={num};
longpos=check(STable,0,cols,values);
if(pos>=0){
rf.seek(pos);
myReadLine(rf);
update(STable,pos,rf。
getFilePointer(),
name+”,"+num+System.getProperty(”line。
separator"));
}else{
rf。
close();
return—3;
}
rf。
close();
return0;
}
算法描述:
按学号更新学生表中的一行
输出:
操作成功0
学号不存在—3
数据不能包含逗号-2
//
模块名称:
插入
输入:
姓名,学号
处理:
publicstaticintinsertStudent(Stringname,Stringnum)
throwsIOException{
if(name。
indexOf(’,’)〉=0||num.indexOf(’,’)〉=0)
return—2;
RandomAccessFilerf=readFile(STable);
int[]cols={1};
String[]values={num};
if(check(STable,0,cols,values)〈0){
insert(STable,rf.length(),
name+”,"+num+System。
getProperty(”line。
separator”));
}else{
rf。
close();
return—1;
}
rf.close();
return0;
}
算法描述:
往学生表中插入一行信息
输出:
操作成功0
学号已存在—1
数据不能包含逗号-2
模块名称:
排序
输入:
学生成绩表
处理:
publicstaticString[][]quickSortCourse(Stringcname)throwsIOException{
String[][]res=queryCourseWithLimit(cname,0,100);
myPartition(res,0,res.length-1);
returnres;
}
//快排函数
privatestaticvoidmyPartition(String[][]data,intlow,inthigh){
//枢纽元,一般以第一个元素为基准进行划分
inti=low;
intj=high;
if(low//从数组两端交替地向中间扫描
String[]pivotKey=data[low];
//进行扫描的指针i,j;i从左边开始,j从右边开始
while(i〈j){
while(i&&Integer。
parseInt(data[j][3])>=Integer
.parseInt(pivotKey[3])){
j—-;
}//endwhile
if(i//比枢纽元素小的移动到左边
data[i]=data[j];
i++;
}//endif
while(i&&Integer.parseInt(data[i][3])<=Integer
。
parseInt(pivotKey[3])){
i++;
}//endwhile
if(i〈j){
//比枢纽元素大的移动到右边
data[j]=data[i];
j——;
}//endif
}//endwhile
//枢纽元素移动到正确位置
data[i]=pivotKey;
//前半个子表递归排序
myPartition(data,low,i—1);
//后半个子表递归排序
myPartition(data,i+1,high);
}//endif
}
算法描述:
按照课程名查询目标课程的所有成绩信息并按升序用快速排序算法排序,
每条记录包含四个属性,分别为姓名、学号、课程名、成绩
输出:
无输出
5.3系统界面详细设计
模块名称:
登陆
输入:
用户名,密码,权限
处理:
booleancorrect(Strings1,Strings2,Strings3){
try{
FileReaderin=newFileReader(s3+”。
txt”);
Stringstr=”";
intc;
while((c=in.read())!
=-1)
str+=(char)c;
String[]s=str。
split("”);
for(inti=0;i
length;i=i+2){
if(s[i].equals(s1)&&s[i+1].equals(s2)){
in。
close();
returntrue;
}
}
in。
close();
returnfalse;
}catch(Exceptione){
}
returntrue;
}
//publicvoidactionPerformed(ActionEvente){
if(((JButton)e.getSource())。
getText()。
equals("登录”)){
if(name。
getText()。
isEmpty()||password。
getText()。
isEmpty())
JOptionPane。
showMessageDialog(jf,"请输入信息!
”);
elseif(!
correct(name。
getText(),password.getText(),(String)jcb。
getSelectedItem())){
name。
setText(”");
password。
setText(””);
JOptionPane。
showMessageDialog(jf,”用户名或密码错误!
");
}
else{
jf.dispose();
Strings=null;
if(jcb。
getSelectedItem()。
equals(”学生”))
s=name。
getText();
ManagerSystemm=newManagerSystem(s);
}
}
if(((JButton)e。
getSource())。
getText().equals(”退出”))
System.exit(0);
}
算法描述:
判断用户名密码的正确性,三个参数为用户名、密码、权限
事件监听器,判断是否成功登录或者退出系统
输出:
退出按钮—-—退出
登陆按钮--—正确进入系统,错误报错
管理系统主界面较复杂使用流程图表示
学生流程图
管理员流程图