食堂消费管理系统Word文档格式.docx
《食堂消费管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《食堂消费管理系统Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
1.1系统目标:
4
1.2系统功能需求:
1.3开发工具:
5
1.4系统的数据流图:
1.5数据字典6
2数据库的概念设计8
2.1系统的概念模型:
8
2.2将概念模型转换成关系模型10
2.2.1将E-R模型转换为关系模式10
2.2.2数据库表结构设计:
12
2.2.3实现数据完整性:
15
3.开发工具16
4.1基本流程图16
数据库设计17
4.2总体结构和外部模块17
5详细设计18
5.1表的设计18
5.2关系模式设计19
5.3存储过程设计和部分sql语句代码19
5.4关键代码及操作20
程序实现部分29
对本设计的简单评述,总结34
参考文献34
1.需求分析
实现一个食堂消费管理系统,完成餐卡信息管理,餐卡信息查询,窗口信息管理,餐卡消费管理和窗口信息查询等功能。
本系统管理员能够对餐卡信息增加,修改,查询,删除等。
功能划分:
用户通过身份验证后进入主界面。
主界面为超级用户提供5项选择:
餐卡办理,餐卡挂失,餐卡充值,餐卡解除挂失,餐卡查询。
功能描述:
●餐卡办理:
管理员通过插入表和更新表来为餐卡使用人员办理新卡。
新生报到时,学生要到管理员那里办理新卡,管理员通过插入表信息来办理。
当卡主的卡丢失或损坏且确定要办理新卡时,管理员通过更新表的信息来办理新卡。
●餐卡挂失
当学生的餐卡找不到但是不能确定还能否找到时,学生可以到擦卡管理员那里去挂失。
管理员通过修改表的信息暂时禁用此卡。
●餐卡解除挂失
学生找到丢失的餐卡后,可以到管理员那里解除挂失。
管理员通过修改表的信息让此卡能从新使用。
●餐卡充值
餐卡余额不足时,学生可能无法到食堂消费,此时要到管理员那里充值。
管理员通过修改表的信息为餐卡充值。
●餐卡查询
就餐时可能出现刷错卡的情况,当刷错卡但是刷卡人员没有注意到时两方就会产纠纷,这时要到餐卡管理员那里查询消费情况。
该综合教务系统的数据库采用了Microsoft的SQLServer2000企业版,前台应用程序采用了Java编写。
了解用户的应用要求,使用信息流程图分析应用系统中的信息流。
食堂消费管理系统的简单信息流如下。
(1)系统的上下文数据流图如图5-38
1.5数据字典
数据项名:
学生编号
说明:
标识每个学生身份
类型:
CHAR
长度:
7
别名:
学号
取值范围:
970000-979999
数据流名:
选课申请
由学生的个人信息,欲选课程信息组成选课申请
来自过程:
无
流至过程:
身份验证
数据结构:
学生个人信息
欲选课信息
说明了学生的个人情况。
组成:
帐号
密码
数据存储:
上课时间信息
说明了每门课的上课时间,一门课可以有多个上课时间,同一时间可以有多门课程在上课。
输出数据流:
课程上课时间
数据描述:
课程编号
上课时间
数量:
每学期20-30个
存取方式:
随机存取
处理过程:
对学生输入的帐号,密码进行验证,确定正确,得到相应的学生编号。
输入:
学生帐号
选课的课程编号
输出:
学生编号
2数据库的概念设计
上图是食堂消费管理的概念模型的E/R图,该系统涉及的实体集有:
管理员实体集:
具有属性账号,工号ID和密码。
餐卡实体集:
具有属性卡号,是否挂失和金额。
卡主实体集:
具有属性卡号,证件号和姓名。
窗口实体集:
具有属性窗口号和机器号。
窗口负责人实体集:
具有属性姓名,年龄和性别。
菜实体集:
具有属性菜名,价格和种类。
厨师实体集:
一个管理员可以管理多张餐卡,所以管理员和餐卡之间的管理联系是1:
n的联系。
一张餐卡只属于一个卡主,每个卡主只有一张餐卡,所以餐卡与卡主之间的联系是1:
1的联系。
一个卡主可以到多个窗口消费,多个卡主可以到一个窗口消费,所以卡主与窗口之间的联系是n:
m的联系。
一个窗口可以出售多种菜,每种菜也可以被多个窗口出售,所以窗口与菜之间的联系是m:
2.2将概念模型转换成关系模型
2.2.1将E-R模型转换为关系模式
(1)管理员实体集可以转换为关系:
管理员(账号,ID,密码)
(2)餐卡实体集可以转换为关系
餐卡(卡号,是否挂失,金额)
(3)卡主实体可以转换为关系
卡主(证件号,姓名)
(4)窗口实体可以转换为关系
窗口(窗口号,机器号)
(5)窗口负责人实体可以转换为关系
窗口负责人(姓名,性别,性别)
(6)菜实体可以转换为关系
菜(菜名,价格,种类)
(7)厨师实体可以转换为关系
厨师(姓名,性别,年龄)
(8)卡主与餐卡之间的联系是1:
1的联系,所以没有必要为其建立一个关系,可以通过扩展卡主关系来表示:
卡主(证件号,姓名,卡号)
(9)管理员,餐卡之间的操作联系可以转换为关系:
操作(ID,卡号)
(10)餐卡和窗口之间的消费联系可以转化为关系:
消费(卡号,窗口号)
(11)窗口和菜之间的出售联系可以转化为关系:
出售(窗口号,菜名)
(12)菜和厨师之间的烹饪联系可以转换为关系
烹饪(菜名,姓名)
这里的姓名是指厨师姓名。
把关系模型转化为表结构:
管理员信息表:
定义如下:
域名
含义
数据类型
长度
例子
备注
ID
管理员工号
Char
5
12345
主码
账号
管理员账号
密码
管理员密码
23456
餐卡信息表:
卡号
餐卡卡号
12
540907010238
是否挂失
挂失情况
金额
餐卡余额
Int
100.00
卡主信息表:
证件号
卡主的证件号
主键
姓名
卡主姓名
张三
卡主的擦卡卡号
540907010152
窗口信息表
窗口号
食堂窗口编号
11
机器号
食堂刷卡机编号
29
窗口负责人信息表
窗口负责人的姓名
张义坤
年龄
窗口负责人的年龄
2
26
性别
窗口负责人的性别
男
菜信息表
菜名
窗口所卖菜式的菜名
30
酸辣白菜
菜价
某种菜的价钱
1.50
类别
是否为该窗口的特色菜
否
厨师信息表
厨师的姓名
厨师的性别
厨师的年龄
通过各种约束,缺省,规则和触发器实现数据的完整性。
由于食堂消费管理系统的重要性,和各个数据之间的复杂相关性,保证数据的完整性显得更为重要。
不能让用户随意的删除,修改数据。
(1)各种外码约束保证数据的完整性,不能随意删除。
外码的设置在上面数据库建表时已经提到。
(2)主码约束保证实体的完整性,主码的设置在上面数据库建表时也已经提到了。
(3)创建规则保证年龄在18岁到35岁之间,不会输入错误数据。
3.开发工具
本该综合教务系统的数据库采用了Microsoft的SQLServer2000企业版,前台应用程序采用了Java编写。
4.1基本流程图
数据库设计
4.2总体结构和外部模块
5详细设计
5.1表的设计
本系统主要包括以下几个表:
管理员的登录信息,窗口管理人员的信息,学生的基本信息表,学生所持卡号的详细信息,每张卡对应的消费信息,窗口的信息,窗口的消费信息表,菜的信息。
5.2关系模式设计
在数据库的设计的时候,考虑到现实中无法进行透支消费等,进行了防止误操作的控制,比如消费金额如果超过一定数量将限制消费,无法消费价格超过余额的物品。
其中使用到了触发器的操作。
5.3存储过程设计和部分sql语句代码
由于存储过程不像解释执行的sql语句一样在提出操作请求时才进行语法分析和优化操作,因而运行效率高,它提供了在服务器端快速执行sql语句的有效途径.
存储过程降低了客户机和服务器之间的通行量,方便实施企业规则.
insertintocard_id_tablevalues('
000001'
23.4,1)
insertintocai_id_tablevalues(1,'
麻辣鸡丝'
1,1,6.5)
deletefromcai_id_tablewherecai_name='
insertintocooker_id_tablevalues(1,'
张胖子'
'
男'
33'
)
insertintowindow_id_tablevalues(1,2,'
insertintowindow_manager_id_tablevalues(2,'
123'
insertintoxiaofei_id_table
select*fromxiaofei_id_tablewherecardid='
5.4关键代码及操作
数据库的连接
packagecom.gp.connectdb;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
publicclassLianJie{
publicstaticConnectiongetConnection()throwsClassNotFoundException,
SQLException{
Class.forName("
com.microsoft.sqlserver.jdbc.SQLServerDriver"
);
Connectionconn=DriverManager.getConnection(
"
jdbc:
sqlserver:
//localhost:
1433;
DatabaseName=shitang"
"
sa"
gp"
returnconn;
}
publicstaticPreparedStatementgetPreparedStatement(Stringsql)
throwsSQLException,ClassNotFoundException{
returngetConnection().prepareStatement(sql);
publicstaticResultSetgetResultSet(Stringsql)throwsSQLException,
ClassNotFoundException{
returngetPreparedStatement(sql).executeQuery();
publicstaticintexecuteDelete(Stringsql)throwsSQLException,
returngetPreparedStatement(sql).executeUpdate();
对数据库的全部操作
packagecom.gp.util;
importjava.util.ArrayList;
importjava.util.List;
importcom.gp.connectdb.*;
importcom.gp.javabean.*;
publicclassAlloperate{
//所有的返回状态都是int,当为1是返回成功,当为0时候返回失败
//查询所有的cardid,username,cash,并且最后以cardBean的list返回
publicList<
CardBean>
list(Stringstr){
List<
list=newArrayList<
();
try{
ResultSetrs=LianJie.getResultSet("
select*from"
+str);
while(rs.next()){
CardBeancard=newCardBean();
card.setCardid(rs.getString("
cardid"
));
card.setCash(rs.getFloat("
cash"
card.setUsername(rs.getString("
username"
list.add(card);
}
}catch(SQLExceptione){
e.printStackTrace();
}catch(ClassNotFoundExceptione){
}
returnlist;
}
//查询cardid下面的卡的信息(用户名,余额)
publicfloatshow(Stringcardid){
floatret=0;
select*fromcardinfowherecardid='
"
+cardid+"
'
while(rs.next()){
ret=rs.getFloat("
returnret;
//查询cardid下面的所有消费记录并且最后以OpBean的LIST返回
OpBean>
listlist(Stringstr){
select*fromcardopwherecardid='
+str+"
OpBeanop=newOpBean();
op.setDate(rs.getString("
optime"
op.setOp(rs.getFloat("
op"
;
list.add(op);
//扣除cardid为cash的余额
publicintchuli(floatdao,Stringcardid){
intret=0;
ret=LianJie.executeDelete("
updatecardinfosetcash='
+dao+"
wherecardid='
//清除cardid下面的所有记录
publicintclearcard(Stringcardid){
intret1=0,ret2=0;
ret1=LianJie.executeDelete("
deletefromcardinfowherecardid='
ret2=LianJie.executeDelete("
deletefromcardopwherecardid='
//TODOAuto-generatedcatchblock
returnret1+ret2;
//添加cardid
publicintaddcard(Stringcardid,Stringusername){
intret=0;
ret=LianJie.executeDelete("
insertintocardinfo(cardid,username,cash)values('
+username+"
0'
)"
//添加cardid的消费记录
publicintaddop(Stringcardid,floatdao,Stringstr){
intret=0;
insertintocardop(cardid,op,optime)values('
returnret;
程序实现部分
用户首页:
登陆后的消费页面:
管理登陆后的页面(可以直接进行删除和更改操作)
对人物的添加操作
对本设计的简单评述,总结
通过参与此项目的工作,在这个学期内有了很大的收获,从开始的需求分析、数据库设计、系统设计到最后软件架构的实现、代码的编写,遇到了很多问题,通过查资料,向老师请教,在线提问等多种方式,最终一一解决,从而积累、学习到了很多知识!
最后系统使用javabean+jsp开发完成,在系统的实现过程中遇到了,诸如汉字乱码问题等,最大的问题还是由于刚开始的需求分析阶段未完全考虑遇到的问题导致最后功能很多都未能实现。
参考文献
[]萨师煊,王珊编著数据库系统概论高等教育出版社,2004年12月第16版2~125
数据库原理及应用教程称志泊,王春林人民邮电出版社2011年9月版
[]李静燕渭南师范学院学报:
综合版数据库设计技巧2007,(5):
63~65
[]王新龙存储过程应用研究科技情报开发与经济2006,(13):
183~184
[]孙明魁软件体系结构的探讨电脑与电信2007,(10)23~24