学籍管理系统详细设计方案_第1页
学籍管理系统详细设计方案_第2页
学籍管理系统详细设计方案_第3页
学籍管理系统详细设计方案_第4页
学籍管理系统详细设计方案_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目名称

学生成绩管理系统项目负责人组 员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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论