《面向对象程序设计》宿舍管理系统_第1页
《面向对象程序设计》宿舍管理系统_第2页
《面向对象程序设计》宿舍管理系统_第3页
《面向对象程序设计》宿舍管理系统_第4页
《面向对象程序设计》宿舍管理系统_第5页
全文预览已结束

下载本文档

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

文档简介

徐州工程学院信电工程学院09软件2班王晓峰20090501136面向对象课程设计实用文档第12页成绩徐州工程学院面向对象程序设计课程设计报告设计名称宿舍人员管理系统学院信电工程学院专业计算机科学与技术班级09软件2班学生姓名王晓峰学号20090501136设计地点计算机应用技术实验室指导教师胡局新设计起止时间:2012年1月2日至2012年1月6日目的及意义本次课程设计的题目是“宿舍人员管理系统”。在如今的高校或者中学,学生人数越来越多,住宿的学生相应的也越来越多,原本的手工管理宿舍人员显然已经很难适应庞大的学生的数量,这次设计的目的和意义就是,方便管理人员对住宿学生进行管理,能够清楚便捷的对宿舍人员进行管理,轻松地对宿舍人员进行增加,修改,删除,查询,并且通过树结构可以一目了然学校宿舍的住宿情况。这次课程设用到了,数据库,初层次的设计模型,JAVAGUI界面设计,JDBC等方面的知识,加深了JAVA基础知识的理解,了解了很多以往没有接触到的java类库,对今后数据库操作,软件设计的模式和步骤都有很大的帮助。设计方案课题概述:1.功能需求1.1.1添加功能:当有人员入住宿舍时,使用添加功能进行人员信息的添加。1.1.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.数据库选择考虑到系统的健壮性,本系统采用了SQLSERVER2008数据库。SQLSERVER2008操作界面相对简单,使用非常方便。5.环境需求本系统开发环境为myEclipse+WINDOW7操作系统+SQLSERVER2008(2)功能结构图和流程图2.1整个系统模型图宿舍人员管理系统主界面宿舍人员管理系统主界面登录界面查询模块删除模块添加模块修改模块返回—结束删除学生信息修改学生信息返回登录界面查询学生信息退出系统开始删除学生信息修改学生信息返回登录界面查询学生信息退出系统开始输入密码正确退出主界面结束删除学生信息修改学生信息返回登录界面查询学生信息删除学生信息修改学生信息返回登录界面查询学生信息数据库设计新建数据库本次数据库设计运用到了一张表,即学生表。学生表中包括5个字段,分别为id(学号),name(姓名),sex(性别),dormId(宿舍楼号),roomId(房间号),其设计如下图所示三、具体实现过程(1)各功能模块的实现3.1.0新建项目3.1.1登录模块设计当用户输入正确的用户名和密码才可以进入主界面,提高系统的安全性,防止非法用户进入系统操作。publicclassLandFrameextendsjavax.swing.JFrameimplementsActionListener{ @Override publicvoidactionPerformed(ActionEventarg0){ //登录 if(arg0.getSource()==button1) { if(jTextField1.getText().equals("wxf")&&jPasswordField1.getText().equals("123456")) { JOptionPane.showMessageDialog(null,"登录成功"); MainPageListmain=newMainPageList(); this.dispose(); } else { JOptionPane.showMessageDialog(null,"登录失败,密码或用户名错误"); jTextField1.setText(""); jPasswordField1.setText(""); } } //取消 elseif(arg0.getSource()==button2) { this.dispose(); }//重置 elseif(arg0.getSource()==button3) { jTextField1.setText(""); jPasswordField1.setText(""); } }}3.1.2主界面的设计publicclassMainPageListextendsJFrameimplementsActionListener{ ·······部分代码省略····· background.add(timeLabel); newTime().start();//开启线程 this.setSize(800,550); Toolkitkit=Toolkit.getDefaultToolkit(); Dimensiondim=kit.getScreenSize(); intheight=dim.height; intwidth=dim.width; intx=(width-800)/2; inty=(height-600)/2; this.setTitle("简易宿舍人员管理系统"); this.setLocation(x,y); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); this.setResizable(false); } classTimeextendsThread{//创建内部类 publicvoidrun(){//重构父类的方法 while(true){ Datedate=newDate();//创建日期对象 timeLabel.setText(date.toString().substring(11,19));//获取当前时间,并显示到时间标签中 try{ Thread.sleep(1000);//令线程休眠1秒 }catch(InterruptedExceptione){ e.printStackTrace(); } } } } @Override publicvoidactionPerformed(ActionEventarg0){ //点击退出按钮 if(arg0.getSource()==jb5){ this.dispose(); } //点击返回登录按钮 elseif(arg0.getSource()==jb6){ java.awt.EventQueue.invokeLater(newRunnable(){ publicvoidrun(){ newLandFrame().setVisible(true); } }); this.dispose(); } //点击查询按钮 elseif(arg0.getSource()==jb1){ //Findfind=newFind(this,"查询",true); Stringname=this.jtf.getText(); Stringsql; if(name.equals("")) sql="select*fromstudent"; else sql="select*fromstudentwherename='"+name+"'"; sm=newStuModel(sql); this.table.setModel(sm); } //点击添加按钮 elseif(arg0.getSource()==jb2){ AddRecordadd=newAddRecord(this,"添加记录",true); //跟新表中记录 sm=newStuModel(""); table.setModel(sm); } //点击删除按钮 elseif(arg0.getSource()==jb4){ introwId=this.table.getSelectedRow();//获取选择的行 if(rowId==-1){ JOptionPane.showMessageDialog(this,"请选择一行"); return; }else{ Stringstuid=(String)sm.getValueAt(rowId,0); System.out.println(stuid); DeleteRecorddelete=newDeleteRecord(stuid); sm=newStuModel(""); table.setModel(sm); } } //点击修改按钮 elseif(arg0.getSource()==jb3){ introwId=this.table.getSelectedRow();//获取选择的行 if(rowId==-1){ JOptionPane.showMessageDialog(this,"请选择一行"); return; }else{ StringstuName=(String)sm.getValueAt(rowId,0); System.out.println(stuName); UpdRecordchange=newUpdRecord(this,"修改记录",true,stuName, rowId,sm); sm=newStuModel(""); table.setModel(sm); } } }}3.1.3添加模块设计运行结果如下:实现代码:publicAddRecord(Frameframe,Stringtitle,booleanmodal){ super(frame,title,modal); JLabelbackground=newJLabel(); URLurl=Find.class.getResource("/img/world02.jpg");·······中间代码省略·····}@Override publicvoidactionPerformed(ActionEventarg0){ //点击确定按钮 if(arg0.getSource()==ok) { Stringsql="insertintostudentvalues(?,?,?,?,?)"; 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(Exceptione){ //如果主键重复,即名字相同时 JOptionPane.showMessageDialog(null,"此学号已经存在,请输入不同的学号"); nameField.setText(""); idField.setText(""); roomField.setText(""); sexField.setText(""); }finally{ try{ db.close(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } } //点击取消按钮 elseif(arg0.getSource()==cancel) { this.dispose(); }}3.1.4修改模块的设计当用户选择一个对象时,可对其进行修改,为保证数据的安全性,在修改时,学号设置为不能改变,其运行结果如下:具体代码如下@Override publicvoidactionPerformed(ActionEventarg0){·······中间代码省略····· if(arg0.getSource()==ok) { Stringsql="updatestudentsetname=?,dormId=?,roomId=?whereid=?"; String[]arg={nameField.getText(),(String)dorm.getSelectedItem(),roomField.getText(),idField.getText()}; try{ inti=db.execSql(sql,arg); if(i==1){ JOptionPane.showMessageDialog(null,"修改成功"); db.close(); this.dispose(); }else { JOptionPane.showMessageDialog(null,"修改失败,注意信息是否有误"); } }catch(Exceptione){ e.printStackTrace(); } } elseif(arg0.getSource()==cancel) { this.dispose(); } }3.1.5删除模块运行结果如下:publicclassDeleteRecord{ DataBasedb=newDataBase(); publicDeleteRecord(Stringid){ Stringsql="deletefromstudentwhereid=?"; String[]arg={id}; try{ if(db.execSql(sql,arg)==1){ JOptionPane.showMessageDialog(null,"删除成功"); System.out.println("删除成功"); } else{ JOptionPane.showMessageDialog(null,"删除失败"); System.out.println("删除失败"); } db.close(); }catch(Exceptione){ e.printStackTrace(); } }}3.1.6查询模块运行结果如下: @Override publicvoidactionPerformed(ActionEventarg0){ Stringsql; if(arg0.getSource()==ok){ if(inputField.equals("")) sql="select*fromstudent"; else sql="select*fromstudentwherename='"+inputField+"'"; try{ db.execQuery(sql); }catch(ClassNotFoundExceptione){ e.printStackTrace(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } elseif(arg0.getSource()==cancel) { this.dispose(); } }3.1.7-树形显示模型借助JTREE来实现一个树形结构,清晰显示当前系统学生住宿的情况。 //树结构 Stringnode_1[]=newString[111]; Vector<Student>st1=newVector<Student>(); root=newDefaultMutableTreeNode("徐州工程学院"); red=newDefaultMutableTreeNode("1#楼"); this.find("1#楼",node_1); for(inti=0;i<node_1.length;i++) { System.out.println(node_1[i]); if(node_1[i]==null) break; DefaultMutableTreeNodenodetemp=newDefaultMutableTreeNode(node_1[i]); //Stringsss[]=newString[111]; Vector<Student>sss=newVector<Student>(); this.findroom(node_1[i],sss); for(intj=0;j<sss.size();j++){ DefaultMutableTreeNodesubnode=newDefaultMutableTreeNode(sss.get(j)); nodetemp.add(subnode); } red.add(nodetemp); } ·······中间代码省略····· //树结构结束 publicvoidfind(Strings,Stringnode[]){ inti=0; DataBasedb=newDataBase(); try{ ResultSetrs=db.execQuery("selectdistinctroomIdfromstudentwheredormId='"+s+"'"); while(rs.next()){ node[i++]=rs.getString(1); } }catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } publicvoidfindroom(Strings,Vector<Student>node){ inti=0; DataBasedb=newDataBase(); try{ ResultSetrs=db.execQuery("selectnamefromstudentwhereroomId='"+s+"'"); while(rs.next()){ Studentstu=newStudent(); stu.setName(rs.getString(1)); node.add(stu); } }catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } }3.1.8-系统模块(退出返回模块设计)(2)相关类的设计包括学生类的设计,数据库操作类设计,模型类设计,时间类设计。3.2.1学生类Student的设计如下packagewxf.model;publicclassStudent{ privateStringid;//学生学好 privateStringname;//姓名 privateStringsex;//性别 privateStringdormId;//宿舍楼号 privateStringroomId;//房间号 ····省略代码为各个字段的setter–getter方法}3.2.2数据库的连接以及对数据库的操作在MyEclipse中新建一个DataBase类,用来进行数据库的连接及对数据库的各种操作。具体代码如下:publicclassDataBase{ //构造函数完成参数初始化 publicDataBase(){ conn=null; ps=null; rs=null; driverName="com.microsoft.jdbc.sqlserver.SQLServerDriver"; jdbcUrl="jdbc:sqlserver://127.0.0.1:1433;databaseName=susheManage"; user="wxfeng"; password="wangxiao19900728"; } //关闭数据集对象、语句对象和数据库连接对象 publicvoidclose()throwsSQLException{ if(rs!=null) rs.close(); if(ps!=null) ps.close(); if(conn!=null&&conn.isClosed()) conn.close(); } /*创建连接对象*/ publicvoidcreateConn()throwsSQLException,ClassNotFoundException{ if(conn==null){ Class.forName(driverName); conn=DriverManager.getConnection(jdbcUrl,user,password); System.out.println("数据库连接成功"); }else System.out.println(conn); } /*执行insert、update、delete操作*/ publicintexecSql(Stringsql,String[]arg)throwsClassNotFoundException,SQLException{ this.createConn(); ps=conn.prepareStatement(sql); for(intk=0;k<arg.length;k++) { ps.setString(k+1,arg[k]); } inti=ps.executeUpdate(); returni;//若成功返回1 } /*执行select操作*/ publicResultSetexecQuery(Stringsql)throwsClassNotFoundException,SQLException{ this.createConn(); ps=conn.prepareStatement(sql); rs=ps.executeQuery(); returnrs; }}-3.2.3-主界面时间类设计packagewxf.model;importjava.util.Calendar;publicclassToday{ privatestaticfinalCalendarNOW=Calendar.getInstance();·······中间代码省略····· publicstaticStringgetDate(){ returnYEAR+"-"+MONTH+"-"+DAY; } publicstaticStringgetDateOfNum(){ Stringy=YEAR+""; Stringm=MONTH+""; Stringd=DAY+""; if(MONTH<10) m="0"+MONTH; if(DAY<10) d="0"+DAY; returny+m+d; } publicstaticStringgetDateOfShow(){ returnYEAR+"年"+MONTH+"月"+DAY+"日"; } publicstaticStringgetDayOfWeek(){ StringdayOfWeek=""; switch(WEEK){ case1: dayOfWeek="星期日"; break; ·······中间代码省略····· } } }-3.2.4-模型类设计publicclassStuModelextendsAbstractTableModel{ //rowDate用来存放行数据 //columnNames存放列名 VectorrowDate,columnNames; //定义操作数据库需要的东西 DataBasedb; publicStuModel(Stringsql){ db=newDataBase(); columnNames=newVector(); //设置列名 columnNames.add("学号"); columnNames.add("姓名"); columnNames.add("性别"); columnNames.add("宿舍楼号"); columnNames.add("房间号"); rowDate=newVector(); try{ //加载驱动 //db.createConn(); if(sql.equals("")) sql="select*fromstudent"; ResultSetrs=db.execQuery(sql); while(rs.next()){ Vectorhang=newVector(); hang.add(rs.getString(1)); hang.add(rs.getString(2)); hang.add(rs.getString(3)); hang.add(r

温馨提示

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

评论

0/150

提交评论