资源描述
精品 可编辑修改 长沙理工大学城南学院 数据库原理课程设计报告 学 院 城南 专 业 班 级 学 号 学生姓名 指导教师 刘翌南 课程成绩 完成日期 2013 年 9 月 28 日 精品 可编辑修改 课程设计成绩评定 学 院 城南 专 业 班 级 学 号 学生姓名 指导教师 刘翌南 完成日期 2013 年 9 月 28 日 指导教师对学生在课程设计中的评价 评分项目 优 良 中 及格 不及格 课程设计中的创造性成果 学生掌握课程内容的程度 课程设计完成情况 课程设计动手能力 文字表达 学习态度 规范要求 课程设计论文的质量 指导教师对课程设计的评定意见 综合成绩 指导教师签字 2013年 月 日 精品 可编辑修改 课程设计任务书 城南学院 计算机科学与技术专业 课程名称 数据库课程设计 时间 20132014 学年第 1学期 3-4 周 学生姓名 指导老师 刘翌南 题 目 会议厅管理系统的设计与实现 主要内容:运用数据库原理知识,该实验是 MySQL数据库结合 JAVA语言设计一个会议厅管理系统,进行对会议厅的预定以及对会议厅的设施进行调整的一些基本功能,并用 MySQL数据库对会议厅的信息进行简单的储存与修改,使得此系统的功能更加完善。要求:(1)要求能独立地运用 SQL语言、JAVA相关知识和 MySQL数据库,编制一个简单的会议厅管理系统。(2)学生按要求编写课程设计报告书,能正确阐述设计和实验结果。(3)通过课程设计培养学生严谨的科学态度和团队协作精神。(4)学生应抱着严谨认真的态度积极投入到课程设计过程中,认真查阅相应文献以及实现,给出个人分析、设计以及实现。应当提交的文件:(1)课程设计学年论文。(2)课程设计附件(主要是源程序)。精品 可编辑修改 会议厅管理系统 摘 要 本课程设计主要解决 Eclipse环境系统下 MySQL的安装与配置实现问题,建立一个会议厅系统并对其进行配置与访问,再用几种方式对其文件进行下载。这里介绍了系统工作原理、中 MySQL 服务器的配置方法、Eclipse客户端常用命令的使用方法、与在不同系统中户端常用软件的与 MySQL 服务器的连接方法。通过对 MySQL 的学习,初步掌握 MySQL服务器的安装、启动、设置方法。关键词 JAVA;会议厅;MySQL 1 引 言 为了更好的让我们在学习数据库语言的过程中,充分了解和运用数据库语言。本程序设计可以更好的让我们去直观的了解数据库中的概念结构与关系模型的建立,在对实际问题的分析过程中编写数据字典,也给我们提供了一个很好的锻炼平台。1.1 课题设计目的 在我们日常学习数据库与 JAVA的过程中,我们总是对数据库的结构模型、概念模型感到陌生,对数据库的关系模型感到困惑。此次课程设计的目的就是要让我们解决以上这些在平时学习中觉得晦涩的部分进行详细的实现,在设计的过程中,会详细的掌握数据库访问的方法,并用高级语言来实现,进而熟悉数据库的知识,了解实际问题的求解效率与采用怎样的数据库储存的密切联系,最终使我们能够更好的了解与学习数据库系统与数据库语言。1.2 课题设计任务 如今不管学校还是其他机构处理会议厅预定信息是一个棘手的事情,本课程系统的开发主要包括后台数据库的建立和维护以及前端应用程序界面开发两个方面。对于后台数据库的建立和维护要求建立起数据的一致性和完整性、数据安全性好、符合 3NF 范式库。而前端应用程序的开发则要求应用程序能提供强大的数据操纵功能,界面友好、使用简单方便等特点。通过学生宿舍管理系统的设计,熟练掌握 JAVA、MYSQL 等工具软件,系统地掌握需求分析、数据库设计、测试等软件开发的流程,提高自身分析问题、解决问题能力。本课程设计任务是通过开发一个学生宿舍信息管理系统,学习数据库系统的设计与开发,采用 JAVA 和 MySQL 等软件为开发工具。通过对计算机硬件和软件解决方案的论证,对应用领域进行调查分析,参考各种资料和进行数据库系统开发实践,使得设计的数据库系统能够实现一般数据库的管理。精品 可编辑修改 2 系统结构分析与设计 2.1 功能需求分析 会议厅管理系统是适应时代发展的需要,提高管理的效率而开发设计的。通过对信息的收集、存储、传递、统计、分析、综合查询、报表输出和信息共享,实现了会议厅的预定管理的简单化和规划化,提高了工作效率,从而使能够更好的管理。经过综合分析,确定了会议厅预定管理系统的主要包括以下功能:(1).系统设置功能 系统设置包括预定者姓名、职位、时间段、会议设备、会议人数等基本信息,管理模块可以实现以下功能:添加、修改、删除和查看用户名信息、用户职位、年龄;添加、修改、删除和查看用户名信息、所需设备、会议室号;(2).会议厅预定管理功能 此模块的主要功能包括:会议厅已预订管理,包括添加、修改、删除和查看预定信息;会议厅预定管理,包括添加、修改、删除和查看预定信息;(3).会议厅预定信息统计查询管理 本模块用于对会议厅预定信息进行统计和查询,主要功能包括:会议厅的安排状况查询功能;2.2 性能需求分析 1硬件环境 处理器:AMD Athlon II X2 245 或是更高。内存:1GB。硬盘空间:300GB。2软件环境 操作系统:Windows Xp/Vista/7 2.3 数据字典 Book(类):保存有关会议室预订的情况,包括 bookID、listDetailId、meetingRoomId、userId、isFinished、isCancel、isEnsure 等属性。bookID:book 记录 ID。listDetailId:会议记录 ID。meetingRoomId:会议室 ID。userId:预订者 ID。isFinished:标示会议室预订是否完成。isCancel:标示会议室预订是否取消。isEnsure:标示会议室预订是否确定。MeetingList(类):会议信息类。保存有关会议的信息。含有属性:listId、userId、partNumber。精品 可编辑修改 listId:会议记录 ID。userId:用户 ID。partNumber:会议参加人数。MeetingRoom(类):保 存 有 关 会 议 室 的 信 息,包 括 属 性:meetingRoomId、meetingRoomName、seatingAmount。meetingRoomId:会议室编号。meetingRoomName:会议室名称。seatingAmount:会议室座位容量。2.4 数据库的创建(1)在该系统中数据库的连接使用 MySQL驱动。在 Eclipse软件中将驱动添加到工程中,然后在系统中装上 MySQL 的数据库,我们采用的是 MySQL-Front的应用软件来查看数据库中的表以及数据,当进入图中的按钮时,其即将添加 MySQL 在 Eclipse中的驱动程序,然后只需要在代码中加入数据库与编译平台编译的代码就可以让编译平台就和 MySQL可以联系起来。图 2.1 成功添加数据库驱动包图 图 2.2 添加驱动界面图(2)在系统中打开 MySQL数据库,可以在 DOS 界面中可以很清楚的看到 MySQL数据库的运行状况。精品 可编辑修改 图 2.3 在 DOS 界面中的运行状况(3)打开 MySQL-Front 软件,在登录命令中运用 localhost 服务器并采用 gbk的字符集点击进入即可。图 2.4 MySQL-Front 登录界面 (4)打开 MySQL-Front 软件,可以再 localhost 下面创建自己的数据库名称,然后把创建表的 SQL语言在编辑器中输入即可创建自己所需的表格。精品 可编辑修改 图 2.5 MySQL-Front 中创建数据库表 2.5 数据库的连接 打开 Eclipse,在主程序中输入以下代码即可完成连接。图 3.6 Eclipse中连接数据库代码 2.6 数据库备份和恢复方案(1)应用辅助工具进行备份和恢复 应用数据库辅助工具(如 sqlbackuptools)进行备份,选择所需要备份的数据库精品 可编辑修改 和目标地址即可进行数据备份,恢复数据库只需要指定备份文件和需要恢复的数据库即可进行数据恢复。(2)分离数据库法 在企业管理器中右击需要备份的数据库,选择“所有任务”,“分离数据库”,执行分析操作,拷贝数据库 MDF文件和 LDF文件。2.7 安全性要求 访问数据库时需要输入一些基本的详细信息。有必须填写的信息与可以选填的信息,如果必须填写的信息没有填写,系统将会自动报错。2.8 一致性要求 在管理系统相关的表之间,有较强的关联性。为了实现一致性的需求,各个表之间均建立起了相应的一致性约束。2.8 完整性要求 根据会议厅预定管理系统的要求,为保持数据的完整性,采用了数据库的事务机制,防止出现操作故障引起的数据不一致。3 会议厅系统的实现 3.1 设计情况 在此次会议厅管理系统程序开发过程中,有很多东西值得我们思考并总结。开发过程大体可分为以下几个步骤:(1)思考总体设计方案:总体结构和模块外部设计,功能分配。思考要实现整个程序大体需要的几个模块和其中用到的 JAVA语言与 SQL语言基本操作符、语句等。(2)画出总体设计方案流程图:用流程图的形式展现基本编程思想。(3)流程图具体化:即将流程图中的几大模块的具体实现思考清楚,可以用流程图的形式展现并想好实现的关键代码。(4)编辑程序代码:这是一个至关重要复杂而且需要反复修改的环节,在此环节中我发现总体设计和模块思想会存在很多问题,我会不断改进如何实现各函数功能,达到预期效果。(5)代码的调试:在 JAVA 环境下输入代码并进行调试和正确运行。在调试过程中会遇到很多需要精化的地方,需要十足的耐心与细心,不断改进完善程序。(6)最后修饰:程序可以正确运行之后,再不影响程序功能的情况下,运用各种辅助性符号,使界面更加美观漂亮,操作更人性化增强程序的新意与可行性。精品 可编辑修改 3.2 小组合作情况 由于系统规模较小,所以没有安排单独的白盒测试,而是相应地将这部分测试归并到系统编码过程中。整个测试过程基于自顶向下测试的组装模块的方法,先对主模块进行基本测试,然后在按深度优先策略逐一将子模块组装到主模块上进行测试,最后再对系统进行全面的整体测试。该程序实现了会议室管理系统应有的功能,即系统设置功能、信息管理功能、查询信息功能。我主要负责登录主界面的设计与数据库会议室列表数据界面的设计,功能实现如图所示,(1)登录主界面 图 3.1 CRRS 登陆主界面(2)数据库会议室列表数据 精品 可编辑修改 图 3.2 数据库会议室列表数据(3)数据库会议室的增、删、改。图 3.3 数据库会议室列表的新增 精品 可编辑修改 图 3.4 数据库会议室列表的修改 图 3.5数据库会议室列表的删除 精品 可编辑修改 4 总结 为了提高我们的实践能力,让我们学以致用,能灵活运用所学的知识进行再创造,学校特安排我们进行为期两周的方向综合课程设计,并安排了指导刘翌南知道老师帮助辅导,让我们在规范化、严谨化、实用化上面有了很大进展。通过这次课程设计,使我们更加熟悉的掌握了图的运用。帮助我们熟悉了更多数据库的功能,提高了我们的动手能力,学到了许多解决实际问题的宝贵经验同时也挖掘出了我们潜在的能力,使我们对自己更有自信,对编程也更有兴趣。我相信,只要努力、勤奋、坚持不懈,就没有什么做不到的事,不能还没开始就退缩,要勇于拼搏,敢于创新。参考文献 1 Y.Daniel Liang.Java语言程序设计基础篇M.北京:机械工业出版社,2008.2 严蔚敏.数据结构(C 语言版)M.北京:清华大学出版社,2006.3 邓一凡,余勇,罗云峰.JFC SwingM.北京:电子工业出版社,2005.4 萨师煊,王珊.数据库系统概论(第三版)M.北京:高等教育出版社,2005.附录:程序清单 MainFrame:public class MainFrame extends JFrame JLabel lab;JButton but1;public MainFrame()lab=new JLabel(new ImageIcon(d:/Blue hills.jpg);lab.setBounds(0,0,800,600);but1=new JButton(会议厅管理);but1.setBounds(250,180,300,100);but1.setFont(new Font(华文彩云,Font.BOLD,50);but1.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)new SalFrame();dispose(););this.add(but1);this.add(lab);this.setLayout(null);精品 可编辑修改 this.setTitle(主界面);this.setSize(800,600);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setResizable(false);this.setVisible(true);AddUserFrame public class AddUserFrame extends JDialog /定义注册信息相关组件 JLabel lab1;JLabel lab2;JLabel lab3;JTextField aid;JTextField aname;JTextField seat;JButton but;SalFrame sf;public AddUserFrame(SalFrame sf)/设置窗口显示不能切换 super(sf,true);this.sf=sf;/创建相应的组件 lab1=new JLabel(会议厅编号:);lab2=new JLabel(会议厅名称:);lab3=new JLabel(座位数:);aid=new JTextField(20);aname=new JTextField(20);seat=new JTextField(20);but=new JButton(提交);but.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)String sql=insert into auditoria values(+aid.getText()+,+aname.getText()+,+seat.getText()+);/1、注册驱动 try Class.forName(oracle.jdbc.driver.OracleDriver);catch(ClassNotFoundException e1)e1.printStackTrace();String url=jdbc:oracle:thin:localhost:1521:oracle;try /2、建立链接 Connection con=DriverManager.getConnection(url,scott,tiger);/3、创建SQL执行对象 精品 可编辑修改 Statement sta=con.createStatement();/4、执行SQL sta.executeUpdate(sql);/5、关闭链接 sta.close();con.close();catch(SQLException e1)e1.printStackTrace();JOptionPane.showMessageDialog(AddUserFrame.this,新增成功!);AddUserFrame.this.sf.setTableDate();dispose(););/将基本组件添加到界面中 this.add(lab1);this.add(aid);this.add(lab2);this.add(aname);this.add(lab3);this.add(seat);this.add(but);/设置界面布局为流式布局 this.setLayout(new FlowLayout(FlowLayout.LEFT);this.setTitle(会议厅新增);this.setSize(240,400);this.setResizable(false);this.setVisible(true);EditUserFrame public class EditUserFrame extends JDialog /定义注册信息相关组件 JLabel lab1;JLabel lab2;JLabel lab3;JTextField aid;JTextField aname;JTextField seat;JButton but;SalFrame sf;public EditUserFrame(SalFrame sf)/设置窗口显示不能切换 super(sf,true);this.sf=sf;/创建相应的组件 精品 可编辑修改 lab1=new JLabel(会议厅编号:);lab2=new JLabel(会议厅名称:);lab3=new JLabel(座位数:);aid=new JTextField(sf.table.getValueAt(sf.table.getSelectedRow(),0).toString(),12);aid.setEditable(false);aname=new JTextField(sf.table.getValueAt(sf.table.getSelectedRow(),1).toString(),12);seat=new JTextField(sf.table.getValueAt(sf.table.getSelectedRow(),2).toString(),12);but=new JButton(提交);but.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)String sql=update auditoria set aname=+aname.getText()+,seat=+seat.getText()+where aid=+aid.getText()+;/1、注册驱动 try Class.forName(oracle.jdbc.driver.OracleDriver);catch(ClassNotFoundException e1)e1.printStackTrace();String url=jdbc:oracle:thin:localhost:1521:oracle;try /2、建立链接 Connection con=DriverManager.getConnection(url,scott,tiger);/3、创建 SQL执行对象 Statement sta=con.createStatement();/4、执行 SQL sta.executeUpdate(sql);/5、关闭链接 sta.close();con.close();catch(SQLException e1)e1.printStackTrace();JOptionPane.showMessageDialog(EditUserFrame.this,修改成功!);EditUserFrame.this.sf.setTableDate();dispose(););/将基本组件添加到界面中 this.add(lab1);this.add(aid);this.add(lab2);this.add(aname);this.add(lab3);精品 可编辑修改 this.add(seat);this.add(but);/设置界面布局为流式布局 this.setLayout(new FlowLayout(FlowLayout.LEFT);this.setTitle(会议厅修改);this.setSize(240,400);this.setResizable(false);this.setVisible(true);LoginFrame public class LoginFrame extends JFrame JLabel lab1;/定义文本显示(用户)JLabel lab2;/定义文本显示(密码)JTextField tcode;/定义文本输入框 JPasswordField pwd;/定义密码输入框 JButton but1;/登录按钮 JButton but2;/注册按钮 /构造方法 public LoginFrame()lab1=new JLabel(用户:);/创建组件 lab1.setBounds(80,40,80,50);/定义组件的位置和大小 lab2=new JLabel(密码:);lab2.setBounds(80,110,80,50);tcode=new JTextField();tcode.setBounds(140,50,180,30);pwd=new JPasswordField();pwd.setBounds(140,120,180,30);but1=new JButton(登录);but1.setBounds(100,170,90,40);but2=new JButton(重置);but2.setBounds(210,170,90,40);/为登录按钮添加点击事件 but1.addActionListener(new ActionListener()/按钮点击后触发的方法 public void actionPerformed(ActionEvent e)boolean flag=false;/1、注册驱动 try Class.forName(oracle.jdbc.driver.OracleDriver);catch(ClassNotFoundException e1)e1.printStackTrace();String url=jdbc:oracle:thin:localhost:1521:oracle;try 精品 可编辑修改 /2、建立链接 Connection con=DriverManager.getConnection(url,scott,tiger);/3、创建 SQL执行对象 Statement sta=con.createStatement();/4、执行 SQL返回结果集 String sql=select*from tuser where tcode=+tcode.getText()+and pwd=+pwd.getText()+;ResultSet rs=sta.executeQuery(sql);/5、操作结果集 while(rs.next()flag=true;/6、关闭链接 rs.close();sta.close();con.close();catch(SQLException e1)e1.printStackTrace();if(flag=true)/登录成功情况 /打开主界面 new MainFrame();/关闭登录窗口 dispose();else /弹出框消息提示 JOptionPane.showMessageDialog(LoginFrame.this,账号或者密码错误!););/为注册按钮添加事件 but2.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)tcode.setText();pwd.setText(););/把所有组件添加到窗口中 this.add(lab1);this.add(lab2);this.add(tcode);this.add(pwd);精品 可编辑修改 this.add(but1);this.add(but2);/设置窗口的布局(坐标定位布局,空布局)this.setLayout(null);/设置窗口标题 this.setTitle(用户登录);/设置窗口大小 this.setSize(400,300);/设置窗口不可改变大小 this.setResizable(false);/设置窗口关闭时退出程序 this.setDefaultCloseOperation(EXIT_ON_CLOSE);/设置窗口显示 this.setVisible(true);public static void main(String args)LoginFrame lf=new LoginFrame();SalFrame public class SalFrame extends JFrame JTable table;/表格显示组件 JScrollPane spane;/滚动面板 JButton but1;JButton but2;JButton but3;JPanel panel;public SalFrame()table=new JTable(this.getData();spane=new JScrollPane(table);but1=new JButton(新增);but1.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)new AddUserFrame(SalFrame.this););but2=new JButton(修改);but2.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)int row=table.getSelectedRow();if(row=-1)JOptionPane.showMessageDialog(SalFrame.this,请先选择一行再进行修改!);else new EditUserFrame(SalFrame.this);精品 可编辑修改 );but3=new JButton(删除);but3.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)int row=table.getSelectedRow();if(row=-1)JOptionPane.showMessageDialog(SalFrame.this,请先选择一行再进行删除!);else String sql=delete auditoria where aid=+table.getValueAt(row,0)+;/1、注册驱动 try Class.forName(oracle.jdbc.driver.OracleDriver);catch(ClassNotFoundException e1)e1.printStackTrace();String url=jdbc:oracle:thin:localhost:1521:oracle;try /2、建立链接 Connection con=DriverManager.getConnection(url,scott,tiger);/3、创建 SQL执行对象 Statement sta=con.createStatement();/4、执行 SQL sta.executeUpdate(sql);/5、关闭链接 sta.close();con.close();catch(SQLException e1)e1.printStackTrace();JOptionPane.showMessageDialog(SalFrame.this,删除成功!);setTableDate(););panel=new JPanel(new GridLayout(1,5);panel.add(new JLabel();panel.add(but1);panel.add(but2);panel.add(but3);panel.add(new JLabel();this.add(spane);this.add(panel,BorderLayout.SOUTH);精品 可编辑修改 this.setTitle(会议厅管理);this.setSize(800,600);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setResizable(false);this.setVisible(true);public void setTableDate()this.table.setModel(this.getData();public DefaultTableModel getData()Vector data=new Vector();Vector column=new Vector();column.add(会议厅编号);column.add(会议厅名称);column.add(座位数);/1、注册驱动 try Class.forName(oracle.jdbc.driver.OracleDriver);catch(ClassNotFoundException e1)e1.printStackTrace();String url=jdbc:oracle:thin:localhost:1521:oracle;try /2、建立链接 Connection con=DriverManager.getConnection(url,scott,tiger);/3、创建 SQL执行对象 Statement sta=con.createStatement();/4、执行 SQL返回结果集 String sql=select*from auditoria;ResultSet rs=sta.executeQuery(sql);/5、操作结果集 while(rs.next()Vector v=new Vector();v.add(rs.getString(aid);v.add(rs.getString(aname);v.add(rs.getInt(seat);data.add(v);/6、关闭链接 rs.close();sta.close();con.close();精品 可编辑修改 catch(SQLException e1)e1.printStackTrace();DefaultTableModel model=new DefaultTableModel(data,column);return model;
展开阅读全文