java課程設(shè)計(jì)參考-學(xué)生信息管理系統(tǒng)1_第1頁(yè)
java課程設(shè)計(jì)參考-學(xué)生信息管理系統(tǒng)1_第2頁(yè)
java課程設(shè)計(jì)參考-學(xué)生信息管理系統(tǒng)1_第3頁(yè)
java課程設(shè)計(jì)參考-學(xué)生信息管理系統(tǒng)1_第4頁(yè)
java課程設(shè)計(jì)參考-學(xué)生信息管理系統(tǒng)1_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

/一.引言項(xiàng)目的名稱商品房銷(xiāo)售中的客戶信息管理系統(tǒng)項(xiàng)目背景和目標(biāo)商品房銷(xiāo)售中的客戶信息管理系統(tǒng)主要對(duì)客戶的個(gè)人基本信息進(jìn)行管理,對(duì)商家提供查詢信息、增添信息、刪除信息等操作功能;對(duì)客戶提供信息查詢功能。我們的目標(biāo)就是為該系統(tǒng)提供后臺(tái)連接數(shù)據(jù)庫(kù)程序設(shè)計(jì)以及前臺(tái)用戶界面設(shè)項(xiàng)目的可行性研究設(shè)計(jì)此系統(tǒng)需要java面向?qū)ο缶幊袒A(chǔ),數(shù)據(jù)庫(kù)應(yīng)用知識(shí)以及功能分析。根據(jù)目前所開(kāi)設(shè)的課程,學(xué)生已經(jīng)具備這樣的知識(shí),有能力綜合java編程知識(shí)和數(shù)據(jù)庫(kù)應(yīng)用知識(shí)做出一個(gè)這樣的客戶信息管理系統(tǒng)需求分析2.1系統(tǒng)概述此系統(tǒng)提供給客戶和商家。商家登陸后可以對(duì)基本信息表進(jìn)行查看、增添新記錄和刪除記錄等操作??蛻舻顷懞竽懿樵兛蛻粜畔ⅰ?.2系統(tǒng)運(yùn)行環(huán)境 Java運(yùn)行在eclipse軟件上,數(shù)據(jù)庫(kù)用mysql數(shù)據(jù)庫(kù)2.3功能需求描述商品房銷(xiāo)售中的客戶信息管理系統(tǒng)要面對(duì)商家和客戶。對(duì)于教師,需要查詢?nèi)繉W(xué)生的基本信息和成績(jī)信息,并且可以對(duì)其進(jìn)行修改。對(duì)于學(xué)生,不需要查詢自己的基本信息,只需要查詢成績(jī)。為了保護(hù)學(xué)生成績(jī)隱私,每位學(xué)生登錄系統(tǒng)后只能查詢自己的成績(jī),而無(wú)法看到別人的成績(jī)?nèi)?、系統(tǒng)設(shè)計(jì)3.1開(kāi)發(fā)與設(shè)計(jì)的總體思想教師方面:教師通過(guò)自己的用戶名和密碼登錄后,進(jìn)入教師主界面,在這個(gè)主界面里,可以選擇要操作的類別,即查詢功能還是修改功能。在查詢功能里面,可以選擇是查詢學(xué)生基本信息,還是查詢學(xué)生成績(jī)信息。在查詢學(xué)生基本信息時(shí),可以從依據(jù)不同字段,即學(xué)生信息表的不同屬性進(jìn)行查找。在查找學(xué)生成績(jī)信息時(shí),只能依據(jù)學(xué)生姓名和學(xué)號(hào)進(jìn)行查找。在修改功能里面,包括對(duì)學(xué)生基本信息表和學(xué)生成績(jī)表進(jìn)行增加和刪除記錄學(xué)生方面:學(xué)生通過(guò)自己的用戶名和密碼登錄此系統(tǒng)后,可以查詢自己本學(xué)期的各科成績(jī)信息商品房銷(xiāo)售中的客戶信息管理系統(tǒng)3.2系統(tǒng)模塊結(jié)構(gòu)圖商品房銷(xiāo)售中的客戶信息管理系統(tǒng)商家登陸客戶登陸商家登陸客戶登陸商家操作界面房型與房?jī)r(jià)信息商家操作界面房型與房?jī)r(jià)信息3.3數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)為了支持此學(xué)生信息管理系統(tǒng),創(chuàng)建數(shù)據(jù)庫(kù)studentmanage。在這個(gè)數(shù)據(jù)庫(kù)中包含四個(gè)表:student表,teacher表,studentlogin表和score表。截圖如下:在student〔學(xué)生基本信息表中,有五個(gè)屬性列,分別為:num〔學(xué)號(hào),sname〔學(xué)生姓名姓名,sex〔性別,age〔年齡,dept〔系別。其基本數(shù)據(jù)類型分別為:int,char,char,int,char。當(dāng)查詢學(xué)生基本信息時(shí),從此表中獲取數(shù)據(jù)。截圖如下:在teacher〔教師登陸表中,有兩個(gè)屬性列,分別為:tname〔教師姓名,password〔登錄密碼。其基本數(shù)據(jù)類型分別為:char,char。當(dāng)教師用戶登陸此系統(tǒng)時(shí),從該表獲取數(shù)據(jù)。截圖如下:在studentlogin〔學(xué)生登錄表中,有兩個(gè)屬性列,分別為:sname〔學(xué)生姓名,password〔登錄密碼。其基本數(shù)據(jù)類型分別為:char,char。當(dāng)學(xué)生用戶登陸此系統(tǒng)時(shí),從該表獲取數(shù)據(jù)。截圖如下:在score〔學(xué)生成績(jī)表中,有五個(gè)屬性列,分別為:num〔學(xué)號(hào),sname〔學(xué)生姓名,course〔課程名稱,score〔考試成績(jī),credit〔學(xué)分。其基本數(shù)據(jù)類型分別為:int,char,char,int,int。當(dāng)查詢學(xué)生成績(jī)信息時(shí),從此表獲取數(shù)據(jù)。截圖如下:3.4模塊設(shè)計(jì)總主界面登陸后,可以選擇用戶,是學(xué)生用戶或者教師用戶。如果選擇學(xué)生用戶,則進(jìn)入學(xué)生登錄界面,在這個(gè)界面上輸入學(xué)生姓名和用戶密碼。輸入后單擊"成績(jī)查詢"按鈕,若密碼正確,這顯示該學(xué)生本人本學(xué)期成績(jī),若密碼不正確,這提示密碼錯(cuò)誤。如果選擇教師用戶,則進(jìn)入教師登陸界面,在這個(gè)界面上輸入教師姓名和用戶密碼,輸入后單擊"登錄"按鈕,則進(jìn)入教師主界面。在教師主界面可以選擇進(jìn)行查詢操作還是修改操作。在查詢操作中包含查詢學(xué)生基本信息和查詢學(xué)生成績(jī)信息。若要查詢學(xué)生基本信息,點(diǎn)擊菜單項(xiàng)則進(jìn)入學(xué)生基本信息檢索界面,在此界面的檢索方式中選擇要檢索的數(shù)據(jù)屬性,在檢索內(nèi)容框中輸入檢索的具體信息,例如,檢索"姓名"字段時(shí),要鍵入某個(gè)學(xué)生姓名。輸入后,單擊"檢索"按鈕,則開(kāi)始數(shù)據(jù)庫(kù)查詢。如果數(shù)據(jù)庫(kù)檢索到所需信息,這生成列表顯示檢索結(jié)構(gòu),如果沒(méi)有所需信息,則列表中的內(nèi)容為空。若要查詢學(xué)生成績(jī)信息,則點(diǎn)擊學(xué)生成績(jī)查詢菜單項(xiàng),進(jìn)入成績(jī)查詢界面。在此界面的文本框中輸入要查詢成績(jī)的學(xué)生姓名,然后單擊檢索按鈕。若數(shù)據(jù)庫(kù)中有此學(xué)生的成績(jī)信息,則生成列表顯示成績(jī)信息,若沒(méi)有此記錄,則列表內(nèi)容為空。如果教師要進(jìn)行修改操作,則在教師主界面上選擇修改菜單項(xiàng),在此項(xiàng)中,選擇要修改的具體內(nèi)容,總共有四項(xiàng)修改操作:增加新生信息,刪除畢業(yè)生信息〔這兩個(gè)是對(duì)學(xué)生基本信息表的操作,增加成績(jī)信息,刪除成績(jī)信息〔這兩個(gè)是對(duì)學(xué)生成績(jī)信息表的操作。在增加信息操作中,按照標(biāo)簽提示一次輸入要增添的記錄值,輸入完畢后,單擊"添加"按鈕,若輸入成功,則提示成功,若輸入失敗,則提示失敗。在刪除信息操作中,輸入要?jiǎng)h除信息的學(xué)生姓名,單擊"刪除"按鈕,若刪除成功,則提示成功,若刪除失敗則提示失敗。以上就是該學(xué)生信息管理系統(tǒng)的操作步驟。3.5系統(tǒng)流程描述四、系統(tǒng)實(shí)現(xiàn)本系統(tǒng)保存在studentmanage包里其中包含四個(gè)包:connection包,dao包,model包,ui包1.Connection包中的類:〔1DBconnection類:此類設(shè)置程序與數(shù)據(jù)庫(kù)的連接,通過(guò)設(shè)置驅(qū)動(dòng)類型和數(shù)據(jù)源來(lái)確定要連接的數(shù)據(jù)庫(kù)。若連接成功,提示: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類:此類中有四個(gè)方法,studentLogin,addStudent,deleteStudent,queryStuden,作用分別是控制學(xué)生登陸,增加學(xué)生基本信息,查詢學(xué)生基本信息,刪除學(xué)生基本信息。studentLogin〔方法中,有兩個(gè)參數(shù),分別傳給select語(yǔ)句中的sname〔學(xué)生姓名和password〔登錄密碼,利用select語(yǔ)句在studentlogin表中檢索學(xué)生登錄信息。若存在此信息,返回true,否則返回falseaddStudent<>方法中,有五個(gè)參數(shù),分別傳給insert語(yǔ)句中的num〔學(xué)號(hào),sname〔學(xué)生姓名,age〔年齡,sex〔性別和dept〔系別,利用insert語(yǔ)句向student學(xué)生基本信息表中插入學(xué)生記錄。若插入成功,返回true,否則返回falsedeleteStudent〔方法中,有一個(gè)參數(shù),傳給delete語(yǔ)句中的sname〔學(xué)生姓名,利用delete語(yǔ)句,把student表中相關(guān)學(xué)生信息刪除。若刪除成功,返回true,否則返回falsequeryStuden〔方法中,有兩個(gè)參數(shù),分別傳給select語(yǔ)句中的field<查找方式>和key〔查找內(nèi)容,利用select語(yǔ)句,從student表中檢索學(xué)生基本信息。若存在此信息,則返回一個(gè)ArrayList類的對(duì)象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<>;//返回修改的記錄數(shù) 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類:此類中有一個(gè)方法:queryTeacher,作用是控制教師登陸queryTeacher〔方法中,有兩個(gè)參數(shù),分別傳給select語(yǔ)句中的tname〔教師姓名和password〔登陸密碼,利用select語(yǔ)句在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類:此類中有四個(gè)方法,queryScore,queryScore1,addScore,deleteScor作用分別是為教師用戶提供查詢學(xué)生成績(jī)信息功能,為學(xué)生用戶提供詢本人成績(jī)信息功能,添加成績(jī)信息,刪除成績(jī)信息。queryScore〔方法中,有一個(gè)參數(shù),傳給select語(yǔ)句中的sname〔學(xué)生姓名,利用select語(yǔ)句,查詢學(xué)生成績(jī)信息表中的內(nèi)容。若查詢成功,則返回一個(gè)ArrayList類的對(duì)象lis〔表格,否則,異常處理queryScore1〔方法中,有一個(gè)參數(shù),傳給傳給select語(yǔ)句中的sname〔學(xué)生姓名,這個(gè)sname的學(xué)生用戶登錄時(shí)輸入的姓名。即此類的作用是每個(gè)學(xué)生登陸只能查看本人成績(jī)。若查詢成功,則返回一個(gè)ArrayList類的對(duì)象lis〔表格,否則,異常處理addScore〔方法中,有五個(gè)參數(shù),分別傳給insert語(yǔ)句中的num<學(xué)號(hào)>,sname〔學(xué)生姓名,course〔課程名稱,score〔成績(jī),credit〔學(xué)分。利用insert語(yǔ)句,將這些記錄寫(xiě)入score表中。若插入成功返回true,否則返回falsedeleteScore〔方法中,有一個(gè)參數(shù),傳給delete語(yǔ)句中的sname〔學(xué)生姓名,利用delete語(yǔ)句,把score表中相關(guān)學(xué)生信息刪除。若刪除成功,返回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<>;//返回修改的記錄數(shù) 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類:此類中有五個(gè)成員變量,intnum;Stringsname;Stringcourse;intscore;intcredit;十個(gè)成員方法,分別獲取和設(shè)置這五個(gè)變量,即為score表中五個(gè)屬性的記錄值,均為getXXX<>setXXX<>方法,還有一個(gè)構(gòu)造方法,用于調(diào)用其對(duì)象時(shí)對(duì)成員變量賦值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類:此類中有五個(gè)成員變量,intnum;Stringsname;Stringsex;intage;Stringdept;十個(gè)成員方法,分別獲取和設(shè)置這五個(gè)變量,即為student表中五個(gè)屬性的記錄值,均為getXXX<>setXXX<>方法,還有一個(gè)構(gòu)造方法,用于調(diào)用其對(duì)象時(shí)對(duì)成員變量賦值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類:此類為登陸界面,在這個(gè)界面上,設(shè)置有兩個(gè)按鈕,學(xué)生按鈕,教師按鈕。給這兩個(gè)按鈕注冊(cè)事件addActionListener,分別在內(nèi)部類TeacherLoginActionListene和StudentLoginActionListener中的默認(rèn)方法actionPerformed〔中創(chuàng)建TeacherLoginUI類和StudentLoginUI類的對(duì)象,即打開(kāi)教師登陸界面和學(xué)生登錄界面,并將原登陸界面關(guān)閉。LoginUI類源代碼:packageui;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassLoginUIextendsJFrame{ JLabell1; JButtonbt1,bt2; Containercp; publicLoginUI<>{ l1=newJLabel<"請(qǐng)選擇用戶類型">; bt1=newJButton<"教師">; bt2=newJButton<"學(xué)生">; 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<>>;//注冊(cè)事件 bt2.addActionListener<newStudentLoginActionListener<>>;//注冊(cè)事件 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<>; }}執(zhí)行截圖如下:〔2StudentLoginUI類:此類為學(xué)生登陸界面,在這個(gè)界面上有兩個(gè)文本框,分別輸入學(xué)生姓名和登錄密碼,還有兩個(gè)按鈕,登陸和退出。輸入后,從兩個(gè)文本框中獲取用戶輸入的內(nèi)容,點(diǎn)擊"登陸"按鈕時(shí),調(diào)用StudentDao類中的studentLogin〔方法驗(yàn)證是否存在該用戶。若存在,則創(chuàng)建StudentScoreUI類的對(duì)象,即打開(kāi)學(xué)生成績(jī)界面,顯示此登陸學(xué)生的成績(jī)信息,若不存在,則提示密碼錯(cuò)誤。StudentLoginUI類源代碼:packageui;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importdao.StudentDao;publicclassStudentLoginUIextendsJFrame{ JLabell1,l2; JTextFieldt1; JPasswordFieldt2; JButtonbt1,bt2; Containercp; publicstaticStringst1; publicStringst2; publicStudentLoginUI<>{ l1=newJLabel<"學(xué)生姓名">; l2=newJLabel<"密碼">; t1=newJTextField<12>; t2=newJPasswordField<12>; bt1=newJButton<"成績(jī)查詢">; 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<>>;//注冊(cè)事件 bt2.addActionListener<newExitActionListener<>>;//注冊(cè)事件 cp=getContentPane<>; this.setBounds<200,200,p1.getHeight<>,p1.getHeight<>>; cp.add<p1>; this.setTitle<"學(xué)生登錄界面">; 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,"用戶名密碼錯(cuò)誤","提示信息", JOptionPane.INFORMATION_MESSAGE>; } } classExitActionListenerimplementsActionListener{ publicvoidactionPerformed<ActionEvente>{ System.exit<0>; } } publicstaticvoidmain<String[]args>{ newStudentLoginUI<>; }}執(zhí)行截圖如下:〔3StudentScoreUI類:此類為學(xué)生成績(jī)界面,此類中有一個(gè)標(biāo)簽和一個(gè)表格。標(biāo)簽中從StudentLoginUI類中獲取學(xué)生登錄時(shí)使用的用戶名,顯示在標(biāo)簽中以表示以下是某某同學(xué)的成績(jī)信息。表格中為此學(xué)生的成績(jī)。調(diào)用ScoreDao類中的queryScore1〔,將得到的ArrayList對(duì)象lis放入Vector對(duì)象中,形成表格。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+"同學(xué)本學(xué)期成績(jī)?nèi)缦?>; 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<"學(xué)生成績(jī)查詢">; this.setSize<600,450>; this.setVisible<true>; ScoreDaooneScore=newScoreDao<>; ArrayListlis=oneScore.queryScore<aa>; Vector<String>head=newVector<>; head.add<"學(xué)號(hào)">; head.add<"姓名">; head.add<"學(xué)科">; head.add<"成績(jī)">; head.add<"學(xué)分">; 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<>; }}執(zhí)行截圖如下:〔4TeacherLoginUI類:此類為教師登陸界面,在這個(gè)界面上有兩個(gè)文本框,分別輸入教師姓名和登錄密碼,還有兩個(gè)按鈕,登陸和退出。輸入后,從兩個(gè)文本框中獲取用戶輸入的內(nèi)容,點(diǎn)擊"登陸"按鈕時(shí),調(diào)用TeacherDao類中的queryTeacher〔方法驗(yàn)證是否存在該用戶。若存在創(chuàng)建TeacherMainUI類的對(duì)象,即打開(kāi)教師主界面,若不存在,則提示密碼錯(cuò)誤。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<>>;//注冊(cè)事件 bt2.addActionListener<newExitActionListener<>>;//注冊(cè)事件 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,"用戶名密碼錯(cuò)誤","提示信息", JOptionPane.INFORMATION_MESSAGE>; } } classExitActionListenerimplementsActionListener{ publicvoidactionPerformed<ActionEvente>{ System.exit<0>; } } publicstaticvoidmain<String[]args>{ newTeacherLoginUI<>; }}執(zhí)行截圖如下:〔5TeacherMainUI類:此類為教師主界面類,在此界面上有一個(gè)菜單欄,三個(gè)菜單:文件,查詢,修改。其中"文件"菜單中有"退出"菜單項(xiàng),點(diǎn)擊時(shí)跳出對(duì)話框問(wèn)是否真的退出,若點(diǎn)擊是,窗口關(guān)閉,若點(diǎn)擊否,回復(fù)原界面。"查詢"菜單中有"學(xué)生基本信息"和"學(xué)生成績(jī)信息"兩個(gè)菜單項(xiàng):當(dāng)點(diǎn)擊"學(xué)生基本信息"時(shí),通過(guò)注冊(cè)事件,創(chuàng)建InformationQueryUI類的對(duì)象,即打開(kāi)查詢學(xué)生基本信息的窗口,當(dāng)點(diǎn)擊"學(xué)生成績(jī)信息"時(shí),通過(guò)注冊(cè)事件,創(chuàng)建ScoreQueryUI類的對(duì)象,即打開(kāi)查詢學(xué)生成績(jī)信息的窗口。修改菜單中有"增加新生信息""刪除畢業(yè)生信息""增加成績(jī)信息"和"刪除成績(jī)信息"四個(gè)菜單項(xiàng),當(dāng)點(diǎn)擊"增加新生信息"時(shí),通過(guò)注冊(cè)事件,創(chuàng)建StudentAddUI類的對(duì)象,即打開(kāi)添加學(xué)生基本信息的窗口,當(dāng)點(diǎn)擊"刪除畢業(yè)生信息"時(shí),通過(guò)注冊(cè)事件,創(chuàng)建StudentDeleteUI類的對(duì)象,即打開(kāi)刪除學(xué)生基本信息的窗口,當(dāng)點(diǎn)擊"增加成績(jī)信息"時(shí),通過(guò)注冊(cè)事件,創(chuàng)建ScoreAddUI類的對(duì)象,即打開(kāi)添加成績(jī)信息的窗口,當(dāng)點(diǎn)擊"刪除成績(jī)信息"時(shí),通過(guò)注冊(cè)事件,創(chuàng)建ScoreDeleteUI類的對(duì)象,即打開(kāi)刪除成績(jī)信息的窗口。TeacherMainUI類源代碼:packageui;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassTeacherMainUIextendsJFrame{Containerctp;TeacherMainUI<>{ ctp=this.getContentPane<>; this.setTitle<"歡迎進(jìn)入學(xué)生管理系統(tǒng)!">; 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<>>;//注冊(cè)事件 fileMenu.add<exitMenuItem>; menuBar.add<fileMenu>; JMenuqueryMenu=newJMenu<"查詢">; JMenuItemqueryMenuItem=newJMenuItem<"學(xué)生基本信息">; JMenuItemqueryScoreMenuItem=newJMenuItem<"學(xué)生成績(jī)查詢">; queryMenuItem.addActionListener<newQueryActionListener<>>;//注冊(cè)事件 queryScoreMenuItem.addActionListener<newQueryScoreActionListener<>>;//注冊(cè)事件 queryMenu.add<queryMenuItem>; queryMenu.add<queryScoreMenuItem>; menuBar.add<queryMenu>; JMenuchangeMenu=newJMenu<"修改">; JMenuItemaddMenuItem=newJMenuItem<"增加新生信息">; JMenuItemdeleteMenuItem=newJMenuItem<"刪除畢業(yè)生信息">; JMenuItemaddScoreMenuItem=newJMenuItem<"增加成績(jī)信息">; JMenuItemdeleteScoreMenuItem=newJMenuItem<"刪除成績(jī)信息">; addMenuItem.addActionListener<newAddActionListener<>>;//注冊(cè)事件 deleteMenuItem.addActionListener<newDeleteActionListener<>>;//注冊(cè)事件 addScoreMenuItem.addActionListener<newAddScoreActionListener<>>;//注冊(cè)事件 deleteScoreMenuItem.addActionListener<newDeleteScoreActionListener<>>;//注冊(cè)事件 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<>; }}執(zhí)行截圖如下:〔6InformationQueryUI類:此類為學(xué)生基本信息查詢界面類,在此界面上有一個(gè)標(biāo)簽,一個(gè)下拉列表框,一個(gè)文本框和一個(gè)按鈕。點(diǎn)擊下拉列表框時(shí),可以選擇要檢索的方式,即要檢索的屬性,單擊時(shí),通過(guò)注冊(cè)事件,在內(nèi)部類的方法里獲取所點(diǎn)擊的屬性名稱,保存在一個(gè)String型的變量里。在文本框中輸入要檢索的屬性內(nèi)容,單擊"檢索"按鈕時(shí),通過(guò)注冊(cè)事件,在內(nèi)部類的方法中把剛才獲取的屬性參數(shù)和內(nèi)容參數(shù)傳給StudentDao類的queryStudent〔方法,從而獲取檢索內(nèi)容,再把檢索得到的內(nèi)容通過(guò)Vector對(duì)象放入ArrayList類的對(duì)象lis中,從而使檢索結(jié)果顯示在表格中。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<"請(qǐng)選擇...">; fieldComboBox.addItem<"學(xué)號(hào)">; fieldComboBox.addItem<"姓名">; fieldComboBox.addItem<"年齡">; fieldComboBox.addItem<"性別">; fieldComboBox.addItem<"系別">; fieldComboBox.addItemListener<newSelectedListener<>>;//下拉列表框注冊(cè)事件注冊(cè)事件 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<>>;//給檢索按鈕注冊(cè)事件 table=newJTable<>; bookScrollPane=newJScrollPane<table>; this.add<BorderLayout.CENTER,bookScrollPane>; bottomPanel=newJPanel<>; this.add<BorderLayout.SOUTH,bottomPanel>; this.setTitle<"學(xué)生信息檢索查詢系統(tǒng)">; 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<"學(xué)號(hào)">; 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<>; }}執(zhí)行截圖如下:〔7ScoreQueryUI類:此類為學(xué)生成績(jī)查詢界面類,在此界面有一個(gè)標(biāo)簽,一個(gè)文本框,一個(gè)按鈕。在文本框中輸入要查詢成績(jī)的學(xué)生姓名,單擊"查詢"按鈕時(shí),通過(guò)注冊(cè)事件,在內(nèi)部類的方法里,獲取從文本框中獲取的學(xué)生姓名信息,并把此信息作為實(shí)參傳給ScoreDao類的queryScore〔方法,得到查詢結(jié)構(gòu)。再把查詢結(jié)構(gòu)通過(guò)Vector對(duì)象放入ArrayList類的對(duì)象lis中,從而使檢索結(jié)果顯示在表格中。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<"學(xué)生姓名">; 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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論