食堂消费管理系统.docx

上传人:b****1 文档编号:2081669 上传时间:2023-05-02 格式:DOCX 页数:21 大小:206.88KB
下载 相关 举报
食堂消费管理系统.docx_第1页
第1页 / 共21页
食堂消费管理系统.docx_第2页
第2页 / 共21页
食堂消费管理系统.docx_第3页
第3页 / 共21页
食堂消费管理系统.docx_第4页
第4页 / 共21页
食堂消费管理系统.docx_第5页
第5页 / 共21页
食堂消费管理系统.docx_第6页
第6页 / 共21页
食堂消费管理系统.docx_第7页
第7页 / 共21页
食堂消费管理系统.docx_第8页
第8页 / 共21页
食堂消费管理系统.docx_第9页
第9页 / 共21页
食堂消费管理系统.docx_第10页
第10页 / 共21页
食堂消费管理系统.docx_第11页
第11页 / 共21页
食堂消费管理系统.docx_第12页
第12页 / 共21页
食堂消费管理系统.docx_第13页
第13页 / 共21页
食堂消费管理系统.docx_第14页
第14页 / 共21页
食堂消费管理系统.docx_第15页
第15页 / 共21页
食堂消费管理系统.docx_第16页
第16页 / 共21页
食堂消费管理系统.docx_第17页
第17页 / 共21页
食堂消费管理系统.docx_第18页
第18页 / 共21页
食堂消费管理系统.docx_第19页
第19页 / 共21页
食堂消费管理系统.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

食堂消费管理系统.docx

《食堂消费管理系统.docx》由会员分享,可在线阅读,更多相关《食堂消费管理系统.docx(21页珍藏版)》请在冰点文库上搜索。

食堂消费管理系统.docx

食堂消费管理系统

郑州轻工业学院本科之老阳三干创作

创作时间:

贰零贰壹年柒月贰叁拾日

数据库课程设计总结陈述

设计题目:

食堂消费管理系统

学生姓名:

系别:

专业:

班级:

学号:

指导教师:

2011年11月20日

郑州轻工业学院

课程设计任务书

题目食堂消费管理系统

专业、班级

学号姓名

主要内容:

系统数据初始化;餐卡基本信息录入与修改;职工工资尺度基本设定;员工工资查询;系统用户设定,密码修改等。

基本要求:

立足于高校工资管理的实际事务,开发具有价值的工资管理专用软件,实现工资管理自动化,提高工作效率,减少手工工作方式难以防止的数据错漏。

主要参考资料等:

《数据库系统概论》作者:

王珊萨师煊出版社:

高等教育出版社

《SQLServer2005中文版关系数据库基础与实践教程》作者:

周峰

出版社:

电子工业出版社。

《SQLServer数据库开发实例精粹》作者:

徐国智汪孝宜等

出版社:

电子工业出版社。

完成期限:

两周

指导教师签名:

课程负责人签名:

年月日

课程设计任务书2

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.2数据库表结构设计:

12

2.2.3实现数据完整性:

15

 

数据库设计17

5详细设计18

 

程序实现部分29

对本设计的简单评述,总结34

参考文献34

食堂消费管理系统

1.1系统目标:

实现一个食堂消费管理系统,完成餐卡信息管理,餐卡信息查询,窗口信息管理,餐卡消费管理和窗口信息查询等功能。

1.2系统功能需求:

本系统管理员能够对餐卡信息增加,修改,查询,删除等。

功能划分:

用户通过身份验证后进入主界面。

主界面为超等用户提供5项选择:

餐卡筹划,餐卡挂失,餐卡充值,餐卡解除挂失,餐卡查询。

功能描述:

●餐卡筹划:

管理员通过拔出表和更新表来为餐卡使用人员筹划新卡。

新生报到时,学生要到管理员那里筹划新卡,管理员通过拔出表信息来筹划。

当卡主的卡丢失或损坏且确定要筹划新卡时,管理员通过更新表的信息来筹划新卡。

●餐卡挂失

当学生的餐卡找不到但是不克不及确定还能否找到时,学生可以到擦卡管理员那里去挂失。

管理员通过修改表的信息暂时禁用此卡。

●餐卡解除挂失

学生找到丢失的餐卡后,可以到管理员那里解除挂失。

管理员通过修改表的信息让此卡能从新使用。

●餐卡充值

餐卡余额缺乏时,学生可能无法到食堂消费,此时要到管理员那里充值。

管理员通过修改表的信息为餐卡充值。

●餐卡查询

就餐时可能出现刷错卡的情况,当刷错卡但是刷卡人员没有注意到时两方就会产纠纷,这时要到餐卡管理员那里查询消费情况。

1.3开发工具:

该综合教务系统的数据库采取了Microsoft的SQLServer2000企业版,前台应用程序采取了Java编写。

1.4系统的数据流图:

了解用户的应用要求,使用信息流程图分析应用系统中的信息流。

食堂消费管理系统的简单信息流如下。

(1)系统的上下文数据流图如图5-38

数据项名:

学生编号

说明:

标识每个学生身份

类型:

CHAR

长度:

7

别号:

学号

取值范围:

970000-979999

数据流名:

选课申请

说明:

由学生的个人信息,欲选课程信息组成选课申请

来自过程:

流至过程:

身份验证

数据结构:

学生个人信息

欲选课信息

数据结构:

学生个人信息

说明:

说明了学生的个人情况。

组成:

帐号

密码

数据存储:

上课时间信息

说明:

说明了每门课的上课时间,一门课可以有多个上课时间,同一时间可以有多门课程在上课。

输出数据流:

课程上课时间

数据描述:

课程编号

上课时间

数量:

每学期20-30个

存取方式:

随机存取

处理过程:

身份验证

说明:

对学生输入的帐号,密码进行验证,确定正确,得到相应的学生编号。

输入:

学生帐号

密码

选课的课程编号

输出:

学生编号

选课的课程编号

2数据库的概念设计

2.1系统的概念模型:

上图是食堂消费管理的概念模型的E/R图,该系统涉及的实体集有:

管理员实体集:

具有属性账号,工号ID和密码。

餐卡实体集:

具有属性卡号,是否挂失和金额。

卡主实体集:

具有属性卡号,证件号和姓名。

窗口实体集:

具有属性窗口号和机器号。

窗口负责人实体集:

具有属性姓名,年龄和性别。

菜实体集:

具有属性菜名,价格和种类。

厨师实体集:

具有属性姓名,年龄和性别。

一个管理员可以管理多张餐卡,所以管理员和餐卡之间的管理联系是1:

n的联系。

一张餐卡只属于一个卡主,每个卡主只有一张餐卡,所以餐卡与卡主之间的联系是1:

1的联系。

一个卡主可以到多个窗口消费,多个卡主可以到一个窗口消费,所以卡主与窗口之间的联系是n:

m的联系。

一个窗口可以出售多种菜,每种菜也可以被多个窗口出售,所以窗口与菜之间的联系是m:

n的联系。

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

540907010238

主码

是否挂失

挂失情况

0

金额

餐卡余额

Int

卡主信息表:

域名

含义

数据类型

长度

例子

备注

证件号

卡主的证件号

Char

5

12345

主键

姓名

卡主姓名

Char

12

张三

卡号

卡主的擦卡卡号

Char

12

540907010152

窗口信息表

域名

含义

数据类型

长度

例子

备注

窗口号

食堂窗口编号

Int

11

主键

机器号

食堂刷卡机编号

Int

29

窗口负责人信息表

域名

含义

数据类型

长度

例子

备注

姓名

窗口负责人的姓名

Char

12

张义坤

主键

年龄

窗口负责人的年龄

Int

2

26

性别

窗口负责人的性别

Char

2

菜信息表

域名

含义

数据类型

长度

例子

备注

菜名

窗口所卖菜式的菜名

Char

30

酸辣白菜

主键

菜价

某种菜的价钱

Int

类别

是否为该窗口的特色菜

Char

2

厨师信息表

域名

含义

数据类型

长度

例子

备注

姓名

厨师的姓名

Char

12

张义坤

主键

性别

厨师的性别

Int

2

26

年龄

厨师的年龄

Char

2

2.2.3实现数据完整性:

通过各种约束,缺省,规则和触发器实现数据的完整性。

由于食堂消费管理系统的重要性,和各个数据之间的复杂相关性,包管数据的完整性显得更为重要。

不克不及让用户随意的删除,修改数据。

(1)各种外码约束包管数据的完整性,不克不及随意删除。

外码的设置在上面数据库建表时已经提到。

(2)主码约束包管实体的完整性,主码的设置在上面数据库建表时也已经提到了。

(3)创建规则包管年龄在18岁到35岁之间,不会输入错误数据。

本该综合教务系统的数据库采取了Microsoft的SQLServer2000企业版,前台应用程序采取了Java编写。

数据库设计

5详细设计

本系统主要包含以下几个表:

管理员的登录信息,窗口管理人员的信息,学生的基本信息表,学生所持卡号的详细信息,每张卡对应的消费信息,窗口的信息,窗口的消费信息表,菜的信息。

在数据库的设计的时候,考虑到现实中无法进行透支消费等,进行了防止误操纵的控制,比方消费金额如果超出一定数量将限制消费,无法消费价格超出余额的物品。

其中使用到了触发器的操纵。

由于存储过程不像解释执行的sql语句一样在提出操纵请求时才进行语法分析和优化操纵,因而运行效率高,它提供了在服务器端快速执行sql语句的有效途径.

存储过程降低了客户机和服务器之间的通行量,方便实施企业规则.

insertintocard_id_tablevalues('000001',,1)

insertintocai_id_tablevalues(1,'麻辣鸡丝',1,1,)

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'

数据库的连接

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,

ClassNotFoundException{

returngetPreparedStatement(sql).executeUpdate();

}

}

对数据库的全部操纵

packagecom.gp.util;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.util.ArrayList;

importjava.util.List;

importcom.gp.connectdb.*;

importcom.gp.javabean.*;

publicclassAlloperate{

//所有的返回状态都是int,当为1是返回成功,当为0时候返回失败

//查询所有的cardid,username,cash,而且最后以cardBean的list返回

publicListlist(Stringstr){

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

e.printStackTrace();

}

returnlist;

}

//查询cardid下面的卡的信息(用户名,余额)

publicfloatshow(Stringcardid){

floatret=0;

try{

ResultSetrs=LianJie.getResultSet("select*fromcardinfowherecardid='"+cardid+"'");

while(rs.next()){

ret=rs.getFloat("cash");

}

}catch(SQLExceptione){

e.printStackTrace();

}catch(ClassNotFoundExceptione){

e.printStackTrace();

}

returnret;

}

//查询cardid下面的所有消费记录而且最后以OpBean的LIST返回

publicListlistlist(Stringstr){

Listlist=newArrayList();

try{

ResultSetrs=LianJie.getResultSet("select*fromcardopwherecardid='"+str+"'");

while(rs.next()){

OpBeanop=newOpBean();

op.setDate(rs.getString("optime"));

op.setOp(rs.getFloat("op"));;

list.add(op);

}

}catch(SQLExceptione){

e.printStackTrace();

}catch(ClassNotFoundExceptione){

e.printStackTrace();

}

returnlist;

}

//扣除cardid为cash的余额

publicintchuli(floatdao,Stringcardid){

intret=0;

try{

ret=LianJie.executeDelete("updatecardinfosetcash='"+dao+"'wherecardid='"+cardid+"'");

}catch(SQLExceptione){

e.printStackTrace();

}catch(ClassNotFoundExceptione){

e.printStackTrace();

}

returnret;

}

//清除cardid下面的所有记录

publicintclearcard(Stringcardid){

intret1=0,ret2=0;

try{

ret1=LianJie.executeDelete("deletefromcardinfowherecardid='"+cardid+"'");

ret2=LianJie.executeDelete("deletefromcardopwherecardid='"+cardid+"'");

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(ClassNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returnret1+ret2;

}

//添加cardid

publicintaddcard(Stringcardid,Stringusername){

intret=0;

try{

ret=LianJie.executeDelete("insertintocardinfo(cardid,username,cash)values('"+cardid+"','"+username+"','0')");

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(ClassNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returnret;

}

//添加cardid的消费记录

publicintaddop(Stringcardid,floatdao,Stringstr){

intret=0;

try{

ret=LianJie.executeDelete("insertintocardop(cardid,op,optime)values('"+cardid+"','"+dao+"','"+str+"')");

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(ClassNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returnret;

}

}

程序实现部分

用户首页:

登陆后的消费页面:

管理登陆后的页面(可以直接进行删除和更改操纵)

对人物的添加操纵

对本设计的简单评述,总结

通过介入此项目的工作,在这个学期内有了很大的收获,从开始的需求分析、数据库设计、系统设计到最后软件架构的实现、代码的编写,遇到了很多问题,通过查资料,向老师请教,在线提问等多种方式,最终一一解决,从而积累、学习到了很多知识!

最后系统使用javabean+jsp开发完成,在系统的实现过程中遇到了,诸如汉字乱码问题等,最大的问题还是由于刚开始的需求分析阶段未完全考虑遇到的问题导致最后功能很多都未能实现。

参考文献

[]萨师煊,王珊编著数据库系统概论高等教育出版社,2004年12月第16版2~125

数据库原理及应用教程称志泊,王春林人民邮电出版社2011年9月版

[]李静燕渭南师范学院学报:

综合版数据库设计技巧2007,(5):

63~65

[]王新龙存储过程应用研究科技情报开发与经济2006,(13):

183~184

[]孙明魁软件体系结构的探讨电脑与电信2007,(10)23~24

创作时间:

贰零贰壹年柒月贰叁拾日

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2