食堂消费管理系统_第1页
食堂消费管理系统_第2页
食堂消费管理系统_第3页
食堂消费管理系统_第4页
食堂消费管理系统_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

某轻工业学院本科

数据库课程设计总结报告20日20日2011年11月某轻工业学院课程设计任务书题目 食堂消费管理系统 专业、班级学号某主要内容:系统数据初始化;餐卡基本信息录入与修改;职工工资标准基本设定;员工工资查询;系统用户设定,密码修改等。基本要求:立足于高校工资管理的实际事务,开发具有价值的工资管理专用软件,实现工资管理自动化,提高工作效率,减少手工工作方式难以避免的数据错漏。主要参考资料等:《数据库系统概论》作者:王珊萨师煊:高等教育《SQLServer2005中文版关系数据库基础与实践教程》作者:周峰:电子工业。《SQLServer数据库开发实例精粹》作者:徐国智汪孝宜等:电子工业。完成期限: 两周指导教师签名:课程负责人签名:年月日目录课程设计任务书21.需求分析41.1系统目标:4系统功能需求:41.3开发工具:51.4系统的数据流图:51.5数据字典62数据库的概念设计82.1系统的概念模型:82.2将概念模型转换成关系模型102.2.1将E-R模型转换为关系模式10数据库表结构设计:122.2.3实现数据完整性:153.开发工具164.1基本流程图16数据库设计17总体结构和外部模块175详细设计185.1表的设计18关系模式设计195.3存储过程设计和部分sql语句代码195.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别名:学号取值X围:970000-979999数据流名:选课申请说明:由学生的个人信息,欲选课程信息组成选课申请来自过程:无流至过程:身份验证数据结构:学生个人信息欲选课信息数据结构:学生个人信息说明:说明了学生的个人情况。组成:某密码数据存储:上课时间信息说明:说明了每门课的上课时间,一门课可以有多个上课时间,同一时间可以有多门课程在上课。输出数据流:课程上课时间数据描述:课程编号上课时间数量: 每学期20-30个存取方式:随机存取处理过程:身份验证说明:对学生输入的某,密码进行验证,确定正确,得到相

应的学生编号。输入:学生某密码选课的课程编号输出:学生编号选课的课程编号2数据库的概念设计2.1系统的概念模型:-ID密码卡号管理员是否金额挂失金额、、/餐卡卡主消费-操窗口 机器号 号菜名价格种类y—出售证牛姓名-ID密码卡号管理员是否金额挂失金额、、/餐卡卡主消费-操窗口 机器号 号菜名价格种类y—出售证牛姓名上限卡号金额-窗口一:菜窗口负主A厨师责人~7— 姓名年龄性别姓名年龄性别

姓名年龄性别姓名年龄性别上图是食堂消费管理的概念模型的E/R图,该系统涉及的实体集有:管理员实体集:具有属性账号,工号ID和密码。餐卡实体集:具有属性卡号,是否挂失和金额。卡主实体集:具有属性卡号,证件号和某。窗口实体集:具有属性窗口号和机器号。窗口负责人实体集:具有属性某,年龄和性别。菜实体集:具有属性菜名,价格和种类。厨师实体集:具有属性某,年龄和性别。管理员窗口管

理人员管理员11窗口卡主厨师m11窗口卡主厨师m一个管理员可以管理多X餐卡,所以管理员和餐卡之间的管理联系是1:n的联系。一X餐卡只属于一个卡主,每个卡主只有一X餐卡,所以餐卡与卡主之间的联系是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管理员工号Char512345主码账号管理员账号Char512345密码管理员密码Char523456餐卡信息表:定义如下:域名含义数据类型长度例子备注

卡号餐卡卡号Char12540907010238主码是否挂失挂失情况0金额餐卡余额Int100.00卡主信息表:域名含义数据类型长度例子备注证件号卡主的证件号Char512345主键某卡主某Char12X三卡号卡主的擦卡卡号Char12540907010152窗口信息表域名含义数据类型长度例子备注窗口号食堂窗口编号Int11主键

机器号食堂刷卡机编号Int29窗口负责人信息表域名含义数据类型长度例子备注某窗口负责人的某Char12X义坤主键年龄窗口负责人的年龄Int226性别窗口负责人的性别Char2男菜信息表域名含义数据类型长度例子备注菜名窗口所卖菜式的菜名Char30酸辣白菜主键菜价某种菜的价钱Int1.50类别是否为该Char2否窗口的特色菜厨师信息表域名含义数据类型长度例子备注某厨师的某Char12X义坤主键性别厨师的性别Int226年龄厨师的年龄Char2男2.2.3实现数据完整性:通过各种约束,缺省,规则和触发器实现数据的完整性。由于食堂消费管理系统的重要性,和各个数据之间的复杂相关性,保证数据的完整性显得更为重要。不能让用户随意的删除,修改数据。(1) 各种外码约束保证数据的完整性,不能随意删除。外码的设置在上面数据库建表时已经提到。(2) 主码约束保证实体的完整性,主码的设置在上面数据库建表时也已经提到了。(3) 创建规则保证年龄在18岁到35岁之间,不会输入错误数

据。3.开发工具本该综合教务系统的数据库采用了Microsoft的SQLServer2000企业版,前台应用程序采用了Java编写。4.1基本流程图卡主开始h.管理员登录 ►<N选^

服务关闭N_继续.执^行操作数据库设计数据库4.2总体结构和外部模块账户验证模块主 模!块5详细设计5.1表的设计本系统主要包括以下几个表:管理员的登录信息,窗口管理人员的信息,学生的基本信息表,学生所持卡号的详细信息,每X卡对应的消费信息,窗口的信息,窗口的消费信息表,菜的信息。5.2关系模式设计」弋所有5U)rIa±ii^_nEmrlachitipjmlJPCBO1109332...Qw-ry]. 」弋所有5U)rIa±ii^_nEmrlachitipjmlJPCBO1109332...Qw-ry]. 僅藻'~表一Ibu.Xi JjJ■已1SBf出和所砲XiMfet.ff■iMncfciw」T■:oijd制:^KHofeiti[ncZUwindowJtiZZI^indoHjriandrprJdl^hdoMjzai%所有珈caMdcal_nairiewmdow_id忙wirdowca叫斯砂IcookerIdcookEr_narnacookersew_气所育列)wixtowimanaocrJd_undow_manager_narTiBwndowmaraerDnd.I"Hl I刖Qi=»= IR山I-HrKTflt-WI-t*HFlORFI I丰 1才_(在数据库的设计的时候,考虑到现实中无法进行透支消费等,进行了防止误操作的控制,比如消费金额如果超过一定数量将限制消费,无法消费价格超过余额的物品。其中使用到了触发器的操作。5・3存储过程设计和部分sql语句代码由于存储过程不像解释执行的sql语句一样在提出操作请求时才进行语法分析和优化操作,因而运行效率高,它提供了在服务器端快速执行sql语句的有效途径.存储过程降低了客户机和服务器之间的通行量,方便实施企业规则.insertintocard_id_tablevalues('000001',23.4,1)insertintocaiidtablevalues(1,'麻辣鸡丝

',1,1,6.5)deletefromcaiidtablewherecainame='麻辣鸡丝'insertintocookeridtablevalues(1,'X胖子','男','33')insertintowindowidtablevalues(1,2,'麻辣鸡丝')insertintowindowmanageridtablevalues(2,'X胖子','123')insertintoxiaofeiidtableselect*fromxiaofei_id_tablewherecardid='0000015.4关键代码及操作数据库的连接package.gp.connectdb;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;publicclassLianJie{publicstaticConnectiongetConnection()throwsClassNotFoundException,SQLException{Class.forName(".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();}}对数据库的全部操作package.gp.util;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;import.gp.connectdb.*;import.gp.javabean.*;publicclassAlloperate{〃所有的返回状态都是int,当为1是返回成功,当为0时候返回失败〃查询所有的cardid,username,cash,并且最后以cardBean的list返回publicList<CardBean>list(Stringstr){List<CardBean>list=newArrayList<CardBean>();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返回publicList<OpBean>listlist(Stringstr){List<OpBean>list=newArrayList<OpBean>();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-generatedcatchblocke.printStackTrace();}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnret1+ret2;}//添加cardidpublicintaddcard(Stringcardid,Stringusername){intret=0;(cardid,try(cardid,ret=LianJie.executeDelete("insertintocardinfousername,cash)values('"+cardid+"','"+username+"','0')");}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();returnret;}//添加cardid的消费记录publicintaddop(Stringcardid,floatdao,Stringstr){intret=0;try{ret=LianJie.executeDelete("insertintocardop(cardid,op,optime)values('"+cardid+"','"+dao+"','"+str+"')");}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnret;}}程序实现部分用户首页:3://localhost/st/indeM.jsp全部的持卡人物餐卡管理登陆卡号持卡者余额操作1111张飞3.12.0肴莊消费2222赵云1021.0營]3333关羽390.0登陆消费4444曹操258.0晋5555马超468.0陆消费6666贝多芬S359.0晋|菇稍费登陆后的消费页面:兀幷l口編福世]卷看[朝収瞞〔①丄貝LU.帶助1旦:&后退中地址(Q) http://localhost/st/xiaofei.jsp?cardid=1111◎”冈園辺尸&后退中地址(Q) http://localhost/st/xiaofei.jsp?cardid=1111用户1111进行消费操作输入消费的金额;遽『"诵窗解"用户1111卡上的原余额是:3(30;0'扌二除必0元消费成功!还剩下288.0人民币返回首页纟墜猛查看消费记录口伽匚alhost/stjcakan.jsp>cardid=11111111的消费操作情况如下进/岀账操作金额操作日期存入123.02011-1蚤0413:12:56156存入,123.0 ]2011-12-0413:12:0320?存入•123.02011-12-0413:12:1640&消费-12.0;2011-12-0413:1246.328洽费-23.02011-12-0413:12:53.843消费-123.02011-12-0415:12:19187消费-10.0.[2011-12-0413:12:02015消费-12.0;2011-12-0414:12%687存人123.02011-1^0621:12:3270J捎费-12.0[.2011-12-2213:12:31906消费-12.0...2011-12-2213:12:46687去消费去用戸首页:alhost/st/login.jsp ' 用户登录管理登陆后的页面(可以直接进行删除和更改操作)b0寸凶圍45R搜索戏收藏夹<ittp;//localho5t/5t/admin,jsp全部的人物添加卡卡号持卡者操作1111张飞M.o注销充價2222赵云W21.0注销充值3jj3关羽i390:04444曹操238.0注销充值555J马超468:0注销充值66W贝多芬8-359.0注销充值对人物的添加操作

援索收藏夹奁:0后退-O>0園Q援索收藏夹奁:地址(①暑http:7Jlocalhost/st/^ddcardjsp输入卡号;m输入持卡人姓名壬马克思I确认漆■加尊2.2i地址(R)阍http://localho5t/5t/addcardpro.j5p和马祸数据插入成功返回首页查看结果吧I继缮添加用户

表-dbi3.cardinfo摘要cardidusernamecashI-rm张飞288理2赵云LQZ13335''关羽3904444曹操23'85555马超468&666贝多芬晞g■7777马克思123'.*4WA/L'HA/LUILi=J翌回 表_dbo.cardop-dbo.car

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论