(建筑工程管理)软件工程学_第1页
(建筑工程管理)软件工程学_第2页
(建筑工程管理)软件工程学_第3页
(建筑工程管理)软件工程学_第4页
(建筑工程管理)软件工程学_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

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

文档简介

度化,规范化,科学化。统界面友好,操作简单,较易实用。2.2.1系统项目概述和实施计划43.1.1数据库需求分析63.1.2功能需求分析74.3.1数据库概要设计304.3.2数据库详细设计354.4.4分割面板的设计:414.4.5取系统时间模块设计:424.4.7正则表达式454.4.8获取系统当天时间的类455.5.2月结账和年结账605.5.3菜单管理60一些人为因素造成的不可避免的错误,已经成为我们餐饮经营者思考的问题。 众多,有条件的酒店或宾馆采用自主开发或委托软件开发商开发出的专用软件, 础,结合酒店前台管理的需要进行扩展性而开发的一套酒店管理系统。单明了,操作方便,大大提高了操作效率。1)开台点菜,即根据客人数量及需求为客人安排合适的餐桌,然后进行相应的点菜及签单。2)自动结账,即在客人消费之后,对其消费进行汇总结账。3)菜品管理,即对酒店菜品种类进行排号、增添及见删除来适应酒店的动态经营模式,根据时期、季节来实时更换菜品种类。4)账务管理,此管理主要针对管理员,实现对本店一日、一月或一年的5)用户管理,此管理主要针对管理员,实现对操作员的增添、删除及自6)超级管理,设计一名超级管理员可以对所有管理员进行管理。7)帮助中心,针对本系统的所有操作辅以文档加以说明。8)退出,即退出系统,防止操作不慎关闭了操作对话框。证了系统运行的安全性。能用。1.竞争可行性:由于现在的人工管理已经难以满足餐饮业发展的需要,广大餐饮业经营者已经意识到使用计算机软件的重要性,因此餐饮业的管理阶层必须引入计算机软件管理系统以提高本身的竞争力。2.技术可行性:根据餐饮业的特点和实际情况,酒店管理系统以餐饮业务为基础,突出前台管理,重视数据分析等功能;从专业角度出发:努力为餐饮管理者提供科学、有效的管理模式和数据分析功能。因为该系统具有友好的人机互操作界面,操作人员只要进行少量的培训,系统的功能和使用方法就基本上能够是系统顺利运行。3.经济可行性:在以往的人工管理模式中,餐饮业为了扩大自己的经营不得不雇佣更多的人来做财务、服务、分析等等,这就必须增加投资成本,而且还存在着人为情况下的错误。然而在引入了计算机管理以后,就可以减少这些部分的设置,降低成本的同时又不影响增加本身的扩张。查看业务情况等。软件开发方式:采用面向对象技术面向对象方法是利用抽象、封装等机制,发点开发我们的系统,得到了更好的思维方式。2.2.1系统项目概述和实施计划我们本系统的主要内容是用java语言编写一个酒店管理系统的软件,它可 来提高自己的竞争力。为了完成本系统的编写,我们组的成员应该具有一定的java语言功底,能该提交的东西有:java程序、打包文件、数据库相应的文档说明。管理员又怎么能够被一个或两个超级管理员来进行管理。2.2.2Gantt图系,该方法简单了然。△△123412341234△△△△△△△△△△△△△△△△3.1.1数据库需求分析数据库中各个数据项的关系,同时将相应条目进行分类汇总,加入到相应这将为系统的设计打基础。在数据库分析阶段要1)应用系统用户所需要操作的数据决定在数据库中存储什么数据。2)应用系统用户要求对数据进行什么样的处理,理清数据库中各个数据项菜品信息:包括序号、编号、名称、助记码、菜系、单位、消费单:编号、消费台号、消费时间、消费金额、操作账务信息:编号、台号、开台时间、消费金额,点菜记录。级别。性别性别性别操作身份证号3.1.2功能需求分析1.欢迎界面:由于我们所做的软件是一个和sql对系统有一个清晰的认识,不会出现忙等的状况。2.登陆界面:主要有登录名文本框、登陆密码文本框、记住密可以进入系统,进行操作。3.操作员界面:此界面主要针对操作员,功能有台号管理、开单管理、菜使用帮助,操作员修改自身密码等。具体功能如下:操作员可以对客人的要求做出回应即开单、签单和收费。开单即为客人安排台位后进行客户点菜,点菜完毕后,客户客户可以下达签单指令。当然,考虑到客户可能对已点菜品的不喜欢,想取消的情况,我们也做了考虑。在没客户没有确定签单之前,客户就可以修改所点的菜品,对不想点得菜品在签单列表中进行删除。签单即在点完菜之后进行确认,此时已经不能修改所点的菜品。收费即在客人消费完之后进行结账交费。并对相应找零情况做弹出对话框,进行提醒,充分保障交易的正确性。防止出现忘记收费、忘记找零、找零数目不对等错误出现。操作员可以对台号管理,为客人分配餐台。同时,可以根据酒店的发展状况,添加删除餐台的数量,修改餐台的座位数等。操作员还可以对菜品、菜系进行管理,即增添或删除菜品、菜系。在不同的销售季节、不同的的节日或在材料紧缺或供应新菜品时可以通过浏览菜谱对其进行更改。其中菜品信息包括:序号、编号、名称、助记码、菜系、单位、单价。菜系信息包括:序号、菜系名称。操作员可以实现智能点菜,即对点菜功能,用户可以选择使用菜品编号或菜品助记码进行点菜,提高了操作员的工作效率。操作员可以修改自身密码。退出系统。操作员的添加、删除。操作员无权访问。功能有账务管理、菜品管理、按钮,进行操作,提高了管理效率,同时丰富了该系统的功能。账务管理:包括日结账、月结账、年结账,每张账单上的信息包括日期、编号、台号、开台时间、消费金额、点菜记录。方便管理者对酒店的实时,从而来调整经营策略,来提高经济效益。菜品管理:菜品管理、菜系管理,主要负责对菜品菜系的添加、删除。该功能区主要实现对酒店的实时监控,查看酒店的菜品、菜系情况,方便管理。删除,自身密码的修改以及系统维护。增加系统的安全性,合理高帮助:版本信息、帮助中心、帮助文档,主要提供本系统操作的具体说明。让系统用户能尽快入手系统,增强系统的可使用性。退出:退出系统。确。任务。因此我们将其做的尽量简单。响到全局部署。依据上述描述的特点,本系统需要实现下列目标:人性化的系统提示可视化的系统加载过程系统角色层次分明;身份不同,操作不同级别不同,权限不同人员不同,结果不同操作简单方便,界面简洁大方;人性化的系统使用方式;方便、快捷的开台点菜功能;智能化定位菜品的功能;按开台和商品实现的日结账功能;按日消费额汇总统计实现的月结账功能;按日营业额实现的年结账功能;按消费情况,显示酒店盈亏情况;动态获取系统时间,提高人员的时间概念实现系统的科学化管理;充分降低人为错误带来的损失;系统运行稳定、安全可靠;修改否修改否管理员管理员是是核对核对管理员主管理员主 修改密码更改人员系统维护酒店管理系统数否否否否管理员操管理员操菜系管理菜品管理菜系管理菜品管理一系列帮助按钮菜品管理▲帮助文档▲菜系管理菜系管理操作员操台号管理开单管理退出系统修改密码开单管理退出系统修改密码a)欢迎使用酒店管理系统,友好界面如下:户,用户可以直接从下拉列表中选择自己的用户名,进行登录,简单方便,界面如下:c)操作员功能:操作员可以对客人的要求做出回应即开单、签单和收费。开单即为客人安排台位进行点菜,在没签单之前可以修改所点的菜品。签单即在点完菜之前进行确认,此时已经不能修改所点的菜品。收费即在客人消费完之后进行结账交费。主界面如图所示:为了对进入系统的用户提供一些系统消息和操作信息,我们在操作员界面下添加了一些简单的时间面板(时刻获取系统当前时间同时为了操作提高操作员的结账效率,我们提供了简单的操结账面板。如图:为了完成智能点菜的功能,我们构建了一个基于助记码查询和编号查询操作员可以对台号进行管理、同时为客人选择餐台,点击台号管理可以操作员还可以对菜品、菜系进行管理,即增添或删除菜品、菜系。在材料紧缺或供应新菜品时可以通过浏览菜谱对其进行更改。操作员通过点操作完结后可以退出,如图:在操作员首次使用本系统时,可能有些陌生,不知如何下手。鉴于此种情况,本系统提供了系统使用文档,便于操作员能快速入手,尽快投入账务管理:对一段时间的营业记录进行汇总、查询,包括日结账、月结账、年结账。每张账单上的信息包括日期、编号、台号、开台时间、消菜品管理:菜品管理、菜系管理,主要负责对菜品菜系的添加、删除。根据现实状况及时更改菜谱。点击主界面菜品管理出现以下选择界面,进得菜品或菜系管理的选择,界面如下:用户管理:用户管理、修改密码、系统维护,负责对操作员除,自身密码的修改以及系统维护。软件必须按照软件产品设计规范的步骤进行开发,并充分考虑软件的可维护性,详细编写各阶段的文档资料,以利于未来版本升级以及移植等二次开发。数据库投入运行标志着开发任务的基本完成和维护的开始,但并不意味着设计过程已经结束,任何数据库只要它存在一天它的设计就得不断地进行评价,调整、修改甚至于完全改变,因此数据库的维护不仅是必须的活动而且是设计的继续和提高。),界面如下:帮助:版本信息、帮助中心、帮助文档,主要提供本系统操作退出:包含系统的版本信息、退出系统等功能。版本信息界面如下:操作数据丢失。秀与否,将影响到软件的开发进度和性能,所以对数据库的设计就显得尤为重要,数据库的设计要根据程序的需求及其功能制定,如果在开发软件之前不能很好的设计数据库,在开发过程中反复修改数据库,这将严重影响软件的开发进度。4.3.1数据库概要设计1)数据库中的表及表中字段:要的字段有:姓名、密码、开单、菜品管理、菜系管理、所属管理员姓名等;开单表中字段为:开单编号、开单的操作员姓名、消费的菜名列表、消费总金菜系编号;管理员表中的字段包括:管理员姓名,管理员编号等;日统计表中消费菜单开单日期等;年消费表中字段为:年消费菜单开单、消费菜单开单时用来描述餐台信息的只有台号和座位号,而描述菜系的主要是名称。餐台表菜系表(tb_sort)的E-R图如下:综合上述表格,得出了酒店管理系统的数据库模型图(view)如下:单表。首先,在数据库连接类中定义一些常量,包括连接数据库使用的驱动程序、privatestaticfinalStringDRIVERCLASS=".microsoft.jdbc.sqlserver.SQLServerDriver";privatestaticfinalStringURL="jdbc:microsoft:sqlserver://:1433;DatabaseName=db_Drink避免了反复加载数据库驱动程序,从而提高软件的功能。具体代码如下:static//通过静态方法加载数据库驱动{try{}catch(Exceptione){e.printStackTrace();}}体代码如下:{privatestaticfinalStringDRIVERCLASS=".microsoft.jdbc.sqlserver.SQLServerDriver";privatestaticfinalStringURL="jdbc:microsoft:sqlserver://:1433;DatabaseName=db_Drinkstatic{//通过静态方法加载数据库驱动try{}catch(Exceptione){e.printStackTrace();}}{//创建数据库连接的方法{//没有可用的数据库连接try{threadLocal.set(conn);//将数据库连接保存到线程中}{e.printStackTrace();}}}publicstaticbooleancloseConnection()//关闭数据库连接的方法{threadLocal.set(null);//清空线程中的数据库连接if(conn!=null){//数据库连接可用try{conn.close();//关闭数据库连接}{isClosed=false;e.printStackTrace();}}returnisClosed;}}4.3.2数据库详细设计的指定值和查询指定记录的方法,以及用来添加、修改和删除记录的方法。用户编号(id)整型(int)字符型(varchar)性别(sex)字符型(char)出生日期(birthday)身份证号码(id_card)字符型(varchar)字符型(varchar)字符型(char)用户编号(id)整型(int)字符型(varchar)性别(sex)字符型(char)出生日期(birthday)身份证号码(id_card)字符型(varchar)字符型(varchar)用户状态(freeze)字符型(char)列名类别备注整数型主键所属菜系(sort_id)整型(int)外键字符型(varchar)字符型(varchar)单位(unit)字符型(varchar)单价(unit_price)整型(int)状态(state)表4-4菜系表(tb_sort)列名类别备注主键字符型(varchar)开单结构:开单操作员、消费金额、消费菜品列表、消费编号、消费日期。列名类别备注主键字符型(varchar)消费日期Date型(datetime)允许为空消费金额操作员编号整型(int)):表4-6消费项目表(tb_order_item)列名类别备注主键整型(int)消费金额(total)整型(int)4.4.1主界面1(登陆界面)设计:4.4.2主界面2(操作员界面)设计:修改信息4.4.3主界面3(管理员管理)设计:修改信息查看消费4.4.4分割面板的设计:在开台签单工作区中使用了分割面板,这样系统操作员可以根据实际需要,分隔条上得小标记(黑实体三角)将分隔条移动到分割面板的最左侧或最右侧,单击另一个则使分隔条恢复到原位置。finalJSplitPanesplitPane=newJSplitPane();//创建分割面版对象splitPane.setOrientation(JSplitPansplitPane.setDividerLocation(269);//设置面版默认的分割位置splitPane.setDividerSize(10);//设置分割条的宽度splitPane.setOneTouchExpsplitPane.setBorder(newTitledBorder(null,"",TitledBorder.DEFAULT_JUSTIFICATION,TitledBordDEFAULT_POSITION,null,null));//设置面版边框finalJPanelleftPanel=newJPanel();//创建放于分割面版左侧的普通面版对象leftPanel.setLayout(newBorderLayout());//设置面板的布局管理器4.4.5取系统时间模块设计:将它们分到不同的区域以满足不同使用者的需要。为了实现获取系统当前时间,{//创建内部类publicvoidrun(){//重构父类的方法while(true){timeLabel.setText(date.toString().substring(11,19));//获取当前时间并显示到时间标签中try{Thread.sleep(1000);//令线程休眠1秒}catch(InterruptedExceptione){e.printStackTrace();}}}}4.4.6身份选择面原本的样貌;退出按钮用来直接退出本系统。输入项目:选择用户名和密码。jr1.setOpaque(true);jr1.setActionmand("1");jr2.setOpaque(true);jr2.setActionmand("0");group.add(jr1);group.add(jr2);panel.add(jr1,gro1);panel.add(jr2,gro);jr1.setContentAreaFilled(false);//设置不绘制按钮的内容区域jr1.setBorderPainted(false);//不绘制单选按钮的边框jr2.setContentAreaFilled(false);//设置不绘制按钮的内容区域jr2.setBorderPainted(false);//不绘制单选按钮的边框jr1.setSelected(true);//设置操作员为默认登录用户jr1.addActionListener(newActionListener()//管理员单选按钮监听{{flag=e.getActionmand().toString();//判断选择的是操作员还是管理员{}else{for(inti=0;i<userNameV1.size();i++){}for(inti=0;i<userNameV.size();i++){}for(intj=0;j<userNameV.size();j++){}}}});jr2.addActionListener(newActionListener()//操作员单选按钮添加监听事件{{flag=e.getActionmand().toString();{}else{for(inti=0;i<userNameV1.size();i++){}for(inti=0;i<userNameV.size();i++){}for(intj=0;j<userNameV.size();j++){}}}});4.4.7正则表达式式,所以本系统提供了一个可重用的利用正则表达式来验证数据合法性的方法,用代码如下:publicclassValidate{publicstaticbooleanexecute(Stringrule,Stringcontent){Patternpattern=Pattern.pile(rule);//利用验证规则创建Pattern对象returnmatcher.matches();//返回验证结果}}importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassValidate{publicstaticbooleanexecute(Stringrule,Stringcontent){Patternpattern=Pattern.pile(rule);//利用验证规则创建Pattern对象returnmatcher.matches();//返回验证结果}}4.4.8获取系统当天时间的类以我们在本系统中,书写了一个系统时间类,从主机{//publicstaticStringgetDate()//获取系统额日期{}{case7:}{}case1:break;case2:break;case3:break;case4:break;case5:break;case6:break;}}publicstaticStringgetTime(){}publicstaticvoidmain(String[]args){}publicstaticintgetYEAR()//获取年份{}publicstaticintgetDAY()//获取当前是那一天{}{}}鉴于现有软硬件环境,我决定采用Client/Server体系结构进行软件开发。开发软件采用。{/**/{/**/setUndecorated(true);//去除登录界面的边框体finalMPanelpanel=newMPanel(this.getClass().getResource("/img/wele1.jpg"));//加载界面图片Toolkittoolkit=Toolkit.getDefaultToolkit();DimensionscreenSize=toolkit.getScreenSizsetLocation((screenSize.width-448)/2,(screenSize.height-280)/2);}publicstaticvoidmain(Stringargs[]){SwingUtilities.invokeLater(newRunnable()//获取系统的显示主题{publicvoidrun(){try{}{exception.printStackTrace();}}});Try//加载欢迎界面{wel.setVisible(true);}catch(Exceptione){e.printStackTrace();}for(inti=0;i<=100;i++)//设置进度条的显示数据{try{Thread.sleep(10);}catch(InterruptedExceptione){e.printStackTrace();}progressbar.setValue(i);}wel.setVisible(false);}}登录界面将有效的提高用户对系统的第一印象。l美观大方l简单易懂l安全性高l使用方便l功能明确要使用户登录界面美观大方,就离不开对图片的使用,但是JPanel类并不支{privatestaticfinallongserialVersionUID=1L;super();//继承父类的构造方法setSize(imageIcon.getIconWidth(),imageIcon.getIconHeight());//设置面板与图片等大}super.paintponent(g);//调用JPanel类的paintponent()方法}}景面板,加载进我们选好的图片,使得登录界面美观大方。管理员主要负责账务的汇总查询,以及对操作员的添加、删除。操作员无权访问。菜单构成,丰富了该系统的功能。己酒店的吸引力,最终实现利润最大化。以及时看到。这样可以尽快地熟悉本系统的操作方法。看信息,另一个用来选择是否要退出本系统。{publicTipWizardFrame1(finalVeprivateJTabbedPanecreateNavigationPanel(finalVectoruser){}//创建导航面板privatefinalclassFrameListenerextendsponentAdapter{}//窗体监听器static{try{}catch(Exceptione){e.printStackTrace();}}}tabbedPane.addTab("退出系统",exits,searchStatisticPanel,"退出系统");操作员可以对客人的要求做出回应即开单、签单和收费及对菜品菜系进行调整。签单:操作员可以在客户结账的时候选择他们所在的台号并点击此按钮进行签单、结账、然后此台号可以被重新使用。删除。进行修改。帮助文档:该文档里的内容有助于操作员及时明白自己的工作职责。退出系统按钮:点击此按钮可以选择是否要退出本系统。{Publicstaticvoidmain(Stringargs[]){}PublicTipWizardFrame(finalVectorusr,Stringuser){}PrivateStringgetNum(){}Privatevoida(JLabeldClueOnLabel){}}5.5.1日结账功能理酒店的管理事务,有效的调整经营策略。下面我们来简要介绍实现方a)界面绘制:super();setTitle("日结账");setSize(860,620);//设置窗体大小Toolkitkit=Toolkit.getDefaultToolkit();Dimensionscreensize=kit.getScreenSize();intHeight=screensize.height;intyy=(Height-600)/2;setLocation(xx,yy);finalJPanelpanel=newJPanel();{}else{intminYear=Integer.value{}}finalJLabelyearLabel=newJLabel();yearLabel.setText("年");panel.add(yearLabel);{}monthLabel.setText("月");{}finalJLabeldayLabel=newJLabel();dayLabel.setText("日");panel.add(dayLabel);):{{intyear=(Integer)yearboBox.getSelectedItem();{rowV.add(orderForm.get(rowV.add(orderForm.get(3).toString().substring(11,19));//开台时间rowV.add(orderForm.get(4){rowV.add("——");//商品消费数量,默认未消费}for(inti=0;i<orderItemV.size();i++){VectororderItem=(Vector)orderItemV.get(i);//消费项目对象{{intamount=(Integer)orderItem.if(rowV.get(column).toString().equals("——"))elsebreak;}}}}totalV.add("总计");totalV.add("——");totalV.add("——");inttotal=0;if(!value.equals("——"))total+=(Integer)value;}totalV.add(total);}tableValueV.add(totalV);}});5.5.2月结账和年结账所不同。这里不再陈述。5.5.3菜单管理合法;当返回false时表示验证未通过,数据不合法。具体代码如下:publicclassValidate{publicstaticbooleanexecute(Stringrule,Stringcontent){Patternpattern=Pattern.pile(rule);//利用验证规则创建Pattern对象returnmatcher.matches();//返回验证结果}}经过小组的讨论,我们认为,应尽量减少操作员的功能,而是将据不同情况作了相应的监听事件,在细节之处,让系统更加完善。法主要是一些文本区域、按钮的监听方法,他们可以规定一些数据输入的格式和范围。如下:if((values[2].pareTo("1753-1-1"))<0){Stringinfos[]={"出生日期输入错误!","正确格式为:日期应在1753-1-1以后"};birthdayTextField.setText("");birthdayTextField.requestFocus();return;}人性化和科学化:{{Stringvalues[]=newString[6];values[0]=nameTextField.getText().toString();values[1]=(manRadioButton.isSelected()?"男":"女");values[2]=birthdayTextField.getText();values[3]=idCardTextField.getText().toString();values[4]=passwordTextField.getText().toString();values[5]="正常";if(values[0].length()>4)//对输入的姓名长度作正则验证{nameTextField.setText("");return;//如果不正确,返回到输入对话框,重新输入}if(!Validate.execute("[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}",values[2])){Stringinfos[]={"出生日期输入错误!","正确格式为:2011-10-8"};birthdayTextField.setText("");birthdayTextField.requestFocus();//生日日期格式不正确,生日输入文本框重新获取焦点等待用户

温馨提示

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

评论

0/150

提交评论