食堂消费管理系统方案.docx
《食堂消费管理系统方案.docx》由会员分享,可在线阅读,更多相关《食堂消费管理系统方案.docx(25页珍藏版)》请在冰豆网上搜索。
食堂消费管理系统方案
轻工业学院本科
数据库课程设计总结报告
设计题目:
食堂消费管理系统
学生:
系别:
专业:
班级:
学号:
指导教师:
2011年11月20日
轻工业学院
课程设计任务书
题目食堂消费管理系统
专业、班级
学号
主要容:
系统数据初始化;餐卡基本信息录入与修改;职工工资标准基本设定;员工工资查询;系统用户设定,密码修改等。
基本要求:
立足于高校工资管理的实际事务,开发具有价值的工资管理专用软件,实现工资管理自动化,提高工作效率,减少手工工作方式难以避免的数据错漏。
主要参考资料等:
《数据库系统概论》作者:
王珊萨师煊:
高等教育
《SQLServer2005中文版关系数据库基础与实践教程》作者:
周峰
:
电子工业。
《SQLServer数据库开发实例精粹》作者:
徐国智汪孝宜等
:
电子工业。
完成期限:
两周
指导教师签名:
课程负责人签名:
年月日
课程设计任务书2
1.需求分析4
1.1系统目标:
4
1.2系统功能需求:
4
1.3开发工具:
5
1.4系统的数据流图:
5
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.需求分析
1.1系统目标:
实现一个食堂消费管理系统,完成餐卡信息管理,餐卡信息查询,窗口信息管理,餐卡消费管理和窗口信息查询等功能。
1.2系统功能需求:
本系统管理员能够对餐卡信息增加,修改,查询,删除等。
功能划分:
用户通过身份验证后进入主界面。
主界面为超级用户提供5项选择:
餐卡办理,餐卡挂失,餐卡充值,餐卡解除挂失,餐卡查询。
功能描述:
●餐卡办理:
管理员通过插入表和更新表来为餐卡使用人员办理新卡。
新生报到时,学生要到管理员那里办理新卡,管理员通过插入表信息来办理。
当卡主的卡丢失或损坏且确定要办理新卡时,管理员通过更新表的信息来办理新卡。
●餐卡挂失
当学生的餐卡找不到但是不能确定还能否找到时,学生可以到擦卡管理员那里去挂失。
管理员通过修改表的信息暂时禁用此卡。
●餐卡解除挂失
学生找到丢失的餐卡后,可以到管理员那里解除挂失。
管理员通过修改表的信息让此卡能从新使用。
●餐卡充值
餐卡余额不足时,学生可能无法到食堂消费,此时要到管理员那里充值。
管理员通过修改表的信息为餐卡充值。
●餐卡查询
就餐时可能出现刷错卡的情况,当刷错卡但是刷卡人员没有注意到时两方就会产纠纷,这时要到餐卡管理员那里查询消费情况。
1.3开发工具:
该综合教务系统的数据库采用了Microsoft的SQLServer2000企业版,前台应用程序采用了Java编写。
1.4系统的数据流图:
了解用户的应用要求,使用信息流程图分析应用系统中的信息流。
食堂消费管理系统的简单信息流如下。
(1)系统的上下文数据流图如图5-38
1.5数据字典
数据项名:
学生编号
说明:
标识每个学生身份
类型:
CHAR
长度:
7
别名:
学号
取值围:
970000-979999
数据流名:
选课申请
说明:
由学生的个人信息,欲选课程信息组成选课申请
来自过程:
无
流至过程:
身份验证
数据结构:
学生个人信息
欲选课信息
数据结构:
学生个人信息
说明:
说明了学生的个人情况。
组成:
密码
数据存储:
上课时间信息
说明:
说明了每门课的上课时间,一门课可以有多个上课时间,同一时间可以有多门课程在上课。
输出数据流:
课程上课时间
数据描述:
课程编号
上课时间
数量:
每学期20-30个
存取方式:
随机存取
处理过程:
身份验证
说明:
对学生输入的,密码进行验证,确定正确,得到相应的学生编号。
输入:
学生
密码
选课的课程编号
输出:
学生编号
选课的课程编号
2数据库的概念设计
2.1系统的概念模型:
上图是食堂消费管理的概念模型的E/R图,该系统涉及的实体集有:
管理员实体集:
具有属性账号,工号ID和密码。
餐卡实体集:
具有属性卡号,是否挂失和金额。
卡主实体集:
具有属性卡号,证件号和。
窗口实体集:
具有属性窗口号和机器号。
窗口负责人实体集:
具有属性,年龄和性别。
菜实体集:
具有属性菜名,价格和种类。
厨师实体集:
具有属性,年龄和性别。
一个管理员可以管理多餐卡,所以管理员和餐卡之间的管理联系是1:
n的联系。
一餐卡只属于一个卡主,每个卡主只有一餐卡,所以餐卡与卡主之间的联系是1:
1的联系。
一个卡主可以到多个窗口消费,多个卡主可以到一个窗口消费,所以卡主与窗口之间的联系是n:
m的联系。
一个窗口可以出售多种菜,每种菜也可以被多个窗口出售,所以窗口与菜之间的联系是m:
n的联系。
2.2将概念模型转换成关系模型
2.2.1将E-R模型转换为关系模式
(1)管理员实体集可以转换为关系:
管理员(账号,ID,密码)
(2)餐卡实体集可以转换为关系
餐卡(卡号,是否挂失,金额)
(3)卡主实体可以转换为关系
卡主(证件号,)
(4)窗口实体可以转换为关系
窗口(窗口号,机器号)
(5)窗口负责人实体可以转换为关系
窗口负责人(,性别,性别)
(6)菜实体可以转换为关系
菜(菜名,价格,种类)
(7)厨师实体可以转换为关系
厨师(,性别,年龄)
(8)卡主与餐卡之间的联系是1:
1的联系,所以没有必要为其建立一个关系,可以通过扩展卡主关系来表示:
卡主(证件号,,卡号)
(9)管理员,餐卡之间的操作联系可以转换为关系:
操作(ID,卡号)
(10)餐卡和窗口之间的消费联系可以转化为关系:
消费(卡号,窗口号)
(11)窗口和菜之间的出售联系可以转化为关系:
出售(窗口号,菜名)
(12)菜和厨师之间的烹饪联系可以转换为关系
烹饪(菜名,)
这里的是指厨师。
2.2.2数据库表结构设计:
把关系模型转化为表结构:
管理员信息表:
定义如下:
域名
含义
数据类型
长度
例子
备注
ID
管理员工号
Char
5
12345
主码
账号
管理员账号
Char
5
12345
密码
管理员密码
Char
5
23456
餐卡信息表:
定义如下:
域名
含义
数据类型
长度
例子
备注
卡号
餐卡卡号
Char
12
8
主码
是否挂失
挂失情况
0
金额
餐卡余额
Int
100.00
卡主信息表:
域名
含义
数据类型
长度
例子
备注
证件号
卡主的证件号
Char
5
12345
主键
卡主
Char
12
三
卡号
卡主的擦卡卡号
Char
12
2
窗口信息表
域名
含义
数据类型
长度
例子
备注
窗口号
食堂窗口编号
Int
11
主键
机器号
食堂刷卡机编号
Int
29
窗口负责人信息表
域名
含义
数据类型
长度
例子
备注
窗口负责人的
Char
12
义坤
主键
年龄
窗口负责人的年龄
Int
2
26
性别
窗口负责人的性别
Char
2
男
菜信息表
域名
含义
数据类型
长度
例子
备注
菜名
窗口所卖菜式的菜名
Char
30
酸辣白菜
主键
菜价
某种菜的价钱
Int
1.50
类别
是否为该窗口的特色菜
Char
2
否
厨师信息表
域名
含义
数据类型
长度
例子
备注
厨师的
Char
12
义坤
主键
性别
厨师的性别
Int
2
26
年龄
厨师的年龄
Char
2
男
2.2.3实现数据完整性:
通过各种约束,缺省,规则和触发器实现数据的完整性。
由于食堂消费管理系统的重要性,和各个数据之间的复杂相关性,保证数据的完整性显得更为重要。
不能让用户随意的删除,修改数据。
(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='000001'
5.4关键代码及操作
数据库的连接
package.gp.connectdb;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sq