版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目名称
学生成绩管理系统项目负责人组 员2013年
6月
10
日
编写目的
依据。 背景统提高工作效率。该系统是基于C/S构架的桌面客户端软件,使用对象为学生和教师,1.3 参考资料[1]张海藩.软件工程导论第五版.清华大学出版社.2008 术语定义及说明
设计概述 任务和目标
响应时间:少于3秒
更新处理时间:少于2秒
数据的转换和传送时间少于5秒
运行环境的变化:在windowsXP或以上的版本都能运行
配置要求:需将JRE路径配置到系统环境变量中
1)
由于系统较小,且在Windows7系统下开发,故在Windows环境下运行没
有什么限制。2)
学生的一些私人信息必须要保护好。3)
该系统要受资金、寿命、社会等系列因素的制约和限制。4)
界面风格上受到Java特有风格的限制
系统详细需求分析 详细需求分析功能需求分析:(1)硬件奔腾处理器以上的均可,操作系统XP以上均可(2)安装了JRE的都可以,JRE基本都可以安装 接口需求分析
支持一般的P
系统总体结构确认 字段名学号姓名
数据类型
主键Y
字段名 数据类型
主键课程名学分
Y字段名 数据类型
主键学号课程名成绩
Y
系统详细界面划分认信息,功能界面负责主要功能的实现登陆界面:包括简单的信息录入,确认功能界面:包括信息维护,信息查询,成绩统计,排序功能选项,同时提供退出和注销功能据库提供的接口来实现查询,删除功能 系统详细设计 系统结构设计及子系统划分系统结构设计:前端:登陆模块功能模块后端:数据库模块子系统划分:前端功能模块划分:信息维护,信息查询,成绩统计,排序,排名系统后端数据库模块划分:查找,删除,更新,插入,排序 系统功能模块详细设计模块名称:查找(由于模块较多(详见代码),仅举一例)输入:学生姓名处理:public
static
String[][]
queryBySname(String
sname)
throws
IOException{RandomAccess
=
read);
long
pos;int[]
where
=
{
0
};String[]
who
=
{
sname
};ArrayList
res
=
new
ArrayList();pos
=
check(STable,
0,
where,
who);while
(pos
>=
0)
{rf.seek(pos);String
line
=
myReadLine(rf);String[]
atbs
=
line.split(",");String[][]
eles
=
queryBySnum(atbs[1]);for
(int
i
=
0;
i
<
eles.length;
i++)res.add(eles[i]);pos
=
check(STable,
rf.get(),
where,
who);}rf.close();return
castToStringArray(res);}算法描述输出
模块名称:删除输入:学号处理:public
static
int
deleteStudent(String
num)
throws
IOException
{if
(num.indexOf(',')
>=
0)return
-2;RandomAccess
=
read);int[]
iarr1
=
{
0
};String[]
sarr1
=
{
num
};long
tmppos;RandomAccess
=
read);tmppos
=
check(SCTable,
0,
iarr1,
sarr1);while
(tmppos
>=
0)
{tmprf.seek(tmppos);myReadLine(tmprf);delete(SCTable,
tmppos,
tmprf.get());tmppos
=
check(SCTable,
tmppos,
iarr1,
sarr1);}tmprf.close();int[]
cols
=
{
1
};String[]
values
=
{
num
};long
pos
=
check(STable,
0,
cols,
values);if
(pos
>=
0)
{
rf.seek(pos);myReadLine(rf);delete(STable,
pos,
rf.get());}
else
{rf.close();return
-3;}rf.close();return
0;}算法描述按学号删除学生表中的一行输出
//模块名称:
更新输入:姓名,学号处理:public
static
int
updateStudent(String
name,
String
num)throws
IOException
{if
(name.indexOf(',')
>=
0
||
num.indexOf(',')
>=
0)return
-2;RandomAccess
=
read);int[]
cols
=
{
1
};String[]
values
=
{
num
};long
pos
=
check(STable,
0,
cols,
values);if
(pos
>=
0)
{rf.seek(pos);myReadLine(rf);update(STable,
pos,
rf.get(),name + "," + numSystem.getProperty("line.separator"));}
else
{rf.close();return
-3;}rf.close();return
0;}算法描述:按学号更新学生表中的一行
+
输出:
模块名称:插入输入:姓名,学号处理:public
static
int
insertStudent(String
name,
String
num)throws
IOException
{if
(name.indexOf(',')
>=
0
||
num.indexOf(',')
>=
0)return
-2;RandomAccess
=
read);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();return
0;}算法描述:往学生表中插入一行信息输出:操作成功
0学号已存在
-1数据不能包含逗号
-2模块名称:排序输入:学生成绩表处理:public
static
String[][]
quickSortCourse(String
cname)
throws
IOException
{String[][]
res
=
queryCourseWithLimit(cname,
0,
100);myPartition(res,
0,
res.length-1);
return
res;}//快排函数private
static
void
myPartition(String[][]
data,
int
low,
int
high)
{//
枢纽元,一般以第一个元素为基准进行划分int
i
=
low;int
j
=
high;if
(low
<
high)
{//
从数组两端交替地向中间扫描String[]
pivotKey
=
data[low];//
进行扫描的指针i,j;i从左边开始,j从右边开始while
(i
<
j)
{while
(i
<
j&& Integer.parseInt(data[j][3]) >=Integer.parseInt(pivotKey[3]))
{j--;}//
end
whileif
(i
<
j)
{//
比枢纽元素小的移动到左边data[i]
=
data[j];i++;}//
end
ifwhile
(i
<
j&& Integer.parseInt(data[i][3]) <=Integer.parseInt(pivotKey[3]))
{i++;}//
end
whileif
(i
<
j)
{//
比枢纽元素大的移动到右边data[j]
=
data[i];j--;}//
end
if}//
end
while//
枢纽元素移动到正确位置data[i]
=
pivotKey;//
前半个子表递归排序myPartition(data,
low,
i
-
1);//
后半个子表递归排序myPartition(data,
i
+
1,
high);}//
end
if}算法描述:输出:无输出
5.3
系统界面详细设计模块名称:登陆输入:用户名,密码,权限处理:boolean
correct(String
s1,String
s2,String
s3){try{in
=
new
(s3+".txt");String
str
=
"";int
c;while((c
=
in.read())!=-1)str+=(char)c;String[]
s
=
str.split("
");for(int
i
=
0;i
<
s.length;i
=
i+2){if(s[i].equals(s1)&&s[i+1].equals(s2)){in.close();return
true;}}in.close();return
false;}catch(Exception
e){}return
true;}// public
void
actionPerformed(ActionEvent
e){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();String
s
=
null;if(jcb.getSelectedItem().equals("学生"))s
=
name.getText();ManagerSystem
m
=
new
ManagerSystem(s);
}}if
(((JButton)e.getSource()).getText().equals("退出"))System.e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年中华人民共和国与某国关于贸易协定的合同
- 2024版租赁合同:城市公交公司租赁新能源公交车
- 二零二四年度山塘土地租赁承包合同2篇
- 抹灰班组安全施工责任保险合同(2024版)
- 2024版项目委托管理合同
- 二零二四年太阳能设备购销合同
- 二零二四年度网络安全事件应急预案及演练合同
- 2024年度商业保密与竞业限制合同3篇
- 北京工业大学《物理化学A》2022-2023学年第一学期期末试卷
- 北京工业大学《数据挖掘》2023-2024学年第一学期期末试卷
- 中华人民共和国能源法
- 2024-2030年中国冷库及冷风机行业竞争趋势及未来发展策略分析报告
- 华为近三年财务分析报告范文
- 《义务教育数学课程标准(2022年版)》初中内容解读
- 2024浙江省执业药师继续教育答案-中医虚症辨证用药
- 2024年第九届学宪法、讲宪法题库(含答案)
- 2024年广东省公务员录用考试《行测》试题及答案解析
- 浙江省杭州市2025届高三上学期一模英语试题 含答案
- 2025届高三化学一轮复习 原电池 化学电源(第一课时)课件
- 第五单元作文 记述与动物的相处 课件七年级语文上册人教版2024
- 2024-2030年全球学前教育行业经营规模研究与投资模式分析研究报告
评论
0/150
提交评论