




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于java和mysql的學(xué)生信息管理系統(tǒng)【實(shí)用文檔】doc文檔可直接使用可編輯,歡迎下載
基于java和mysql的學(xué)生基本信息管理系統(tǒng)基于java和mysql的學(xué)生信息管理系統(tǒng)【實(shí)用文檔】doc文檔可直接使用可編輯,歡迎下載1系統(tǒng)需求分析1。1功能需求分析和功能設(shè)計(jì)根據(jù)學(xué)生信息管理綜合分析,便出于方便管理考慮,將學(xué)生信息管理系統(tǒng)的功能總結(jié)起來,共需要實(shí)現(xiàn)以下幾個方面功能:學(xué)生信息的增加:管理員可以在數(shù)據(jù)庫中增加學(xué)生信息。學(xué)生信息的修改:修改數(shù)據(jù)庫中已經(jīng)存在的學(xué)生信息。學(xué)生信息的刪除:刪除數(shù)據(jù)庫中的學(xué)生信息.學(xué)生信息的查詢:可以對學(xué)生信息進(jìn)行查詢操作,按學(xué)號、姓名、年齡來進(jìn)行查詢和排序。學(xué)生信息進(jìn)行排序:按學(xué)號、姓名、年齡來進(jìn)行排序。學(xué)生信息的導(dǎo)入和導(dǎo)出:將數(shù)據(jù)從數(shù)據(jù)庫中導(dǎo)出到TXT、Word、Excel。2學(xué)生信息管理系統(tǒng)設(shè)計(jì)2.1數(shù)據(jù)模型分析與設(shè)計(jì)本項(xiàng)目的關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)可分為兩個表來表示:學(xué)生信息表(Person)、用戶信息表(UserInfo)。學(xué)生信息表用于記錄學(xué)生的基本信息,如表2-1;用戶信息表用于記錄系統(tǒng)用戶的基本信息,如表2-2,這兩個表對應(yīng)的E—R圖分別是:圖3。1學(xué)生信息E-R圖;圖3.2課程信息E-R圖;圖3。3學(xué)生選課E—R圖;如下圖表2-1學(xué)生信息表(Person)名稱字段名稱數(shù)據(jù)類型主鍵非空學(xué)號SnoVarcharYesYes姓名SnameVarcharNoYes性別SsexintNoNo年齡SageintNOYes籍貫ShomeVarcharNoNo家庭住址SaddressVarcharNoNo聯(lián)系方式StelephoneVarcharNoNo表2-2用戶信息表(UserInfo)名稱字段名稱數(shù)據(jù)類型主鍵非空用戶編號idIntYesYes用戶名UnameVarchar(10)NoYes密碼UpasswordVarchar(16)NoYes學(xué)生學(xué)生年齡學(xué)號學(xué)生姓名性別聯(lián)系方式家庭住址籍貫圖2.1學(xué)生信息E-R圖用戶用戶用戶編號用戶名密碼圖2.2用戶信息E-R圖2.2結(jié)構(gòu)設(shè)計(jì)與結(jié)構(gòu)功能圖2。2.1結(jié)構(gòu)設(shè)計(jì)根據(jù)對系統(tǒng)進(jìn)行需求分析,本系統(tǒng)將分為4個模塊:●學(xué)生管理管理學(xué)生基本信息,包括個人信息的添加、修改、刪除、查詢、按各種方式進(jìn)行排序以及數(shù)據(jù)的導(dǎo)入的導(dǎo)出功能.●用戶管理管理用戶的基本信息,包括用戶的添加、密碼修改和用戶刪除.2.2.2功能結(jié)構(gòu)圖用戶管理用戶管理增加修改刪除學(xué)生管理添加刪除修改信息查詢按姓名查詢按學(xué)號查詢按年齡查詢學(xué)生管理系統(tǒng)圖2.2.2系統(tǒng)結(jié)構(gòu)功能圖3、系統(tǒng)實(shí)現(xiàn)該系統(tǒng)由6個模塊構(gòu)成,包括學(xué)生管理系統(tǒng)主界面模塊、增加學(xué)生信息模塊、查詢學(xué)生信息模塊、修改學(xué)生信息模塊、刪除學(xué)生信息模塊和密碼變更模塊.下面分別加以敘述:學(xué)生管理系統(tǒng)主界面模塊學(xué)生管理系統(tǒng)主界面模塊包括LoginFrame.java和MainFrame。java兩個文件.LoginFrame是學(xué)生管理系統(tǒng)的登錄對話框(如圖3.1所示),登錄成功后生成了學(xué)生管理系統(tǒng)的界面,MainFrame類繼承自JFrame類,實(shí)現(xiàn)了ActionListener接口,他有一個帶參數(shù)的構(gòu)造方法MainFrame(LoginFramelf),用來關(guān)閉LoginFrame的實(shí)例。MainFrame類將所有功能集中到菜單欄中,并通過調(diào)用其他模塊來實(shí)現(xiàn)學(xué)生管理系統(tǒng)的各個功能,如圖3。2所示。圖3。1學(xué)生管理系統(tǒng)登錄界面圖3.2學(xué)生管理系統(tǒng)登錄界面學(xué)生信息添加模塊學(xué)生信添加模塊主要由InsertStu。java和數(shù)據(jù)庫的接口文件PersonDAOimpl組成。其中InsertStu是StuModel的子類,StuModel主要是生成界面,InsertStu接收用戶輸入,而PersonDAOimpl執(zhí)行數(shù)據(jù)庫的相關(guān)操作,這樣使整個過程清楚明了。是StuMode該模塊的流程圖如下圖3。3所示,界面如3.4所示:圖3.3添加學(xué)生信息流程圖圖3。4學(xué)添加學(xué)生信息界面查詢學(xué)生信息模塊課程信息管理模塊主要由Search。java、PersonDAOimpl.java、TableFrame.java、這3個文件組成。Search.java負(fù)責(zé)用戶查詢數(shù)據(jù)的接收,PersonDAOimpl。java負(fù)責(zé)數(shù)據(jù)庫查詢操作,TableFrame.java負(fù)責(zé)數(shù)據(jù)的顯示工作.流程圖如圖3.5所示:圖3.5學(xué)生信息查詢模塊流程圖修改學(xué)生信息模塊修改學(xué)生信息模塊主要由UpdateDialog。java、UpdateStu、PersonDAOimpl.java這3個文件組成,其中,UpdateDialog負(fù)責(zé)數(shù)據(jù)的接收,UpdateStu顯示修改界面,PersonDAOimpl負(fù)責(zé)數(shù)據(jù)層的操作.流程圖、界面如下:刪除學(xué)生信息模塊這個模塊主要是由DelDialog.java、Delete.java、PersonDAOimpl。java組成。其中,DelDialog負(fù)責(zé)數(shù)據(jù)的接收,Delete顯示修改界面,PersonDAOimpl負(fù)責(zé)數(shù)據(jù)層的操作.流程圖、界面如下:4系統(tǒng)調(diào)試與測試4.1系統(tǒng)功能測試功能測試主要是測試程序模塊是否實(shí)現(xiàn)了設(shè)計(jì)中所要求的功能。功能測試中需要注意的有:(1)查詢功能中,有按單一查詢條件進(jìn)行查詢的,也有按多個查詢條件組合查詢的。這里要注意的多個查詢條件之間的關(guān)系。(2)錄入功能中,需要注意的是前臺設(shè)置的數(shù)值長度是否大于后臺數(shù)值長度,以及前臺和后臺的數(shù)據(jù)結(jié)構(gòu)是否相符,很多時候錄入功能無法實(shí)現(xiàn)是由于這些原因.還有就是必須錄入的字段的設(shè)置時候有誤。(3)測試刪除功能中需要注意的是單擊"刪除"按鈕后,一般會出現(xiàn)提示信息,詢問是否確定刪除。通常情況下,我們單擊”確認(rèn)"按鈕查看信息是否被刪除掉了,而忽略了單擊"取消”按鈕后程序的反應(yīng):這時有可能的是沒有刪除,還有一種可能是即便單擊了”取消"按鈕,也一樣刪除了數(shù)據(jù)。另外,在刪除多條記錄的時候,要注意連續(xù)選中的幾條記錄是否真正都被刪除掉了,即如果再按照這種查詢方式查詢,時候還能查詢出來。有的時候需要在數(shù)據(jù)庫中設(shè)立一個標(biāo)志位,而不是真正的物理刪除。所以在下一次查詢中,可能還會被查詢出來,這主要是因?yàn)樵诓樵儣l件中沒有將標(biāo)志考慮在內(nèi)。(4)關(guān)于修改功能的測試主要是看修改確認(rèn)后是否數(shù)據(jù)真正已被修改了。這是最基本的功能,需要注意的是看是否能把不應(yīng)該修改的數(shù)據(jù)也修改成功了.4。2系統(tǒng)實(shí)施發(fā)布在編碼結(jié)束以后,本人進(jìn)行了如下測試:界面測試、功能測試、需求測試、性能測試。通過這幾項(xiàng)的測試,基本可以保證系統(tǒng)的正常運(yùn)行。4.3系統(tǒng)調(diào)試常見錯誤1.NullPointerException異常一般是對一個為NULL值的變量進(jìn)行操作引起的。為避免這種異常,最好在對變量操作之前檢查,看它是否為NULL值.2.SQLException異常一般是由于SQL語句不正確引起的。為避免這種異常,最好在使用SQL語句的程序中捕獲此SQL異常。3.NumberFormatException異常這是由于數(shù)字的格式錯誤而出現(xiàn)的例外.為了避免出現(xiàn)此類錯誤,一般必須保證數(shù)據(jù)格式輸入正確。4.?dāng)?shù)據(jù)庫連接垃圾回收在實(shí)際的開發(fā)應(yīng)用中,通常出現(xiàn)某一個對象未能關(guān)閉的情況,為了防止這種情況的發(fā)生,可以在有關(guān)對數(shù)據(jù)庫操作的Java類文件中增加自動回收函數(shù),在JVM自動地回收對象時,取出使用的連接對象,判斷是否關(guān)閉,如果沒有關(guān)閉則關(guān)掉。代碼如下所示:protectedvoidfinalize(){try{If(getConn()?。絥ull&&!getConn().isClosed()){rs.cloes();stm.close();conn。close();}}catch(SQLExceptione){}}軟件學(xué)院課程設(shè)計(jì)報告書課程名稱java課程設(shè)計(jì)設(shè)計(jì)題目學(xué)生信息管理系統(tǒng)專業(yè)班級軟件工程09-10班學(xué)號0920011023姓名趙壬冰指導(dǎo)教師2011年6月目錄TOC\o"1—4"\h\uHYPERLINK\l_Toc255401設(shè)計(jì)時間PAGEREF_Toc255403HYPERLINK\l_Toc254412設(shè)計(jì)目的PAGEREF_Toc2544133設(shè)計(jì)任務(wù)PAGEREF_Toc108113HYPERLINK\l_Toc269523.1任務(wù)說明PAGEREF_Toc269523HYPERLINK\l_Toc8313。2系統(tǒng)目標(biāo)PAGEREF_Toc83143.2使用范圍PAGEREF_Toc149004HYPERLINK\l_Toc102963。3功能要求PAGEREF_Toc1029644設(shè)計(jì)內(nèi)容PAGEREF_Toc3074HYPERLINK\l_Toc148784。1界面構(gòu)建1487844。2詳細(xì)設(shè)計(jì)PAGEREF_Toc3199254。2。1模塊設(shè)計(jì)PAGEREF_Toc954。2。2數(shù)據(jù)庫設(shè)計(jì)(Access)PAGEREF_Toc57965HYPERLINK\l_Toc110994.2。3運(yùn)行調(diào)試PAGEREF_Toc110996HYPERLINK\l_Toc316934。2.4主要源代碼PAGEREF_Toc3169310HYPERLINK\l_Toc220515總結(jié)與展望PAGEREF_Toc2205110參考文獻(xiàn)PAGEREF_Toc15826111設(shè)計(jì)時間2011.6.112設(shè)計(jì)目的本程序用于用戶對少量學(xué)生信息進(jìn)行簡單的管理,本程序針對于對安全系數(shù)要求不高,操作不是很復(fù)雜的小型客戶開發(fā)。本程序可以實(shí)現(xiàn)對學(xué)生信息的錄入、查詢、修改、刪除等操作,同時支持查看所有學(xué)生信息,功能完善,界面簡潔美觀,布局合理,操作簡便,簡單易用,任何人可輕松操作。同時,本程序?qū)ο到y(tǒng)要求配置較低,運(yùn)行速度快,而卻對數(shù)據(jù)庫管理要求較低。本程序數(shù)據(jù)庫采用office2007版本的access數(shù)據(jù)庫(。accdb)進(jìn)行數(shù)據(jù)存儲,該數(shù)據(jù)庫可實(shí)現(xiàn)關(guān)系較為簡單的數(shù)據(jù)管理.3設(shè)計(jì)任務(wù)3。1任務(wù)說明設(shè)計(jì)一個簡單學(xué)生個人信息管理系統(tǒng),該系統(tǒng)具有錄入,查詢,修改三項(xiàng)基本功能。要求如下:(1)具有簡單的錄入,查詢和修改功能。(2)修改學(xué)生信息必須輸入學(xué)號,然后對姓名、性別和專業(yè)等修改;(3)使用文件存儲數(shù)據(jù).(也可用數(shù)據(jù)庫)(4)學(xué)生個人信息必須包括:學(xué)號、姓名、性別、出生日期、身份證號、專業(yè)、班級自我簡介,其余可自行豐富.(5)具有對姓名,出生日期和身份證號進(jìn)行簡單校驗(yàn)的功能.3.2系統(tǒng)目標(biāo)軟件開發(fā)的意圖便于用戶對學(xué)生的管理,方便查看學(xué)生的情況。如用戶對學(xué)生基本信息進(jìn)行錄入、查詢、修改、刪除等。3。2使用范圍本系統(tǒng)僅針對用戶對少量學(xué)生進(jìn)行信息管理。3.3功能要求1錄入學(xué)生基本信息的功能2查詢學(xué)生基本信息的功能3修改學(xué)生基本信息的功能4刪除學(xué)生基本信息的功能5顯示所有學(xué)生信息的功能4設(shè)計(jì)內(nèi)容4.1界面構(gòu)建1、為了便于各種操作,軟件采用多窗口的模式。用戶可在不同窗口進(jìn)行相應(yīng)操作(錄入、查詢、修改、刪除、顯示所有學(xué)生省信息)。2、主窗口是用戶進(jìn)行各種操作的平臺,具體操作在各個獨(dú)立功能窗口中完成。3、主窗口的主要功能位于菜單中,菜單為進(jìn)入各個功能窗口的唯一通道。4、當(dāng)用戶在進(jìn)行個別錄入、刪除或錯誤輸入操作時,會彈出相應(yīng)對話框提示用戶。如當(dāng)錄入成功或刪除成功,彈出成功以及相應(yīng)的簡明信息提示當(dāng),當(dāng)錄入、刪除失敗以及輸入不當(dāng)是,彈出錯誤以及簡單的錯誤原因提示用戶重新操作。5、界面布局盡量合理,各組件位置分布均勻美觀。4.2詳細(xì)設(shè)計(jì)登錄4。2。1模塊設(shè)計(jì)登錄nono密碼正確密碼正確yesyes進(jìn)入操作界面進(jìn)入操作界面查改刪增 查改刪增 4。2。2數(shù)據(jù)庫設(shè)計(jì)(Access)圖a.學(xué)生信息表圖b。管理員表4.2。3運(yùn)行調(diào)試圖1.登錄界面圖2。操作界面圖3。添加學(xué)生信息圖4。刪除學(xué)生信息圖5.修改學(xué)生信息圖6。查找學(xué)生信息圖7。注冊新用戶圖8.刪除用戶4.2.4主要源代碼importjava.a(chǎn)wt.*;importjavax。swing。*;importjava。awt.event.*;importjavax.swing.border.*;importjavax.swing。JOptionPane;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax。swing.table.DefaultTableModel;importjavax。swing.table。TableColumn;importjava。sql.*;importjava。awt.GridLayout;classmyStudent{publicmyStudent(){}publicstaticvoidmain(String[]args){loginFramelf=newloginFrame();lf.setVisible(true);lf.a(chǎn)ddWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});}}classmainFrameextendsJFrameimplementsActionListener{MenuBarmyMenuBar=newMenuBar();MenumyMenuFile,myMenuEdit,myMenuUser,myMenuAbout;MenuItemmiNew,miOpen,miSave,miSaveAs,miExit;MenuItemmiAdd,miEdit,miDel,miFind,miShow,miUser,miAbout;publicJTabletable=newJTable();Iconbackground_icon=newImageIcon("pct。jpg");JLabelbackground_Label=newJLabel(background_icon);publicDefaultTableModelmm;publicmainFrame(){myMenuFile=newMenu("文件");miNew=newMenuItem("新建");miOpen=newMenuItem("打開");miSave=newMenuItem("保存");miExit=newMenuItem("退出");//miNew。enable(false);//miOpen.enable(false);//miSave。enable(false);//myMenuFile。add(miNew);//myMenuFile.a(chǎn)dd(miOpen);//myMenuFile.add(miSave);myMenuFile.a(chǎn)dd(miExit);myMenuEdit=newMenu("數(shù)據(jù)編輯”);miFind=newMenuItem("查找數(shù)據(jù)”);miAdd=newMenuItem("添加數(shù)據(jù)");miEdit=newMenuItem("修改數(shù)據(jù)");miDel=newMenuItem("刪除數(shù)據(jù)”);miShow=newMenuItem(”全部顯示");myMenuEdit.add(miFind);myMenuEdit.add(miAdd);myMenuEdit.add(miEdit);myMenuEdit.a(chǎn)dd(miDel);myMenuEdit.add(miShow);myMenuUser=newMenu("用戶”);miUser=newMenuItem("編輯用戶”);myMenuUser.add(miUser);myMenuAbout=newMenu("我的課程設(shè)計(jì)");miAbout=newMenuItem(”課程設(shè)計(jì)說明");myMenuAbout.a(chǎn)dd(miAbout);myMenuBar。add(myMenuFile);myMenuBar。add(myMenuEdit);myMenuBar.add(myMenuUser);myMenuBar。add(myMenuAbout);String[]col={”學(xué)號”,"姓名",”性別","民族",”年齡",”年級",”班級”,"專業(yè)”};//創(chuàng)建屬性列名mm=newDefaultTableModel(col,0);table.setModel(mm);JScrollPanetableScrollPane=newJScrollPane(table);this.setMenuBar(myMenuBar);this.add(tableScrollPane);miExit.a(chǎn)ddActionListener(this);miFind。addActionListener(this);miAdd.addActionListener(this);miEdit.a(chǎn)ddActionListener(this);miDel.addActionListener(this);miShow.a(chǎn)ddActionListener(this);miUser.a(chǎn)ddActionListener(this);miAbout。addActionListener(this);}classmyConnection{ResultSetre;Stringstrurl=”jdbc:odbc:driver={MicrosoftAccessDriver(*.mdb)};DBQ=學(xué)生管理數(shù)據(jù)庫.mdb";publicmyConnection(){}publicResultSetgetResult(Stringsql){try{Class.forName(”sun。jdbc.odbc.JdbcOdbcDriver");Connectionconn=DriverManager.getConnection(strurl);Statementstmt=conn.createStatement(ResultSet。TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);ResultSetre=stmt。executeQuery(sql);returnre;}cat(yī)ch(Exceptione){System.out.println(”getResult——--——"+e。toString());returnnull;}}classaddFrameextendsJDialogimplementsActionListener{publicstaticfinalintWIDTH=400;publicstaticfinalintHEIGHT=400;JLabel學(xué)號1,姓名1,性別1,民族1,年齡1,年級1,班級1,專業(yè)1;JTextField學(xué)號,姓名,性別,民族,年齡,年級,班級,專業(yè);JButtonb;JPanelp;mainFramemf;classeditFrameextendsJDialogimplementsActionListener{publicstaticfinalintWIDTH=400;publicstaticfinalintHEIGHT=400;JLabel學(xué)號1,姓名1,性別1,民族1,年齡1,年級1,班級1,專業(yè)1;JTextField學(xué)號,姓名,性別,民族,年齡,年級,班級,專業(yè);JButtonb;JPanelp;mainFramemf;classfindFrameextendsJDialogimplementsActionListener{mainFramemf;JPanelp;JComboBoxc;JTextFieldt;JButtonb;JButtonfAll;Stringsql="select*fromstudent";String[]colStr={"學(xué)號”,”姓名","性別”,”民族”,"年齡","年級”,”班級”,”專業(yè)"};publicfindFrame(mainFramemmf){mf=mmf;p=newJPanel();c=newJComboBox(colStr);t=newJTextField(10);b=newJButton(”查找”);fAll=newJButton("全部顯示");b。addActionListener(this);fAll。addActionListener(this);p。add(newJLabel("選擇”));p。add(c);p.add(newJLabel("查找內(nèi)容”));p。add(t);p.add(b);p。add(fAll);this。add(p);this.setTitle("查找");this.setSize(450,80);}classaboutFrameextendsJDialog{aboutFrame(){JPanelp1=newJPanel();p1.a(chǎn)dd(newJLabel("學(xué)生信息管理系統(tǒng)"));p1。add(newJLabel("趙壬冰0920011023"));p1。add(newJLabel(”遼寧工程技術(shù)大學(xué)”));p1。add(newJLabel("軟件工程09—10”));p1.setLayout(newGridLayout(4,1,5,5));this.a(chǎn)dd(p1);this。setTitle(”關(guān)于我");this.setSize(300,200);}}classuserFrameextendsJFrameimplementsActionListener{JTextFielduser,pass;JButtonadd,del;JTablet;JPanelp1,p2,p3,p4,p5;DefaultTableModelm;publicuserFrame(){p1=newJPanel();p2=newJPanel();p3=newJPanel();p4=newJPanel();p5=newJPanel();user=newJTextField(8);pass=newJTextField(8);add=newJButton(”添加”);del=newJButton("刪除");String[]col={"用戶名”,”密碼"};m=newDefaultTableModel(col,0);t=newJTable();t.setModel(m);JScrollPanesp=newJScrollPane(t);p1。add(newJLabel(”用戶名"));p1.a(chǎn)dd(user);p1。add(newJLabel("密碼”));p1.a(chǎn)dd(pass);p1.add(add);p2.add(sp);p3.add(del);add.a(chǎn)ddActionListener(this);del。addActionListener(this);myConnectionconn=newmyConnection();ResultSetrs;rs=conn.getResult(”select*from管理員”);if(rs!=null){try{//m.setRowCount(0);//table.setModel(mm);while(rs。next()){String用戶名=rs.getString(”用戶名”);String密碼=rs.getString(”密碼”);String[]cloumns={用戶名,密碼};m.addRow(cloumns);}t.setModel(m);}cat(yī)ch(Exceptione){System.out.println(e.toString());}}this.add(p1,BorderLayout.NORTH);this.add(p2,BorderLayout.CENTER);this。add(p3,BorderLayout.SOUTH);this。add(p4,BorderLayout。WEST);this.add(p5,BorderLayout.EAST);this.setTitle("用戶管理”);this.setSize(600,400);}classloginFrameextendsJDialogimplementsActionListener{JPanelp;JTextFielduser,pass;JButtonlogin,cancel;publicloginFrame(){p=newJPanel();user=newJTextField(10);pass=newJTextField(10);login=newJButton("登錄”);cancel=newJButton("退出”);login.a(chǎn)ddActionListener(this);cancel.addActionListener(this);Iconbackground_icon=newImageIcon("pct.jpg”);JLabelbackground_Label=newJLabel(background_icon);p.add(background_Label);p.a(chǎn)dd(newJLabel("賬號"));p。add(user);p。add(newJLabel("密碼”));p.add(pass);p。add(login);p.add(cancel);this。add(p);this.setTitle("系統(tǒng)登錄”);this.setSize(360,260);}5總結(jié)與展望做課設(shè)讓我對java有了新的認(rèn)識,首先我接觸了很多上課見過見過但沒有實(shí)際用過的類和方法,讓我對編程有了許多新的思想.大一學(xué)了C語言,雖然當(dāng)時學(xué)的還不錯,由于學(xué)的都是入門知識,所以自己做的都是DOS下執(zhí)行的程序,雖然可以實(shí)現(xiàn)一定的功能,但和自己平時用的軟件相差很大.這學(xué)期剛開課學(xué)java感覺沒什么新鮮感,它的跨平臺特性也只是聽聽,根本沒有認(rèn)識,知道學(xué)到第七章圖形界面用戶編程的時候,我發(fā)現(xiàn)學(xué)會之后自己可以做出來的軟件就更接近平時使用的軟件了,不過由于平時學(xué)習(xí)不刻苦,到時沒有時間靜下心來寫java代碼,知道結(jié)課做課設(shè),才靜下心來開始研究java,結(jié)合以前的編程知識,做起了自己的程序。我曾經(jīng)用c語言做過這個系統(tǒng),做起來會比較熟練,同時想通過做課設(shè)學(xué)習(xí)一點(diǎn)數(shù)據(jù)庫的知識,感覺這些知識更貼近實(shí)際應(yīng)用,選好之后開始準(zhǔn)備課設(shè),先從最簡單的主窗體,到主窗體的菜單,組件添加,再到各個功能的獨(dú)立窗體的建立,再到最后的數(shù)據(jù)庫連接,功能的實(shí)現(xiàn),一步步走來,收獲頗多.其中獨(dú)立窗體中的組件排版是碰到的第一個問題,最簡單的方法是在建每個窗體時把所有需要的組件全部重新添加進(jìn)去,但是這樣代碼會很長,而卻會多占很多內(nèi)存空間,于是我決定把個功能窗體中共同的組件在一個新方法中統(tǒng)一加載,為了減小占內(nèi)存空間,組建的在主類的構(gòu)造方法中生成,所有獨(dú)立功能窗口公用組件,這樣既減少了代碼額長度,又提高了程序的內(nèi)存利用率。還有很多問題,都在權(quán)衡之后得到了較優(yōu)的解決方法.它能夠使這次課設(shè)還讓我對java的跨平臺性有了進(jìn)一步認(rèn)識,當(dāng)我學(xué)好代碼興致勃勃的想把它做成exe可執(zhí)行文件時,在網(wǎng)上搜索之后發(fā)現(xiàn)它似乎很難實(shí)現(xiàn),就是應(yīng)為它的java語言的實(shí)現(xiàn)機(jī)制,通過jre來執(zhí)行執(zhí)行java代碼,而不是調(diào)用系統(tǒng)本地代碼.除此之外我還學(xué)到了新的編程技巧,比如對try,catch的運(yùn)用。剛學(xué)的時候就是照書本上的打,很不情愿但是必須打的代碼,在做課設(shè)時,我發(fā)現(xiàn)他又很神奇的功能可以幫助我解決用其他辦法不好解決的問題,比如關(guān)閉窗口。剛開始程序只有主窗口時,關(guān)閉很好實(shí)現(xiàn),但隨著程序功能的完善,需要關(guān)閉的窗口越來越多,需要關(guān)閉的類型也便多了,到了關(guān)閉Dialog的時候,發(fā)現(xiàn)Dialog不能強(qiáng)制轉(zhuǎn)化為Frame,如果想用前面的方法管還得把多處代碼進(jìn)行修改,不過我想到了用try來解決這個問題。參考文獻(xiàn)[1]李鐘尉,馬文強(qiáng),陳丹丹Java從入門到精通第1版清華大學(xué)出版社2008.9[2]劉萬軍,梁清華,王松波,宋強(qiáng)Java程序設(shè)計(jì)實(shí)踐教程第1版清華大學(xué)出版社2006.9
《數(shù)據(jù)庫原理與應(yīng)用》課程設(shè)計(jì)報告選題名稱:學(xué)生信息管理系統(tǒng)組長:李盟指導(dǎo)教師:湯嘉立設(shè)計(jì)日期:2016.06.13-—2016。06。24學(xué)號姓名小組評分教師評分2014144414李盟902014144415李玲902014144429徐蘭902014144431許媛媛90課程設(shè)計(jì)目的:數(shù)據(jù)庫是一門實(shí)踐性很強(qiáng)的課程,為了使學(xué)生加深對數(shù)據(jù)庫基本知識的理解,掌握數(shù)據(jù)庫設(shè)計(jì)和開發(fā)的基本方法,學(xué)生自選題目,要求學(xué)生完成一個完整的數(shù)據(jù)庫設(shè)計(jì)過程和基本的開發(fā)過程,從而培養(yǎng)學(xué)生在數(shù)據(jù)庫應(yīng)用領(lǐng)域中的分析問題和解決問題的能力。課程設(shè)計(jì)內(nèi)容:(1)數(shù)據(jù)庫設(shè)計(jì)教師講解數(shù)據(jù)庫的設(shè)計(jì)方法以及PowerDesigner的使用,學(xué)生自選題目,要求學(xué)生根據(jù)題目的需求描述,進(jìn)行實(shí)際調(diào)研,提出完整的需求分析報告、用PowerDesigner建立概念模型、邏輯模型、物理模型。在物理模型中根據(jù)需要添加必要的約束、視圖、觸發(fā)器和存儲過程等數(shù)據(jù)庫對象,最后生成創(chuàng)建數(shù)據(jù)庫的腳本,提出物理設(shè)計(jì)的文檔。要求學(xué)生提交的報告包含:需求說明書概念數(shù)據(jù)模型(E-R數(shù)據(jù)模型)邏輯數(shù)據(jù)模型(含關(guān)系規(guī)范化)物理數(shù)據(jù)模型(含約束、視圖、觸發(fā)器、存儲過程、安全設(shè)計(jì)、恢復(fù)方案、事務(wù)設(shè)計(jì)等等)創(chuàng)建數(shù)據(jù)庫的腳本(數(shù)據(jù)庫對象的定義語言)物理設(shè)計(jì)的文檔(數(shù)據(jù)庫的實(shí)施規(guī)劃)(2)數(shù)據(jù)庫開發(fā)在數(shù)據(jù)庫設(shè)計(jì)的基礎(chǔ)上開發(fā)一個基本的數(shù)據(jù)庫應(yīng)用系統(tǒng),要求有基本的數(shù)據(jù)查詢功能和數(shù)據(jù)管理功能,并能將存儲過程、觸發(fā)器、事務(wù)控制等運(yùn)用其中。開發(fā)工具可以自己選擇。課程設(shè)計(jì)要求:數(shù)據(jù)庫課程設(shè)計(jì)單獨(dú)設(shè)課,為2周獨(dú)立實(shí)踐環(huán)節(jié)(40學(xué)時),一般4人1組,指定1人為組長(也可申請獨(dú)立完成),但每人要承擔(dān)獨(dú)立的工作、獨(dú)立完成課程設(shè)計(jì)報告。通過以上過程,鍛煉學(xué)生從實(shí)際應(yīng)用出發(fā),進(jìn)行需求分析,利用PD工具建立數(shù)據(jù)庫模型、完善數(shù)據(jù)庫模型,到最后的數(shù)據(jù)庫實(shí)施和應(yīng)用系統(tǒng)開發(fā)。希望通過這個過程可以鞏固所學(xué)知識,提高學(xué)生的綜合分析問題和解決問題的能力。實(shí)驗(yàn)條件:硬件條件:PC機(jī)。軟件條件:(Elipse、SQLServer2008、PowerDesigner)實(shí)驗(yàn)方法與步驟:需求分析(一)目標(biāo)學(xué)生信息管理系統(tǒng)的目標(biāo)是方便學(xué)校教務(wù)處系統(tǒng)的管理學(xué)生的信息,并為學(xué)校和學(xué)生間提供一個信息共享的平臺.隨著學(xué)校的普及和人們文化水平的提高,高效的教學(xué)管理系統(tǒng)越來越廣泛應(yīng)用于各類信息化學(xué)校.學(xué)生信息管理系統(tǒng)要求實(shí)用性強(qiáng)、使用方便、效率高和安全可靠等特點(diǎn).用戶管理:用戶共分為管理員,教師和學(xué)生。學(xué)生和教師通過注冊建立賬戶,管理員由系統(tǒng)設(shè)定統(tǒng)一的用戶名和密碼.經(jīng)分析我們認(rèn)為學(xué)生學(xué)籍管理系統(tǒng)的具體要求為:1。能全面管理學(xué)校教學(xué)相關(guān)的各類主體,如用戶管理員,學(xué)生用戶以及選修課程表2。通過使用計(jì)算機(jī)能方便的維護(hù)(包括插入、刪除、修改)各信息表3.能方便的實(shí)現(xiàn)基于多個表的連接查詢4.系統(tǒng)具有操作方便、簡捷等特點(diǎn)(二)需求陳述學(xué)生對功能的需求分析:查詢個人基本信息查詢學(xué)生課程信息查詢學(xué)生成績信息管理員對功能的需求分析:
添加、刪除、修改、查詢學(xué)生信息
添加、刪除、修改、查詢課程信息
修改、查詢用戶信息
查詢選課信息
修改、查詢成績信息概念數(shù)據(jù)模型設(shè)計(jì)(A)局部E-R模型(B)整體E-R模型邏輯模型設(shè)計(jì)(A)將概念數(shù)據(jù)模型轉(zhuǎn)化成邏輯數(shù)據(jù)模型(B)對模型進(jìn)行必要的完善和優(yōu)化物理模型設(shè)計(jì)(A)將邏輯數(shù)據(jù)模型轉(zhuǎn)化成物理數(shù)據(jù)模型(B)對模型進(jìn)行必要的完善和優(yōu)化(C)根據(jù)需要設(shè)計(jì)視圖、存儲過程和觸發(fā)器等(D)描述安全管理方案、備份恢復(fù)策略、并發(fā)控制策略等系統(tǒng)實(shí)現(xiàn)描述數(shù)據(jù)庫實(shí)施的方法和過程,詳細(xì)文檔以附件1形式提交.個人工作報告除上一步驟要求的完整文檔外,每個人需陳述自己所承擔(dān)的工作、在討論中的個人見解,提供個人所承擔(dān)工作的有關(guān)文檔(可能是不完整的),并對個人的工作情況、收獲等進(jìn)行總結(jié)。承擔(dān)的工作及貢獻(xiàn)需求分析階段概念模型設(shè)計(jì)階段局部E—R模型:整體E—R模型:邏輯模型設(shè)計(jì)階段Student(sno,sn,sa,ss,sd)Course(cno,cn,pcno)Sc(sno,cno,g)Unpw(un,pw,qx)物理模型設(shè)計(jì)階段s(學(xué)生信息表)字段名稱數(shù)據(jù)類型描述snochar(10)學(xué)號,關(guān)鍵字snchar(20)姓名saint年齡sschar(10)性別sdchar(10)院系c(課程信息表)字段名稱數(shù)據(jù)類型描述cnochar(10)課程號,關(guān)鍵字cnchar(30)課程名pcnochar(10)先行課程號sc(選課信息表)字段名稱數(shù)據(jù)類型描述snochar(10)學(xué)號,關(guān)鍵字cnochar(10)課程號,關(guān)鍵字gint成績unpw(用戶信息表)字段名稱數(shù)據(jù)類型描述unchar(10)用戶名,關(guān)鍵字pwchar(10)密碼qxint角色1.視圖:s(學(xué)生信息表)c(課程信息表)sc(選課信息表)unpw(用戶信息表)實(shí)施和實(shí)現(xiàn)階段詳細(xì)見附件1。課程設(shè)計(jì)個人總結(jié)徐蘭:兩個星期的時間非??炀瓦^去了,這半個月我不敢說自己有多大的進(jìn)步,但是獲得了不少的知識,也了解了項(xiàng)目開發(fā)的部分過程。雖說上過數(shù)據(jù)庫相關(guān)的課程,有做過數(shù)據(jù)庫相關(guān)的實(shí)驗(yàn),但是沒有親身經(jīng)歷過相關(guān)的設(shè)計(jì)工作細(xì)節(jié).這次課程設(shè)計(jì)給我提供了一個很好的機(jī)會。通過這次課程設(shè)計(jì)發(fā)現(xiàn)這其中需要的很多知識我們沒有接觸過,上網(wǎng)查找資料的時候發(fā)現(xiàn)我們以前學(xué)到的僅僅是皮毛,還有很多需要我們掌握的東西我們根本不知道.同時也發(fā)現(xiàn)有狠毒已經(jīng)學(xué)過的東西我們沒有理解到位,不能靈活運(yùn)用于實(shí)際,不能很好的用來解決問題,這就需要自己不斷的大量的時間,通過不斷的自學(xué),不斷地發(fā)現(xiàn)問題,思考問題,進(jìn)而解決問題。這次的課程設(shè)計(jì)也是為我們以后的畢業(yè)設(shè)計(jì)作品提前打好基礎(chǔ)。在這次的課程設(shè)計(jì)中,我負(fù)責(zé)的是創(chuàng)建數(shù)據(jù)庫,這些就讓我用到了數(shù)據(jù)庫的很多知識,對SQL語言,數(shù)據(jù)庫的創(chuàng)建、修改、刪除有了更深的了解,并且更加熟練的掌握了數(shù)據(jù)庫中的SQL語句。我想我做的是組里面最簡單的工作,因?yàn)槲易龅氖怯谢A(chǔ)的,組長做的JAVA前臺就比較的累了,她還要先去學(xué)習(xí).在她做的時候我也學(xué)習(xí)了一下,為之后打個基礎(chǔ)。通過這次課程設(shè)計(jì)的完成,是我對自己所學(xué)知識進(jìn)一步的了解,同時通過實(shí)踐發(fā)現(xiàn)自己的不足,對知識的掌握及運(yùn)用存在諸多的不完善。所以在今后的學(xué)習(xí)中,我會繼續(xù)努力,完善自我,同學(xué)的幫助和學(xué)校的精心安排是這個課題能夠順利進(jìn)行。李玲:在本次課程設(shè)計(jì)中,我負(fù)責(zé)課程設(shè)計(jì)報告的整理與編寫,通過整理報告,我對于SQL,JAVA的編程方式以及他們之間的相互連接,基本運(yùn)用有了全方位的認(rèn)識,我的分析能力,獨(dú)立思考能力都得到了一定程度的提高。回顧起此課程設(shè)計(jì),至今我仍感慨頗多,從理論到實(shí)踐,在這段日子里,可以學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識.通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,但可喜的是最終都得到了解決。實(shí)驗(yàn)過程中,也對團(tuán)隊(duì)精神的進(jìn)行了考察,讓我們在合作起來更加默契,在成功后一起體會喜悅的心情。果然是團(tuán)結(jié)就是力量,只有互相之間默契融洽的配合才能換來最終完美的結(jié)果。讓我更加深切的體會到團(tuán)隊(duì)合作的重要性。許媛媛:這次的數(shù)據(jù)庫課程設(shè)計(jì),我主要是負(fù)責(zé)前期資料的收集,在設(shè)計(jì)期間及時提供相關(guān)的有利資料。兩個星期的時間非??炀瓦^去了,這兩個星期不敢說自己有多大的進(jìn)步,獲得了多少知識,但起碼是了解了系統(tǒng)開發(fā)的過程。兩周課程設(shè)計(jì)讓我對java語言等編程技術(shù)產(chǎn)生了濃厚的興趣,更重要的是增強(qiáng)了我學(xué)習(xí)的自信心。剛開始我們查找資料、了解有關(guān)的知識,相互探討,了解學(xué)生信息管理系統(tǒng)的需求,做好需求分析后,開始系統(tǒng)的設(shè)計(jì),畫出E-R圖,寫出各個實(shí)體的屬性。在我搜集資料的過程中,發(fā)現(xiàn)這其中需要的很多知識是我們之前沒有接觸過的,去圖書館查資料的時候發(fā)現(xiàn)我們前邊所學(xué)到的僅僅是皮毛,還有很多需要我們掌握的東西我們根本不知道。同時也發(fā)現(xiàn)有很多已經(jīng)學(xué)過的東西我們沒有理解到位,不能靈活運(yùn)用于實(shí)際,不能很好的用來解決問題,這就需要我們不斷的大量的實(shí)踐,通過不斷的自學(xué),不斷地發(fā)現(xiàn)問題,思考問題,進(jìn)而解決問題。在這個過程中我們將深刻理解所學(xué)知識,同時也可以學(xué)到不少很實(shí)用的東西。這次的系統(tǒng)設(shè)計(jì)不僅使我們學(xué)會了把數(shù)據(jù)庫的各個模塊聯(lián)系起來,并與java相連接,更讓我懂得了如何設(shè)計(jì)一個系統(tǒng),了解了系統(tǒng)設(shè)計(jì)的過程。李盟:在本次課程設(shè)計(jì)中,本組課程選題名稱為“學(xué)生信息管理系統(tǒng)”,由于我擔(dān)任的是組長,因此我不僅負(fù)責(zé)自己的部分,還負(fù)責(zé)課題布置與集中交流.我在本小組中的主要任務(wù)是java程序的編寫及修改。在課程設(shè)計(jì)初期,我們小組首先確定的課題題目,在細(xì)致地討論了系統(tǒng)的需求,列出了相應(yīng)的模塊,并進(jìn)行了結(jié)構(gòu)化設(shè)計(jì).然后我再根據(jù)我們的初步研究結(jié)果,確定我的編程方向,開始我的任務(wù)。我通過借閱相關(guān)書籍,上網(wǎng)查閱資料等方式,完成了我的系統(tǒng)編程初稿.但在系統(tǒng)測試階段,出現(xiàn)了很多的問題和錯誤。比如數(shù)據(jù)庫文件的導(dǎo)入路徑出錯,導(dǎo)致數(shù)據(jù)庫連接錯誤;通過老師的指導(dǎo),幸而解決了此問題.通過這次課程設(shè)計(jì),我不僅清楚地知道了自己在數(shù)據(jù)庫原理知識和編程語言方面的不足,還認(rèn)識到了在合作過程中,個人的力量總是不足的,需要大家一起協(xié)作.我們真切地體驗(yàn)了軟件項(xiàng)目管理技能和方法,熟悉了軟件工具與環(huán)境,把課堂學(xué)習(xí)的理論知識很好的在實(shí)踐中運(yùn)用了起來。我們小組成員之間合作默契,奮斗雖是艱苦的,但收獲是快樂的。我們相信,在大家的不懈努力之下目標(biāo)一定可以達(dá)成,我們也將在學(xué)習(xí)數(shù)據(jù)庫及其他網(wǎng)絡(luò)編程語言的道路上更加進(jìn)步??偨Y(jié)(組長完成):小組分工情況說明及工作量(工作量以百分比表示)李盟:前臺頁面設(shè)計(jì)31%李玲:報告整理23%徐蘭:后臺SQL建表23%許媛媛:收集資料23%小組工作總結(jié)課程設(shè)計(jì)誠然是一門專業(yè)課,給我們很多專業(yè)知識以及專業(yè)技能上的提升,同時又是一門講道課,一門辯思課,給了我們許多道,給了我們很多思,給了我們莫大的空間。同時,設(shè)計(jì)讓我們感觸很深。使我們對抽象的理論有了具體的認(rèn)識.在經(jīng)歷了將近兩個星期的課程設(shè)計(jì)過程后,本系統(tǒng)基本能夠完成學(xué)生學(xué)籍信息和學(xué)生的成績的查詢、插入、刪除、修改等。這次的課程設(shè)計(jì)是分組討論和制作的.我們小組從了解課題、理解課題、查找資料、確定思路到設(shè)計(jì)實(shí)施,學(xué)生信息管理系統(tǒng)初步形成。我們能從中深刻的感受到自己又收獲了很多東西.首先,更進(jìn)一步的了解了數(shù)據(jù)庫的基本操作,在這之前,數(shù)據(jù)庫的學(xué)習(xí)僅僅剛開了個頭,我們只是在了解一些概念性的東西。在做這個系統(tǒng)之前,連基本的連接數(shù)據(jù)庫,配文件DSN,數(shù)據(jù)庫查詢語句等這些東西都不熟練.現(xiàn)在對于數(shù)據(jù)庫的增刪改查操作比較熟練了,對于初學(xué)者來說,比較頭疼的就是對于單引號的處理。我的建議是如果不理解先把按照課本上正確的語句敲,然后在多次進(jìn)行數(shù)據(jù)庫的鏈接,增刪改查操作中不斷總結(jié)規(guī)律.這次設(shè)計(jì)的學(xué)生信息管理系統(tǒng),完全體現(xiàn)了自己在數(shù)據(jù)庫語言和程序設(shè)計(jì)課程學(xué)習(xí)狀況,充分地為自己以后更深入了數(shù)據(jù)庫語言奠下深厚的基礎(chǔ)。縱觀此學(xué)生信息管理系統(tǒng)的整體概況,目前,自我認(rèn)為設(shè)計(jì)良好,相關(guān)功能都能夠?qū)崿F(xiàn),功能強(qiáng)大,條理清晰,界面可觀性比較好。并且特色在于,所設(shè)計(jì)的表單都在一個表單系統(tǒng)桌面中運(yùn)行,比較符合系統(tǒng)的觀念.通過本次實(shí)踐,我們學(xué)習(xí)了許多數(shù)據(jù)庫的知識以及它與JAVA的連接,而且學(xué)到了書本上學(xué)不到的東西,積累了一點(diǎn)經(jīng)驗(yàn)和教訓(xùn),有了些體會.1、必須詳細(xì)準(zhǔn)確的做好需求分析.2、軟件工程原理和方法是軟件開發(fā)得以順利進(jìn)行的保障,一定要遵守,否則既費(fèi)時又費(fèi)力.3、通過本次課程設(shè)計(jì),端正了我們的學(xué)習(xí)態(tài)度,提高了實(shí)踐能力。使我認(rèn)識到應(yīng)該以嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度勇于去實(shí)踐和探索。這次課程設(shè)計(jì)既是一個學(xué)習(xí)的過程,也是一個實(shí)踐的過程,它使我們獲得了一些開發(fā)大型數(shù)據(jù)庫系統(tǒng)的經(jīng)驗(yàn).還有就是由于我們對數(shù)據(jù)庫知識的掌握有限和不牢固,角色和視圖的創(chuàng)建沒有想象中的完美,備份和還原也只是初步的形成,以致學(xué)生學(xué)籍管理系統(tǒng)只是達(dá)到了基本要求,有待進(jìn)一步改善,希望老師給予批評.小組自評學(xué)號:2014144414姓名:李萌成績:90學(xué)號:2014144415姓名:李玲成績:90學(xué)號:2014144429姓名:徐蘭成績:90學(xué)號:2014144431姓名:許媛媛成績:90源程序、代碼、具體語句等,若表格空間不足時可作為附錄另外附頁。附件1系統(tǒng)實(shí)施登錄界面圖片:代碼:packageli;importjavax.swing。*;importjava.awt。*;importjava。awt.event.*;importjava。sql。*;classDLFrameextendsJFrameimplementsActionListener,ItemListener{//登錄界面?JPanelp1=null; JPanelp2=null; JPanelp3=null;?JLabeluserName=newJLabel("用戶:”);?JTextFieldtxtUser=newJTextField(); JLabelpassword=newJLabel(”密碼:"); JPasswordFieldtxtPwd=newJPasswordField(6); JLabelrole=newJLabel(”角色:”);?JComboBoxcbrole=newJComboBox();?JButtonbtnLogin=newJButton("登錄");?JButtonbtncz=newJButton("重置"); JButtonbtnCancel=newJButton("取消"); JLabelimageLabel;?Iconimage; staticintOK=1;?staticintCANCEL=0; intactionCode=0; Connectioncon=null;?Statementstmt=null; ResultSetrs=null; intqxian=0;?publicDLFrame(){//構(gòu)造方法 super("登錄界面”); p1=newJPanel();? p2=newJPanel();? p3=newJPanel();? cbrole。addItem("管理員"); cbrole.addItem("學(xué)生"); image=newImageIcon("Tulips。jpg”);??imageLabel=newJLabel(image);??p1.a(chǎn)dd(imageLabel); this.setLayout(newFlowLayout()); ?this.setBounds(100,100,246,345); ?p2.setLayout(newGridLayout(4,2));? p2。add(userName); ?p2.add(txtUser); ?p2.a(chǎn)dd(password);??p2.add(txtPwd);??p2.add(role); p2。add(cbrole);? p3.add(btnLogin);? p3.add(btncz);??p3。add(btnCancel); this.a(chǎn)dd(p1);? this.add(p2);? this。add(p3);??this。setResizable(false);? this。setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);??this.show(); btnLogin。addActionListener(this); cbrole。addItemListener(this); btncz.a(chǎn)ddActionListener(this);??btnCancel.addActionListener(this); } publicvoidconnDB(){//連接數(shù)據(jù)庫??try{ ?Class.forName("com.microsoft.sqlserver.jdbc。SQLServerDriver"); }catch(ClassNotFoundExceptione){ ??e.printStackTrace();? }? try{?con=DriverManager.getConnection(? ? ?”jdbc:sqlserver://localhost:1433;DatabaseName=student",? ??"sa”,"123");?? stmt=con.creat(yī)eStatement(); ?}catch(SQLExceptione){ e。printStackTrace();? }?} publicvoidcloseDB()//關(guān)閉連接 { try{? stmt.close(); con。close();??}cat(yī)ch(SQLExceptione){ ??e。printStackTrace();??} }?publicvoiditemStat(yī)eChanged(ItemEvente){? if(e.getStat(yī)eChange()==ItemEvent。SELECTED){???JComboBoxjcb=(JComboBox)e.getSource(); ? qxian=jcb.getSelectedIndex(); ?} }?publicvoidactionPerformed(ActionEvente){? Objectsource=e.getSource(); ?Stringun=null; Stringpw=null; ?booleansuccess=false;//用于判斷是否登錄成功??if(source==btnLogin){?? if(txtUser。getText().equals("")||txtPwd。getText()。equals("")){//判斷是否輸入了用戶名和密碼? ?JOptionPane.showMessageDialog(null,"登錄名和密碼不能為空!");?? }else{?? ?this。connDB(); ? ?try{ ??rs=stmt。executeQuery("select*fromunpwwhereqx=”+qxian); ? while(rs。next()){ ? ? un=rs.getString("un")。trim();?? ?pw=rs.getString("pw”).trim(); ?? ? if(txtUser。getText().equals(un)){??? ? ?if(txtPwd.getText().equals(pw)){? ?? ? ?actionCode=OK; ?? ? ? this。setVisible(false);?? ? ??if(qxian==0){newManagerFrane();//進(jìn)入管理員界面 ? ?}??? ??if(qxian==1){ ??? ?? newStudentFrame();//進(jìn)入學(xué)生界面? ? ?? } ? ?? ? success=true;? ? break;???? ??}else{??? ? ?JOptionPane。showMessageDialog(null,"密碼錯誤!");? ?? ? txtPwd.setText(”"); ??success=true; }?? ?} ??? } ??? if(!success){ ?? JOptionPane。showMessageDialog(null,”登錄名錯誤!"); ? ??txtUser.setText(”"); ????txtPwd。setText(”"); ?? }?? ?}cat(yī)ch(SQLExceptione1){? ? ?e1。printStackTrace();? }? } }elseif(source==btncz){ txtUser。setText(””);? ?txtPwd.setText(”");? }elseif(source==btnCancel){ ??System.exit(0);??}?} publicstaticvoidmain(String[]args)?{ ?JPanelmainp=newJPanel();? DLFramestudent=newDLFrame(); }}管理員界面圖片:代碼:packageli;importjava.awt。*;importjava.awt。event.*;importjavax.swing。*;classManagerFraneextendsJFrameimplementsActionListener{//管理員界面 JPanelp1=newJPanel(); JPanelp2=newJPanel();?JButtonbtns=newJButton(”學(xué)生信息管理”); JButtonbtnc=newJButton("課程信息管理");?JButtonbtnsc=newJButton("選課信息管理");?JButtonbtng=newJButton(”成績信息管理");?JButtonbtnu=newJButton(”用戶信息管理");?JButtonbtnClose=newJButton("退出管理系統(tǒng)”);?JLabell=newJLabel("管理員”);?ManagerFrane(){//構(gòu)造方法 super("學(xué)生信息管理系統(tǒng)”);? setSize(350,200); add(”North",p1);? add("Center”,p2); p1.a(chǎn)dd(l); p2.add(btns);??p2。add(btnc); p2.add(btnsc);??p2.add(btng);??p2.add(btnu);??p2.add(btnClose); btns。addActionListener(this);? btnc.a(chǎn)ddActionListener(this);? btnsc。addActionListener(this);? btng.addActionListener(this);? btnu。addActionListener(this);??btnClose.addActionListener(this);? this.setResizable(false); this。setDefaultCloseOperation(JFrame。EXIT_ON_CLOSE);? show(); } publicvoidactionPerformed(ActionEvente){if(e.getActionCommand()=="學(xué)生信息管理")???newSM().display(); if(e.getActionCommand()=="課程信息管理”){???newCM("課程信息管理")。display(); } if(e。getActionCommand()=="選課信息管理”){ ? newSCM("選課信息管理")。display(); }??if(e。getActionCommand()==”成績信息管理"){? ?newGM("成績信息管理”).display();? } if(e。getActionCommand()==”用戶信息管理"){? ?newPM(”用戶信息管理”)。display();??}? if(e。getActionCommand()=="退出管理系統(tǒng)”){ System.exit(0); }?}}學(xué)生信息管理代碼:classSMextendsJFrameimplementsActionListener{//學(xué)生信息管理?JPanelp=newJPanel();?JButtonbtnAdd=newJButton("增加");?JButtonbtnDelete=newJButton("刪除"); JButtonbtnAlter=newJButton("修改");?JButtonbtnSearch=newJButton("查詢”);?JButtonbtnDisplay=newJButton("顯示”); JMenuBarmb=newJMenuBar();?JPanelp1=newJPanel();;?JTablesTable; JScrollPanescroll; Connectioncon=null; Statementstmt=null; ResultSetrs=null;?Object[][]playerInfo;?SSelectsst;?Stringmxh=null;?booleanbstd=false; SM(){//構(gòu)造方法? super("學(xué)生信息管理"); ?add("South",p);??this.add("Center",p1);??mb。add(btnAdd);? mb.add(btnDelete); ?mb.a(chǎn)dd(btnA(yù)lter);? mb.a(chǎn)dd(btnSearch);? mb。add(btnDisplay); SM(SSelectsst){//構(gòu)造方法 super(”學(xué)生信息管理");? this.sst=sst; ?bstd=true;??add(”South”,p);??this.add(”Center",p1); ?mb。add(btnAdd);??mb。add(btnDelete);??mb。add(btnAlter); ?mb。add(btnSearch); ?mb.add(btnDisplay); ?this。connDB();? this.setBounds(200,200,400,260); ?btnAdd。addActionListener(this); ?btnDelete。addActionListener(this);? btnAlter。addActionListener(this);? btnSearch。addActionListener(this);? btnDisplay.a(chǎn)ddActionListener(this);? this。setJMenuBar(mb);? //this。setDefaultCloseOperat(yī)ion(JFrame.EXIT_ON_CLOSE);? this。setResizable(false); ?show();?}publicvoiddisplay(){//顯示所有學(xué)生的基本信息 ?inti=0;??intj=0;??intk=0; Listal=newArrayList(); try{ ? rs=stmt.executeQuery("select*froms");? while(rs。next()){//找出表中的記錄數(shù)賦給i? ? al。add(rs.getString("sno”));? ??al。add(rs.getString("sn")); ?? al。add(rs.getString("ss")); ? al.add(rs.getInt(”sa")); al.add(rs.getString(”sd”));? i++; ?}??}catch(SQLExceptione){???e。printStackTrace();??}? playerInfo=newObject[i][5];??String[]columnNames={"學(xué)號”,”姓名",”年齡”,"性別",”院系"}; ?try{ rs=stmt.executeQuery(”select*fromsorderbysno"); ? while(rs。next()){?? playerInfo[j][0]=rs.getString("sno"); ?playerInfo[j][1]=rs.getString("sn");? ??playerInfo[j][2]=rs。getInt(”sa”); ? ?playerInfo[j][3]=rs.getString("ss");?? playerInfo[j][4]=rs.getString(”sd"); ? j++;? } }catch(SQLExceptione){???e.printStackTrace();??}? sTable=newJTable(playerInfo,columnNames);//創(chuàng)建網(wǎng)格 p1。add(sTable);??scroll=newJScrollPane(sTable); this。add(scroll); }?publicvoiddelete(){//刪除某個學(xué)生的基本信息??Stringxh=null; Stringxm=null; ?intnl=0; Stringxb=null;??Stringyx=null; introw=-1;? row=sTable。getSelectedRow();??if(row==-1){//判斷要刪除的信息是否被選中???JOptionPane。showMessageDialog(null,"請選擇要刪除的記錄!");? }else{? if(!bstd){//判斷選擇的是不是查詢后的結(jié)果? intj1=0; ?try{?? ??rs=stmt。executeQuery(”select*froms”); ?? while(rs。next()&&j1<=row){//找出當(dāng)前被選中的記錄在數(shù)據(jù)庫中的對應(yīng) ? ?xh=rs。getString("sno"); ??xm=rs.getString("sn"); ??nl=rs。getInt(”sa”);?? ?? xb=rs.getString("ss”); ? ?yx=rs.getString(”sd”);?? ? ?j1++; ? ?}??? }catch(SQLExceptione){??? e。printStackTrace(); ? } ??inti1=0;? ??try{ ?intrs1=stmt。executeUpdate("deletefromswheresno=’”+xh+"’");//刪除數(shù)據(jù)庫中當(dāng)前被選中的記錄? ?? stmt.executeUpdate("deletefromunpwwhereun='”+xh+"'”);//刪除對應(yīng)的用戶表中的記錄 ??? JOptionPane。showMessageDialog(null,"記錄刪除成功!");? ??this。dispose();??? newSM()。display(); ???}catch(SQLExceptione){? e.printStackTrace(); ??} }else{?? try{ ? ? intrs1=stmt。executeUpdate("deletefromswheresno='" ? ??+mxh+”'");??? ?stmt.executeUpdate("deletefromunpwwhereun=’"+mxh? ? ?+”'"); ? ?JOptionPane.showMessageDialog(null,”記錄刪除成功!”); this。dispose();? ? ?newSM().display();? }catch(SQLExceptione){ ????e.printStackTrace(); } ?} ?}?} publicvoidupdat(yī)e(){//修改某個學(xué)生的基本信息??Stringxh=null;??Stringxm=null; intnl=0;??Stringxb=null; Stringyx=null;??introw=—1; ?row=sTable.getSelectedRow(); ?if(row==-1){?? JOptionPane.showMessageDialog(null,”請選擇要修改的記錄!”); ?}else{? ?intj1=0;???try{? ??if(!bstd){//判斷選擇的是不是查詢后的結(jié)果 ? rs=stmt.executeQuery("select*froms");? ? }else{ ????rs=stmt.executeQuery("select*fromswheresno='"+mxh ? ??+"’");? ? }? while(rs.next()&&j1〈=row){//找出當(dāng)前被選中的記錄在數(shù)據(jù)庫中的對應(yīng) ??xh=rs.getString("sno"); ? xm=rs.getString("sn"); ?nl=rs.getInt("sa”); ??xb=rs.getString("ss"); ?? ?yx=rs。getString("sd”);? ?j1++; ?}? ?}catch(SQLExceptione){?? e.printStackTrace(); ?}?? SAddsadd=newSAdd(xb,yx);?? sadd.setTitle(”修改"); ??sadd。tsno.setText(xh); sadd.tsname.setText(xm); ?sadd.tsage.setText(”"+nl);?? sadd.tsno.setEnabled(fa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 會場設(shè)備租賃合同范本
- 醫(yī)美針劑合同范本
- 創(chuàng)業(yè)課題申報書怎么寫好
- 廠房帶看合同范例
- 午休托管班合同范本
- 廠房排氣安裝合同范本
- 代加工燈具合同范本
- 包辦入學(xué)合同范本
- 單位委托印刷合同范本
- 推動農(nóng)村充電基礎(chǔ)設(shè)施發(fā)展計(jì)劃
- 2025年中考英語復(fù)習(xí)熱點(diǎn)話題作文范文
- 二手房傭金協(xié)議
- CJT264-2007 水處理用橡膠膜微孔曝氣器
- 《配電線路旁路作業(yè)工具裝備 第1部分 柔性電纜及連接器》
- 富血小板血漿(PRP)簡介
- 住院患者導(dǎo)管滑脫風(fēng)險評估表
- 幼兒園大班音樂教案《我們多快樂》
- 《草船借箭》課本劇劇本-4篇
- 2024年山東服裝職業(yè)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 團(tuán)播主持人協(xié)議
- 《工傷預(yù)防知識教育》課件
評論
0/150
提交評論