酒店餐饮系统源码开发文档
- 格式:pdf
- 大小:1.39 MB
- 文档页数:34
餐饮管理系统开发环境和运行环境:开发环境:WindowsXP运行环境:Windows2000/WindowsXp开发工具:Eclipse ,SQL-Server 2005编程语言:Java ,T-SQL系统简介:本餐饮管理系统是基于餐饮行业的需求而开发的,适用餐饮管理业务,拥有基本的餐饮管理功能如:系统主界面:1.来宾登记1)客开单:功能建立宾客消费帐,本模块为每位来店宾客指定一个包厢(餐台),是宾客消费的开始。
2)餐台状态:功能此项操作可手动修改处于非占用状态的餐台状态为”可供”、“预订”、“停用”等状态。
3)预订管理:功能此项功能可以完成增加预订、修改预订、删除预订,预订情况的查询、导出、打印等功能。
4)退出系统:功能此项操作可中断本系统的运行并退回到操作系统。
2.点单消费1)增加消费:功能凡在店接受服务(已登记)的宾客,可以通过点单操作提出消费要求,本模块将为接受消费的客人安排所需的消费服务并记录在册,本模块只对具体的消费项目进行登记。
2)个人消费明细查询: 功能此模块用来查询当前在店消费宾客已记录在册的消费清单(一般根据宾客的要求或某种特殊需要会用到此模块)。
3)服务生查询:功能此模块用来查询已记录在本系统的所有服务生的详细信息,可按服务生所在区域分类查询、导出、打印服务生信息。
3.收银结账1)宾客结账:功能本模块将自动统计每个登记客人在店时所发生的所有消费额和应付款额,并完成结帐收银操作。
2)挂账单结账功能本模块对已经离店但尚未结帐并进行挂账处理的帐单进行结帐操作。
3)结账状态查询:功能用分类查询结账宾客、挂账宾客、免费宾客、退单宾客的消费情况。
4.营业查询1)收银明细查询功能用于按收款人根据给定的时间分类查询其收款明细。
2)营业情况报表功能用于统计当天、当月或指定时间范围内的营业收入。
5.会员管理1)基本信息管理功能此模块用于增加会员、修改会员信息、删除会员、会员信息的查询、导出和打印等功能。
PHP中餐点餐系统文档在 Python 中,可以使用类来创建一个餐馆类。
首先,需要定义一个类并给它起一个名字,比如 "Restaurant"。
然后在类中定义两个属性,一个是餐馆的名字(restaurant_name),另一个是餐馆的菜系(cuisine_type)。
还需要定义两个方法,一个是 describe_restaurant(),打印出餐馆的名字和菜系;另一个是 open_restaurant(),打印出餐馆正在营业的消息。
下面是代码示例: ``` class Restaurant: def__init__(self, restaurant_name, cuisine_type):self.restaurant_name = restaurant_nameself.cuisine_type = cuisine_type defdescribe_restaurant(self): print(f"餐馆的名字是{self.restaurant_name},提供的菜系是{self.cuisine_type}。
") def open_restaurant(self): print("餐馆正在营业。
") # 创建一个餐馆对象my_restaurant = Restaurant("悠悠美食馆", "中餐") # 打印出餐馆的名字和菜系print(my_restaurant.restaurant_name)print(my_restaurant.cuisine_type) # 调用describe_restaurant() 和 open_restaurant() 方法my_restaurant.describe_restaurant()my_restaurant.open_restaurant() ``` 运行上面的代码,会得到以下输出: ``` 悠悠美食馆中餐餐馆的名字是悠悠美食馆,提供的菜系是中餐。
餐饮管理系统1、前言在餐饮业务竞争越来越激烈的今天,如何提高服务质量,其管理能力显的越来越重要。
尤其是对一些大的餐饮店,餐饮店内部服务项目越多,管理难度越大,既要处理前台又要处理后台的工作,所以一个好的管理系统可以提高酒店的管理水平也可以大幅度提高酒店服务水平。
1.1目的随着当今社会信息化的日新月异的发展,计算机应用已经渗透到日常工作的许多方面无论是其自身还是所发挥的作用,计算机都标志着一种高科技、高效率和高水平。
为了企业创先进、争一流,为了企业的发展一套好的系统必不可少.现在餐饮业发展速度飞快,要想在激烈的社会竞争有一席之地,好的服务是最基本的保障,此次开发的餐饮管理系统就是针对现代化社会管理和要求,在服务上提高自己的效率,使自己的公司立于不败之地.1.2定义餐饮管理系统,SQL,E-R图1.3 参考资料《数据库应用系统开发技术》朱如龙刘焰机械出版社2004年8月《VC++与SQL2000开发技术》汪晓平钟军人民邮电出版社2004年8月2、系统设计2.1系统目标设计餐饮管理系统的主要目标是实现对酒店内部各种管理的电子化、自动化,提高各个模块之间的办公效率,为高质量餐饮服务提供保证。
2.2开发设计思想餐厅系统是按照国内餐饮行业最新要求开发的全心概念的信息管理系统。
该系统将餐厅收银、往来帐务结算及销售情况统计工作在单计算机或网络系统中完成。
主要特点包括:*代码菜谱编制,方便统计,方便输入;*开单、改单、结算、打印、用户界面方便友好;*系统专设往来账、内部账,结算方式灵活多样,结算消息详尽;*系统可同前台系统衔接,查询客人信贷情况,往前台客人帐户转账;*报表真实,实用性强,如:收银报表汇总收银、支票、信用卡、转帐等情况;菜肴销售报表汇总各种菜肴的日、月销售量;员工销售统计表,可打印值台人员销售业绩核实报表提供依据。
*账务系统共讷讷感的完整性。
一旦该系统正式运行,餐厅每日的营业账和全部往来客户的账务操作结算都将依靠计算机,该系统面对当前餐厅餐饮业各种负复杂的结算要求应具有很强的应变能力。
目录一、系统开发平台 (1)二、数据库规划 (2)2.1 任务陈述 (2)2.2 任务目标 (2)三、系统定义 (2)3.1 系统边界 (2)3.2 用户视图 (2)四、需求分析 (2)4.1 用户需求说明 (2)4.1.1 数据需求 (2)4.1.2 事务需求 (2)4.2 系统需求说明 (2)五、数据库逻辑设计 (2)5.1 ER图 (2)5.2 数据字典 (2)5.3 关系表 (2)六、数据库物理设计 (3)6.1 索引 (3)6.2 视图 (3)6.3 安全机制 (3)6.4 其他 (3)七、应用程序设计 (3)7.1 功能模块 (3)7.2 界面设计 (3)7.3 事务设计 (3)八、测试和运行 (3)九、总结 (4)附. 参考文献 (4)一、系统开发平台题目:餐饮管理系统开发工具:ECLIPSE数据库:SQL SEVER 2008操作系统:WINDOWS XP/7二、数据库规划2.1 任务陈述在餐饮业中主要有四大信息:人事管理、销售管理、成本管理和库房管理。
人工处理这些信息不仅工作量繁重、复杂,而且容易产生错误和混乱。
采用计算机进行信息的有效管理不但能实现管理的规范化,而且还可以避免错误,提高效率,本系统即针对餐饮业的信息管理而设计制作。
2.2 任务目标本系统是一个小型桌面应用系统,通过这个平台实现以前人工操作的点菜,加减菜,结帐买单等服务,这样节省了很多的人力。
本系统主要有五大功能模块:一:开台点菜二:加菜减菜三:顾客买单和预定四:人事管理五:库存管理三、系统定义3.1 系统边界3.2 用户视图四、需求分析4.1 用户需求说明进行点菜,预定,结账4.1.1 数据需求人事资料:存放公司员工的详细信息,包括员工编号,姓名,性别,联系电话,身份证号,入职时间,职位级别。
菜单资料:存放各种菜及饮品信息。
包括菜的编号,名称,类别,价格。
桌子预订:桌子编号,预订人姓名,顾客人数,预定时间,保留时间,联系方式供应商:货品供应商信息,包括供货商号,电话,名字,地址,供货信息。
原创Java餐饮管理系统源码引言餐饮行业在当今社会具有广泛的应用和发展前景。
为了优化餐饮业务流程,提高服务质量和效率,许多餐饮企业选择使用计算机餐饮管理系统进行日常运营管理。
本文将介绍一款原创的Java餐饮管理系统源码。
功能概述该餐饮管理系统源码包括以下主要功能:1.用户管理:支持注册新用户、登录、修改密码等功能。
不同用户角色拥有不同的权限,例如管理员可以管理菜单、员工、订单等,客户可以浏览菜单、下订单等。
2.菜单管理:管理员可以添加、编辑和删除菜单,包括菜名、价格、配料等信息。
菜单可以按分类进行组织,方便用户查找和选择。
3.订单管理:客户可以浏览菜单,并选择下单。
管理员可以查看和管理订单,包括确认订单、取消订单等操作。
订单信息包括菜品、数量、价格、配送地址等。
4.员工管理:管理员可以添加、编辑和删除员工信息,包括姓名、联系方式、职位等。
员工可以登录系统,查看个人信息,接收和处理订单。
5.数据统计:系统可以生成各类报表,统计菜品销售情况、订单量、销售额等。
这些数据能够帮助餐饮企业分析经营情况,制定运营策略。
技术选型该餐饮管理系统源码基于Java语言开发,并采用以下主要技术:•后端框架使用Spring Boot,简化配置和开发流程,提供高效的Web 应用程序开发框架。
•数据库采用MySQL,存储系统的用户、菜单、订单、员工等信息。
•前端页面使用HTML、CSS和JavaScript进行开发,实现用户界面和交互逻辑。
•数据交互采用RESTful API,前后端通过JSON格式进行数据传输。
系统架构该餐饮管理系统采用分层架构,分为前端、后端和数据库三层。
•前端层:主要负责用户界面的展示和交互逻辑。
用户通过浏览器访问系统,与后端进行交互。
•后端层:负责处理用户请求,进行业务逻辑处理和数据访问。
后端使用Spring Boot框架,提供RESTful API供前端调用。
•数据库层:负责存储系统的数据。
系统使用MySQL作为数据库,存储用户、菜单、订单、员工等信息。
餐饮管理系统1、前言在餐饮业务竞争越来越激烈的今天,如何提高服务质量,其管理能力显的越来越重要。
尤其是对一些大的餐饮店,餐饮店内部服务项目越多,管理难度越大,既要处理前台又要处理后台的工作,所以一个好的管理系统可以提高酒店的管理水平也可以大幅度提高酒店服务水平。
1.1目的随着当今社会信息化的日新月异的发展,计算机应用已经渗透到日常工作的许多方面无论是其自身还是所发挥的作用,计算机都标志着一种高科技、高效率和高水平。
为了企业创先进、争一流,为了企业的发展一套好的系统必不可少.现在餐饮业发展速度飞快,要想在激烈的社会竞争有一席之地,好的服务是最基本的保障,此次开发的餐饮管理系统就是针对现代化社会管理和要求,在服务上提高自己的效率,使自己的公司立于不败之地.1.2定义餐饮管理系统,SQL,E-R图1.3 参考资料《数据库应用系统开发技术》朱如龙刘焰机械出版社2004年8月《VC++与SQL2000开发技术》汪晓平钟军人民邮电出版社2004年8月2、系统设计2.1系统目标设计餐饮管理系统的主要目标是实现对酒店内部各种管理的电子化、自动化,提高各个模块之间的办公效率,为高质量餐饮服务提供保证。
2.2开发设计思想餐厅系统是按照国内餐饮行业最新要求开发的全心概念的信息管理系统。
该系统将餐厅收银、往来帐务结算及销售情况统计工作在单计算机或网络系统中完成。
主要特点包括:*代码菜谱编制,方便统计,方便输入;*开单、改单、结算、打印、用户界面方便友好;*系统专设往来账、内部账,结算方式灵活多样,结算消息详尽;*系统可同前台系统衔接,查询客人信贷情况,往前台客人帐户转账;*报表真实,实用性强,如:收银报表汇总收银、支票、信用卡、转帐等情况;菜肴销售报表汇总各种菜肴的日、月销售量;员工销售统计表,可打印值台人员销售业绩核实报表提供依据。
*账务系统共讷讷感的完整性。
一旦该系统正式运行,餐厅每日的营业账和全部往来客户的账务操作结算都将依靠计算机,该系统面对当前餐厅餐饮业各种负复杂的结算要求应具有很强的应变能力。
餐饮管理系统文档餐饮管理系统文档餐饮管理系统是一种用于管理餐饮企业相关活动的软件系统。
它能够帮助企业实现从供应链到顾客服务所有环节的控制与管理,提高运营效率、降低成本、提升服务质量等方面的业务价值。
本文档旨在对餐饮管理系统的使用、配置、功能等方面进行详细的介绍,帮助用户高效地使用系统。
一、产品概述餐饮管理系统是基于互联网的各种先进技术、传感器技术以及大数据技术的结合,以解决饮食行业管理问题为主旨的系统。
系统主要包括后台管理模块、前台销售模块、供应链模块、财务管理模块、统计报表模块五大模块。
其中,后台管理模块主要用于餐饮企业日常管理,包括智慧化的厨房管理、食材供应管理、人员管理等;前台销售模块主要用于餐厅客户点餐、支付等,提高顾客满意度;供应链模块主要用于供应商管理,可以有效地管理采购流程、节约成本等;财务模块用于日常会计管理,包括固定资产清单、日常会计管理等;统计报表模块用于提供相关报表和数据分析,帮助管理人员及时做出决策。
二、系统配置及使用安装餐饮管理系统需要先将软件下载至电脑上,进行安装及配置,确保符合系统的硬件和软件要求。
完成安装后,即可在电脑上找到主程序,点击主程序即可启动系统。
进入系统后,用户可以根据自己的身份和角色选择相应的模块进行操作。
系统配置及使用详细流程如下:1.电脑环境检查:检查电脑系统是否支持餐饮管理系统,电脑硬件配置是否满足系统要求。
2.软件下载及安装:在餐饮管理系统官网或者相关下载网站下载餐饮管理系统,并根据系统要求进行安装。
3.系统启动:双击系统主程序即可启动系统,根据界面提示进行操作。
4.用户注册:系统启动后,用户需要进行账户注册,一般都有管理员进行用户管理。
管理员可以设置账户权限,控制用户对系统的访问范围。
5.模块使用:系统包括多个模块,根据用户的用户角色,可以选择相应的模块进行操作。
餐饮管理系统的使用虽然十分方便快捷,但是也需要管理员或用户对系统进行掌握和运用。
餐饮管理系统教学单位长春工业大学姓名岳继武学号 20093561年级 093306专业软件工程指导教师刘寒梅职称副教授2013 年 03 月01日一、数据库连接类构建(文件DBconn.java)package com;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class DBconn {private Connection con;private String classname="com.microsoft.jdbc.sqlserver.SQLServerDriver";private String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=canyin";public Connection getCon(){try{Class.forName(classname);con=DriverManager.getConnection(url,"sa","");}catch(Exception e){e.printStackTrace(System.err);con=null;}return con;}public void closed(){try{if(con!=null)con.close();}catch(Exception e){e.printStackTrace();}}//用于注册,添加public int GetCount(String SQL){try{Connection Con = getCon();Statement Smt = Con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_ UPDATABLE);int counts = Smt.executeUpdate(SQL);return counts;}catch(SQLException e){System.out.println("失败!");return 0;}}//用于查询,登陆public ResultSet GetRs(String SQL){try{Connection Con = getCon();Statement Smt = Con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_ UPDATABLE);ResultSet Rs = Smt.executeQuery(SQL);return Rs;}catch(SQLException e){System.out.println("失败!");return null;}}//修改和删除public boolean executeUpdate(String sql) {if (con == null) {getCon();}try {Statement stmt = con.createStatement();int iCount = stmt.executeUpdate(sql);System.out.println("操作成功,所影响的记录数为" + String.valueOf(iCount));} catch (SQLException e) {System.out.println(e.getMessage());System.out.println("executeUpdaterError!");}return true;}}二、中文字符处理类(文件Char.java)package com;import java.io.UnsupportedEncodingException;public class Char {public Char(){}/*** 对字符进行转码处理* @param str 要转码的字符串* @return 编码后的字符串*/public String toString(String str){// 转换字符String text = "";// 判断要转码的字符串是否有效if(str != null && !"".equals(str)){try {// 将字符串进行编码处理text = new String(str.getBytes("iso8859-1"),"GB18030");} catch (UnsupportedEncodingException e) {e.printStackTrace();}}// 返回后的字符串return text;}}三、字符串过滤类(文件DoString.java)package com;public class DoString {private String getstr;private String checkstr;public DoString(){}public void setGetstr(String getstr){this.getstr=getstr;dostring();}public String getGetstr(){return this.getstr;}public String getCheckstr(){return this.checkstr;}public void dostring(){this.checkstr=this.getstr;this.checkstr=this.checkstr.replaceAll("&","&");this.checkstr=this.checkstr.replaceAll(";","");this.checkstr=this.checkstr.replaceAll("'","");this.checkstr=this.checkstr.replaceAll("<","<");this.checkstr=this.checkstr.replaceAll(">",">");this.checkstr=this.checkstr.replaceAll("--","");this.checkstr=this.checkstr.replaceAll("\"\"",""");this.checkstr=this.checkstr.replaceAll("/","");this.checkstr=this.checkstr.replaceAll("%"," ");}}四、提示信息类(文件PopDialog.java)package com;public class PopDialog {/******************************功能:返回弹出提示对话框并重定向网页到指定页面的字符串*message:指定要显示的提示信息*url:指定重定向到的页面******************************/public String messageBox(String message,String url){String str="<script language='javascript'>alert('"+message+"');";str=str+"window.location.href='"+url+"';</script>";return str;}}五、时间函数类(文件Shijian.java)package com;import java.text.DateFormat;import java.util.Date;public class Shijian {public String showTodayTime(){Date date=new Date();return DateFormat.getDateInstance().format(date);}}六、CSS样式表(文件style.css)body,td,th {font-size: 12px;}body {background-image: url(../image/dw.gif);margin-left: 0px;margin-top: 0px;margin-right: 0px;margin-bottom: 0px;}body {font-size: 12px;color: #000000;}a:link {font-size: 12px;color: #000000;text-decoration: none;}a:visited {font-size: 12px;color: #000000;text-decoration: none;}a:hover {font-size: 12px;color: #0000FF;}.style7 {color: #FFFFE1}七、系统登录界面(login.jsp和login_chuli.jsp)核心代码:<script language="javascript">function check(){//判断用户名是否为空if(ername.value==""){alert("请输入用户名!");ername.focus();return false;}//判断密码是否为空if(form1.password.value==""){alert("请输入密码!");form1.password.focus();return false;}}</script><table width="800" height="388" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td valign="top" background="image/login.jpg"><form id="form1" name="form1" method="post" action="login_chuli.jsp" onSubmit="return check()"> <table width="800" border="0" cellspacing="0" cellpadding="0"><tr><td height="127" colspan="2"> </td></tr><tr><td width="320" height="20" align="right">账号:</td><td width="480" height="25" align="left"><input name="username"type="text" id="username" /></td></tr><tr><td height="20" align="right">密码:</td><td height="25" align="left"><input name="password" type="password" id="password" /></td></tr><tr><td height="25" align="right">权限:</td><td height="25" align="left"><select name="quanxian" id="quanxian"><option value="员工" selected="selected">员工</option><option value="管理员">管理员</option></select></td></tr><tr><td height="30" align="right"> </td><td height="30" align="left"><input type="submit" name="Submit" value="登陆" /> <input type="button" name="Submit2" value="注册" onclick="location.href='zhuce.jsp'"/></td></tr></table></form></td></tr></table>后台处理:<%@ page language="java" contentType="text/html; charset=GB18030"pageEncoding="GB18030" import="java.sql.*"%><jsp:useBean id="Login_chuli" class="com.DBconn" scope="page"/><jsp:useBean id="popDialog" scope="page" class="com.PopDialog"/><jsp:useBean id="mystring" class="com.DoString"/><%//获取变量,并过滤危险字符mystring.setGetstr(newString(request.getParameter("username").getBytes("ISO-8859-1"),"GB18030")); String username=mystring.getCheckstr();mystring.setGetstr(newString(request.getParameter("password").getBytes("ISO-8859-1"),"GB18030")); String password=mystring.getCheckstr();String quanxian=newString(request.getParameter("quanxian").getBytes("ISO-8859-1"),"GB18030");//链接数据库Connection con=Login_chuli.getCon();//判断权限if(quanxian.equals("管理员")){//执行查询语句String sql="select * from login where username='"+username+"' and password='"+password+"'";//返回记录集ResultSet rs=Login_chuli.GetRs(sql);if(rs.next()){//存变量,作为判断条件session.setAttribute("jibie",""+quanxian+"");session.setAttribute("user_name",""+username+"");//登陆成功,跳转页面out.println(popDialog.messageBox("登录成功!","admin/management.jsp"));}else{//登陆失败,返回页面out.println("<script lanage='javascript'>alert('管理员登陆错误,请核实用户名和密码是否输入正确,重新输入');javascript:history.go(-1);</script>");}Login_chuli.closed();}//同上if(quanxian.equals("员工")){String sql="select * from register where r_name='"+username+"' and r_pass='"+password+"'";ResultSet rs=Login_chuli.GetRs(sql);if(rs.next()){session.setAttribute("id",""+rs.getString("r_no") +"");session.setAttribute("jibie",""+quanxian+"");session.setAttribute("yonghu",""+username+"");out.println(popDialog.messageBox("登录成功!","index.jsp"));}else{out.println("<script lanage='javascript'>alert('员工登陆错误,请核实用户名和密码是否输入正确,重新输入');javascript:history.go(-1);</script>");}Login_chuli.closed();}%>八、注册界面(文件zhuce.jsp和zhuce_chuli.jsp)核心代码:<script language="javascript">function check(){//判断ID是否为空if(form1.r_no.value==""){alert("请输入编号!");form1.r_no.focus();return false;}//判断用户名是否为空if(form1.r_name.value==""){alert("请输入用户名!");form1.r_name.focus();return false;}//判断密码是否为空if(form1.r_pass.value==""){alert("请输入密码!");form1.r_pass.focus();return false;}//判断性别是否为空if(form1.r_sex.value==""){alert("请输入性别!");form1.r_sex.focus();return false;}//判断年龄是否为空if(form1.r_nianling.value==""){alert("请输入年龄!");form1.r_nianling.focus();return false;}if(form1.s_email.value==""){alert("请输入E-mail地址!");form1.s_email.focus();return false;}//判断E-mail地址是否合法var regExp=/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/; //验证E-mail地址的正则表达式对象if(!regExp.test(form1.s_email.value)){ //判断E-mail地址是否合法alert("您输入的E-mail不合法!");form1.s_email.focus();return false;}//判断电话号码是否为空if(form1.s_tel.value==""){alert("请输入电话号码!");form1.s_tel.focus();return false;}//判断QQ号码是否为空if(form1.s_qq.value==""){alert("请输入QQ号码!");form1.s_qq.focus();return false;}//判断爱好是否为空if(form1.s_love.value==""){alert("请输入爱好!");form1.s_love.focus();return false;}//判断爱好是否为空if(form1.s_zhuzhi.value==""){alert("请输入住址!");form1.s_zhuzhi.focus();return false;}//判断爱好是否为空if(form1.s_zhiwei.value==""){alert("请输入职位!");form1.s_zhiwei.focus();return false;}//判断备注是否为空if(form1.s_beizhu.value==""){alert("请输入备注信息!");form1.s_beizhu.focus();return false;}}</script><table width="800" height="422" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td valign="top" background="image/reg.jpg"><form id="form1" name="form1" method="post" action="zhuce_chuli.jsp" onSubmit="return check()"> <table width="800" border="0" cellspacing="0" cellpadding="0"><td height="103" colspan="3"> </td></tr><tr><td> </td><td height="25">编号:<input name="r_no" type="text" id="r_no" size="10"/></td> <td> </td></tr><tr><td width="153" height="25"> </td><td width="234">姓名:<input name="r_name" type="text" id="r_name" /></td><td width="413">密码:<input name="r_pass" type="password" id="r_pass" /></td> </tr><tr><td height="25"> </td><td height="25">性别:<input name="r_sex" type="text" id="r_sex" /></td><td height="25">年龄:<input name="r_nianling" type="text" id="r_nianling" /></td> </tr><tr><td height="25"> </td><td height="25">邮件:<input name="s_email" type="text" id="s_email" /></td><td height="25">电话:<input name="s_tel" type="text" id="s_tel" /></td></tr><tr><td height="25"> </td><td height="25">QQ号:<input name="s_qq" type="text" id="s_qq" /></td><td height="25">爱好:<input name="s_love" type="text" id="s_love" /></td></tr><tr><td height="25"> </td><td height="25">住址:<input name="s_zhuzhi" type="text" id="s_zhuzhi" /></td> <td height="25">职位:<input name="s_zhiwei" type="text" id="s_zhiwei" /></td> </tr><td height="60"> </td><td height="60" colspan="2">备注:<textarea name="s_beizhu" cols="55" rows="5" id="s_beizhu"></textarea></td></tr><tr><td height="30" colspan="3" align="center"><input type="submit" name="Submit" value="注册" /> <input type="button" name="Submit2" value="返回" onclick="history.back()"/></td></tr></table></form></td></tr></table>后台处理<%@ page language="java" contentType="text/html; charset=GB18030"pageEncoding="GB18030" import="java.sql.*"%><jsp:useBean id="db" class="com.DBconn" scope="page"/><jsp:useBean id="popDialog" scope="page" class="com.PopDialog"/><jsp:useBean id="mystring" class="com.DoString"/><jsp:useBean id="chart" class="com.Char"/><jsp:useBean id="times" class="com.Shijian"/><%try {//获取变量,处理中文String r_no=chart.toString(request.getParameter("r_no"));String r_name=chart.toString(request.getParameter("r_name"));String r_pass=chart.toString(request.getParameter("r_pass"));String r_sex=chart.toString(request.getParameter("r_sex"));String r_nianling=chart.toString(request.getParameter("r_nianling"));String s_email=chart.toString(request.getParameter("s_email"));String s_tel=chart.toString(request.getParameter("s_tel"));String s_qq=chart.toString(request.getParameter("s_qq"));String s_love=chart.toString(request.getParameter("s_love"));String s_zhuzhi=chart.toString(request.getParameter("s_zhuzhi"));String s_zhiwei=chart.toString(request.getParameter("s_zhiwei"));String s_beizhu=chart.toString(request.getParameter("s_beizhu"));//链接数据库Connection con=db.getCon();// 添加信息的SQL语句String sql = "insert into register(r_no,r_name,r_pass,r_sex,r_nianling,s_email,s_tel,s_qq,s_love,s_zhuzhi,s_zh iwei,s_beizhu,s_time)values('"+r_no+"','"+r_name+"','"+r_pass+"','"+r_sex+"','"+r_nianling+"','"+s_email+" ','"+s_tel+"','"+s_qq+"','"+s_love+"','"+s_zhuzhi+"','"+s_zhiwei+"','"+s_beizhu+"','"+ times.showTodayTime()+"')";int row = db.GetCount(sql);if(row > 0){//跳转页面out.println(popDialog.messageBox("注册成功,去登陆吧!","login.jsp"));}con.close();} catch (Exception e) {out.print("注册失败!");e.printStackTrace();}%>九、信息一览管理代码(文件mg_info.jsp)<table width="799" height="521" border="0" cellpadding="0" cellspacing="0"><tr><td valign="top" background="../image/RIGHT.jpg"><table width="799" height="26" border="0" cellpadding="0" cellspacing="0"><tr><td> <span class="STYLE1">员工信息管理</span></td></tr></table><table width="799" border="0" cellspacing="0" cellpadding="0"><tr><td width="36" align="center" bgcolor="#F0F0F0">编号</td><td width="83" align="center" bgcolor="#F0F0F0">账号</td><td width="67" align="center" bgcolor="#F0F0F0">密码</td><td width="36" align="center" bgcolor="#F0F0F0">性别</td><td width="35" height="30" align="center" bgcolor="#F0F0F0">年龄</td><td width="93" align="center" bgcolor="#F0F0F0">邮件</td><td width="62" align="center" bgcolor="#F0F0F0">电话</td><td width="70" align="center" bgcolor="#F0F0F0">QQ号</td><td width="80" align="center" bgcolor="#F0F0F0">爱好</td><td width="101" align="center" bgcolor="#F0F0F0">职位</td><td width="102" align="center" bgcolor="#F0F0F0">住址</td><td width="34" align="center" bgcolor="#F0F0F0">删除</td></tr><%int CountPage = 0;int CurrPage = 1;int PageSize = 15;int CountRow = 0;String StrPage = request.getParameter("Page");if (StrPage == null){CurrPage = 1;}else{CurrPage = Integer.parseInt(StrPage);}Connection con=my_info.getCon();if (con != null){try{String sqlyy = "Select * from register ";ResultSet rs=my_info.GetRs(sqlyy);if(!rs.next()){out.println("对不起,暂时没有员工信息");}else{st();int i = 0;CountRow = rs.getRow();CountPage = (CountRow/PageSize);if (CountRow%PageSize>0)CountPage++;Integer n = (CurrPage-1)*5+1;rs.first();rs.absolute(CurrPage*PageSize-PageSize+1);while (i<PageSize && !rs.isAfterLast()){%><tr><td align="center"><%=rs.getString("r_no")%></td><td align="center"><%=rs.getString("r_name")%></td><td align="center"><%=rs.getString("r_pass")%></td><td align="center"><%=rs.getString("r_sex")%></td><td height="25" align="center"><%=rs.getString("r_nianling")%></td><td align="center"><%=rs.getString("s_email")%></td><td align="center"><%=rs.getString("s_tel")%></td><td align="center"><%=rs.getString("s_qq")%></td><td align="center"><%=rs.getString("s_love")%></td><td align="center"><%=rs.getString("s_zhiwei")%></td><td align="center"><%=rs.getString("s_zhuzhi")%></td><td align="center"><a href="delete.jsp?id=<%=rs.getString("id")%>&c=1">删除</a></td></tr><%rs.next();i++;}}}catch (SQLException e){out.println(e.getMessage());}finally{con.close();}}%></table><table width="700" height="53" border="0" cellpadding="0" cellspacing="0"><tr ><td width="205" height="53" align="center">《<%=CurrPage%>/<%=CountPage %>》每页<%=PageSize %>条记录共<%=CountRow%>条记录</td><td width="495" align="left"><div align="left" ><%if (CurrPage>1){%><a href="mg_info.jsp?Page=<%=CurrPage-1%>">上一页</a><%}%><%if (CurrPage<CountPage){%><a href="mg_info.jsp?Page=<%=CurrPage+1%>">下一页</a><%}%><a href="mg_info.jsp?Page=<%=CountPage%>">最后一页</a></div></td></tr></table></td></tr></table>十、查询记录(文件salary_jilu.jsp)<script language="javascript">function check(){//判断用户编号是否为空if(form1.r_no.value==""){alert("请输入用户编号!");form1.r_no.focus();return false;}}</script><form id="form1" name="form1" method="post" action="salary_jilu.jsp" onSubmit="return check()"><table width="495" height="25" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td width="74">用户编号:</td><td width="179"><input type="text" name="r_no" id="r_no"/></td><td width="40">日期:</td><td width="151"><input name="c_shijian" type="text" id="c_shijian" value="<%=times.showTodayTime() %>" size="12" readonly> <script language='javascript'>if (!yers){document.write("<input type=button name='s' onclick='popUpCalendar(this, form1.c_shijian, \"yyyy-m-d\")' value='日历' style='font-size:12px'>")}</script></td><td width="51"><input type="submit" name="Submit" value="查询" /></td></tr></table></form><table width="799" border="0" cellspacing="0" cellpadding="0"><tr><td width="105" height="30" align="center" bgcolor="#F0F0F0">用户编号</td><td width="173" align="center" bgcolor="#F0F0F0">菜名</td><td width="82" align="center" bgcolor="#F0F0F0">单价</td><td width="104" align="center" bgcolor="#F0F0F0">数量</td><td width="147" align="center" bgcolor="#F0F0F0">就餐位置</td><td width="138" align="center" bgcolor="#F0F0F0">消费日期</td></tr><%int salary=0;int CountPage = 0;int CurrPage = 1;int PageSize = 10;int CountRow = 0;String StrPage = request.getParameter("Page");if (StrPage == null){CurrPage = 1;}else{CurrPage = Integer.parseInt(StrPage);}Connection con=salary_jilu.getCon();if (con != null){try{String r_no=request.getParameter("r_no");String c_shijian=request.getParameter("c_shijian");String sqlyy = "Select * from diancai where r_no='"+r_no+"' and c_shijian='"+c_shijian+"'";ResultSet rs=salary_jilu.GetRs(sqlyy);if(!rs.next()){out.println("对不起,暂时没有消费信息");}else{st();int i = 0;CountRow = rs.getRow();CountPage = (CountRow/PageSize);if (CountRow%PageSize>0)CountPage++;Integer n = (CurrPage-1)*5+1;rs.first();rs.absolute(CurrPage*PageSize-PageSize+1);while (i<PageSize && !rs.isAfterLast()){%><tr><td height="30" align="center"><%=rs.getString("r_no")%></td><td height="30" align="center"><%=rs.getString("c_name")%></td><td height="30" align="center"><%=rs.getString("c_danjia")%></td><td height="30" align="center"><%=rs.getString("c_shuliang")%></td><td height="30" align="center"><%=rs.getString("c_weizhi")%></td><td height="30" align="center"><%=rs.getString("c_shijian")%></td></tr><%salary=salary+Integer.parseInt(rs.getString("c_danjia"))*Integer.parseInt(rs.getString( "c_shuliang"));rs.next();i++;}}}catch (SQLException e){out.println(e.getMessage());}finally{con.close();}}%></table><br /><table width="593" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td height="30" align="center">总体消费为:<b><%=salary %>元</b> <a href="#" onClick="window.print()">打印》》</a></td></tr></table></td></tr></table>十一、修改信息代码(文件caidan_up.jsp和caidan_up_chuli.jsp)<table width="799" height="521" border="0" cellpadding="0" cellspacing="0"><tr><td valign="top" background="../image/RIGHT.jpg"><table width="799" height="26" border="0" cellpadding="0" cellspacing="0"><tr><td> <span class="STYLE1">菜单信息修改</span></td></tr></table><%String yonghu=(String)session.getAttribute("yonghu");String id=request.getParameter("id");String sqlo="select * from caidan where id='"+id+"'";ResultSet rs=db.GetRs(sqlo);if(!rs.next()){out.println("暂时没有菜单信息");}else{%><form id="form1" name="form1" method="post" action="caidan_up_chuli.jsp" ><table width="475" border="0" cellspacing="0" cellpadding="0"><tr><td height="25"> 菜名:<input name="c_name" type="text" id="c_name" value="<%=rs.getString("c_name") %>" readonly/></td></tr><tr><td height="25"> 单位:<input name="c_danwei" type="text" id="c_danwei" value="<%=rs.getString("c_danwei") %>"/></td></tr><tr><td height="25"> 单价:<input name="c_danjia" type="text" id="c_danjia" value="<%=rs.getString("c_danjia") %>"/></td></tr><tr><td height="25"> 备注:<textarea name="c_beizhu" cols="40" rows="5"。
西彼科技有限责任公司参考源码酒店管理系统彼岸2011-03-31本段源代码,参考与阳光酒店管理系统编写的系统包Sunsdk包1)System包CsHashtable.java/** @(#)CsHashtable.java 1.24 03/12/19** public class** Copyright 2006 CazoSoft, Inc. All rights reserved.*/package sunsdk.system;import java.util.*;/*** <code> CsHashtable </code>* <p>* 该类的作用是封装哈希表* <p>* <strong>注意: </strong> 本类使用的哈希表方法put, 可能存在不安全因素* <p>* 相关类:Hashtable** @author 鲜强* @version 2006.3.28 22:18* @see java.util.Hashtable* @since CAZOSOFT 1.0*/public class CsHashtable {/*** 静态变量功能: 构造一个hashtable 供其他函数使用*/private static Hashtable hTable = new Hashtable();/*** 构造函数功能: 构造函数为静态的不能创建对象*/private CsHashtable() {}/*** 放入对象函数功能: 把对象放入哈希表,对象为Object类型** @param key :* 键值, Object 对象* @param value :* 对象, Object 对象*/public static void put(Object key, Object value) {hTable.put(key, value);}/*** 返回对象函数功能: 从哈希表中取出对象,返回为Object类型** @param key :* 键值* @return : 一个Object 对象*/public static Object get(Object key) {return hTable.get(key);}/*** 返回大小函数功能: 返回哈希表的大小** @return : 一个int 哈希表长度值*/public static int size() {return hTable.size();}/*** 移除一个对象** @param key : 接受一个要移除的键值*/public static Object remove(Object key) {return hTable.remove(key);}}/**Sunini.java*############################################################################## ** [ 项目名] :* [ 公司名] : SunshineSOFT* [ 模块名] : 对于INI文件的相关操作* [ 文件名] : sunini.java* [ 相关文件] : config.ini* [ 文件实现功能] : 读取和保存INI文件* [ 作者] : 顾俊* [ 版本] : 1.1* ----------------------------------------------------------------------------* [ 备注] :* ----------------------------------------------------------------------------* [ 修改记录] :** [ 日期] [版本] [修改人] [修改内容]* 2006/03/31 1.0 顾俊创建* 2006/04/06 1.1 顾俊修改读取函数* ##--------------------------------------------------------------------------* 版权所有(c) 2006-2007, SunshineSOFT Corporation* --------------------------------------------------------------------------##** [ 函数说明] :** [## private sunini() {} ]:* 功能: 构造函数** [## public static String getIniKey (String k) {} ]:* 功能: 获得INI文件中的指定键的键值** [## public static void setIniKey (String k, String v) {} ]:* 功能: 设置k键的键值为v对象** [## public static void saveIni (String k[]) {} ]:* 功能: 将k字符数组中所有键所对应的键值保存到INI文件中** [ 遗留问题] : setIniKey ()方法不能处理键值中的转义字符**############################################################################## */package com.sunshine.sunsdk.system;import java.util.*;import java.io.*;public class sunini {private static Properties ini = null;static {try {ini = new Properties ();ini.load (new FileInputStream ("config.ini"));}catch (Exception ex) {System.out.println ("Load CONFIG.INI is false!!");}//End try}/**=======================================================================* ** [## private sunini() {} ]: 构造函数* 参数:无* 返回值:无* 修饰符:private* 功能:防止实例化sunini对象**=======================================================================** */private sunini() {}/**=======================================================================* ** [## public static String getIniKey (String k) {} ]:* 参数:String对象表示键* 返回值:String对象表示k键所对应的键值,如果失败则返回空串* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:获得INI文件中的指定键的键值**=======================================================================** */public static String getIniKey (String k) {if(!ini.containsKey (k)) { //是否有k 这个键System.out.println ("The [ " + k + " ] Key is not exist!!");return "";}//End if(!ini.containsKey (k))return ini.get (k).toString ();}/**=======================================================================* ** [## public static void setIniKey (String k, String v) {} ]:* 参数:String k对象表示键,String v对象表示键值* 返回值:无* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:设置k键的键值为v对象**=======================================================================** */public static void setIniKey (String k, String v) {if(!ini.containsKey (k)) { //是否有k 这个键System.out.println ("The [ " + k + " ] Key is not exist!!");return;}//End if(!ini.containsKey (k))ini.put (k, v);}/**=======================================================================* ** [## public static void saveIni (String k[]) {} ]:* 参数:String k[]字符串数组表示要保存的所有键* 返回值:无* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:将k字符数组中所有键所对应的键值保存到INI文件中**=======================================================================** */public static void saveIni (String k[]) {try {FileWriter fw = new FileWriter ("config.ini");BufferedWriter bw = new BufferedWriter ( fw );//循环变量i是k字符串数组的下标for (int i = 0; i < k.length; i++) {bw.write (k[i] + "=" + getIniKey (k[i]));bw.newLine ();}//End forbw.close ();fw.close ();}catch (Exception ex) {System.out.println ("Save CONFIG.INI is false.");}//End try}}Suntools.java/***############################################################################## ** [ 项目名] :* [ 公司名] : SunshineSOFT* [ 模块名] : 工具函数* [ 文件名] : suntools.java* [ 相关文件] :* [ 文件实现功能] : 测试数据是否合法及流水号自动分配* [ 作者] : 顾俊* [ 版本] : 1.2* ----------------------------------------------------------------------------* [ 备注] :* ----------------------------------------------------------------------------* [ 修改记录] :** [ 日期] [版本] [修改人] [修改内容]* 2006/04/07 1.0 顾俊建立isDate()函数* 2006/04/08 1.1 顾俊添加函数#A, #B, #C, #D* 2006/04/08 1.2 顾俊添加函数#E, #F, #G* ##--------------------------------------------------------------------------* 版权所有(c) 2006-2007, SunshineSOFT Corporation* --------------------------------------------------------------------------##** [ 函数说明] :** [## private suntools () {} ] :* 功能: 防止实例化suntools对象** [## public static boolean isDate (String date) {} ]:* 功能: 判断日期字符串是否合法函数** [## public static boolean isNum (String in) {} ]: #A* 功能: 测试字符串是否由数字(0-9)组成** [## public static boolean isNum (String in, int length, double min, double max) {} ]: #B* 功能: 测试字符串表示的数值及范围,且字符串只能是数字组成** [## public static String getNumber (int type) {} ]: #C* 功能: 自动分配单据编号, 自动递增** [## public static void savNumber (String num, int type) {} ]: #D* 功能: 将已用编号保存到INI文件** [## public static double getConsumeFactor(String sDate, String eDate) {} ]: #E* 功能: 计算酒店计费天数按INI文件中设置的** [## public static double getClockFactor(String sDate, String eDate) {} ]: #F* 功能: 计算酒店钟点房计费系数按INI文件中设置的** [## public static String getConsumeHour(String sDate, String eDate) {} ]: #G* 功能: 计算两个时间之间有几小时几分*** [ 遗留问题] :***############################################################################## */package com.sunshine.sunsdk.system;import java.util.*;import java.text.*;import java.sql.*;import com.sunshine.sunsdk.sql.*;public class suntools {public static final int Number_RZ = 0; //表示销售单号public static final int Number_YD = 1; //表示进货单号public static final int Number_JS = 1; //表示进货单号/**=======================================================================* ** [## private suntools () {} ]: 构造函数* 参数:无* 返回值:无* 修饰符:private* 功能:防止实例化suntools对象**=======================================================================** */private suntools () {}/**=======================================================================* ** [## public static boolean isDate (String date) {} ]:* 参数:String对象表示日期的字符串* 返回值:boolean 合法返回true* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:判断日期字符串是否合法函数**=======================================================================** */public static boolean isDate (String date) {SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");String isdate = date;if(date.length() == 10) //如果只有日期,函数自动加上00:00:00 isdate = date + " 00:00:00";try {sdf.parse (isdate);return true;}catch (Exception ex) {System.out.println ("feetools.isDate(): The DATE format is error .");return false;}}/**=======================================================================* ** [## public static boolean isNum (String in) {} ]:* 参数:String对象表示被测字符串* 返回值:boolean 合法返回true* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:测试字符串是否由数字(0-9)组成**=======================================================================** */public static boolean isNum (String in) {return isNum (in, 0, 0, 0);}/**=======================================================================* ** [## public static boolean isNum (String in, int length, double min, double max) {} ]:* 参数:String对象表示被测字符串* length变量表示字符串最大长度,取值0,表示没有长度限定* min,max变量限定了String对象表示的数值范围,当(length > 0)时* 返回值:boolean 合法返回true* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:测试字符串表示的数值及范围,且字符串只能是数字组成**=======================================================================** */public static boolean isNum (String in, int length, double min, double max) {String num = in;int point = 0; //'.'的个数int len = num.length ();if(length > 0) {if(len > length || len == 0) { //判断字符串长度,不合法空返回falseSystem.out.println ("suntools.isNum(): Length error.");return false;}//Endif}//End if(length > 0)elseif(len == 0) { //判断字符串是否为空,空返回falseSystem.out.println ("suntools.isNum(): String is NULL");return false;}//End if(len == 0)for (int i = len - 1; i >=0; i--) { //判断字符串只能是数字char ac = num.charAt (i);if(ac == '.' && point == 0 && i!= 0) { //如果是'.'字符,且是第一次出现,且不是只有一个点if(i > len - 4) { //判断小数位只能是两位point++;continue;}//Endif}//Endifif(ac < '0' || ac > '9' ) {System.out.println ("suntools.isNum(): Character isn't ( '0' - '9' )");return false;}//Endif}//Endforif(length !=0) {double s = Double.parseDouble (num); //现在len为字符串表示的数值if(s < min || s >max) { //限制范围min-max之间System.out.println ("suntools.isNum(): Amount limit error. ");return false;}//Endif}//End if(length != 0)return true;}/**=======================================================================* ** [## public static String getNumber (int type) {} ]:* 参数:int变量表示要获得什么类型的单号(见类头常量)* 返回值:String对象: 单号;* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:自动分配单据编号, 自动递增**=======================================================================** */public static String getNumber (int type) {GregorianCalendar gc = new GregorianCalendar();String tp, number, month, day; //单号标头, 单号记数位, 为月份, 为天int numLen = 0; //单号的默认位数if(type == Number_RZ) { //要获取销售单号tp = sunini.getIniKey ("LodgName");number = sunini.getIniKey ("LodgNumber");}else if(type == Number_YD){ //要获取进货单号tp = sunini.getIniKey ("EngaName");number = sunini.getIniKey ("EngaNumber");}else {tp = sunini.getIniKey ("ChouName");number = sunini.getIniKey ("ChouNumber");}numLen = number.length (); //得到单号的默认位数number = Integer.parseInt (number) + 1 + ""; //将单号增1,再转成字符串//判断记数号是否超位(超出要求长度)if(number.equals ((int)Math.pow (10, numLen - 1) + "") && number.length() > 1)number = number.substring(1); //单号记数位清零//for循环,用'0'为number补位(i = 当前号码位数, i < numLen)for (int i = number.length (); i < numLen; i++) {number = "0" + number;}//Endfor//为月份补'0'month = gc.get (GregorianCalendar.MONTH) + 1 + "";if( month.length() == 1)month = "0" + month;//为天补'0'day = gc.get (GregorianCalendar.DAY_OF_MONTH) + "";if( day.length () == 1)day = "0" + day;//连接单号标头,日期,记数位;组成单据号码tp = tp + gc.get (GregorianCalendar.YEAR) + month + day + number;return tp; //返回单号}/**=======================================================================* ** [## public static void savNumber (String num, int type) {} ]:* 参数:String对象表示要保存的单号* int变量表示要保存什么类型的单号(见类头常量)* 返回值:无* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:将已用编号保存到INI文件**=======================================================================** */public static void savNumber (String num, int type) {//INI文件中的键名String ini[] = { "[SOFTINFO]", "UserName", "CompName", "[CONFIG]", "Soft_First","Default_Link" , "Default_Page", "Sys_style", "[NUMBER]","LodgName", "LodgNumber", "EngaName", "EngaNumber", "ChouName","ChouNumber", "[HABITUS]", "Ck_Habitus", "Ck_Minute", "[PARTTIME]","In_Room", "Out_Room1", "Out_Room2", "InsuDay", "ClockRoom1","ClockRoom2", "InsuHour1", "InsuHour2", "[JDBC]", "DBFname","UserID", "Password", "IP", "Access", "[ODBC]", "LinkName" };String bt;if(type == Number_RZ) {bt = sunini.getIniKey ("LodgName");sunini.setIniKey ("LodgNumber", num.substring (bt.length () + 8));}else if(type == Number_YD){bt = sunini.getIniKey ("EngaName");sunini.setIniKey ("EngaNumber", num.substring (bt.length () + 8));} else{bt = sunini.getIniKey ("ChouName");sunini.setIniKey ("ChouNumber", num.substring (bt.length () + 8));}//保存到INI文件sunini.saveIni (ini);}/**=======================================================================* ** [## public static double getConsumeFactor(String sDate, String eDate) {} ]:* 参数:String sDate对象表示开始时间* String eDate变量表示结束时间* 返回值:double* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:计算酒店计费天数按INI文件中设置的**=======================================================================** *///获得消费系数public static double getConsumeFactor(String sDate, String eDate) {//获得开始日期时间的--年--月--日--时--分--秒String syh [] = sDate.trim ().split(" ");String symd[] = syh[0].trim().split("-");String shms[] = syh[1].trim().split(":");int sy = Integer.parseInt(symd[0]);int sM = Integer.parseInt(symd[1]);int sd = Integer.parseInt(symd[2]);int sh = Integer.parseInt(shms[0]);int sm = Integer.parseInt(shms[1]);int ss = Integer.parseInt(shms[2]);//获得结束日期时间的--年--月--日--时--分--秒String eyh [] = eDate.trim ().split(" ");String eymd[] = eyh[0].trim().split("-");String ehms[] = eyh[1].trim().split(":");int ey = Integer.parseInt(eymd[0]);int eM = Integer.parseInt(eymd[1]);int ed = Integer.parseInt(eymd[2]);int eh = Integer.parseInt(ehms[0]);int em = Integer.parseInt(ehms[1]);int es = Integer.parseInt(ehms[2]);//获得sDate的long值long sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime();//获得eDate的long值long edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime();double db = 0;if(sdt > edt) { //不合法开始日期一定要小于结束日期db = -1;return db;}//Endifif(sdt == edt) { //无时间差db = 0;return db;}//Endifint insuDay = (int)(edt - sdt)/3600000;if(insuDay < 24) { //入住不到一天if(Integer.parseInt(sunini.getIniKey("InsuDay")) == 1)db = 1; //按全天计费else {if(insuDay > 1 && insuDay < 12)db = 0.5; //如果不按全天计费,则大于1小时按半天计费elsedb = 1; //如果不按全天计费,则大于12小时按全天计费}//Endifreturn db;}//Endif//几点之后按新的一天计费int inRoom = Integer.parseInt(sunini.getIniKey("In_Room"));if(sh < inRoom) {db = 0.5;}//Endifsh = inRoom; //多的时间已经加了系数,去掉多余的//几点之后按半天计费int outRoom1 = Integer.parseInt(sunini.getIniKey("Out_Room1"));int outRoom2 = Integer.parseInt(sunini.getIniKey("Out_Room2"));if(eh > outRoom1 && eh < outRoom2) {db = db + 0.5;eh = outRoom1; //多的时间已经加了系数,去掉多余的}else if(eh >= outRoom2) {db = db + 1;eh = outRoom2;}//Endif//计算入住时间sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime();edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime();db = db + (edt - sdt)/86400000;return db;}/**=======================================================================* ** [## public static double getClockFactor(String sDate, String eDate) {} ]:* 参数:String sDate对象表示开始时间* String eDate变量表示结束时间* 返回值:double* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:计算酒店钟点房计费系数按INI文件中设置的**=======================================================================** */public static double getClockFactor(String sDate, String eDate) {//获得开始日期时间的--年--月--日--时--分--秒String syh [] = sDate.trim ().split(" ");String symd[] = syh[0].trim().split("-");String shms[] = syh[1].trim().split(":");int sy = Integer.parseInt(symd[0]);int sM = Integer.parseInt(symd[1]);int sd = Integer.parseInt(symd[2]);int sh = Integer.parseInt(shms[0]);int sm = Integer.parseInt(shms[1]);int ss = Integer.parseInt(shms[2]);//获得结束日期时间的--年--月--日--时--分--秒String eyh [] = eDate.trim ().split(" ");String eymd[] = eyh[0].trim().split("-");String ehms[] = eyh[1].trim().split(":");int ey = Integer.parseInt(eymd[0]);int eM = Integer.parseInt(eymd[1]);int ed = Integer.parseInt(eymd[2]);int eh = Integer.parseInt(ehms[0]);int em = Integer.parseInt(ehms[1]);int es = Integer.parseInt(ehms[2]);//获得sDate的long值long sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime();//获得eDate的long值long edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime();//获得时间差double db = 0;if(sdt > edt) { //不合法开始日期一定要小于结束日期db = -1;return db;}//Endif//获得两个时间之间有多少秒edt = (edt - sdt) / 1000;//--------------------------------------------------------------------//if(edt <= 60 * Integer.parseInt(sunini.getIniKey("ClockRoom1"))) { db = 0; //开房后几分钟开始计费,读INI文件设置return db;}//Endif//--------------------------------------------------------------------//if(edt / 60 < 60 * Integer.parseInt(sunini.getIniKey("ClockRoom2"))) { db = 1; //不足几小时按一个单位计费return db;}//Endif//--------------------------------------------------------------------////除以上可能的正常计费公式如下db = edt / 3600; //获得过去的小时数edt = edt % 3600 / 60; //获得多余的分钟数if(edt > Integer.parseInt(sunini.getIniKey("InsuHour2")) && edt <= Integer.parseInt(sunini.getIniKey("InsuHour1"))) {db = db + 0.5; //超过多少分,但小于多少分部分,收半价}else if(edt > Integer.parseInt(sunini.getIniKey("InsuHour2"))) {db = db + 1; //超过多少分的,收全价}//Endif//--------------------------------------------------------------------//return db;}/**=======================================================================* ** [## public static String getConsumeHour(String sDate, String eDate) {} ]:* 参数:String sDate对象表示开始时间* String eDate变量表示结束时间* 返回值:String* 修饰符:public static 可以不实例化对象而直接调用方法* 功能:计算两个时间之间有几小时几分**=======================================================================** */public static String getConsumeHour(String sDate, String eDate) {//获得开始日期时间的--年--月--日--时--分--秒String syh [] = sDate.trim ().split(" ");String symd[] = syh[0].trim().split("-");String shms[] = syh[1].trim().split(":");int sy = Integer.parseInt(symd[0]);int sM = Integer.parseInt(symd[1]);int sd = Integer.parseInt(symd[2]);int sh = Integer.parseInt(shms[0]);int sm = Integer.parseInt(shms[1]);int ss = Integer.parseInt(shms[2]);//获得结束日期时间的--年--月--日--时--分--秒String eyh [] = eDate.trim ().split(" ");String eymd[] = eyh[0].trim().split("-");String ehms[] = eyh[1].trim().split(":");int ey = Integer.parseInt(eymd[0]);int eM = Integer.parseInt(eymd[1]);int ed = Integer.parseInt(eymd[2]);int eh = Integer.parseInt(ehms[0]);int em = Integer.parseInt(ehms[1]);int es = Integer.parseInt(ehms[2]);//获得sDate的long值long sdt = new Timestamp(sy, sM, sd, sh, sm, ss, 0).getTime();//获得eDate的long值long edt = new Timestamp(ey, eM, ed, eh, em, es, 0).getTime();//获得时间差sdt = edt - sdt;//生成过去多少时间的字符串String t = sdt / 3600000 + "小时" + sdt % 3600000 / 60000 + "分";return t;}}ToCap.java/** @(#)ToCap.java 1.24 03/12/19** Copyright 2006 CazoSoft, Inc. All rights reserved.*/package sunsdk.system;/*** <code> ToCap </code>* <p>* 本类用于转化中文大写人民币** @author 鲜强* @version 22.14, 04/05/06* @since CAZOSOFT 1.0*/public class ToCap {/*** 用户设置大写钱数(100,000,000 (一亿)以内).** @param money :* String 接收用户的正实数.* @return : String 包括圆整或角分的中文大写人民币,如果不合法,将返回空(null) */public String setMoney(String money) {String re = null;double num;//测试数据是否合法try {num = Double.parseDouble(money.trim());if (num < 100000000 && num >= 0) {//合法, 使用字符串开始转换re = this.mySetMoney(money);}//end if} catch (Exception ex) {}//end try//返回值return re;}/*** 大写转换函数. 功能: 转换数字为中文大写** @param num :* int 接受整数* @return : String 大写数字零到玖.*/private String setDaXie(int num) {String re = null;switch (num) {case 0:re = "零";break;case 1:re = "壹";break;case 2:re = "贰";break;case 3:re = "叁";break;case 4:re = "肆";break;case 5:re = "伍";break;case 6:re = "陆";break;case 7:re = "柒";break;case 8:re = "捌";break;case 9:re = "玖";break;default:break;}return re;}/*** 处理大写人民币** @param num :* String 接收处理过的字符串(实为数字). * @return : 返回处理过的大写人民币.*/private String mySetMoney(String num) throws Exception {//要返回的字符串String re = "";//转换过程String setNum = null;int index = num.indexOf(".");//处理整数if (index == -1) {setNum = num;} else {setNum = num.substring(0, index);}int weiShu = setNum.length();if (weiShu > 0) {int leng = setNum.length();int numYuan = Integer.parseInt("" + setNum.charAt(weiShu - 1));String zhuanYuan = setDaXie(numYuan);re = zhuanYuan;//个位if (weiShu > 1) {int numShi = Integer.parseInt("" + setNum.charAt(weiShu - 2));String zhuanShi = setDaXie(numShi);//十位re = zhuanShi + "拾" + re;if (weiShu > 2) {int numBai = Integer.parseInt(""+ setNum.charAt(weiShu - 3));String zhuanBai = setDaXie(numBai);//百位re = zhuanBai + "佰" + re;if (weiShu > 3) {int numQian = Integer.parseInt(""+ setNum.charAt(weiShu - 4));String zhuanQian = setDaXie(numQian);//千位re = zhuanQian + "仟" + re;if (weiShu > 4) {int numWan = Integer.parseInt(""+ setNum.charAt(weiShu - 5));String zhuanWan = setDaXie(numWan);//万位re = zhuanWan + "万" + re;if (weiShu > 5) {int numShiWan = Integer.parseInt(""+ setNum.charAt(weiShu - 6));String zhuanShiWan = setDaXie(numShiWan);//十万位re = zhuanShiWan + "拾" + re;if (weiShu > 6) {int numBaiWan = Integer.parseInt(""+ setNum.charAt(weiShu - 7));String zhuanBaiWan = setDaXie(numBaiWan);//百万位re = zhuanBaiWan + "佰" + re;if (weiShu > 7) {int numQianWan = Integer.parseInt(""+ setNum.charAt(weiShu - 8));String zhuanQianWan = setDaXie(numQianWan);//千万位re = zhuanQianWan + "仟" + re;}//end qianwan}//end baiwan}//end shiwan}//end wan}//end qian}//end bai}//end shi}//end yuan//处理小数if (index != -1) {String xiaoShu = num.substring(index + 1, num.length());int leng = xiaoShu.length();int numJiao = Integer.parseInt("" + xiaoShu.charAt(0));String zhuanJiao = setDaXie(numJiao);int numFen;if (leng == 1) {numFen = 0;}//end ifnumFen = Integer.parseInt("" + xiaoShu.charAt(1));String zhuanFen = setDaXie(numFen);//十分位+百分位if (numJiao == 0 && numFen != 0 || numJiao != 0 && numFen != 0) {re = re + "圆" + zhuanJiao + "角" + zhuanFen + "分";} else {re = re + "圆整";}//end if} else {re = re + "圆整";}//end indexreturn re;}}2)swing包CsUIManager.java/** @(#)CsUIManager.java 2006-4-13** public class** Copyright 2006 CazoSoft, Inc. All rights reserved.*/package sunsdk.swing;import java.awt.*;import javax.swing.*;import javax.swing.plaf.metal.*;/*** <code> CsUIManager </code>* <p>* 说明:本类为外观管理器* <p>* <strong>警告:</strong>* 使用金属(BOLD)外观时,输入中文会有异常,但不影响系统运行* <p>* 相关库文件:o.jar** @author 鲜强* @version 2006-4-13 23:05:39* @since CAZOSOFT 1.0*/public class CsUIManager {//Windows 外观public static final int WINDOWS = 0;//Java 默认外观public static final int METAL = 1;//Linux 外观public static final int MOTIF = 2;//WindowsClassic 外观public static final int WINDOWSCLASSIC = 3;//Alloy 外观public static final int ALLOY = 4;//Alloy 玻璃外观public static final int GLASSTHEMEALLOY = 5;//Alloy 迷幻外观public static final int ACIDTHEMEALLOY = 6;//Alloy 贝多因外观public static final int BEDOUIDTHEMEALLOY = 7;//Alloy 默认外观public static final int DEAFULTTHEMEALLOY = 8;//Bold 外观public static final int BOLD = 9;/*** 界面风格选择器** @param cp* 接受要改变的控件* @param style* 接受界面下标* @return 返回成功设置与否*/public static boolean setUI(Component cp, int style) {try {switch (style) {case 0:UIManager.setLookAndFeel("com.sun.java.swing.plaf."+ "windows.WindowsLookAndFeel");break;case 1:UIManager.setLookAndFeel("javax.swing.plaf."+ "metal.MetalLookAndFeel");break;case 2:UIManager.setLookAndFeel("com.sun.java.swing.plaf."+ "motif.MotifLookAndFeel");break;case 3:UIManager.setLookAndFeel("com.sun.java.swing.plaf."+"windows.WindowsClassicLookAndFeel");break;case 4:UIManager.setLookAndFeel("com.incors.plaf."+ "alloy.AlloyLookAndFeel");break;case 5:UIManager.setLookAndFeel("soft.wes.feels."+ "GlassThemeAlloyLookAndFeel");break;case 6:UIManager.setLookAndFeel("soft.wes.feels."+ "AcidThemeAlloyLookAndFeel");break;case 7:UIManager.setLookAndFeel("soft.wes.feels."+ "BedouinThemeAlloyLookAndFeel");break;case 8:UIManager.setLookAndFeel("soft.wes.feels."+ "DefaultThemeAlloyLookAndFeel");break;case 9:UIManager.put("swing.boldMetal", Boolean.FALSE);//可设置对话框外观JDialog.setDefaultLookAndFeelDecorated(true);//可设置设置窗口外观JFrame.setDefaultLookAndFeelDecorated(true);Toolkit.getDefaultToolkit().setDynamicLayout(true);System.setProperty("sun.awt.noerasebackground","true");UIManager.setLookAndFeel(new MetalLookAndFeel());break;}} catch (Exception ex) {JOptionPane.showMessageDialog(null, "更换风格失败,以原风格显。
餐饮管理系统文档一、引言本文档旨在对餐饮管理系统进行详细的介绍,包括系统的设计目的、功能需求、技术架构、用户界面等方面的内容。
该文档将为开发团队提供全面的指导,确保系统的高效实施与顺利交付。
二、概述1.1 项目背景现代社会快节奏的生活方式使得餐饮行业迅速发展,越来越多的人选择外出用餐。
为了提升餐饮企业的管理效率和顾客体验,我们致力于开发一款全面的餐饮管理系统。
1.2 项目目标本系统旨在提供一个完整而高效的餐饮管理解决方案,满足餐厅、餐饮连锁企业等不同规模、不同需求的客户。
三、功能需求2.1 前台管理餐饮管理系统的前台管理包括顾客点餐、订单管理、支付流程等功能。
具体要求如下:- 如果顾客需要点餐,系统应提供菜单浏览和点餐功能,并能根据顾客选择的菜品自动计算总金额;- 系统应支持多种支付方式,包括现金支付、刷卡支付、扫码支付等,并能自动生成支付凭证;- 前台管理界面应简洁明了,便于操作,同时能够显示当前订单情况,包括待支付和已完成的订单。
2.2 后台管理餐饮管理系统的后台管理涉及到餐厅的运营、库存管理、员工管理等方面。
具体要求如下:- 系统应提供餐厅运营数据的监控与统计功能,包括营业额、客流量、热卖菜品等;- 系统应支持对餐厅库存的实时管理,包括菜品库存、原材料库存等,并能预警低库存情况;- 员工管理功能应包括员工信息的录入与查询、工作排班和考勤管理等。
四、技术架构3.1 系统架构餐饮管理系统的技术架构应采用分层结构,包括前端展示层、应用层和数据库层。
具体架构如下:- 前端展示层:采用HTML、CSS和JavaScript进行页面设计和交互操作;- 应用层:采用Java语言开发,可基于SpringMVC框架实现各种业务逻辑;- 数据库层:采用关系型数据库,如MySQL或Oracle,存储系统的核心数据。
3.2 技术要求为了保证系统的高效运行和良好的用户体验,我们对系统的技术要求如下:- 前端应采用响应式布局,以适应不同设备的屏幕尺寸和分辨率;- 后台应实现数据缓存和负载均衡,以提高系统的响应速度和并发处理能力;- 系统应具备良好的安全性能,包括用户权限管理、数据加密等。
智慧餐系统源代码设计方案智慧餐系统是一种基于计算机技术和物联网技术的餐饮管理系统,旨在提高餐厅的运营效率和用户体验。
下面是一个智慧餐系统的源代码设计方案,包括系统架构、数据库设计、前端设计和后端设计。
1. 系统架构智慧餐系统的系统架构可以采用三层架构,即前端、后端和数据库三层。
- 前端层:前端层主要负责用户界面和用户交互,可以使用HTML、CSS和JavaScript等技术来实现。
- 后端层:后端层主要负责业务逻辑和数据处理,可以使用Java、Python等编程语言来实现,并使用框架如Spring MVC来简化开发。
- 数据库层:数据库层主要负责数据的存储和管理,可以使用关系型数据库如MySQL或非关系型数据库如MongoDB来实现。
2. 数据库设计智慧餐系统的数据库设计需要根据实际需求进行设计,一般包括以下几个表:- 用户表:用于存储用户的基本信息,包括用户ID、用户名、密码、手机号等。
- 菜品表:用于存储菜品的信息,包括菜品ID、菜名、价格、图片等。
- 订单表:用于存储订单的信息,包括订单ID、用户ID、菜品ID、下单时间、订单状态等。
3. 前端设计智慧餐系统的前端设计需要考虑用户交互和用户体验,可以采用响应式设计来适配不同的设备。
- 登录页面:用于用户登录,需要校验用户输入的用户名和密码。
- 菜单页面:用于展示菜品信息,可以根据用户的选择进行筛选和排序。
- 订单页面:用于展示用户订单的信息,包括订单状态和菜品详情。
- 结算页面:用于用户结算订单,可以选择支付方式和配送方式。
4. 后端设计智慧餐系统的后端设计需要实现业务逻辑和数据处理,可以采用面向对象的编程思想和设计模式。
- 用户管理:包括用户登录和注册功能,需要进行用户身份验证和密码加密。
- 菜品管理:包括菜品的增删改查功能,需要进行菜品信息的验证和管理。
- 订单管理:包括订单的生成和更新功能,需要对订单状态进行管理和更新。
5. 安全性设计智慧餐系统的安全性设计需要考虑用户数据的保护和系统的防护。
课题设计﹡﹡酒店管理系统﹡﹡需求分析一、可行性研究“民以食为天”,随着人民生活水平的提高,餐饮业在服务行业中占有越来越重要的地位。
努力在当前餐饮行业日趋激烈的竞争中脱颖而出,已成为每位餐饮业经营者所追求的目标。
经过多年发展,餐饮管理已经逐渐由定性管理,进入到重视定量管理的科学阶段。
众所周知,在定量管理的具体实现方法和手段方面,最有效的工具就是电脑管理。
传统的手工操作管理存在着许多无法避免的问题,例如:●人工计算帐单金额容易出现差错。
●收银工作中跑单、漏单、偷钱现象普遍。
●个别服务员作弊、改单、宰客情形时有发生。
●客人消费单据难以保存和查询。
●无法对大量营业数据进行统计分析。
1.1用户对本系统的要求A.该系统能够接受预定,前台点菜,厨房传菜,数据备份和恢复,流水账单统计功能,采购管理等功能并可以不断扩充其功能。
B.系统的数据来源是酒店的菜谱、酒水饮料的名称,及其价格、数量,可以及时对酒店的客户的消费进行统计结账,方便快捷。
C. 系统需要员工输入账号和密码才能操作,可以避免其它人员的恶意操作给酒店带来的损失,且系统的数据有保护和备份功能。
1.2本软件的设计目标A.采用本系统可以大大减少前台的服务人员的人数,直接和厨房联系加快上菜速度。
B.由于采用计算机操作,可以大大提高操作速度。
C.系统应有以下一些功能:★包括餐饮收银等各综合收银点★菜谱管理、台号(场所)管理★开单、点菜、加菜、退菜、结账、免单★换台、支持一单结帐和多单合并结帐★各类收银班报表、日报表及统计报表★餐厅转前台帐、查询总营业情况★信息查询、服务员交接班及定制报表二、需求功能分析餐饮管理系统功能模块说明如下:前台营业日常营业操作功能,包括:●日始日结:设定每个营业日的开始和结束,并且进行每日营业的初始化及员工交接班。
●点菜收银:点菜(包括代码输入、名称输入、鼠标输入等)、账单结帐(包括现金结帐、信用卡结帐、签单等)、修改账单(包括折扣、调整服务费等。
jsp订餐系统源码课程设计一、课程目标知识目标:1. 让学生掌握JSP的基本语法和结构,并能运用到订餐系统的开发中;2. 让学生了解数据库的基本操作,能够实现数据的增删改查;3. 使学生掌握HTML、CSS和JavaScript等前端技术,实现订餐系统的界面设计和交互功能;4. 让学生了解软件工程的基本原理,能够按照需求分析、设计、编码、测试等阶段进行项目开发。
技能目标:1. 培养学生运用JSP技术进行动态网站开发的能力;2. 培养学生独立分析和解决实际问题的能力;3. 提高学生的团队协作和沟通能力,能够在项目中分工合作,共同完成任务;4. 培养学生具备一定的项目管理和时间规划能力。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣和热情,培养良好的学习习惯;2. 培养学生的创新意识和实践能力,敢于尝试新技术,勇于解决困难;3. 引导学生树立正确的价值观,认识到技术对社会发展的作用,关注用户需求和体验;4. 培养学生的诚信意识和责任感,遵守编程规范,注重代码质量,确保项目安全可靠。
课程性质:本课程为实践性较强的课程,以项目驱动的方式进行教学,注重培养学生的动手能力和实际操作技能。
学生特点:学生具备一定的编程基础,对JSP技术有一定了解,但实践经验不足。
教学要求:教师需结合实际项目案例进行讲解,引导学生主动参与,注重理论与实践相结合,强化实践操作环节,确保学生能够学以致用。
同时,关注学生的个体差异,提供个性化的辅导与指导,确保每位学生都能在课程中学有所获。
二、教学内容1. JSP基础知识:JSP语法、指令、脚本元素、标准标签库、内置对象、EL表达式等;2. 数据库操作:数据库连接、SQL语句编写、PreparedStatement使用、事务处理等;3. 前端技术:HTML、CSS、JavaScript基本语法,DOM操作,表单验证等;4. 订餐系统需求分析:功能模块划分,界面设计,数据库表设计等;5. 订餐系统核心功能实现:用户注册、登录、菜品展示、购物车、订单处理等;6. 项目测试与优化:单元测试、集成测试、性能优化、安全性分析等;7. 项目部署与维护:部署到服务器,域名解析,数据备份,系统监控等。
点餐系统源码餐饮小程序源码开发搭建点餐系统是一款为管理餐饮业点餐活动而开发的应用程序。
它还有助于保存客户提交订单的记录,防止订单退货/投诉并改善订单放置。
支持餐厅日常运营的功能也集成到系统中。
使用该软件,客户可以查看食物菜单、下订单并将食物送到他们家门口。
今天将在文章中详细介绍点餐系统项目和源代码,希望这篇文章对大家有帮助。
项目名称:点餐系统源码演示:c.ymzan.top使用的语言: PHPPHP版本(推荐): 5.6 或更新版本数据库: MySQL部分源码展示:Homepage.html<HTML><link rel="stylesheet" href="/bootstrap/4.3.1/css/bootstrap. min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"><script src="/bootstrap/4.3.1/js/bootstrap.min.js" integrity= "sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script><BODY><div class="container" style="background-color:#E6D3F2;"> <div class="row" style="height: 5%; background-color:#D193F7; padding:40px;"><div class="col-12"></div></div><div class="row" style="height: 5%;background-color:#480673; color:#ffffff;"><div class="col-8"><h3>Gourmet Online Food Order</h3></div><div class="col-2"><a href="HomePage.html">Log In to Order</a></div> <div class="col-2"><a href="adminLogin.html">Admin Login</a></div> </div><div class="row" style="height: 20%; "><div class="col-12"></div></div><span class="align-middle" ><div class="row"><div class="col"></div><div class="colcol-lg-2" style="background-color:#ffffff; padding:40px; border-color:#230237; border-style: solid;border-width: thin;"><form method="POST" action="verifyUser.php?utype=user "><div class="form-group"><label for="exampleInputName">User Name</label><input type="string" class="form-control" id="username" aria-describedby="emailHelp" placeholder="Enter Your Name" nam e="username"><small id="emailHelp" class="form-text text-muted">Enter a User Name that your will remember.</small> </div><div class="form-group"><label for="exampleInputPassword1">Password</label> <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password" name="password"><small id="passwordHelp" class="form-text text-muted">Keep it cryptic as possible.</small></div><button type="submit" class="btn btn-primary">Submit</button><a class="btn btn-primary" data-toggle="collapse" href="NewUser.php" role="button" aria-expanded="false" aria-controls="collapseExample"> New User</a></form></div><div class="col -md-auto"></div></div></span><div class="row" style="height: 20%; "><div class="col-12"></div></div></div></BODY></HTML>NewUser.php<HTML><link rel="stylesheet" href="/bootstrap/4.3.1/css/bootstrap. min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"><script src="/bootstrap/4.3.1/js/bootstrap.min.js" integrity= "sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script><BODY><?phpsession_start();$_SESSION['cart']="";><div class="container" style="background-color:#E6D3F2;"> <div class="row" style="height: 5%; background-color:#D193F7; padding:40px;"><div class="col-12"></div></div><div class="row" style="height: 5%;background-color:#480673; color:#ffffff;"><div class="col-8"><h3>Gourmet Online Food Order</h3></div><div class="col-2"><a href="HomePage.html">Log In to Order</a></div> <div class="col-2"><a href="NewUser.html">Register as New User</a></div> </div><div class="row" style="height: 10%; "><div class="col-12"></div></div><span class="align-middle" ><div class="row"><div class="col"></div><div class="colcol-lg-2" style="background-color:#ffffff; padding:40px; border-color:#230237; border-style: solid;border-width: thin;"><form method="POST" Action="SaveUser.php"><div class="form-group"><label for="exampleInputName">User Name</label><input type="string" class="form-control" id="username" name="username" aria-describedby="emailHelp" placeholder="Enter Your Name"> <small id="emailHelp" class="form-text text-muted">Enter a User Name that your will remember.</small> </div><div class="form-group"><label for="exampleInputPassword1">Password</label><input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password" name="password"><small id="passwordHelp" class="form-text text-muted">Keep it cryptic as possible.</small></div><div class="form-group"><label for="exampleInputPassword1">Confirm Password</l abel><input type="password" class="form-control" id="exampleInputPassword1" placeholder="Confirm Pa ssword" name="cpassword"></div><div class="form-group"><label for="exampleInputPhone">Contact Number</label> <input type="String" class="form-control" id="PhoneNo" placeholder=" Contact Number" name= "phoneno"></div><div class="form-group"><label for="exampleInputemail">EmailID</label><input type="String" class="form-control" id="Email" placeholder=" Email ID" name="email"></div><div class="form-group"><label for="exampleInputPhone">Delivery Address</label> <input type="String" class="form-control" id="DelAdd" placeholder=" Delivery Adderess" name= "DeliAdd"></div><div class="form-group"><label for="exampleInputemail">City</label><input type="String" class="form-control" id="city" placeholder=" City" name="city"></div><button type="submit" class="btn btn-primary">Submit</button></form></div><div class="col -md-auto"></div></div></span><div class="row" style="height: 20%; "><div class="col-12"></div></div></div></BODY></HTML>SaveUser.php<?php$con=mysqli_connect("localhost","root","","foodorderdb");$un=$_POST["username"];$pwd=$_POST["password"];$phno=$_POST["phoneno"];$eml=$_POST["email"];$dadd=$_POST['DeliAdd'];$cty=$_POST['city'];$utype="user";$qry="Insert into Users_tbl values ('$un','$pwd','$utype','$p hno','$eml','$dadd','$cty')";if (mysqli_query($con,$qry)==TRUE){echo '<script> alert("Successful");</script>';header('refresh:0;url=HomePage.html');}elseecho '<script> alert("Please try again");</script>';>如何运行点餐系统源码?下载压缩文件;下载并安装 XAMPP;运行 XAMPP 控制面板并启动 MySQL 和 Apache;将项目文件夹移动到“htdocs”文件夹(不是分离的 .zip 文件);打开“http://localhost/admin”并创建“登录详细信息和项目信息”文件中给出的数据库;单击新建以创建数据库;将数据库命名为 source_leavedb;单击导入以导入 sql 文件;点击选择文件,选择离开文件夹中的文件。
餐饮管理系统1、前言在餐饮业务竞争越来越激烈的今天,如何提高服务质量,其管理能力显的越来越重要。
尤其是对一些大的餐饮店,餐饮店内部服务项目越多,管理难度越大,既要处理前台又要处理后台的工作,所以一个好的管理系统可以提高酒店的管理水平也可以大幅度提高酒店服务水平。
1。
1目的随着当今社会信息化的日新月异的发展,计算机应用已经渗透到日常工作的许多方面无论是其自身还是所发挥的作用,计算机都标志着一种高科技、高效率和高水平.为了企业创先进、争一流,为了企业的发展一套好的系统必不可少。
现在餐饮业发展速度飞快,要想在激烈的社会竞争有一席之地,好的服务是最基本的保障,此次开发的餐饮管理系统就是针对现代化社会管理和要求,在服务上提高自己的效率,使自己的公司立于不败之地.1.2定义餐饮管理系统,SQL,E—R图1。
3 参考资料《数据库应用系统开发技术》朱如龙刘焰机械出版社2004年8月《VC++与SQL2000开发技术》汪晓平钟军人民邮电出版社2004年8月2、系统设计2.1系统目标设计餐饮管理系统的主要目标是实现对酒店内部各种管理的电子化、自动化,提高各个模块之间的办公效率,为高质量餐饮服务提供保证。
2.2开发设计思想餐厅系统是按照国内餐饮行业最新要求开发的全心概念的信息管理系统.该系统将餐厅收银、往来帐务结算及销售情况统计工作在单计算机或网络系统中完成。
主要特点包括:*代码菜谱编制,方便统计,方便输入;*开单、改单、结算、打印、用户界面方便友好;*系统专设往来账、内部账,结算方式灵活多样,结算消息详尽;*系统可同前台系统衔接,查询客人信贷情况,往前台客人帐户转账;*报表真实,实用性强,如:收银报表汇总收银、支票、信用卡、转帐等情况;菜肴销售报表汇总各种菜肴的日、月销售量;员工销售统计表,可打印值台人员销售业绩核实报表提供依据。
*账务系统共讷讷感的完整性.一旦该系统正式运行,餐厅每日的营业账和全部往来客户的账务操作结算都将依靠计算机,该系统面对当前餐厅餐饮业各种负复杂的结算要求应具有很强的应变能力。
本源码下载地址:/总目录可行性研究报告 (3)1 可行性研究报告引言 (3)2 可行性研究的前提 (4)3 对现有系统的分析 (5)4 所建议的系统 (5)4.1 对所建议系统的说明 (5)4.2 功能说明 (6)4.4 影响 (7)4.4.1 对软件的影响 (7)4.4.2 对用户单位机构的影响 (8)4.4.3 对开发的影响 (8)4.4.4 对经费开支的影响 (8)5 配置方案 (9)6 结论 (10)项目开发计划 (11)1.项目开发计划引言 (11)2.项目概述 (12)3.实施计划 (13)4.人员组织及分工 (15)5.交付期限 (15)6.专题计划要点 (15)软件需求说明书 (16)1 软件需求说明引言 (16)2 任务概述 (16)3 需求规定 (17)3.2.1 精度 (19)3.2.2 时间特性要求 a. 后台任务管理器因该以误差上下不超过 10 秒的 60 秒间隔,在用户界面的指定位置显示状态信息 b. 如果后台进程处理正常会显示任务已完成 的百分数/比 c. 任务完成时会显示相关的信息 d. 后台任务出错会显示错误信 息 (20)3.2.3 灵活性 (20)3.2.4 动态数值需求 (20)3.2.5静态数值需求 a. 支持的终端数为1台; b. 处理1个文件及20条记录; (20)餐饮管理系统数据流图 (23)餐饮管理系统用户手册 (27)启动并登录 (27)营业设置 (27)酒菜设置 (27)折扣设置 (29)开台与点菜 (29)结账 (30)报表查询 (32)员工资料的设置 (33)员工工作情况统计 (34)※ 小组成员联系方式及担负任务:(班级:02-12班)姓名 学号 邮件地址 担负任务简介林龚伟 26 lingongwei2001@ 负责项目的整体规划与设计。
吴敏华 19 Zhiyou497@ 负责系统源代码的编制及数据库的开发。
刘 岩 25 yefan2222@ 负责各项文档的完成及相关资料的收集整理。
宋小玲 23 Lily_jick_0@ 负责版面的设计。
可行性研究报告1 可行性研究报告引言可行性研究报告对于软件开发的作用是非常重要的。
可行性分析研究了软件的各种开发 因素,通过综合的分析,已确定软件是否适宜开发。
“民以食为天”,随着人民生活水平的提高,餐饮业在服务行业中占有越来越重要的地 位。
努力在当前餐饮行业日趋激烈的竞争中脱颖而出,已成为每位餐饮业经营者所追求的目 标。
经过多年发展,餐饮管理已经逐渐由定性管理,进入到重视定量管理的科学阶段。
众所 周知,在定量管理的具体实现方法和手段方面,最有效的工具就是电脑管理。
传统的手工操作管理存在着许多无法避免的问题,例如:l人工计算帐单金额容易出现差错。
l收银工作中跑单、漏单、偷钱现象普遍。
l个别服务员作弊、改单、宰客情形时有发生。
l客人消费单据难以保存和查询。
l无法对大量营业数据进行统计分析。
1.1 编写目的说明该软件开发项目的实现在技术、经济和社会条件方面的可行性;评述为了合理地达 到开发目标而可能选择的各种方案;说明并论证所选定的方案。
1.2 背景本系统命名: 酒店餐饮管理系统小组成员: 林龚伟,吴敏华,刘岩,宋小玲开发工具: Microsoft VC++6.0A. 该系统面向的用户是酒店餐饮的前台服务员,厨房管理员,原材料的供货部门以及经理部门的管理人员。
B. 本系统可以在 Windows98/ME/2000/XP 以及更高版本系统上稳定运行,有很强的兼容性。
C. 该系统有连网功能便于连锁经营,方便大型连锁企业进行该系统的管理。
1.3 参考资料用户手册,酒店餐饮管理系统,VC++相关资料,软件工程导论(清华大学出版社 张海藩) 2 可行性研究的前提2.1 对本系统的要求A. 功能:该系统能够接受预定,前台点菜,厨房传菜,数据备份和恢复 ,流水账单统计功能,采购管理等功能并可以不断扩充其功能。
B. 性能:该系统所占硬盘容量大约为 10M,开启运行时间约 2~3 秒,用户进入系统需要密码,且数据的存储是经过保密设置的,一般用户是无法接触涉及商业机密的数据的, 因此安全保密性比较高。
C. 系统的数据来源是酒店的菜谱、酒水饮料的名称,及其价格、数量,可以及时对酒店的客户的消费进行统计结账,方便快捷。
D. 系统需要员工输入账号和密码才能操作, 可以避免其它人员的恶意操作给酒店带来的损失,且系统的数据有保护和备份功能。
E. 对于连锁经营的酒店可以采用该系统的网络版, 在一家酒店就可以掌握所有酒店的运营工作情况,快捷及时高效。
F. 完成期限 2005 年 1 月。
2.2 目标A. 采用本系统可以大大减少前台的服务人员的人数,直接和厨房联系加快上菜速度。
B. 由于采用计算机操作,可以大大提高操作速度。
C. 系统应有以下一些功能:★ 包括餐饮收银等各综合收银点★ 菜谱管理、台号(场所)管理★ 开单、点菜、加菜、退菜、结账、免单★ 换台、支持一单结帐和多单合并结帐★ 各类收银班报表、日报表及统计报表★ 餐厅转前台帐、查询总营业情况★ 信息查询、服务员交接班及定制报表2.3 条件、假定和限制a. 系统可以长期运行,版本也可以不断升级,来满足用户的新需求。
b.构建该系统的酒店提供必要的资金购买电脑架构网络,实现前台和供货部门以及酒店管 理部门的联网,使整个酒店一体化,提高酒店的运营效率和效益。
c. 系统是由 VC++6.0开发的,大部分的操作系统都能够顺利运行,适合广大的酒店使用。
为保证系统的正常运行必须有专门的人员来维护系统并对系统数据库进行更新。
d.系统操作简单, 酒店的工作人员只需掌握一些基本的电脑使用方面的知识, 要求会打字, 这样简单进行培训能够轻松使用本系统,无须酒店花费多少财力物力来培训员工。
e. 系统一经投入便能够运行,并产生效益得到回报。
2.4 评价尺度该系统是由 VC++6.0 开发的 ,四个小组成员经过半年时间开发 。
系统的功能满足了 酒店的所有需求,对酒店新的需求也可以通过版本升级来满足。
具有极大的经济效益。
3 对现有系统的分析现有的酒店餐饮管理系统均是以人为主体的,需要很的人力、物力、财力,且效率不是 很高,由于人为原因在系统运营时也可能产生人为的失误。
新的系统通过用电脑联网来促使各部门一体化,提高效率,为酒店减少人力支出,提高 酒店的运营效益,实施新的系统势在必行。
4 所建议的系统4.1对所建议系统的说明餐饮管理系统是一套功能强大而又简便实用的餐饮管理软件, 包括前台营业、 营业设置、 营业分析与财务查询、系统管理、等四大功能模块,实现了餐饮企业日常营运的全面自动管 理,是餐饮企业进行电脑信息化管理的理想选择。
餐饮管理系统可广泛适用于各种规模、各种类型的餐饮娱乐企业,如:餐厅、酒楼、歌 舞厅、夜总会、桑拿、酒吧、咖啡厅、快餐店、综合娱乐场所等等。
新的系统可以接受客户预定,点菜,转台,由于系统可以实现联网使厨房能第一时间获 取餐厅客人的点菜信息,传菜部门及时传菜,大大提高上菜的速度减少客人的等待时间,为 酒店创造良好的声誉。
厨房并可以及时将原材料消耗情况耗尽反馈给原材料供货本门,使供货部门及时进行原材料的补给。
酒店的管理人员也可以随时监控酒店的运营情况,使整个酒 店处于一个统一的系统中。
4.2功能说明餐饮管理系统功能模块说明如下:前台营业日常营业操作功能,包括:l日始日结:设定每个营业日的开始和结束,并且进行每日营业的初始化及员工交接班。
l点菜收银:点菜(包括代码输入、名称输入、鼠标输入等)、账单结帐(包括现金结帐、 信用卡结帐、签单等)、修改账单(包括折扣、调整服务费等。
如果客人是协议单位(合约 公司)、VIP 卡(会员卡),还将调用相应的折扣优惠等)。
l接待预订:新开台、厅房预定。
营业设置日常营业所必需的数据库设定,包括:l菜式管理:新菜式录入(包括菜式名称、代码、价格、成本等)、菜式修改、删除等菜 式维护。
l酒品饮料管理:酒品饮料录入(包括名称、代码、价格、成本等)、修改、删除等。
l付款方式设置:分为人民币付款、信用卡、支票、宴请等。
l员工资料设置:包括员工的基本资料(姓名、生日、职务、籍贯),员工登陆名称、密 码、员工权限等。
l其他设置:统计资料、前台销售情况等。
营业分析与财务查询(由总经理室监控)可以对营业数据进行统计分析、打印报表,包括:l销售分析:当月每天及当年每月的收入金额、成本、利润的分析。
l酒菜分析:各种酒菜的详细销售情况统计。
l查询各类单据和消费情况,包括:l帐单查询:查询所有已结帐单l点单查询:查询所有历史点单l会员查询:查询会员卡消费情况l挂帐查询:查询挂帐客人消费情况系统管理系统本身的管理功能,包括:l系统信息:版权注册等l系统维护:数据备份与恢复、导入导出等l网络管理:启动设置和网络监控l重新登录:以另一个用户名登录,不用退出系统即可更换操作员工l退出系统:关闭程序帮助信息对系统的说明、使用指南等。
4.3 处理流程图前台,厨房,传菜部门,原材料供货部门的运营流程图如下:4.4影响4.4.1 对软件的影响由于系统的极好的兼容性,对于原来的软件和系统无需作任何修改酒店运行。
4.4.2 对用户单位机构的影响系统完成后可大大提高提升现代酒店管理水平和服务档次;创造可靠、高效、便捷、卫 生的餐饮管理环境最大限度降低餐饮管理运营成本;提高经营效益。
适应市场经济需求,提 高工作效率,推广电子化进程。
4.4.3 对开发的影响a. 为了便于系统的开发,用户需要酒店提供他们所有需求信息,并实地考察,开发人员按照客户的要求来设计系统;b. 把酒店的所有的菜谱,酒水的资料和价格输入数据库,作为系统的数据库源。
c. 为了开发和测验所建议系统稳定性,在一定时期的进行检测;d. 由于系统需登陆才能运行,系统的安全性可以保障,避免其他用户的破坏性操作;数据库可以即时进行更新和备份,避免因数据丢失而给酒店带来损失。
4.4.4 对经费开支的影响各项工作费用的支出:系统的开发 设计 维持运行无需 无需 需要4.5 技术条件方面的可行性由于系统采用 VC++6.0 开发设计主界面,利用 Access 做数据库,这两个工具都是微软 的产品,在兼容性上比较好,而且比较容易实现,所以我们利用现有的技术完全可以设计出 满足用户所要求的功能的系统,并在规定的期限内完成。
4.6 使用方面的可行性从酒店的行政管理、工作制度等方面来看,从用户单位的工作人员的素质来看,系统 可以完全可以实施,系统本身操作比较简单,员工稍加培训就能使用。
使用餐饮管理系统,可以给企业经营管理带来以下好处:l管理者可以实时监控餐饮企业的经营活动及财务情况l使餐饮企业的操作更为流畅,完善了管理和控制,增强了对顾客的服务,大大提高企业的整体形象l快速点菜、自动传菜和准确结帐可以提高餐饮娱乐企业的工作效率,提高翻台率,给经 营者增加更多的收入l杜绝收银工作中的跑单、漏单现象,根除服务员的作弊行为,从而降低了经营成本l帮助经营管理人员对企业中大量的、动态的、错综复杂的数据和信息进行及时、准确的 分析和处理, 最大限度地降低处理信息的劳动强度, 使餐饮企业的管理手段和管理水平 产生质的飞跃,跟上信息时代的步伐5 配置方案餐饮娱乐管理系统适用于各种规模的餐饮娱乐企业, 根据用户管理需求的不同,可以灵 活地设置工作站点、选择硬件设备、连接局域网络和进行软件安装。