软件工程小型餐厅管理系统软件开发文档_第1页
软件工程小型餐厅管理系统软件开发文档_第2页
软件工程小型餐厅管理系统软件开发文档_第3页
软件工程小型餐厅管理系统软件开发文档_第4页
软件工程小型餐厅管理系统软件开发文档_第5页
已阅读5页,还剩41页未读, 继续免费阅读

下载本文档

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

文档简介

1、济南大学软件工程课程设计课程名称:软件工程题目名称:小型餐厅管理系统学院班级:信息学院计0804班学生学号:20081204035学生姓名:金帅指导老师:白宗辉时间:2010年12月16日小型餐厅管理系统开发文档 可行性研究3.编写目的31.2项目背景31.3缩略词定义31.4参考资料3需求分析45系统概述52.3文档概述52.4项目概述556662.9其它需求7概要设计7需求规定77基本概念设计和处理流程7888接口设计993.9系统出错处理设计910详细设计1010系统设计要点104.3数据库的设计104.4界面设计12代码设计22 系统测试436.1 引言436.2测试计划4343.1员

2、工管理测试44.2用户管理测试44.3菜单维护管理测试44.4点餐测试45.5结账测试45.6查询测试45.7记事本测试46.8计算器测试46关于测试46帮助测试46退出测试46 总结46一、 可行性研究11 编写目的。1.2 项目背景该项目开发的软件为餐厅系统管理软件,是鉴于当前酒店的管理还处于人工管理阶段,仅在财务部门使用了计算机,所以酒店的管理效率不高;缺乏科学的管理和现代化的管理工具,餐厅在管理上和业务的安排上都存在着不足。由于餐厅的商品种类多,菜样多变,靠人工方式管理商品和菜品信息有很多不便。,该软件设计完成后可用于一般的餐厅的管理。1.3 缩略词定义经济可行性-估计开发费用以及最终

3、从开发成功的系统所获得的收入或利益,衡量比较支出的费用和收到的利益技术可行性-分析功能,性能以及限制条件,能否是一个技术上可实现的系统法律可行性-明确系统开发可能导致的责任,有无违法问题不同的方案-对系统开发的各种方案进行评价14参考资料<软件工程导论> 张海藩 编著 清华大学出版 <Java面向对象程序设计>耿祥义 张跃平二、 需求分析2. 1 开发背景与现状近年来,随着人民的生活水平的不断提高,餐饮业的消费持续增长,竞争愈来愈激烈。然而,传统餐饮企业的日常运作还是靠人工管理,从原材料入库到客人点单,再到结账基本上由人工完成记录,这样做不仅耗费人力资源而且容易导致记录

4、丢失或重复等错误,造成管理水平低下。作为传统的餐饮企业更是存在这些问题,进货,库存有人工管理,客人点单需服务员记录并送至厨房,客人结账由手工记录,人力耗费大,客人等待时间长,管理效率低下,这就迫切需要标准的、高效率的计算机管理方式引导其发展,通过计算机管理企业的日常运作,给管理者以决策参考的模型,来不断完善管理水平,提高工作效率。作为计算机应用的一部分,使用计算机对餐饮企业信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高信息管理的效率,也是企业的科学化、正规化管理与世界接轨的重要条件。经过分析,本系统运

5、用了office access为后台数据库,以为前端开发工具,系统实现了餐厅管理的功能。 当今世界已进入了在计算机信息管理领域中激烈竞争的时代,应用计算机已经变得十分普遍了,如同我们离不开的自行车、汽车一样。我们应该承认,谁掌握的知识多,信息量大,信息处理速度快,批量大,谁的效率就高,谁就能够在各种竞争中立于不败之地。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。越来越多的管理人员意识到信息管理的重要性。 系统概述餐厅管理系统是一个基于cs的系统。它针对当前餐厅管理缺乏科学的管理和现代化的管理工具,酒店的商品种类多

6、,菜样多变,靠人工方式管理商品和菜品信息有很多不便等弊端开发出来的。他能实现对员工、用户、菜单、点餐的统一管理。所以从市场角度出发,此系统开发后由于他的实用性必有有很好的应用前景和广阔的市场空间。 文档概述该文档详细描述了餐厅管理系统系统的需求规约,为进一步的概要设计和详细设计奠定了基础。项目概述目标本软件的开发是实现餐厅方便统一的管理,解决当前餐厅管理的不足。用户的特点本软件的最终用户将是餐厅管理人员。对于使用本软件的人员的技术要求不高,只需了解简单的软件操作即可需求规定功能需求餐厅管理系统主要分为以下几个功能需求:§ 用户管理:对登录此软件的人员进行核实,所以要对管理员进行管理,

7、将管理员的信息存入数据库。§ 员工管理:对于在本餐厅工作的人员实行管理,将员工的详细信息存入数据库。§ 菜单维护:对于餐厅的菜单要时常进行维护,这包括对数据库的删除、修改、添加的操作,达到菜单维护的目的。§ 点餐:通过数据库的操作,完成就餐人员的点餐功能。§ 结账:对就餐后结账的餐桌就行结账管理,保存有关的数据。§ 消费查询:根据数据库的记录,进行对所有的消费记录的查询功能。性能需求精度该系统中没有对于较高数据精度的需要,在数据存储和传输过程中与输入时相同。时间特性要求§ 响应时间:此系统基于cs,传输速度快。§ 更新处理时

8、间:餐厅的更新信息应该维持在每天。数据管理能力要求综合餐厅的实际情况。一般的中小型数据库应该能够胜任,此系统预设了access数据库。故障处理要求§ 硬件故障:此软件对硬件的要求不高,一般即可。§ 软件故障:数据库管理系统出现故障,可能发生数据丢失,这就需要系统切实做好数据备份工作,在数据库发生故障时,能够迅速的给予恢复,保证系统的正常运行。安全性此软件采用access数据库,安全性较高。可维护性整个系统的各个功能高度模块化,达到高内聚低耦合的目标,实现清晰的模块接口,明确每个模块的功能,方便以后的系统维护,如果一个功能模块出现问题,不会致使整个系统瘫痪。另外,有完整的数据

9、库管理制度,以保证数据库的数据的完整性,安全性。其它需求数据库此软件采用access,所以必须考虑与整个数据库系统的整合,在设计数据库时要和整个数据库系统的模式一致,不但本站点数据库可以使用其它站点上的数据,而且其他站点也应该可以应用本站点的数据提高效率。三、概要设计3.1需求规定此软件实现员工信息,用户信息,菜单信息的输入输出和点餐功能。此软件windows平台,无特别要求。3.3基本设计概念和处理流程3.4结构此系统使用了三层架构实现了管理人员登陆模块, 菜单管理模块, 餐厅人员管理模块, 点菜功能模块, 消费结帐模块, 查询统计功能模块,工具模块,帮主模块。此系统是基于C/S结构。此软件

10、适用于前台的管理,给点餐结账提供了便利。人工处理过程尚未解决的问题对于餐桌管理及软件一些灵活性运用还有不足的地方。3.7接口设计用户接口外部接口内部接口运行设计运行模块组合支持内部模块和外部模块的组合运行,且扩展性好。运行控制本软件支持普遍的外部运行方式运行时间占用系统资源少,节省时间。系统数据结构设计系统出错处理设计a.后备技术说明准备采用的后备技术,当原始系统数据万一丢失时启用的副本的建立和启动的技术,例如周期性地把磁盘信息记录到磁带上去就是对于磁盘媒体的一种后备技术;b.降效技术说明准备采用的后备技术,使用另一个效率稍低的系统或方法来求得所需结果的某些部分,例如一个自动系统的降效技术可以

11、是手工操作和数据的人工记录;c.恢复及再启动技术说明将使用的恢复再启动技术,使软件从故障点恢复执行或使软件从头开始重新运行的方法。系统维护设计说明为了系统维护的方便而在程序内部设计中作出的安排,包括在程序中专门安排用于系统的检查与维护的检测点和专用模块。四、 详细设计4.1 总体模块说明项目内容:此系统使用了三层架构实现了管理人员登陆模块, 菜单管理模块, 餐厅人员管理模块, 点菜功能模块, 消费结帐模块, 查询统计功能模块,工具模块,帮主模块。此系统是基于C/S结构。此软件适用于前台的管理,给点餐结账提供了便利。菜单管理模块:管理人员可以添加菜谱到系统中, 并能进行日常维护(包括修改菜的价格

12、等),系统可以对整个菜单分类管理,可区分凉菜、热菜、汤类、酒水、消费品和主食,。餐厅人员管理模块: 能维护整个餐厅服务人员的信息记录。点菜功能模块: 可以实现点菜的功能并将信息存入数据库。消费结帐模块: 系统可以对消费情况进行结算.可显示该消费者的所有消费情况,并能自动实现找零计算功能。查询统计功能模块: 能查询在此餐厅的所有消费记录。工具模块:调用windows内部的记事本和计算器,提供便利。帮助模块:提供使用帮助的说明。系统设计要点:菜单栏设计:系统维护:菜单维护、员工管理、用户管理点餐管理:点餐、结账、查询小工具:记事本、计算器 帮助:帮助、关于退出:退出工具栏设计:点餐、结账、查询、帮

13、助、关于,退出、数据库的设计:表的设计:表 名功 能 说 明desk存放餐桌的使用状态expense存放所有的消费信息using暂时存放正在使用的餐桌信息menu菜单的管理user存放用户信息worker存放工人信息 desk expense using menu user worker 界面设计: 登陆界面:实现登陆功能主界面设计:员工管理界面:实现对员工信息的管理,可以修改,添加,删除员工的信息。用户管理界面:实现对用户信息的管理,可以实现用户信息的删除,修改,添加功能。菜单维护界面设计:实现对菜单的修改,删除,添加功能。点餐界面设计:实现点餐功能。结账界面设计:实现结账的功能。查询界面设

14、计:实现对所有消费的查询功能。记事本:计算器:关于界面设计:帮助界面设计:五、代码设计登录界面代码: * * Created on 2010-11-28, 10:35:04 */package restaurant;import java.awt.event.KeyEvent;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/* * * author Administr

15、ator */public class JDiaLogin extends javax.swing.JDialog private Connection conn; /定义数据库连接 /* Creates new form JDiaLogin */ public JDiaLogin() initComponents(); this.setLocationRelativeTo(null); try conn = this.getConnection("jdbc:odbc:restaurant"); catch (SQLException ex) ex.printStackTr

16、ace(); public Connection getConnection(String url) throws SQLException return DriverManager.getConnection(url); /* This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */

17、 SuppressWarnings("unchecked") / <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() jLabellogo = new javax.swing.JLabel(); jLabeluser = new javax.swing.JLabel(); jLabelPW = new javax.swing.JLabel(); jPasswordFieldPassWord =

18、new javax.swing.JPasswordField();Field(); jButtonLogin = new javax.swing.JButton(); jButtonExit = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("登陆"); setBackground(new java.awt.Color(51, 255, 51); jLabellogo.setFont(new java.aw

19、t.Font("华文隶书", 0, 36); / NOI18N jLabellogo.setText("欢迎登陆餐厅管理系统"); jLabeluser.setFont(new java.awt.Font("华文楷体", 0, 20); / NOI18N jLabeluser.setText("用户名:"); jLabelPW.setFont(new java.awt.Font("华文楷体", 0, 20); / NOI18N jLabelPW.setText("密码:");

20、 jPasswordFieldPassWord.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jPasswordFieldPassWordActionPerformed(evt); ); jTextFieldUser.addKeyListener(new java.awt.event.KeyAdapter() public void keyPressed(java.awt.event.KeyEvent evt) j

21、TextFieldUserKeyPressed(evt); ); jButtonLogin.setFont(new java.awt.Font("华文楷体", 1, 20); jButtonLogin.setText("登陆"); jButtonLogin.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jButtonLoginActionPerformed(evt); );

22、jButtonExit.setFont(new java.awt.Font("华文楷体", 1, 20); jButtonExit.setText("退出"); jButtonExit.addActionListener(new java.awt.event.ActionListener() ionEvent evt) jButtonExitActionPerformed(evt); ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane(); getC

23、ontentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addG

24、roup(layout.createSequentialGroup() .addContainerGap() .addComponent(jButtonLogin) .addGap(57, 57, 57) .addComponent(jButtonExit) .addGroup(layout.createSequentialGroup() .addGap(62, 62, 62) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabeluser) .a

25、ddGroup(layout.createSequentialGroup() .addComponent(jLabelPW) .addGap(12, 12, 12) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jTextFieldUser, javax.swing.GroupLayout.PREFERRED_SI

26、ZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jPasswordFieldPassWord, javax.swing.GroupLayout.DEFAULT_SIZE, 144, Short.MAX_VALUE) .addGap(86, 86, 86) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabellogo, javax.swing.GroupLayout.DEFAULT_SIZE, 362, Shor

27、t.MAX_VALUE) .addContainerGap() ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabellogo, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)

28、.addGap(41, 41, 41) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jTextFieldUser, javax.swing.GroupLayout.DEFAULT_SIZE, 27, Short.MAX_VALUE) .addComponent(jLabeluser) .addGap(29, 29, 29) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Ali

29、gnment.BASELINE) .addComponent(jPasswordFieldPassWord, javax.swing.GroupLayout.DEFAULT_SIZE, 28, Short.MAX_VALUE) .addComponent(jLabelPW) .addGap(33, 33, 33) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButtonExit) .addComponent(jButtonLogin) .addGa

30、p(33, 33, 33) ); pack(); / </editor-fold> private void jButtonExitActionPerformed(java.awt.event.ActionEvent evt) System.exit(0); private void jButtonLoginActionPerformed(java.awt.event.ActionEvent evt) / 登陆函数,查询数据库中用户、密码,并与输入做比较。 check(); private void jPasswordFieldPassWordActionPerformed(jav

31、a.awt.event.ActionEvent evt) check(); private void jTextFieldUserKeyPressed(java.awt.event.KeyEvent evt) / 在用户名输入完成后,按下ENTER键,将光标焦点变为密码输入框。 if (evt.getKeyCode() = KeyEvent.VK_ENTER) jPasswordFieldPassWord.requestFocusInWindow();/密码输入框获取焦点。 public void check() String name = "" String pwd =

32、"" /获取用户名和密码的长度 int user_length=jTextFieldUser.getText().length(); int pwd_length=jPasswordFieldPassWord.getPassword().length; /判断用户名,密码是否为空 if (user_length<1|pwd_length<1) log(this, "用户名或密码不能为空!请重新输入。"); else / 连接数据库,获取数据库数据。 try /创建用于执行sql语句的声明 Statement stmt = conn.creat

33、eStatement(); /执行查询,从数据库中user表读取所有数据,保存在ResultSet对象中 ResultSet rs = stmt.executeQuery("select * from user"); /查询帐号和密码是否匹配 boolean login=false; while (rs.next() name = rs.getString("user"); pwd = rs.getString("password"); if (jTextFieldUser.getText().equals(name) &&a

34、mp; jPasswordFieldPassWord.getText().equals(pwd) login=true; break; if(login) new MainFrame().setVisible(true); this.dispose(); else javax.swing.JOptionPane.showMessageDialog(this, "管理员名或密码错误!请重新输入。"); jPasswordFieldPassWord.setText(""); /关闭 rs.close(); stmt.close(); catch (SQLEx

35、ception ex) javax.swing.JOptionPane.showMessageDialog(this, ex.getMessage().toString(); return; /* * param args the command line arguments */ / Variables declaration - do not modify private javax.swing.JButton jButtonExit; private javax.swing.JButton jButtonLogin; private javax.swing.JLabel jLabelPW

36、; private javax.swing.JLabel jLabellogo; private javax.swing.JLabel jLabeluser; private javax.swing.JPasswordField jPasswordFieldPassWord; private javax.swing.JTextField jTextFieldUser; / End of variables declaration主界面代码:package restaurant;import java.io.IOException;import java.util.Calendar;ing.Le

37、vel;import java.util.logging.Logger;/* * To change this template, choose Tools | Templates * and open the template in the editor. */* * * Created on 2010-11-3, 9:18:40 */* * * author Administrator */ class MainFrame extends javax.swing.JFrame /* Creates new form MainFrame */ public MainFrame() initC

38、omponents(); this.setLocationRelativeTo(null); time(); public void time() Time time = new Time(); time.start();/启动线程 /* This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Edito

39、r. */ class Time extends Thread public void run() Calendar cal; while (true) try cal = Calendar.getInstance(); String now = cal.get(Calendar.YEAR) + "年" + (cal.get(Calendar.MONTH) + 1) + "月" + cal.get(Calendar.DATE) + "日 " + ( cal.get(Calendar.HOUR)+12) + "时"

40、+ cal.get(Calendar.MINUTE) + "分" + cal.get(Calendar.SECOND) + "秒" jLabel2.setText(now); /每一秒钟循环一次 Thread.sleep(1000); catch (InterruptedException ex) System.out.println(ex.getMessage(); / <editor-fold defaultstate="collapsed" desc="Generated Code"> priva

41、te void initComponents() jMenuBar2 = new javax.swing.JMenuBar(); jMenu5 = new javax.swing.JMenu(); jMenu6 = new javax.swing.JMenu(); jToolBar1 = new javax.swing.JToolBar(); jButton1 = new javax.swing.JButton(); jButton6 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = ne

42、w javax.swing.JButton(); jButton4 = new javax.swing.JButton(); jButton5 = new javax.swing.JButton(); jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabelTime = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jMenuBar1 = new

43、javax.swing.JMenuBar(); jMenuXitong = new javax.swing.JMenu(); jMenuItemyuangong = new javax.swing.JMenuItem(); jMenuItemyonghu = new javax.swing.JMenuItem(); jMenuItem3 = new javax.swing.JMenuItem(); jMenu2 = new javax.swing.JMenu(); jMenuItemDiancang = new javax.swing.JMenuItem(); jMenuItem2 = new

44、 javax.swing.JMenuItem(); jMenuItemMoney = new javax.swing.JMenuItem(); jMenu4 = new javax.swing.JMenu(); jMenuItemNotePad = new javax.swing.JMenuItem(); jMenuItemJiSuan = new javax.swing.JMenuItem(); jMenuHelp = new javax.swing.JMenu(); jMenuItemHlpe = new javax.swing.JMenuItem(); jMenuItemAbout =

45、new javax.swing.JMenuItem(); jMenuAbout = new javax.swing.JMenu(); jMenuItem1 = new javax.swing.JMenuItem(); jMenu5.setText("File"); jMenuBar2.add(jMenu5); jMenu6.setText("Edit"); jMenuBar2.add(jMenu6); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("餐厅管理系统 V 1.0"); setBackground(new java

温馨提示

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

评论

0/150

提交评论