




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/一.引言项目的名称商品房销售中的客户信息管理系统项目背景和目标商品房销售中的客户信息管理系统主要对客户的个人基本信息进行管理,对商家提供查询信息、增添信息、删除信息等操作功能;对客户提供信息查询功能。我们的目标就是为该系统提供后台连接数据库程序设计以及前台用户界面设项目的可行性研究设计此系统需要java面向对象编程基础,数据库应用知识以及功能分析。根据目前所开设的课程,学生已经具备这样的知识,有能力综合java编程知识和数据库应用知识做出一个这样的客户信息管理系统需求分析2.1系统概述此系统提供给客户和商家。商家登陆后可以对基本信息表进行查看、增添新记录和删除记录等操作。客户登陆后能查询客户信息。2.2系统运行环境 Java运行在eclipse软件上,数据库用mysql数据库2.3功能需求描述商品房销售中的客户信息管理系统要面对商家和客户。对于教师,需要查询全部学生的基本信息和成绩信息,并且可以对其进行修改。对于学生,不需要查询自己的基本信息,只需要查询成绩。为了保护学生成绩隐私,每位学生登录系统后只能查询自己的成绩,而无法看到别人的成绩三、系统设计3.1开发与设计的总体思想教师方面:教师通过自己的用户名和密码登录后,进入教师主界面,在这个主界面里,可以选择要操作的类别,即查询功能还是修改功能。在查询功能里面,可以选择是查询学生基本信息,还是查询学生成绩信息。在查询学生基本信息时,可以从依据不同字段,即学生信息表的不同属性进行查找。在查找学生成绩信息时,只能依据学生姓名和学号进行查找。在修改功能里面,包括对学生基本信息表和学生成绩表进行增加和删除记录学生方面:学生通过自己的用户名和密码登录此系统后,可以查询自己本学期的各科成绩信息商品房销售中的客户信息管理系统3.2系统模块结构图商品房销售中的客户信息管理系统商家登陆客户登陆商家登陆客户登陆商家操作界面房型与房价信息商家操作界面房型与房价信息3.3数据库结构设计为了支持此学生信息管理系统,创建数据库studentmanage。在这个数据库中包含四个表:student表,teacher表,studentlogin表和score表。截图如下:在student〔学生基本信息表中,有五个属性列,分别为:num〔学号,sname〔学生姓名姓名,sex〔性别,age〔年龄,dept〔系别。其基本数据类型分别为:int,char,char,int,char。当查询学生基本信息时,从此表中获取数据。截图如下:在teacher〔教师登陆表中,有两个属性列,分别为:tname〔教师姓名,password〔登录密码。其基本数据类型分别为:char,char。当教师用户登陆此系统时,从该表获取数据。截图如下:在studentlogin〔学生登录表中,有两个属性列,分别为:sname〔学生姓名,password〔登录密码。其基本数据类型分别为:char,char。当学生用户登陆此系统时,从该表获取数据。截图如下:在score〔学生成绩表中,有五个属性列,分别为:num〔学号,sname〔学生姓名,course〔课程名称,score〔考试成绩,credit〔学分。其基本数据类型分别为:int,char,char,int,int。当查询学生成绩信息时,从此表获取数据。截图如下:3.4模块设计总主界面登陆后,可以选择用户,是学生用户或者教师用户。如果选择学生用户,则进入学生登录界面,在这个界面上输入学生姓名和用户密码。输入后单击"成绩查询"按钮,若密码正确,这显示该学生本人本学期成绩,若密码不正确,这提示密码错误。如果选择教师用户,则进入教师登陆界面,在这个界面上输入教师姓名和用户密码,输入后单击"登录"按钮,则进入教师主界面。在教师主界面可以选择进行查询操作还是修改操作。在查询操作中包含查询学生基本信息和查询学生成绩信息。若要查询学生基本信息,点击菜单项则进入学生基本信息检索界面,在此界面的检索方式中选择要检索的数据属性,在检索内容框中输入检索的具体信息,例如,检索"姓名"字段时,要键入某个学生姓名。输入后,单击"检索"按钮,则开始数据库查询。如果数据库检索到所需信息,这生成列表显示检索结构,如果没有所需信息,则列表中的内容为空。若要查询学生成绩信息,则点击学生成绩查询菜单项,进入成绩查询界面。在此界面的文本框中输入要查询成绩的学生姓名,然后单击检索按钮。若数据库中有此学生的成绩信息,则生成列表显示成绩信息,若没有此记录,则列表内容为空。如果教师要进行修改操作,则在教师主界面上选择修改菜单项,在此项中,选择要修改的具体内容,总共有四项修改操作:增加新生信息,删除毕业生信息〔这两个是对学生基本信息表的操作,增加成绩信息,删除成绩信息〔这两个是对学生成绩信息表的操作。在增加信息操作中,按照标签提示一次输入要增添的记录值,输入完毕后,单击"添加"按钮,若输入成功,则提示成功,若输入失败,则提示失败。在删除信息操作中,输入要删除信息的学生姓名,单击"删除"按钮,若删除成功,则提示成功,若删除失败则提示失败。以上就是该学生信息管理系统的操作步骤。3.5系统流程描述四、系统实现本系统保存在studentmanage包里其中包含四个包:connection包,dao包,model包,ui包1.Connection包中的类:〔1DBconnection类:此类设置程序与数据库的连接,通过设置驱动类型和数据源来确定要连接的数据库。若连接成功,提示:connectionsuccess,若连接失败,提示:connectionfailureDBconnection类源代码:packageconnection;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;publicclassDBConnection{publicstaticConnectioncon=null;publicstaticConnectiongetConnection<>{ try{ StringdbDriver="com.mysql.jdbc.Driver"; Class.forName<dbDriver>; System.out.println<"DriverSuceess">; }catch<ClassNotFoundExceptione>{ System.out.println<"Drivernotfound">; e.printStackTrace<>; } try{ con=DriverManager.getConnection<"jdbc:mysql://:3306/studentmanage","root","root">; System.out.println<"ConnectionSuceess">; }catch<SQLExceptione>{ System.out.println<"Connetionfailure">; e.printStackTrace<>; } returncon;}publicstaticvoidcloseConnection<>{ if<con!=null> try{ con.close<>; System.out.println<"databaseclosesuccess">; }catch<SQLExceptione>{ System.out.println<"closefailure">; e.printStackTrace<>; }}}2.Dao包中的类:〔1StudentDao类:此类中有四个方法,studentLogin,addStudent,deleteStudent,queryStuden,作用分别是控制学生登陆,增加学生基本信息,查询学生基本信息,删除学生基本信息。studentLogin〔方法中,有两个参数,分别传给select语句中的sname〔学生姓名和password〔登录密码,利用select语句在studentlogin表中检索学生登录信息。若存在此信息,返回true,否则返回falseaddStudent<>方法中,有五个参数,分别传给insert语句中的num〔学号,sname〔学生姓名,age〔年龄,sex〔性别和dept〔系别,利用insert语句向student学生基本信息表中插入学生记录。若插入成功,返回true,否则返回falsedeleteStudent〔方法中,有一个参数,传给delete语句中的sname〔学生姓名,利用delete语句,把student表中相关学生信息删除。若删除成功,返回true,否则返回falsequeryStuden〔方法中,有两个参数,分别传给select语句中的field<查找方式>和key〔查找内容,利用select语句,从student表中检索学生基本信息。若存在此信息,则返回一个ArrayList类的对象lis〔表格,否则,异常处理StudentDao类源代码:packagedao;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.ArrayList;importmodel.Student;importconnection.DBConnection;publicclassStudentDao{ publicbooleanstudentLogin<Stringsname,Stringpassword>{ DBConnectiondb=newDBConnection<>; Connectioncon=db.getConnection<>; booleanisfound=false; PreparedStatementpst; try{ pst=con.prepareStatement<"select*fromstudentloginwheresname=?andpassword=?">;pst.setString<1,sname>; pst.setString<2,password>;ResultSetrs=pst.executeQuery<>; if<rs.next<>> isfound=true; }catch<SQLExceptione>{ e.printStackTrace<>; } System.out.println<isfound>; returnisfound; } publicbooleanaddStudent<intnum,Stringsname,Stringsex,intage, Stringdept>{ Connectioncon=DBConnection.getConnection<>; PreparedStatementpst; try{ pst=con.prepareStatement<"insertintostudentvalues<?,?,?,?,?>">;pst.setInt<1,num>; pst.setString<2,sname>; pst.setString<3,sex>; pst.setInt<4,age>; pst.setString<5,dept>; intcount=pst.executeUpdate<>;//返回修改的记录数 if<count==1> returntrue; else returnfalse; }catch<SQLExceptione>{ e.printStackTrace<>;} returnfalse; } publicArrayListqueryStudent<Stringfield,Stringkey>{ ArrayListlis=newArrayList<>; Connectioncon=DBConnection.getConnection<>; Statementstm; try{ stm=con.createStatement<>; Stringsql="select*fromstudentwhere"+field+"like'%" +key+"%'"; System.out.println<sql>; ResultSetrs=stm.executeQuery<sql>; while<rs.next<>>{ Studentstudent=newStudent<rs.getInt<1>,rs.getString<2>,rs.getString<3>,rs.getInt<4>,rs.getString<5>>;lis.add<student>; } }catch<SQLExceptione>{ e.printStackTrace<>; } returnlis; } publicbooleandeleteStudent<Stringkey>{ Connectioncon=DBConnection.getConnection<>; Statementstm; try{ stm=con.createStatement<>; Stringsql="deletefromstudentwheresnamelike'%" +key+"%'"; System.out.println<sql>; intcount=stm.executeUpdate<sql>; if<count==1> returntrue; else returnfalse; }catch<SQLExceptione>{ e.printStackTrace<>; } returnfalse; }}〔2TeacherDao类:此类中有一个方法:queryTeacher,作用是控制教师登陆queryTeacher〔方法中,有两个参数,分别传给select语句中的tname〔教师姓名和password〔登陆密码,利用select语句在teacher表中检索教师登陆信息。若存在此信息,返回true,否则返回falseTeacherDao类源代码:packagedao;ion;t;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importconnection.DBConnection;publicclassTeacherDao{ publicbooleanqueryTeacher<Stringtname,Stringpassword>{ DBConnectiondb=newDBConnection<>; Connectioncon=db.getConnection<>; booleanisfound=false; PreparedStatementpst; try{ pst=con.prepareStatement<"select*fromteacherwheretname=?andpassword=?">;pst.setString<1,tname>; pst.setString<2,password>;ResultSetrs=pst.executeQuery<>; if<rs.next<>> isfound=true; }catch<SQLExceptione>{ e.printStackTrace<>; } System.out.println<isfound>; returnisfound; } publicstaticvoidmain<String[]args>{ }}〔3ScoreDao类:此类中有四个方法,queryScore,queryScore1,addScore,deleteScor作用分别是为教师用户提供查询学生成绩信息功能,为学生用户提供询本人成绩信息功能,添加成绩信息,删除成绩信息。queryScore〔方法中,有一个参数,传给select语句中的sname〔学生姓名,利用select语句,查询学生成绩信息表中的内容。若查询成功,则返回一个ArrayList类的对象lis〔表格,否则,异常处理queryScore1〔方法中,有一个参数,传给传给select语句中的sname〔学生姓名,这个sname的学生用户登录时输入的姓名。即此类的作用是每个学生登陆只能查看本人成绩。若查询成功,则返回一个ArrayList类的对象lis〔表格,否则,异常处理addScore〔方法中,有五个参数,分别传给insert语句中的num<学号>,sname〔学生姓名,course〔课程名称,score〔成绩,credit〔学分。利用insert语句,将这些记录写入score表中。若插入成功返回true,否则返回falsedeleteScore〔方法中,有一个参数,传给delete语句中的sname〔学生姓名,利用delete语句,把score表中相关学生信息删除。若删除成功,返回true,否则返回falseScoreDao类源代码:packagedao;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.ArrayList;importui.StudentLoginUI;importmodel.Score;importmodel.Student;importconnection.DBConnection;publicclassScoreDao{ publicArrayListqueryScore<Stringkey>{ ArrayListlis=newArrayList<>; Connectioncon=DBConnection.getConnection<>; Statementstm; try{ stm=con.createStatement<>; Stringsql="select*fromscorewheresnamelike'%"+key+"%'"; System.out.println<sql>;ResultSetrs=stm.executeQuery<sql>; while<rs.next<>>{ Scorescore=newScore<rs.getInt<1>,rs.getString<2>,rs.getString<3>,rs.getInt<4>,rs.getInt<5>>;lis.add<score>; } }catch<SQLExceptione>{ e.printStackTrace<>; } returnlis; } publicArrayListqueryScore1<Stringkey>{ ArrayListlis=newArrayList<>; Connectioncon=DBConnection.getConnection<>; Statementstm; try{ stm=con.createStatement<>; Stringsql="select*fromscorewheresnamelike'%"+StudentLoginUI.st1+"%'"; System.out.println<sql>;ResultSetrs=stm.executeQuery<sql>; while<rs.next<>>{ Scorescore=newScore<rs.getInt<1>,rs.getString<2>,rs.getString<3>,rs.getInt<4>,rs.getInt<5>>;lis.add<score>; } }catch<SQLExceptione>{ e.printStackTrace<>; } returnlis; } publicbooleanaddScore<intnum,Stringsname,Stringcourse,intscore, intcredit>{ Connectioncon=DBConnection.getConnection<>; PreparedStatementpst; try{ pst=con.prepareStatement<"insertintoscorevalues<?,?,?,?,?>">;pst.setInt<1,num>; pst.setString<2,sname>;pst.setString<3,course>; pst.setInt<4,score>; pst.setInt<5,credit>; intcount=pst.executeUpdate<>;//返回修改的记录数 if<count==1> returntrue; else returnfalse; }catch<SQLExceptione>{ e.printStackTrace<>; } returnfalse; } publicbooleandeleteScore<Stringkey>{ Connectioncon=DBConnection.getConnection<>; Statementstm; try{ stm=con.createStatement<>; Stringsql="deletefromscorewheresnamelike'%"+key+"%'"; System.out.println<sql>; intcount=stm.executeUpdate<sql>; if<count==1> returntrue; else returnfalse; }catch<SQLExceptione>{ e.printStackTrace<>; } returnfalse; }}3.model包中的类:〔1Score类:此类中有五个成员变量,intnum;Stringsname;Stringcourse;intscore;intcredit;十个成员方法,分别获取和设置这五个变量,即为score表中五个属性的记录值,均为getXXX<>setXXX<>方法,还有一个构造方法,用于调用其对象时对成员变量赋值Score类源代码:packagemodel;publicclassScore{ intnum; Stringsname; Stringcourse; intscore; intcredit; publicintgetNum<>{ returnnum; } publicvoidsetNum<intnum>{ this.num=num; } publicStringgetSname<>{ returnsname; } publicvoidsetSname<Stringsname>{ this.sname=sname; } publicStringgetCourse<>{ returncourse; } publicvoidsetCourse<Stringcourse>{ this.course=course; } publicintgetScore<>{ returnscore; } publicvoidsetScore<intscore>{ this.score=score; } publicintgetCredit<>{ returncredit; } publicvoidsetCredit<intcredit>{ this.credit=credit; } publicScore<intnum,Stringsname,Stringcourse,intscore,intcredit> {super<>;this.num=num;this.sname=sname;this.course=course;this.score=score;this.credit=credit;}}〔2Student类:此类中有五个成员变量,intnum;Stringsname;Stringsex;intage;Stringdept;十个成员方法,分别获取和设置这五个变量,即为student表中五个属性的记录值,均为getXXX<>setXXX<>方法,还有一个构造方法,用于调用其对象时对成员变量赋值Student类源代码:packagemodel;publicclassStudent{ intnum; Stringsname; Stringsex; intage; Stringdept; publicintgetNum<>{ returnnum; } publicvoidsetNum<intnum>{ this.num=num; } publicStringgetSname<>{ returnsname; } publicvoidsetSname<Stringsname>{ this.sname=sname; } publicStringgetSex<>{ returnsex; } publicvoidsetSex<Stringsex>{ this.sex=sex; } publicintgetAge<>{ returnage; } publicvoidsetAge<intage>{ this.age=age; } publicStringgetDept<>{ returndept; } publicvoidsetDept<Stringdept>{ this.dept=dept; } publicStudent<intnum,Stringsname,Stringsex,intage,Stringdept> { super<>; this.num=num; this.sname=sname; this.sex=sex; this.age=age; this.dept=dept; }}4.ui包中的类:〔1LoginUI类:此类为登陆界面,在这个界面上,设置有两个按钮,学生按钮,教师按钮。给这两个按钮注册事件addActionListener,分别在内部类TeacherLoginActionListene和StudentLoginActionListener中的默认方法actionPerformed〔中创建TeacherLoginUI类和StudentLoginUI类的对象,即打开教师登陆界面和学生登录界面,并将原登陆界面关闭。LoginUI类源代码:packageui;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassLoginUIextendsJFrame{ JLabell1; JButtonbt1,bt2; Containercp; publicLoginUI<>{ l1=newJLabel<"请选择用户类型">; bt1=newJButton<"教师">; bt2=newJButton<"学生">; JPanelp1=newJPanel<>;p1.setLayout<null>; l1.setBounds<150,150,120,40>; p1.add<l1>; bt1.setBounds<120,230,80,30>; p1.add<bt1>; bt2.setBounds<220,230,80,30>; p1.add<bt2>; bt1.addActionListener<newTeacherLoginActionListener<>>;//注册事件 bt2.addActionListener<newStudentLoginActionListener<>>;//注册事件 cp=getContentPane<>; this.setBounds<200,200,p1.getHeight<>,p1.getHeight<>>; cp.add<p1>; this.setTitle<"用户登录界面">; this.setSize<400,400>; this.setVisible<true>; this.addWindowListener<newWindowAdapter<>{ publicvoidwindowClosing<WindowEvente>{ System.exit<0>; } }>; } classTeacherLoginActionListenerimplementsActionListener{ publicvoidactionPerformed<ActionEvente>{ newTeacherLoginUI<>; dispose<>; } }classStudentLoginActionListenerimplementsActionListener{ publicvoidactionPerformed<ActionEvente>{ newStudentLoginUI<>; dispose<>; } } publicstaticvoidmain<String[]args>{ newLoginUI<>; }}执行截图如下:〔2StudentLoginUI类:此类为学生登陆界面,在这个界面上有两个文本框,分别输入学生姓名和登录密码,还有两个按钮,登陆和退出。输入后,从两个文本框中获取用户输入的内容,点击"登陆"按钮时,调用StudentDao类中的studentLogin〔方法验证是否存在该用户。若存在,则创建StudentScoreUI类的对象,即打开学生成绩界面,显示此登陆学生的成绩信息,若不存在,则提示密码错误。StudentLoginUI类源代码:packageui;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importdao.StudentDao;publicclassStudentLoginUIextendsJFrame{ JLabell1,l2; JTextFieldt1; JPasswordFieldt2; JButtonbt1,bt2; Containercp; publicstaticStringst1; publicStringst2; publicStudentLoginUI<>{ l1=newJLabel<"学生姓名">; l2=newJLabel<"密码">; t1=newJTextField<12>; t2=newJPasswordField<12>; bt1=newJButton<"成绩查询">; bt2=newJButton<"退出">; JPanelp1=newJPanel<>; p1.setLayout<null>; l1.setBounds<150,150,80,40>; p1.add<l1>; t1.setBounds<250,150,80,30>; p1.add<t1>; l2.setBounds<150,190,80,40>; p1.add<l2>; t2.setBounds<250,190,80,30>; p1.add<t2>; bt1.setBounds<150,230,120,30>; p1.add<bt1>; bt2.setBounds<280,230,80,30>; p1.add<bt2>; bt1.addActionListener<newLoginActionListener<>>;//注册事件 bt2.addActionListener<newExitActionListener<>>;//注册事件 cp=getContentPane<>; this.setBounds<200,200,p1.getHeight<>,p1.getHeight<>>; cp.add<p1>; this.setTitle<"学生登录界面">; this.setSize<400,400>; this.setVisible<true>; this.addWindowListener<newWindowAdapter<>{ publicvoidwindowClosing<WindowEvente> { System.exit<0>; } }>; } classLoginActionListenerimplementsActionListener{ publicvoidactionPerformed<ActionEvente>{ st1=t1.getText<>; st2=t2.getText<>; StudentDaooneStudentDao=newStudentDao<>; booleanisSuccess=oneStudentDao.studentLogin<st1,st2>; if<isSuccess>{ newStudentScoreUI<>; dispose<>; }else JOptionPane.showMessageDialog<null,"用户名密码错误","提示信息", JOptionPane.INFORMATION_MESSAGE>; } } classExitActionListenerimplementsActionListener{ publicvoidactionPerformed<ActionEvente>{ System.exit<0>; } } publicstaticvoidmain<String[]args>{ newStudentLoginUI<>; }}执行截图如下:〔3StudentScoreUI类:此类为学生成绩界面,此类中有一个标签和一个表格。标签中从StudentLoginUI类中获取学生登录时使用的用户名,显示在标签中以表示以下是某某同学的成绩信息。表格中为此学生的成绩。调用ScoreDao类中的queryScore1〔,将得到的ArrayList对象lis放入Vector对象中,形成表格。StudentScoreUI类源代码:packageui;importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;importjava.util.*;importjavax.swing.event.*;importjavax.swing.table.DefaultTableModel;importmodel.Score;importdao.ScoreDao;publicclassStudentScoreUIextendsJFrame{ Stringaa=StudentLoginUI.st1;JLabelselectionLabel; JPaneltopPanel; Containercontainer; JTabletable; JScrollPanebookScrollPane; JPanelbottomPanel; publicStudentScoreUI<>{ container=this.getContentPane<>; selectionLabel=newJLabel<aa+"同学本学期成绩如下">; topPanel=newJPanel<>; topPanel.setLayout<newFlowLayout<FlowLayout.CENTER>>; topPanel.add<selectionLabel>; this.add<BorderLayout.NORTH,topPanel>; table=newJTable<>; bookScrollPane=newJScrollPane<table>; this.add<BorderLayout.CENTER,bookScrollPane>; bottomPanel=newJPanel<>; this.add<BorderLayout.SOUTH,bottomPanel>; this.setTitle<"学生成绩查询">; this.setSize<600,450>; this.setVisible<true>; ScoreDaooneScore=newScoreDao<>; ArrayListlis=oneScore.queryScore<aa>; Vector<String>head=newVector<>; head.add<"学号">; head.add<"姓名">; head.add<"学科">; head.add<"成绩">; head.add<"学分">; Vector<Vector>content=newVector<>; for<inti=0;i<lis.size<>;i++>{ Vectorrow=newVector<>; ScoreoneScore1=<Score>lis.get<i>; row.add<oneScore1.getNum<>>; row.add<oneScore1.getSname<>>; row.add<oneScore1.getCourse<>>; row.add<oneScore1.getScore<>>; row.add<oneScore1.getCredit<>>; content.add<row>; } DefaultTableModelmodel=newDefaultTableModel<content,head>; table.setModel<model>; repaint<>; }}执行截图如下:〔4TeacherLoginUI类:此类为教师登陆界面,在这个界面上有两个文本框,分别输入教师姓名和登录密码,还有两个按钮,登陆和退出。输入后,从两个文本框中获取用户输入的内容,点击"登陆"按钮时,调用TeacherDao类中的queryTeacher〔方法验证是否存在该用户。若存在创建TeacherMainUI类的对象,即打开教师主界面,若不存在,则提示密码错误。TeacherLoginUI类源代码:packageui;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importdao.TeacherDao;publicclassTeacherLoginUIextendsJFrame{ JLabell1,l2; JTextFieldt1; JPasswordFieldt2; JButtonbt1,bt2; Containercp; publicTeacherLoginUI<>{ l1=newJLabel<"教师姓名">; l2=newJLabel<"密码">; t1=newJTextField<12>; t2=newJPasswordField<12>; bt1=newJButton<"登录">; bt2=newJButton<"退出">; JPanelp1=newJPanel<>; p1.setLayout<null>; l1.setBounds<150,150,80,40>; p1.add<l1>; t1.setBounds<250,150,80,30>; p1.add<t1>; l2.setBounds<150,190,80,40>; p1.add<l2>; t2.setBounds<250,190,80,30>; p1.add<t2>; bt1.setBounds<150,230,80,30>; p1.add<bt1>; bt2.setBounds<250,230,80,30>; p1.add<bt2>; bt1.addActionListener<newLoginActionListener<>>;//注册事件 bt2.addActionListener<newExitActionListener<>>;//注册事件 cp=getContentPane<>; this.setBounds<200,200,p1.getHeight<>,p1.getHeight<>>; cp.add<p1>; this.setTitle<"教师登录界面">; this.setSize<400,400>; this.setVisible<true>; this.addWindowListener<newWindowAdapter<>{ publicvoidwindowClosing<WindowEvente> { System.exit<0>; } }>; } classLoginActionListenerimplementsActionListener{ publicvoidactionPerformed<ActionEvente>{ Stringst1=t1.getText<>; Stringst2=t2.getText<>; TeacherDaooneTeacherDao=newTeacherDao<>; booleanisSuccess=oneTeacherDao.queryTeacher<st1,st2>; if<isSuccess>{ newTeacherMainUI<>; dispose<>; }else JOptionPane.showMessageDialog<null,"用户名密码错误","提示信息", JOptionPane.INFORMATION_MESSAGE>; } } classExitActionListenerimplementsActionListener{ publicvoidactionPerformed<ActionEvente>{ System.exit<0>; } } publicstaticvoidmain<String[]args>{ newTeacherLoginUI<>; }}执行截图如下:〔5TeacherMainUI类:此类为教师主界面类,在此界面上有一个菜单栏,三个菜单:文件,查询,修改。其中"文件"菜单中有"退出"菜单项,点击时跳出对话框问是否真的退出,若点击是,窗口关闭,若点击否,回复原界面。"查询"菜单中有"学生基本信息"和"学生成绩信息"两个菜单项:当点击"学生基本信息"时,通过注册事件,创建InformationQueryUI类的对象,即打开查询学生基本信息的窗口,当点击"学生成绩信息"时,通过注册事件,创建ScoreQueryUI类的对象,即打开查询学生成绩信息的窗口。修改菜单中有"增加新生信息""删除毕业生信息""增加成绩信息"和"删除成绩信息"四个菜单项,当点击"增加新生信息"时,通过注册事件,创建StudentAddUI类的对象,即打开添加学生基本信息的窗口,当点击"删除毕业生信息"时,通过注册事件,创建StudentDeleteUI类的对象,即打开删除学生基本信息的窗口,当点击"增加成绩信息"时,通过注册事件,创建ScoreAddUI类的对象,即打开添加成绩信息的窗口,当点击"删除成绩信息"时,通过注册事件,创建ScoreDeleteUI类的对象,即打开删除成绩信息的窗口。TeacherMainUI类源代码:packageui;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassTeacherMainUIextendsJFrame{Containerctp;TeacherMainUI<>{ ctp=this.getContentPane<>; this.setTitle<"欢迎进入学生管理系统!">; ctp.setLayout<newBorderLayout<>>; JMenuBarmenuBar=newJMenuBar<>; buildMainMenu<menuBar>; this.setJMenuBar<menuBar>; this.setBounds<100,100,400,300>; this.setVisible<true>; } publicvoidbuildMainMenu<JMenuBarmenuBar>{JMenufileMenu=newJMenu<"文件">;JMenuItemexitMenuItem=newJMenuItem<"退出">; exitMenuItem.addActionListener<newExitActionListener<>>;//注册事件 fileMenu.add<exitMenuItem>; menuBar.add<fileMenu>; JMenuqueryMenu=newJMenu<"查询">; JMenuItemqueryMenuItem=newJMenuItem<"学生基本信息">; JMenuItemqueryScoreMenuItem=newJMenuItem<"学生成绩查询">; queryMenuItem.addActionListener<newQueryActionListener<>>;//注册事件 queryScoreMenuItem.addActionListener<newQueryScoreActionListener<>>;//注册事件 queryMenu.add<queryMenuItem>; queryMenu.add<queryScoreMenuItem>; menuBar.add<queryMenu>; JMenuchangeMenu=newJMenu<"修改">; JMenuItemaddMenuItem=newJMenuItem<"增加新生信息">; JMenuItemdeleteMenuItem=newJMenuItem<"删除毕业生信息">; JMenuItemaddScoreMenuItem=newJMenuItem<"增加成绩信息">; JMenuItemdeleteScoreMenuItem=newJMenuItem<"删除成绩信息">; addMenuItem.addActionListener<newAddActionListener<>>;//注册事件 deleteMenuItem.addActionListener<newDeleteActionListener<>>;//注册事件 addScoreMenuItem.addActionListener<newAddScoreActionListener<>>;//注册事件 deleteScoreMenuItem.addActionListener<newDeleteScoreActionListener<>>;//注册事件 changeMenu.add<addMenuItem>; changeMenu.add<deleteMenuItem>; changeMenu.add<addScoreMenuItem>; changeMenu.add<deleteScoreMenuItem>; menuBar.add<changeMenu>; } classExitActionListenerimplementsActionListener{ publicvoidactionPerformed<ActionEvente>{ intresult=JOptionPane.showConfirmDialog<null,"真的要推出吗?","提示信息", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE, null>; if<result==0> System.exit<0>; elseif<result==1>{ } } } classQueryScoreActionListenerimplementsActionListener{ publicvoidactionPerformed<ActionEvente>{ newScoreQueryUI<>; } } classQueryActionListenerimplementsActionListener{ publicvoidactionPerformed<ActionEvente>{ newInformationQueryUI<>; } } classAddActionListenerimplementsActionListener{ publicvoidactionPerformed<ActionEvente>{ newStudentAddUI<>; } } classDeleteActionListenerimplementsActionListener{ publicvoidactionPerformed<ActionEvente>{ newStudentDeleteUI<>; } } classAddScoreActionListenerimplementsActionListener{ publicvoidactionPerformed<ActionEvente>{ newScoreAddUI<>; } } classDeleteScoreActionListenerimplementsActionListener{ publicvoidactionPerformed<ActionEvente>{ newScoreDeleteUI<>; } } publicstaticvoidmain<String[]args>{ newTeacherMainUI<>; }}执行截图如下:〔6InformationQueryUI类:此类为学生基本信息查询界面类,在此界面上有一个标签,一个下拉列表框,一个文本框和一个按钮。点击下拉列表框时,可以选择要检索的方式,即要检索的属性,单击时,通过注册事件,在内部类的方法里获取所点击的属性名称,保存在一个String型的变量里。在文本框中输入要检索的属性内容,单击"检索"按钮时,通过注册事件,在内部类的方法中把刚才获取的属性参数和内容参数传给StudentDao类的queryStudent〔方法,从而获取检索内容,再把检索得到的内容通过Vector对象放入ArrayList类的对象lis中,从而使检索结果显示在表格中。InformationQueryUI类源代码:packageui;importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;importjava.util.*;importjavax.swing.event.*;importjavax.swing.table.*;importmodel.Student;importdao.StudentDao;publicclassInformationQueryUIextendsJFrame{ JLabelselectionLabel; JComboBoxfieldComboBox; JPaneltopPanel; JButtonretrievalButton; JTextFieldkeywordText; Containercontainer; StringfieldSelected; intselectedNum; JTabletable; JScrollPanebookScrollPane; JPanelbottomPanel; publicInformationQueryUI<>{ container=this.getContentPane<>; selectionLabel=newJLabel<"检索方式">; fieldComboBox=newJComboBox<>; fieldComboBox.addItem<"请选择...">; fieldComboBox.addItem<"学号">; fieldComboBox.addItem<"姓名">; fieldComboBox.addItem<"年龄">; fieldComboBox.addItem<"性别">; fieldComboBox.addItem<"系别">; fieldComboBox.addItemListener<newSelectedListener<>>;//下拉列表框注册事件注册事件 keywordText=newJTextField<"",20>; retrievalButton=newJButton<"检索">; topPanel=newJPanel<>; topPanel.setLayout<newFlowLayout<FlowLayout.LEFT>>; keywordText.setSize<topPanel.getWidth<>/2,topPanel.getWidth<>>; topPanel.add<selectionLabel>; topPanel.add<fieldComboBox>; topPanel.add<keywordText>; topPanel.add<retrievalButton>; this.add<BorderLayout.NORTH,topPanel>; retrievalButton.addActionListener<newRetrievalActionListener<>>;//给检索按钮注册事件 table=newJTable<>; bookScrollPane=newJScrollPane<table>; this.add<BorderLayout.CENTER,bookScrollPane>; bottomPanel=newJPanel<>; this.add<BorderLayout.SOUTH,bottomPanel>; this.setTitle<"学生信息检索查询系统">; this.setSize<600,450>; this.setVisible<true>; } classSelectedListenerimplementsItemListener{ publicvoiditemStateChanged<ItemEventevent>{ if<event.getStateChange<>==ItemEvent.SELECTED>{ selectedNum=fieldComboBox.getSelectedIndex<>;//获取文本信息 } } } classRetrievalActionListenerimplementsActionListener{ publicvoidactionPerformed<ActionEventevent>{ switch<selectedNum>{ case1: fieldSelected="num"; break; case2: fieldSelected="sname"; break; case3: fieldSelected="age"; break; case4: fieldSelected="sex"; break; case5: fieldSelected="dept"; break; } Stringkey=keywordText.getText<>; StudentDaooneStudentDao=newStudentDao<>; ArrayListlis=oneStudentDao.queryStudent<fieldSelected,key>; Vector<String>head=newVector<>; head.add<"学号">; head.add<"姓名">; head.add<"年龄">; head.add<"性别">; head.add<"系别">; Vector<Vector>content=newVector<>; for<inti=0;i<lis.size<>;i++>{ Vectorrow=newVector<>; StudentoneStudent=<Student>lis.get<i>; row.add<oneStudent.getNum<>>; row.add<oneStudent.getSname<>>; row.add<oneStudent.getAge<>>; row.add<oneStudent.getSex<>>; row.add<oneStudent.getDept<>>; content.add<row>; } DefaultTableModelmodel=newDefaultTableModel<content,head>; table.setModel<model>; repaint<>; } } publicstaticvoidmain<String[]args>{ newInformationQueryUI<>; }}执行截图如下:〔7ScoreQueryUI类:此类为学生成绩查询界面类,在此界面有一个标签,一个文本框,一个按钮。在文本框中输入要查询成绩的学生姓名,单击"查询"按钮时,通过注册事件,在内部类的方法里,获取从文本框中获取的学生姓名信息,并把此信息作为实参传给ScoreDao类的queryScore〔方法,得到查询结构。再把查询结构通过Vector对象放入ArrayList类的对象lis中,从而使检索结果显示在表格中。ScoreQueryUI类源代码:packageui;importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;importjava.util.*;importjavax.swing.event.*;importjavax.swing.table.DefaultTableModel;importmodel.Score;importdao.ScoreDao;publicclassScoreQueryUIextendsJFrame{ JLabelselectionLabel; JPaneltopPanel; JButtonretrievalButton; JTextFieldkeywordText; Containercontainer; StringfieldSelected; intselectedNum; JTabletable; JScrollPanebookScrollPane; JPanelbottomPanel; publicScoreQueryUI<>{ container=this.getContentPane<>; selectionLabel=newJLabel<"学生姓名">; keywordText=newJTextField<"",20>; retrievalButton=newJButton<"查询">; topPanel=newJPanel<>; topPanel.setLayout<newFlowLayout<FlowLayout.LEFT>>; keywordText.setSize<topPanel.getWidth<>/2,topPanel.getWidth<>>; topPanel.add<selectionLabel>; topPanel.add<keywordText>; topPanel.add<retrievalButton>; this.add<BorderLayout.NORTH,topPanel>; retrievalButton.add
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 印度道路安全培训课件
- 危险废物环保试题及答案
- 测氧仪培训试题及答案
- 广告设计师考试互动性设计元素试题及答案
- 成功备考的纺织工程师考试试题及答案
- 最基本的普法试题及答案
- 政治青岛一模试题及答案
- 2024年行业标准下的设计师考试试题及答案
- 助理广告师备考过程中的常见误区试题及答案
- 公安警校面试题及答案
- 喀什地区两级法院机关招聘聘用制书记员笔试真题2024
- 智慧树知到《形势与政策(北京大学)》2025春期末考试附答案
- 2025年广东省广州市增城区中考一模英语试题(含答案)
- 2024年武汉农村商业银行股份有限公司招聘考试真题
- 河北省唐山市、廊坊市2025届高三第二次模拟演练语文试卷(含答案)
- 2025年上半年浙江省中波发射管理中心招聘14人重点基础提升(共500题)附带答案详解
- 园艺设施考试题及答案
- 孕前保健试题及答案
- 工业自动化设备装配与调试考核试卷
- 2023四年级数学下册 3 运算律练习课(运算定律)配套教学实录 新人教版
- 2025年低空经济科普知识竞答考试题库300题(含答案)
评论
0/150
提交评论