软件工程课程设计校园卡.docx
- 文档编号:30343744
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:30
- 大小:573.49KB
软件工程课程设计校园卡.docx
《软件工程课程设计校园卡.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计校园卡.docx(30页珍藏版)》请在冰豆网上搜索。
软件工程课程设计校园卡
第一章项目开发计划书
1.1引言
1.1.1编写目的
此项目开发计划书的编写主要是为了给开发《校园卡管理系统》做主要的规划和整合,在开发过程中起到引导作用,以及给使用者提供简要的说明。
1.1.2背景
校园卡管理系统是一套针对大学校园食堂饮食交费,一般消费等方面的信息管理系统,它包括了同学在校消费各方面容:
刷卡消费、查询、存款,学生信息管理等。
方便的对同学饭卡信息进行各项操作,定时进行数据的备份更新,保持数据的一致性和准确性,各方面的容应该相互联系,最终产生各种查询统计报表,以供同学进行检查。
用户通过系统首页面,创建饭卡,存入钱。
消费时根据饭卡ID判断该用户是否是合法用户,同时进行消费操作。
管理员可以对系统进行新建饭卡、注销饭卡、修改饭卡信息等操作,而学生进行消费的操作。
1.2项目概述
1.2.1工作容
校园卡卡管理系统的主要任务就是把人们从繁琐的交费,找零工作中解放出来,用计算机实现对销售合同资料进行存款,消费,查询、修改、删除以及存储等功能。
同时,用计算机能够快速准确地完成共档案资料的统计和汇总工作,迅速地打印出各种报表资料以供使用。
1.2.2产品
1系统开发计划书
2系统需求说明书
3系统设计说明书
4测试计划
5一个能正确运行的可执行程序,源程序清单(有注释)
1.2.3验收标准
各个功能均能正常使用,满足用户的需求。
第二章可行性分析
2.1可行性研究的前提
要求:
满足客户使用校园卡的各项功能及要求,并对客户资料具有保密性
目标:
提高处理速度,改进安全系统,方便用户使用。
条件、假定和限制:
所建议系统的运行寿命最少1年;进行系统方案选择比较的时间为1天。
2.2对现有系统的分析
人工操作频繁加减存款。
工作繁琐,枯燥,容易出错,完成工作所需要的时间较长,工作效率比较低。
现有系统技术性含量比较低,操作不便,工作量大,需要较多的人才能完成工作。
系统依赖于大量的人力和物质投入,工作效率较低和成本较高。
2.3所建议的系统
2.3.1对所建议系统的说明
使用饭卡可以快速便捷的进行消费。
中央电脑--数据库对饭卡的操作相应至关重要。
在高峰时刻,也能保证,存款,消费无错误,并且可记录,撤销操作。
2.3.2处理流程和数据流程
系统的处理流程
图1系统的处理流程图
2.4结论
通过技术、经济、具体操作等方面的研究可知,新系统可开发风险较低,可以开始进行具体的开发工作。
第三章需求分析
3.1市场需求分析
过去的系统技术性含量比较低,操作不便,工作量大,需要较多的人才能完成工作,而且还依赖大量人力物力的投入,工作效率低,成本高。
相比于过去低级的系统,现在经过改良之后的系统不但操作简便,而且只需要极少数的管理人员,大大的提高的工作效率。
3.2系统功能性需求分析
3.2.1对功能的规定
本系统面向全体学生,所以需要录入学生的一些信息,然后再创建饭卡。
最后才是学生向饭卡中存款,进行刷卡消费。
由于存储了学生的信息,所以挂失起来也更为的方便。
以下给予数据流图来更为直观的描述出此系统的功能:
图2顶层数据流图
图3创建校园卡ID数据流图
图4校园卡消费数据流图
图5校园卡信息查询数据流图
图6校园卡存款流图
3.2.2对性能的规定
(1)精度
输入数据:
查询最大查询围1年;卡ID合法性;客户信息合法性;
输出数据:
余额以213.12的形式最多小数点后两位,即到分为止显示。
(小于的部分不可能出现)
(2)时间特性要求
刷卡响应时间不超过1秒;
查询响应时间不超过5秒;
3.3系统非功能性需求
3.3.1故障处理要求
刷卡响应时间超过1秒后,自动提出警告。
要求重新刷卡。
查询超过5秒,要显示查询时间长的提示信息。
以免误认为死机。
当计算机突然死机、重启、断电时自动存储备份数据。
即便没有存上。
也有备份数据库,供恢复。
3.3.2其他专门要求
普通学生只能刷卡消费,系统管理员还可以进入管理员界面;刷卡服务员可以操作刷卡器。
界面清晰、美观,操作简单、方便。
所有数据存储在学校服务器端,数据存储安全可靠。
3.3数据字典
1学生信息:
学生学号=[数字|字母]
身份证号=[数字|字母]
卡ID=[数字|字母]
学生=[汉字]
性别=[男|女|null]
2卡信息
卡ID=[数字|字母]
余额=[数字]
锁=[true|false]
3卡历史
卡ID=[数字|字母]
时间=[时间格式]
款额=[数字]
操作=[存款|消费|其他]
数据元素的数据字典卡片:
学生信息
名字:
学生信息别名:
描述:
记录学生相关信息
定义:
学生信息=学生学号+身份证号+卡ID+学生+性别
位置:
数据库
卡信息
名字:
卡信息别名:
描述:
记录卡的信息
定义:
卡信息=卡ID+余额+锁
位置:
数据库
卡历史信息
名字:
卡历史信息别名:
描述:
记录卡历史的信息
定义:
客户信息=卡ID+时间+款额+操作
位置:
数据库
3.4运行环境规定
1中央电脑,要求容量大,CPU能够满足查询的。
2刷卡器,要求读取ID敏捷,准确。
3要求刷卡器与中央电脑连接。
通信量要满足查询精度和速度。
4.刷卡器上的功能建,要求显示明确,意思表达精确。
3.5实体-联系图
本系统的实体有:
学生信息、卡信息它们之间的关系是一对一的。
卡信息和卡历史是一对多的。
根据分析可以得出如下的E-R图:
图7系统E-R图
第四章系统设计
4.1总体设计
4.1.1需求概述
总体设计的主要任务是设计程序的体系结构,也就是确定程序有哪些模块组成以及模块间的关系。
总体设计过程首先寻找实现目标系统的各种不同的方案,需求分析阶段得到的数据流图是设想各种可能方案的基础。
然后分析员从这些供选择的方案中选取若干个合理的方案,为每个合理的方案都准备一份系统流程图,列出组成系统的所有物理元素,进行成本/效益分析,并且制定实现这个方案的进度计划。
分析员应该综合分析比较这些合理的方案,从中选出一个最佳方案向用户和使用部门负责人推荐。
如果用户和使用部门的负责人接受了推荐的方案,分析员应该进一步为这个最佳方案设计软结构,通常,进行必要的数据库设计,确定测试要求并且是定测试计划。
4.1.2校园卡管理信息系统概要设计
根据需求分析和系统将要实现的功能来看,系统有如下基本功能:
●新建饭卡
●存款——消费
●查询历史
●挂失
●注销
图8系统层次图
4.2详细设计
4.2.1编写定义
1.编写目的
详细设计阶段的任务就是把解法具体化,解决具体应怎样实现这个系统。
也称为模块设计,详细地设计每个模块,确定实现模块所需的功能需要的算法和数据结构。
2.定义
在软件具体设计阶段的专用术语有:
程序流程图、盒图(N—S图)、判定表、判定树、PAD图
4.2.2功能模块的设计与实现
1新建校园饭卡模块
(1)用户类别:
1有提供学生查阅的学生界面。
2提供管理员操作的管理员界面。
3提供刷卡的刷卡服务员界面。
(2)管理员界面菜单
1状态
1.1登陆;
1.2注销;
2新建--新建学生信息界面;
3查询更新
3.1学生消费历史
3.2学生信息
4挂失
4.1加锁
4.2解锁
5注销卡
(3)学生查询菜单
1状态
1.1登陆;
1.2注销;
2查询历史
3查询学生信息
(4)刷卡界面
1状态
1.1登陆;
1.2注销;
2消费方式
2.1正常
2.2定价
3显示上次输出
2外部接口
说明本系统同外界的所有接口的安排包括软件与硬件之间的接口、本系统与各支持软件之间的接口关系。
3部接口
查询和更新都要调用数据库的操作。
4.2.3运行设计
1.运行模块组合
具体软件的运行模块组合为程序多窗口的运行环境,各个模块在软件运行过程中能较好的交换信息,处理数据。
2.运行控制
软件运行时有比较友好的用户界面,基本能够实现用户的数据处理要求。
3.运行时间
系统的运行时间基本可以达到用户所提出的要求。
4.2.4系统数据结构设计
1.物理结构设计
系统的物理结构具体由数据库来设计与生成,此处略。
2.数据结构与程序的关系
系统的数据结构由标准数据库语言SQL生成。
4.2.5系统出错处理设计
1.出错信息
1在学生刷卡后,卡ID被锁,将会出现错误信息:
“KardLocked”
2学生卡信息丢失,查询时或者消费-存款时,不认卡情况
3存款额大于999.99元,刷卡器只显示小于等于999,99元部分
4消费时消费额大于存款额。
系统将会提示错误,不作其他任何操作。
2.措施(对应)
1只能解卡锁
2有备份数据库,随时可以恢复
3只能更换刷卡器
4计时充钱
4.3功能模块设计
4.3.1入口程序entry()设计说明
1.程序描述
提供管理员和学生用户,刷卡服务三种环境,限制用户对系统的使用权限。
特点:
非常驻存;单独的一个程序;顺序处理。
2.输入项
权限:
三个单选项。
Level。
管理员用户名:
字符串类型,user,长度不超过20,可以是数字(不能开头)和字母、汉字;
管理员密码:
字符串类型,pass,长度不超过20,可以是数字和字母,区分大小写
3.输出项
欢迎或者提示错误信息。
4.流程逻辑
1)程序流程图
图9程序流程图
具体方法代码实现如下:
1数据库联接公共部分
publicstaticConnectionconn=null;
publicstaticStatementstate=null;
publicstaticvoidodbc(){
StringDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
StringconnectionStr="jdbc:
odbc:
myodbc";
try{
Class.forName(DBDriver);
}
catch(java.lang.ClassNotFoundExceptione)
{System.err.println("DBconnecton:
"+e.getMessage());}
try{
conn=DriverManager.getConnection(connectionStr,"","");
state=conn.createStatement();
}catch(SQLExceptionex)
{System.err.println("aq.executeQuery:
"+ex.getMessage());}
}
2刷卡选择部分
//===================刷卡界面===================
if(this.jRadioButton2.isSelected()){
this.setVisible(false);
JOptionPane.showMessageDialog(null,"欢迎进入刷卡界面!
");
Spend.main(null);
}
//===================学生查询界面===================
if(this.jRadioButton3.isSelected()){
this.setVisible(false);
JOptionPane.showMessageDialog(null,"欢迎进入学生查询界面!
");
StuInfo.main(null);
4.3.2查询模块search()设计说明
1.程序描述
完成对系统(数据库)的查找。
2.输入项
学生卡信息,时间信息,消费信息等。
3.输出项
查找结果。
4.流程逻辑PAD图
图10流程逻辑PAD图
具体方法代码实现如下:
if(num.getText().equals(""))
{
JOptionPane.showMessageDialog(null,"卡号不能为空!
");
num.setFocusable(true);
}
else{
try{
Stringsql="select*fromstudent_infowherestu_num="+num.getText();
ResultSetrs=Main.state.executeQuery(sql);
if(rs.next())
{
id.setText(rs.getString
(2));
name.setText(rs.getString(3));
if(rs.getBoolean(4))
sex.setText("男");
elsesex.setText("女");
tel.setText(rs.getString(5));
address.setText(rs.getString(6));
}
else{
JOptionPane.showMessageDialog(null,"卡号错误!
");
}
}
catch(SQLExceptionex)
{System.err.println("aq.executeQuery:
"+ex.getMessage());}
}
4.3.3存储、消费模块pay()设计说明
1.程序描述
完成消费部分。
对输入和消费额,进行合法性验证。
2.输入项
卡ID,定价与否,消费额。
3.输出项
卡余额,错误提示。
具体方法代码实现如下:
1搜索部分
if(Ids.getText().equals(""))
{JOptionPane.showMessageDialog(null,"卡号不能为空!
");
Ids.setFocusable(true);
}else{
try{
Stringsql="select*fromcard_infowhereid="+Ids.getText();
ResultSetrs=Main.state.executeQuery(sql);
if(rs.next()){
if(rs.getBoolean(3))
{JOptionPane.showMessageDialog(null,"卡已
经被锁,如要解锁,请与管理员联系否则10日后自动注销!
");}
else{
if(DjCheck.isSelected())
{Sum.setText(rs.getString
(2));
this.result=String.valueOf(Integer.parseInt(Sum.getText())-Integer.parseInt(Dingjia.getText()));
JOptionPane.showMessageDialog(null,"消费完毕,卡剩余"+result+"。
如果要继续消费请在10秒操作,只后自动关闭帐户");
Sum.setText(result);}
else{
Ids.setEditable(false);
this.jButton26.setEnabled(false);
this.jPanel1.setVisible(true);
Sum.setText(rs.getString
(2));
jButton12.setEnabled(true);
jButton14.setEnabled(true);
jButton15.setEnabled(true);
}
}
}
else{
JOptionPane.showMessageDialog(null,"卡号错误!
");
}
}
catch(SQLExceptionex)
{System.err.println("aq.executeQuery:
"+ex.getMessage());}
}
2消费部分
try{
this.result=String.valueOf((Integer.parseInt(Sum.getText())-Integer.parseInt(Now.getText())));
Stringsql="updatecard_infosetsum="+result+"whereid="+Ids.getText();
if(Main.state.executeUpdate(sql)==0)
{
JOptionPane.showMessageDialog(null,"消费失败");
}
else{
this.nows=Now.getText();
this.sums=Sum.getText();
JOptionPane.showMessageDialog(null,"消费完毕,卡剩余"+result+"。
如果要继续消费请在10秒操作,只后自动关闭帐户");
Sum.setText(result);
}
}catch(SQLExceptionex)
{System.err.println("aq.executeQuery:
"+ex.getMessage());}
3加减乘部分
if(Jisuan.getText().compareTo("")==0)
{
Jisuan.setText(Now.getText());
Now.setText("0");
}
else{
switch(ops){
case3:
inta=0;
a=Integer.parseInt(Jisuan.getText())*Integer.parseInt(Now.getText());
if(a>999)
{
JOptionPane.showMessageDialog(null,"计算量超过消费最大值!
");
}
else{
Jisuan.setText(String.valueOf(Integer.parseInt(Jisuan.getText())*Integer.parseInt(Now.getText())));
Now.setText(Jisuan.getText());
}
break;
case2:
intb=0;
b=Integer.parseInt(Jisuan.getText())+Integer.parseInt(Now.getText());
if(b>999)
{
JOptionPane.showMessageDialog(null,"计算量超过消费最大值!
");
}
else{Jisuan.setText(String.valueOf(Integer.parseInt(Jisuan.getText())+Integer.parseInt(Now.getText())));
Now.setText(Jisuan.getText());
}
break;
case1:
intc=1;
c=Integer.parseInt(Jisuan.getText())-Integer.parseInt(Now.getText());if(c>999||c<=0)
{
JOptionPane.showMessageDialog(null,"计算量超过消费有效值!
");
}
else{
Jisuan.setText(String.valueOf(Integer.pars
eInt(Jisuan.getText())-Integer.parseInt(Now.getText())));
Now.setText(Jisuan.getText());
}
break;
}
}
ops=0;
Op.setText("=");
4.3.4挂失模块deposit()设计说明
1.程序描述
完成挂失部分。
对卡进行挂失和解挂操作,进行合法性验证。
2.输入项
卡ID,卡密码额。
3.输出项
成功提示,错误提示。
4.流程逻辑判断表
表1流程逻辑判断表
学生代号
1
2
3
4
5
6
7
8
读卡成功
N
Y
N
N
Y
Y
N
Y
卡没有锁
N
N
Y
N
Y
N
Y
Y
存款成功
N
N
N
Y
N
Y
Y
Y
显示余额
显示
不可能
不可能
显示
不可能
不可能
显示
题是错误
提示
不可能
不可能
不可能
不可能
显示存款成功信息
不显示
不显示
不可能
不可能
不显示
不可能
不可能
显示
显示存款失败信息
不显示
显示
不可能
不可能
显示
不可能
不可能
不显示
if(num.getText().equals(""))
{JOptionPane.showMessageDialog(null,"学生学号不能为空");num.setFocusable(true);
}
else{
try{
Stringsql="select*fromstudent_infowherestu_num="+num.getText();ResultSetrs=Main.state.executeQuery(sql);
if(rs.next())
{
if(rs.getString(7).compareTo(pass.getText())==0)
{
JOptionPane.showMessageDialog(null,"请按确认锁键,确认锁卡!
");
num.setEnabled(false);
pass.setEnabled(false);
this.jButton1.setEnabled(false);
this.jButton2.setEnabled(true);
ids=rs.getInt
(1);
}
else{
JOptionPane.showMessageDialog(null,"学生密码错误!
");
}
}
else{
JOptionPane.showMessageDialog(null,"学生学号错误!
");
}
}
catch(SQLExceptionex)
{System.err.println("aq.executeQuery:
"+ex.getMessage());}
}
第五章系统测试
5.1测试的作用和意义
系统测试是管理信息系统的开发周期中的一个十分重要环节。
尽管在系统开发周期的各个阶段均采取了严格的技术审查,但依然难免会留下错误,如果没有在投入运行前的系统测试阶段被发现并纠正,问题迟早会在运行中暴露出来,到那时要纠正错误将会付出更大的代价。
系统测试占用的时间、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 课程设计 校园卡