java课程设计报告.doc

上传人:文库蛋蛋多 文档编号:2387108 上传时间:2023-02-17 格式:DOC 页数:24 大小:1.21MB
返回 下载 相关 举报
java课程设计报告.doc_第1页
第1页 / 共24页
java课程设计报告.doc_第2页
第2页 / 共24页
java课程设计报告.doc_第3页
第3页 / 共24页
java课程设计报告.doc_第4页
第4页 / 共24页
java课程设计报告.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《java课程设计报告.doc》由会员分享,可在线阅读,更多相关《java课程设计报告.doc(24页珍藏版)》请在三一办公上搜索。

1、目录前言11 系统功能分析22 开发技术介绍33 数据库设计43.1 数据库中的数据表43.2 数据库中的E-R图54 详细设计64.1 系统功能模块划分64.2 前台服务74.2.1 开台点菜74.2.2 智能化获取菜品84.2.3 消费结账94.3 基础信息104.3.1 菜品管理104.3.2 菜系管理124.3.3 台号管理134.4 结账报表144.4.1 日结账报表144.4.2 月结账报表144.4.3 年结账报表154.5 系统安全164.5.1 修改密码164.5.2 用户管理165 课程设计小结176 致谢177 参考文献188 附录18前言Java Java技术是当今最流

2、行最实用的计算机技术,是二十世纪九十年代的计算机技术的重大发明,Java语言是一种纯粹面向对象的高级编程语言,是因特网上的世界语;当前Java应用形势一片大好,是整个企业系统的宠儿; 掌握Java技术是每一个关心和立志从事IT事业的人的内功, 也是当前市场的迫切需要, 更是振兴中华软件的绝好机会。Java是现在全球最时髦的开发工具之一,它拥有一套庞大且完善的类库,内置了其他语言需要靠库甚至是操作系统才能支持的功能,拥有一个虚拟机,总之,Java的出现,确实给整个程序界带来了巨大的冲击,也许现在还无法准确评估Java为整个IT业带来的影响,但是有一点却毋庸置疑-Java将不可避免地影响一代程序员

3、. Java是面积网络的设计语言,用来让程序员创建应用程序,这些应用程序可以通过下载,而且可在任何计算平台上安全地运行,如果再加上互联网和公司企业内部网体系,你将会拥有一个未准的网络计算环境,Java作为一个分布式的,面向对象的程序设计各方,可以让位于任何地方的任何计算机应用网络上的的应用程序. 综合上述,Java的生命力体现在如下方面: 1. Java产生与流行是InterNet发展的客观要求. 2.是一门各方面性能都很好的编程语言,它的基本特点是简单,面向对象,分布式,解释的,健壮的,完全的,结构中立的,可移植的,性能很优异的,多线程的,动态的,适合的Internet环境上开发应用系统.

4、3.Java可以制作大部分网络应用程序系统,而且与如今流行的WWW浏览器结合很好. 4.Java不仅仅是一种各方,更重要的是一种区别于传统系统,遵守网络就是计算机信条的平台技术.Java平台将面向对象系统扩展成包括程序和数据的网络计算机(NC),而这个平台的核心就是Java虚拟机,许多使Java成为万能开发平台的属性都源于Java虚拟机的概念和实现.Java语言是一种功能强大的编程语言,分为J2SE、J2ME、J2EE几个版本,作为初学者,我们先学习J2SE,在此基础上我们做了一个关于酒店管理的系统。1 系统功能分析酒店管理系统是针对酒店设计的一个软件,用户分为管理员用户和普通用户,普通用户只

5、有前台服务中的前台点菜,获取菜品和修改密码的权限。管理员拥有前台服务中的开台点菜、智能化获取菜品、消费结账;基础信息中的菜品管理、菜系管理、台号管理;结账报表中的日结账报表、月结账报表、年结账报表以及结账报表添加导出功能;系统安全中的修改密码、用户管理。系统的具体流程图如下1-1所示:图 1-1 系统流程图2 开发技术介绍Java的开发中主要用到得技术java se,Java SE 是Java平台标准版的简称(Java Platform, Standard Edition) (also known as Java 2 Platform) ,用于开发和部署桌面、服务器以及嵌入设备和实时环境中的J

6、ava应用程序。Java SE包括用于开发Java Web服务的类库,同时,Java SE为Java EE提供了基础。 Java SE(Java Platform, Standard Edition,Java标准版)就是基于JDK和JRE的。Common Dbutils是操作数据库的组件,对传统操作数据库的类进行二次封装,可以把结果集转化成List。 DBUtils包括3个包: mons.dbutils mons.dbutils.handlers mons.dbutils.wrappers DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。 mons.dbutils Db

7、Utils 关闭链接等操作 QueryRunner 进行查询的操作 mons.dbutils.handlers ArrayHandler :将ResultSet中第一行的数据转化成对象数组 ArrayListHandler将ResultSet中所有的数据转化成List,List中存放的是Object BeanHandler :将ResultSet中第一行的数据转化成类对象 BeanListHandler :将ResultSet中所有的数据转化成List,List中存放的是类对象 ColumnListHandler :将ResultSet中某一列的数据存成List,List中存放的是Object

8、对象 KeyedHandler :将ResultSet中存成映射,key为某一列对应为Map。Map中存放的是数据 MapHandler :将ResultSet中第一行的数据存成Map映射 MapListHandler :将ResultSet中所有的数据存成List。List中存放的是Map ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object mons.dbutils.wrappers SqlNullCheckedResultSet :对ResultSet进行操作,改版里面的值 StringTrimmedResultSet :去除ResultSet中

9、中字段的左右空格。Trim()3 数据库设计3.1 数据库中的数据表系统的数据库中一共用了六张数据表,分别是tb_desk,tb_menu, tb_order_form,tb_order_item,tb_sort ,tb_sort tb_user表中的具体字段及各个字段的意义见下列各表:(1)桌子信息表用于存放台号及其座位数如下表3-1所示:字段名称字段说明字段类型num桌子号varcharseating桌子的座位数int表3-1 桌子信息表tb_desk(2)菜基本信息表tb_menu,主用于存放菜品编号、名称、单价等菜品信息。菜品信息表如下表3-2所示:字段名称字段说明字段类型num菜的编

10、号char(8)sort_id菜系编号intname菜名Varchar(20)code助记符Varchar(10)unit单位Varchar(4)unit_price单价Intstate状态Char(4)表3-2 菜基本信息表tb_menu(3)顾客点菜表tb_order_form:用于存放签单编号、时间、总消费额等签单信息。如表3-3所示:字段名称字段说明字段类型num顾客菜单编号 Char(11)desk_num顾客桌子号Varchar(5)datetime点菜时间datetimemoney消费金额intuser_id外键,当前操作人员编号int表3-3顾客点菜表tb_order_form

11、(4)顾客点菜统计表tb_order_item:用于存放签单所签菜品编号、消费数量等签单详细信息。如下表3-4所示:字段名称字段说明字段类型id主键varcharorder_form_num顾客菜单编号Char(11)menu_num对应菜单编号Char(8)amount总共点菜数inttotal总价Int表3-4 顾客点菜统计表tb_order_item(5)菜系类别表tb_sort:存放菜类名称等信息,如下表3-5所示:表3-5 菜系类别表tb_sort字段名称字段说明字段类型id菜系编号intname菜系名Varchar(20)(6)管理员信息表tb_user:存放操作员账号密码、权限级

12、别及其基本信息。如下表3-6所示:表3-6 管理员信息表tb_user字段名称字段说明字段类型id用户编号intname用户名Varchar(8)sex性别Char(2)birthday出生日期Datetimeid_card身份证号Varchar(20)password登录密码Varchar(50)freeze使用状态Char(4)3.2 数据库中的E-R图E-R图是反映各个实体之间的关系的,以及实体的属性,为数据库提供了一个很直观的效果。E-R图如下图3-1所示:图 3-1 全局E-R图4 详细设计详细设计也即过程设计,确定如何具体地实现酒店管理系统所需的功能,准确描述概要设计中划分的各模块

13、具体执行过程,从而在编码阶段可以直接把这个描述翻译成某种语言书写的程序。4.1 系统功能模块划分 按结构化设计方法,在系统功能逐层分解的基础上,对系统各功能模块进行设计。酒店管理系统,包含四个模块:前台服务、基础信息、结账报表和系统安全;具体的结构设计图HIPO图如下:图 4-1结构设计图HIPO4.2 前台服务前台服务主要是为了提供酒店日常运营时候的各个功能,可以进行用户登录、开台点菜、智能化获取菜品和常用的消费结账。4.2.1用户登录 用户登录用于用户登录进入主界面,由于进行运行方便的需要,默认用户名和密码改为系统默认帐号和密码。用户登录效果如图4-2所示:图 4-2 用户登录图4.2.2

14、 开台点菜开台点菜是当有顾客需要点菜的时候,直接选择酒店的某一台号,然后添加若干菜品开单,可在签单前取消所选菜品,签单后不可取消,同时要求在选择菜品时显示该台的消费金额,在经客人确定后签单该台的点菜。 智能化获取菜品功能是可根据菜品的编码或者助记码(拼音首字母)选择菜品,在输入相关信息的同时显示有关菜品,可通过“开单”按钮或回车键开单。开台点菜和智能化获取菜品功能效果如下图4-3所示: 图 4-3 开台点菜图4.2.3 消费结账消费结账是在客人签完单之后结账的时候需要的,并显示找零金额信息。具体效果如下图所示:图 4-4 消费结账图4.3 基础信息基础信息模块可以对菜品,菜系以及台号进行管理,

15、在菜品管理中可以对菜品进行添加删除功能;在菜系管理中可以对菜系进行添加、删除;在台号管理中可以对台号进行添加、删除的功能。4.3.1 菜品管理菜品管理可以添加和删除菜品;菜品信息包括编号(自动产生)、名称、单位、助记码、菜系、单价信息。添加和删除功能效果如下图4-5所示:图 4-5 菜品管理窗体效果图4.3.2 菜系管理菜系管理是对酒店所有的菜系进行管理,如添加、删除菜系名称;添加和删除功能效果图如图4-7所示:图 4-7 菜系管理窗体效果图4.3.3 台号管理台号管理是针对桌子的号码以及座位数进行添加,删除操作的;添加和删除效果如图4-9所示:图 4-9 台号管理窗体效果图4.4 结账报表4

16、.4.1 日结账报表日结账报表可以显示与查询日结账报表,包括编号、台号、开台时间、消费金额以及该单中消费的菜品与数量信息;显示效果如图4-11所示:图 4-11 日结账报表图4.4.2 月结账报表月结账报表是显示与查询月结账报表,包括日期、开台总数、消费总额、平均消费额、最大消费额、最小消费额信息;显示效果如图4-12所示:图 4-12 月结账报表图4.4.3 年结账报表年结账报表是显示与查询年结账报表,包括一年中每个月每天的消费金额以及每个月消费总计与每个月同一天的消费总计信息;显示效果如图4-13所示:图 4-13 年结账报表图4.5 系统安全4.5.1 修改密码修改密码功能为用户的安全考

17、虑,用户可以修改自己的用户密码;显示效果如图4-14所示:图 4-14修改用户密码图4.5.2 用户管理用户管理模块可以添加、删除用户,包括姓名、性别、出生日期、登录密码、身份证号信息;效果显示图如4-15所示:图 4-15 用户管理图5 课程设计小结此次课程设计由于时间紧迫,被允许由三到四人合作分工完成,在此过程中遇到诸多问题,例如数据库链接、Java类命名和Java程序完成后的模块组装等问题。在此次设计中,张海峰负责菜品管理模块、李志芳负责结账管理模块、我(徐聪)负责前台服务和用户管理模块。由于本组中有男女组合,沟通问题受到极大挑战。通过此次课程设计,极大提升了我们的Java设计能力以及理

18、解能力,并加大了我们的Java合作设计的了解度。6 致谢在这个项目的制作的过程中,得到了很多人的帮助,首先感谢学校提供给了我们这样的机会来将理论知识转化为实际经验;其次感谢陈涛老师在这个项目上的指导和提供的帮助;最后感谢很多热心的同学的帮忙,很多困难都是在大家的讨论中得到解决的办法的。7 参考文献1 胡伏湘 雷军环. Java程序设计实用教程 北京:清华大学出版社,2009.8 2 张跃平 耿祥义. Java大学实用教程学习指导 北京:电子工业出版社,2008.53 谭浩强. Java编程技术 北京:人民邮电出版社,2003.4 8 附录部分主要代码:1)登录模块的主要代码:public cl

19、ass LandFrame extends JFrame private JLabel namelabel; / 用户名文本输出显示private JLabel pswlabel; / 密码文本输出显示private JPasswordField passwordField; / 密码框private JComboBox usernameComboBox; / 用户名下拉菜单private JLabel eplabel1,eplabel2; / 按钮之间的空格public static void main(String args) try LandFrame frame = new LandF

20、rame();frame.setVisible(true); catch (Exception e) e.printStackTrace();public LandFrame() / 首先设置窗口的相关信息setTitle(酒店管理系统-登录); / 设置窗口的标题setResizable(false); / 设置窗口不可以改变大小setAlwaysOnTop(true); / 设置窗口总在最前方setBounds(100, 100, 300, 200); / 设置窗口的大小setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); / 设置当关闭窗口时执行

21、的动作/ 下面将创建一个面板对象并添加到窗口的容器中final JPanel panel = new JPanel(); / 创建一个面板对象panel.setLayout(new GridBagLayout(); / 设置面板的布局管理器为网格组布局getContentPane().add(panel, BorderLayout.CENTER); / 将面板添加到窗体中/添加用户名输入前的文本输出显示namelabel=new JLabel();namelabel.setText(用户名 :);namelabel.setFont(new Font(宋体,Font.BOLD,16);final

22、 GridBagConstraints g1 = new GridBagConstraints();g1.insets=new Insets(15,0,0,0); /将顶部、左边、底部、右边设置为指定值g1.gridx = 1; / 设置行索引为2g1.gridy = 1; / 设置列索引为1panel.add(namelabel, g1);/ 将组件按指定的布局管理器添加到面板中/ 创建并设置用户名下拉菜单usernameComboBox = new JComboBox(); / 创建用户名下拉菜单组件对象usernameComboBox.setMaximumRowCount(5); / 设

23、置下拉菜单最多可显示的选项数usernameComboBox.addItem(徐聪); / 为下拉菜单添加提示项usernameComboBox.addActionListener(new UsernameComboBoxActionListener(); / 为下拉菜单添加事件监听器g1.anchor = GridBagConstraints.WEST; / 设置为靠左侧显示g1.insets=new Insets(15,0,0,0); / 将顶部、左边、底部、右边设置为指定值g1.gridy = 1; / 设置行索引为1g1.gridx = 2; / 设置列索引为2panel.add(us

24、ernameComboBox, g1); / 将组件按指定的布局管理器添加到面板中/ 添加密码输入前的文本输出显示pswlabel=new JLabel();pswlabel.setText(密 码 :);pswlabel.setFont(new Font(宋体,Font.BOLD,16);g1.insets=new Insets(15,0,0,0);g1.gridx = 1;g1.gridy = 2;panel.add(pswlabel, g1);/ 创建并设置密码框passwordField = new JPasswordField();passwordField.setColumns(1

25、0); / 设置密码框可显示的字符数passwordField.setText(111); / 设置密码框默认显示三个一g1.insets = new Insets(5, 0, 0, 0); / 设置组件外部上方的填充量为5像素g1.anchor = GridBagConstraints.WEST;g1.gridy = 2;g1.gridx = 2;panel.add(passwordField, g1);/ 创建并设置一个用来添加三个按钮的面板final JPanel buttonPanel = new JPanel(); / 创建一个用来添加按钮的面板buttonPanel.setOpaq

26、ue(false); / 设置面板的背景为透明buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS); / 设置面板采用水平箱布局final GridBagConstraints g2 = new GridBagConstraints(); / 创建网格组布局管理器对象g2.insets = new Insets(10, 0, 0, 0); / 设置组件外部上方的填充量为10像素g2.gridwidth = 2; / 设置其占两列g2.gridy = 3; / 设置行索引为3g2.gridx = 1; / 设置列索引

27、为1panel.add(buttonPanel, g2); / 将组件按指定的布局管理器添加到面板中/ 创建并设置一个登录按钮,并将其添加到用来添加按钮的面板中final JButton landButton = new JButton(); / 创建登录按钮组件对象landButton.setText(登 陆);landButton.setMargin(new Insets(0, 0, 0, 0); / 设置按钮边框和标签之间的间隔landButton.setContentAreaFilled(false); / 设置不绘制按钮的内容区域landButton.setBorderPainted

28、(true); / 设置不绘制按钮的边框landButton.addActionListener(new LandButtonActionListener();buttonPanel.add(landButton); / 将登录按钮添加到用来添加按钮的面板中eplabel1=new JLabel();eplabel1.setText( );buttonPanel.add(eplabel1);/ 重置按钮的创建和添加final JButton resetButton = new JButton();resetButton.setText(重 置);resetButton.setMargin(ne

29、w Insets(0, 0, 0, 0);resetButton.setContentAreaFilled(false);resetButton.setBorderPainted(true);resetButton.addActionListener(new ResetButtonActionListener();buttonPanel.add(resetButton);eplabel2=new JLabel();eplabel2.setText( );buttonPanel.add(eplabel2);/ 退出按钮的创建和添加final JButton exitButton = new JB

30、utton();exitButton.setText(退 出);exitButton.setMargin(new Insets(0, 0, 0, 0);exitButton.setContentAreaFilled(false);exitButton.setBorderPainted(true);exitButton.addActionListener(new ExitButtonActionListener();buttonPanel.add(exitButton);/ 初始化用户名下拉菜单Vector userNameV = Dao.getInstance().sUserNameOfNot

31、Freeze();if (userNameV.size() = 0) / 添加复选框选项内容usernameComboBox.addItem(徐聪); else for (int i = 0; i userNameV.size(); i+) usernameComboBox.addItem(userNameV.get(i);2)用户管理模块的主要代码public UserManagerDialog() super();setModal(true);setTitle(酒店管理系统-用户管理);setBounds(100, 100, 500, 375);final JPanel inputPane

32、l = new JPanel();inputPanel.setLayout(new GridBagLayout();getContentPane().add(inputPanel, BorderLayout.NORTH);final JLabel nameLabel = new JLabel();nameLabel.setText(姓 名:);final GridBagConstraints gridBagConstraints_13 = new GridBagConstraints();gridBagConstraints_13.insets = new Insets(10, 0, 0, 0

33、);inputPanel.add(nameLabel, gridBagConstraints_13);nameTextField = new JTextField();nameTextField.setColumns(6);final GridBagConstraints gridBagConstraints = new GridBagConstraints();gridBagConstraints.insets = new Insets(10, 0, 0, 0);gridBagConstraints.gridy = 0;gridBagConstraints.gridx = 1;inputPa

34、nel.add(nameTextField, gridBagConstraints);final JLabel sexLabel = new JLabel();sexLabel.setText(性别:);final GridBagConstraints gridBagConstraints_1 = new GridBagConstraints();gridBagConstraints_1.insets = new Insets(10, 15, 0, 0);gridBagConstraints_1.gridy = 0;gridBagConstraints_1.gridx = 2;inputPan

35、el.add(sexLabel, gridBagConstraints_1);final JRadioButton manRadioButton = new JRadioButton();buttonGroup.add(manRadioButton);manRadioButton.setText(男);manRadioButton.setSelected(true);final GridBagConstraints gridBagConstraints_2 = new GridBagConstraints();gridBagConstraints_2.insets = new Insets(1

36、0, 0, 0, 0);gridBagConstraints_2.gridy = 0;gridBagConstraints_2.gridx = 3;inputPanel.add(manRadioButton, gridBagConstraints_2);final JRadioButton womanRadioButton = new JRadioButton();buttonGroup.add(womanRadioButton);womanRadioButton.setText(女);final GridBagConstraints gridBagConstraints_3 = new Gr

37、idBagConstraints();gridBagConstraints_3.insets = new Insets(10, 0, 0, 0);gridBagConstraints_3.gridy = 0;gridBagConstraints_3.gridx = 4;inputPanel.add(womanRadioButton, gridBagConstraints_3);final JLabel birthdayLabel = new JLabel();birthdayLabel.setText(出生日期:);final GridBagConstraints gridBagConstra

38、ints_4 = new GridBagConstraints();gridBagConstraints_4.insets = new Insets(10, 15, 0, 0);gridBagConstraints_4.gridy = 0;gridBagConstraints_4.gridx = 5;inputPanel.add(birthdayLabel, gridBagConstraints_4);birthdayTextField = new JTextField();birthdayTextField.setColumns(10);final GridBagConstraints gr

39、idBagConstraints_5 = new GridBagConstraints();gridBagConstraints_5.insets = new Insets(10, 0, 0, 0);gridBagConstraints_5.gridy = 0;gridBagConstraints_5.gridx = 6;inputPanel.add(birthdayTextField, gridBagConstraints_5);final JLabel passwordLabel = new JLabel();passwordLabel.setText(登录密码:);final GridB

40、agConstraints gridBagConstraints_8 = new GridBagConstraints();gridBagConstraints_8.insets = new Insets(5, 0, 0, 0);gridBagConstraints_8.gridy = 1;gridBagConstraints_8.gridx = 0;inputPanel.add(passwordLabel, gridBagConstraints_8);passwordTextField = new JTextField();passwordTextField.setColumns(15);final GridBagConstraints gridBagConstraints_9 = new GridBagConstraints();gridBagConstraints_9.gridwidth = 4;gridBagConstraints_9.anchor = GridBagConstraints.WEST;gridBagC

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号