已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
徐州工程学院 信电工程学院 09软件2班 王晓峰 20090501136 面向对象课程设计成绩 徐州工程学院面向对象程序设计课程设计报告 设 计 名 称 宿舍人员管理系统 学 院 信电工程学院 专 业 计算机科学与技术 班 级 09软件2班 学 生 姓 名 王晓峰 学 号 20090501136 设 计 地 点 计算机应用技术实验室 指 导 教 师 胡局新 设计起止时间:2012年1月 2日至 2012年 1月 6日 一、 目的及意义本次课程设计的题目是“宿舍人员管理系统”。在如今的高校或者中学,学生人数越来越多,住宿的学生相应的也越来越多,原本的手工管理宿舍人员显然已经很难适应庞大的学生的数量,这次设计的目的和意义就是,方便管理人员对住宿学生进行管理,能够清楚便捷的对宿舍人员进行管理,轻松地对宿舍人员进行增加,修改,删除,查询,并且通过树结构可以一目了然学校宿舍的住宿情况。这次课程设用到了,数据库,初层次的设计模型,JAVA GUI界面设计,JDBC等方面的知识,加深了JAVA基础知识的理解,了解了很多以往没有接触到的java类库,对今后数据库操作,软件设计的模式和步骤都有很大的帮助。二、 设计方案(1) 课题概述: 1.功能需求1.1.1 添加功能:当有人员入住宿舍时,使用添加功能进行人员信息的添加。11.2删除功能:当人员毕业或者其他情况不在宿舍住了,使用删除功能删除学生的信息。1.1.3 查询功能:当要获取某个人的信息资料时,使用查询功能,可以方便找到需要的信息。1.1.4 修改功能:当有人员更换宿舍或者信息需要修改时,使用修改功能对人员资料进行修改。1.5显示功能:以树的层次结构来显示,能够方便显示学校个宿舍楼的住宿情况。2.界面需求:1.2.1 登录界面:只有输入正确的用户名和密码,才可以使用这个系统软件。1.2.2 主界面:以简单清晰的操作界面,提供简单方便的操作方式,让操作者轻松的使用这个系统。3.类的设计:1.3.1为保证学生信息得以封装,在设计数据库学生表的同时,设计一个学生类(student)与之对应。1.3.2为了实现数据库与JAVA之间各种操作,需要设计一个数据库类(DataBase)1.3.3为了是系统更具完整性,在界面中加入了一个时间类(Today),用来显示当前系统的时间。1.3.4在核心JTable中需要一个模型类(stuModel),用来进行数据在表中的显示与更改。4.数据库选择考虑到系统的健壮性,本系统采用了SQL SERVER 2008数据库。SQL SERVER 2008操作界面相对简单,使用非常方便。5.环境需求 本系统开发环境为myEclipse+WINDOW 7操作系统+SQL SERVER 2008(2)功能结构图和流程图2.1 整个系统模型图 宿舍人员管理系统主界面登录界面查询模块删除模块添加模块修改模块返回结束2.2流程图删除学生信息修改学生信息返回登录界面查询学生信息退 出 系 统开始输入密码正 确退出主 界 面结 束删除学生信息修改学生信息返回登录界面查询学生信息(2) 数据库设计I 新建数据库II本次数据库设计运用到了一张表,即学生表。学生表中包括5个字段,分别为id(学号),name(姓名),sex(性别),dormId(宿舍楼号),roomId(房间号),其设计如下图所示 三、具体实现过程 (1)各功能模块的实现 3.1.0新建项目3.1.1登录模块设计当用户输入正确的用户名和密码才可以进入主界面,提高系统的安全性,防止非法用户进入系统操作。public class LandFrame extends javax.swing.JFrame implements ActionListener Overridepublic void actionPerformed(ActionEvent arg0) /登录if(arg0.getSource()=button1)if(jTextField1.getText().equals(wxf)&jPasswordField1.getText().equals(123456)JOptionPane.showMessageDialog(null, 登录成功);MainPageList main=new MainPageList();this.dispose();elseJOptionPane.showMessageDialog(null, 登录失败,密码或用户名错误);jTextField1.setText();jPasswordField1.setText();/取消else if(arg0.getSource()=button2)this.dispose();/重置else if(arg0.getSource()=button3)jTextField1.setText();jPasswordField1.setText();3.1.2 主界面的设计public class MainPageList extends JFrame implements ActionListener 部分代码省略background.add(timeLabel);new Time().start();/ 开启线程this.setSize(800,550);Toolkit kit = Toolkit.getDefaultToolkit();Dimension dim = kit.getScreenSize();int height = dim.height;int width = dim.width;int x = (width - 800) / 2;int y = (height - 600) / 2;this.setTitle(简易宿舍人员管理系统);this.setLocation(x, y);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);this.setResizable(false);class Time extends Thread / 创建内部类public void run() / 重构父类的方法while (true) Date date = new Date();/ 创建日期对象timeLabel.setText(date.toString().substring(11, 19);/ 获取当前时间,并显示到时间标签中try Thread.sleep(1000);/ 令线程休眠1秒 catch (InterruptedException e) e.printStackTrace();Overridepublic void actionPerformed(ActionEvent arg0) / 点击退出按钮if (arg0.getSource() = jb5) this.dispose();/ 点击返回登录按钮else if (arg0.getSource() = jb6) java.awt.EventQueue.invokeLater(new Runnable() public void run() new LandFrame().setVisible(true); );this.dispose();/ 点击查询按钮else if (arg0.getSource() = jb1) /Find find=new Find(this,查询,true);String name = this.jtf.getText();String sql;if (name.equals()sql = select *from student;elsesql = select *from student where name= + name + ;sm = new StuModel(sql);this.table.setModel(sm);/ 点击添加按钮else if (arg0.getSource() = jb2) AddRecord add = new AddRecord(this, 添加记录, true);/ 跟新表中记录sm = new StuModel();table.setModel(sm);/ 点击删除按钮else if (arg0.getSource() = jb4) int rowId = this.table.getSelectedRow();/ 获取选择的行if (rowId = -1) JOptionPane.showMessageDialog(this, 请选择一行);return; else String stuid = (String) sm.getValueAt(rowId,0);System.out.println(stuid);DeleteRecord delete = new DeleteRecord(stuid);sm = new StuModel();table.setModel(sm);/ 点击修改按钮else if (arg0.getSource() = jb3) int rowId = this.table.getSelectedRow();/ 获取选择的行if (rowId = -1) JOptionPane.showMessageDialog(this, 请选择一行);return; else String stuName = (String) sm.getValueAt(rowId, 0);System.out.println(stuName);UpdRecord change = new UpdRecord(this, 修改记录, true, stuName,rowId, sm);sm = new StuModel();table.setModel(sm);3.1.3添加模块设计运行结果如下:实现代码:public AddRecord(Frame frame,String title,boolean modal) super(frame,title,modal);JLabel background=new JLabel();URL url=Find.class.getResource(/img/world02.jpg);中间代码省略Overridepublic void actionPerformed(ActionEvent arg0) /点击确定按钮if(arg0.getSource()=ok)String sql=insert into student values(?,?,?,?,?);String arg=idField.getText(),nameField.getText(),sexField.getText(),(String)dorm.getSelectedItem(),roomField.getText();try/如果添加成功if(db.execSql(sql,arg)=1)JOptionPane.showMessageDialog(null, 记录添加成功);this.dispose();catch(Exception e)/如果主键重复,即名字相同时JOptionPane.showMessageDialog(null,此学号已经存在,请输入不同的学号);nameField.setText();idField.setText();roomField.setText();sexField.setText();finallytry db.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();/点击取消按钮else if(arg0.getSource()=cancel)this.dispose();3.1.4修改模块的设计当用户选择一个对象时,可对其进行修改,为保证数据的安全性,在修改时,学号设置为不能改变,其运行结果如下:具体代码如下Overridepublic void actionPerformed(ActionEvent arg0) 中间代码省略if(arg0.getSource()=ok)String sql=update student set name=?,dormId=?,roomId=? where id=?;String arg=nameField.getText(),(String)dorm.getSelectedItem(),roomField.getText(),idField.getText();tryint i=db.execSql(sql, arg);if(i=1)JOptionPane.showMessageDialog(null, 修改成功);db.close();this.dispose();elseJOptionPane.showMessageDialog(null, 修改失败,注意信息是否有误);catch(Exception e)e.printStackTrace();else if(arg0.getSource()=cancel)this.dispose();3.1.5 删除模块运行结果如下:public class DeleteRecord DataBase db=new DataBase();public DeleteRecord(String id)String sql=delete from student where id=?;String arg=id;tryif(db.execSql(sql, arg)=1)JOptionPane.showMessageDialog(null, 删除成功);System.out.println(删除成功);elseJOptionPane.showMessageDialog(null, 删除失败);System.out.println(删除失败);db.close();catch(Exception e)e.printStackTrace();3.1.6 查询模块运行结果如下:Overridepublic void actionPerformed(ActionEvent arg0) String sql;if(arg0.getSource()=ok)if (inputField.equals()sql = select *from student;elsesql = select *from student where name= + inputField + ;try db.execQuery(sql); catch (ClassNotFoundException e) e.printStackTrace(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();else if(arg0.getSource()=cancel)this.dispose();3.1.7-树形显示模型 借助JTREE来实现一个树形结构,清晰显示当前系统学生住宿的情况。/树结构String node_1=new String111;Vector st1=new Vector();root=new DefaultMutableTreeNode(徐州工程学院);red=new DefaultMutableTreeNode(1#楼);this.find(1#楼, node_1);for(int i = 0;inode_1.length;i+)System.out.println(node_1i);if(node_1i=null)break;DefaultMutableTreeNode nodetemp=new DefaultMutableTreeNode(node_1i);/String sss=new String111;Vector sss=new Vector();this.findroom(node_1i, sss);for(int j = 0;jsss.size();j+)DefaultMutableTreeNode subnode=new DefaultMutableTreeNode(sss.get(j);nodetemp.add(subnode);red.add(nodetemp);中间代码省略/树结构结束public void find(String s,String node)int i=0;DataBase db=new DataBase();try ResultSet rs=db.execQuery(select distinct roomId from student where dormId=+s+);while(rs.next()nodei+=rs.getString(1); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();public void findroom(String s,Vector node)int i=0;DataBase db=new DataBase();try ResultSet rs=db.execQuery(select name from student where roomId=+s+);while(rs.next() Student stu=new Student();stu.setName(rs.getString(1);node.add(stu); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();3.1.8-系统模块(退出返回模块设计)(2)相关类的设计 包括学生类的设计,数据库操作类设计,模型类设计,时间类设计。3.2.1学生类Student的设计如下package wxf.model;public class Student private String id;/学生学好private String name;/姓名private String sex;/性别private String dormId;/宿舍楼号private String roomId;/房间号省略代码为各个字段的setter getter方法3.2.2 数据库的连接以及对数据库的操作在MyEclipse中新建一个DataBase类,用来进行数据库的连接及对数据库的各种操作。 具体代码如下: public class DataBase /构造函数完成参数初始化public DataBase()conn=null;ps=null;rs=null;driverName=com.microsoft.jdbc.sqlserver.SQLServerDriver; jdbcUrl=jdbc:sqlserver:/127.0.0.1:1433;databaseName=sushe Manage;user=wxfeng;password=wangxiao19900728;/关闭数据集对象、语句对象和数据库连接对象public void close() throws SQLExceptionif(rs!=null) rs.close();if(ps!=null)ps.close();if(conn!=null&conn.isClosed()conn.close();/*创建连接对象*/public void createConn() throws SQLException, ClassNotFoundExceptionif(conn=null)Class.forName(driverName);conn=DriverManager.getConnection(jdbcUrl,user,password);System.out.println(数据库连接成功);elseSystem.out.println(conn);/*执行insert、update、delete操作*/public int execSql(String sql,String arg) throws ClassNotFoundException, SQLExceptionthis.createConn();ps=conn.prepareStatement(sql);for(int k=0;karg.length;k+)ps.setString(k+1, argk);int i=ps.executeUpdate();return i;/若成功返回 1/*执行select操作*/public ResultSet execQuery(String sql) throws ClassNotFoundException, SQLExceptionthis.createConn();ps=conn.prepareStatement(sql);rs=ps.executeQuery();return rs; -3.2.3-主界面时间类设计package wxf.model;import java.util.Calendar;public class Today private static final Calendar NOW = Calendar.getInstance();中间代码省略public static String getDate() return YEAR + - + MONTH + - + DAY;public static String getDateOfNum() String y = YEAR + ;String m = MONTH + ;String d = DAY + ;if (MONTH 10)m = 0 + MONTH;if (DAY 10)d = 0 + DAY;return y + m + d;public static String getDateOfShow() return YEAR + 年 + MONTH + 月 + DAY + 日;public static String getDayOfWeek() String dayOfWeek = ;switch (WEEK) case 1:dayOfWeek = 星期日;break; 中间代码省略-3.2.4-模型类设计public class StuModel extends AbstractTableModel / rowDate用来存放行数据/ columnNames存放列名Vector rowDate, columnNames;/ 定义操作数据库需要的东西DataBase db;public StuModel(String sql) db=new DataBase();columnNames = new Vector();/ 设置列名columnNames.add(学号);columnNames.add(姓名);columnNames.add(性别);columnNames.add(宿舍楼号);columnNames.add(房间号);rowDate = new Vector();try / 加载驱动/db.createConn();if(sql.equals()sql=select *from student;ResultSet rs=db.execQuery(sql);while (rs.next() Vector hang = new Vector();hang.add(rs.getString(1);hang.add(rs.getString(2);hang.add(rs.getString(3);hang.add(rs.getString(4);hang.add(rs.getString(5);/ 加入到rowDatarowDate.add(hang);/关闭数据库db.cl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老年人健康管理知识分享方案
- 家用抛光设备和机器非电动市场需求与消费特点分析
- 物流行业仓储管理制度宣贯实施方案
- 2024年度建筑工程施工合作协议
- 医院餐饮食品安全措施方案
- 艺术院校师生互动组织架构方案
- 医疗行业代理佣金制度
- 包装委托协议:2024年规范
- 房地产广告制作项目实施方案
- 慈善晚宴高端活动方案
- 体温记录表【范本模板】
- 《Flash-CC动画设计与制作》教案完整版
- 【物料】活动物料手册共80页课件
- 园林制图课件透视
- 第五章电能计量装置的接线检查第二节电量的抄读及退补电量的计算
- 汉语拼音发音口型及配图[新版]
- 注塑IPQC培训教材
- 现场技术服务确认单
- 恶性心律失常及常见心律失常识别与急诊处理
- 沪教版七年级上册数学复习知识点考点总结归纳提纲
- 砂石项目盈利能力分析报告(范文)
评论
0/150
提交评论