食堂售饭系统文档格式.docx

上传人:b****3 文档编号:17272575 上传时间:2022-11-30 格式:DOCX 页数:21 大小:205.46KB
下载 相关 举报
食堂售饭系统文档格式.docx_第1页
第1页 / 共21页
食堂售饭系统文档格式.docx_第2页
第2页 / 共21页
食堂售饭系统文档格式.docx_第3页
第3页 / 共21页
食堂售饭系统文档格式.docx_第4页
第4页 / 共21页
食堂售饭系统文档格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

食堂售饭系统文档格式.docx

《食堂售饭系统文档格式.docx》由会员分享,可在线阅读,更多相关《食堂售饭系统文档格式.docx(21页珍藏版)》请在冰豆网上搜索。

食堂售饭系统文档格式.docx

1输入学生信息

2学生存款额(由读卡器端输入器完成)

3查询,修改,删除功能输入

d.在安全与保密方面的要求:

1使用者之间的ID号不能重复;

2ID号不被他人轻易知道;

3即便知道也能有快速相应的机制,予以弥补;

4有使用追踪功能,可以让用户了解,自己使用的情况。

3.1功能的规定

数据流程图

E-R图如下:

 

学生信息库(student_info)

列名

数据类型

学生学号

stu_num

int

卡ID

id

学生姓名

name

Char(20)

性别

male

boolean

电话号码

tel

地址

address

Char(50)

卡信息(card_info)

余额

sum

float

lock

卡历史(card_his)

时间

daytime

daytype

款额

操作

op

3.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)学生查询菜单

2查询历史

3查询学生信息

(4)刷卡界面

2消费方式

2.1正常

2.2定价

3显示上次输出

2外部接口

说明本系统同外界的所有接口的安排包括软件与硬件之间的接口、本系统与各支持软件之间的接口关系。

3内部接口

查询和更新都要调用数据库的操作。

3.3系统出错处理设计

出错信息

1在学生刷卡后,卡ID被锁,将会出现错误信息:

“KardLocked”

2学生卡信息丢失,查询时或者消费-存款时,不认卡情况

3存款额大于999.99元,刷卡器只显示小于等于999,99元部分

4消费时消费额大于存款额。

系统将会提示错误,不作其他任何操作。

措施(号码对应)

1只能解卡锁

2有备份数据库,随时可以恢复

3只能更换刷卡器

4计时充钱

3.4详细设计

3.4.1入口程序entry()设计说明

1程序描述

提供管理员和学生用户,刷卡服务三种环境,限制用户对系统的使用权限。

特点:

非常驻内存;

单独的一个程序;

顺序处理。

2输入项

权限:

三个单选项。

Level。

管理员用户名:

字符串类型,user,长度不超过20,可以是数字(不能开头)和字母、汉字;

管理员密码:

字符串类型,pass,长度不超过20,可以是数字和字母,区分大小写

3输出项

欢迎或者提示错误信息。

4流程逻辑

3.4.2查询模块search()设计说明

完成对系统(数据库)的查找。

学生卡信息,时间信息,消费信息等。

查找结果。

4流程逻辑

3.4.3消费模块pay()设计说明

4.1程序描述

完成消费部分。

对输入和消费额,进行合法性验证。

4.2输入项

卡ID,定价与否,消费额。

4.3输出项

卡余额,错误提示。

4.4流程逻辑

3.4.4存款模块deposit()设计说明

完成存款部分。

对输入和存款额,进行合法性验证。

卡ID,存款额。

4流程逻辑

学生代号

1

2

3

读卡成功

N

Y

卡没有锁

存款成功

显示余额

显示

不可能

题是错误

提示

显示存款成功信息

不显示

显示存款失败信息

3.4.5面向对象分析、设计

面向对象分析首要的工作,是建立问题域的对象模型,这个模型描述了现实世界中的“类于对象”以及它们之间的关系,表示了目标系统的静态数据结构。

其中对象是对问题域中有意义的事务的抽象,他们既可能是物理实体,也可能是抽象概念。

要确定类和对象,我们先要找出候选的类于对象,然后在从中筛选出正确的类于对象。

1有四个类:

(1)类名:

学生帐户

属性:

学号,卡ID,余额,锁

方法:

创建(学生,卡,历史),更新属性,更新数据库,注销(学生,卡,历史),返回(学号,卡ID,余额,锁),消费,存款,设定(号,卡ID,余额,锁),撤销历史,显示历史

(2)类名:

读卡器

读取ID,确认卡,警告,设定ID

(3)类名:

输入器

值,临时值1,临时值2

读入,加法,减法,乘法,等于,定价,常用,最

后一次输入,取消卡,消费

(4)类名:

屏幕

值1,值2,值3,定价

显示当前输入,显示卡余额,清屏,定价,

2细化对象模型,生成Java代码框架

//=============

(1)学生帐户=============

publicclassStudentInfo

{privateIntegerstu_num;

privateIntegercard_id;

privateDoublesum;

privateBooleanlock;

publicStudentInfo()

{}

publicvoidcreateStuInfo(Integerstu_num,Integercard_id,Stringname,Booleanmale,Integertel,Stringaddress)

publicvoidcreateCardInfo(Integerid)

publicvoidcreateCardHis(Integerid)

publicvoidupdateAttr()

publicvoidupdateDB()

publicvoiddeposit(Doublevalue)

publicvoiddelCardHis()

publicvoiddelCardInfo()

publicvoiddelStuInfo()

{}

publicvoidspend(Doublevalue)

publicvoidunDoHis()

publicvoidprintHis()

publicIntegergetStu_num()

{returnnull;

}

publicIntegergetCard_id()

publicDoublegetSum()

publicBooleangetLock()

{

returnnull;

}}

//=============

(2)读卡器=============

publicclassCardReader

{

publicCardReader()

publicIntegerreadId()

publicBooleanjudgeId()

publicvoidalarm()

publicvoidsetCard_id(Integerid){}

}

//=============(3)输入器=============

publicclassInputer

{privateDoublevalue=0;

privateDoubletemp=0;

publicInputer()

publicDoubleread()

publicDoubleplus()

}

publicDoubleminus()

publicDoublemultiply()

publicvoidequal()

publicvoidfixPrice()

publicvoidcommonUse()

publicvoidlastVal()

publicvoiddenyCard()

publicvoidspend()

//=============(4)屏幕=============

publicclassScreen

{privateIntegervalue1;

privateBooleanfixlight;

publicScreen()

publicvoidprintNow()

publicvoidprintSum()

publicvoidcls()

publicvoidsetFix(Booleanstate)

4、关键代码与分析

4.1.权限界面

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());

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.jRadioButton1.isSelected()){

Stringnstr,pstr,sql;

nstr=this.jTextField1.getText();

pstr=this.jTextField2.getText();

sql="

select*fromadminwherenamelike'

+nstr+"

'

ResultSetrs=null;

try{

rs=Main.state.executeQuery(sql);

if(rs.next()){

if(pareTo(rs.getString("

pass"

))==0){

欢迎进入管理员界面!

Admin.main(null);

}else

密码错误"

}else{JOptionPane.showMessageDialog(null,"

用户名错误"

//===================学生查询界面===================

if(this.jRadioButton3.isSelected()){

欢迎进入学生查询界面!

StuInfo.main(null);

4.2.提示界面

4.3.消费界面

1搜索部分

if(Ids.getText().equals("

)){

卡号不能为空!

Ids.setFocusable(true);

}else{

Stringsql="

select*fromcard_infowhereid="

+Ids.getText();

ResultSetrs=Main.state.executeQuery(sql);

if(rs.next()){

if(rs.getBoolean(3)){

JOptionPane.showMessageDialog(null,"

卡已

经被锁,如要解锁,请与管理员联系否则10日后自动注销!

if(DjCheck.isSelected()){

Sum.setText(rs.getString

(2));

this.result=String.valueOf(Integer.parseInt(Sum.getText())-Integer.parseInt(Dingjia.getText()));

消费完毕,卡剩余"

+result+"

如果要继续消费请在10秒内操作,只后自动关闭帐户"

Sum.setText(result);

}else{

Ids.setEditable(false);

this.jButton26.setEnabled(false);

this.jPanel1.setVisible(true);

jButton12.setEnabled(true);

jButton13.setEnabled(true);

jButton14.setEnabled(true);

jButton15.setEnabled(true);

卡号错误!

2消费部分

this.result=String.valueOf((Integer.parseInt(Sum.getText())-Integer.parseInt(Now.getText())));

updatecard_infosetsum="

+result+"

whereid="

if(Main.state.executeUpdate(sql)==0){

消费失败"

this.nows=Now.getText();

this.sums=Sum.getText();

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){

计算量超过消费最大值!

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>

}else{Jisuan.setText(String.valueOf(Integer.parseInt(Jisuan.getText())+Integer.parseInt(Now.getText())));

Now.setText(Jisuan.getText());

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.parseInt(Jisuan.getText())-Integer.parseInt(Now.getText())));

ops=0;

Op.setText("

="

4.4学生查询界面

1查找信息部分

if(num.getText().equals("

num.setFocusable(true);

select*fromstudent_infowherestu_num="

+num.getText();

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));

JOpt

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1