版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第第頁學(xué)號:課程設(shè)計題目學(xué)生信息管理系統(tǒng)學(xué)院計算機(jī)科學(xué)與信息工程學(xué)院專業(yè)金融信息化服務(wù)外包班級學(xué)生姓名指導(dǎo)教師2015年12月28日課程設(shè)計任務(wù)書學(xué)生姓名:專業(yè)班級:指導(dǎo)教師:工作單位:題目:學(xué)生信息管理系統(tǒng)已知技術(shù)參數(shù)和設(shè)計要求:時間要求為14周~18周。開發(fā)工具java。開發(fā)平臺JCreator4.50Pro。所用文本Txt。說明文檔要求符合學(xué)校課程設(shè)計文檔規(guī)范。要求完成的主要任務(wù):(包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)設(shè)計一個學(xué)生信息管理系統(tǒng),應(yīng)用軟件的開發(fā)環(huán)境的簡要說明,需求分析,數(shù)據(jù)設(shè)計,功能設(shè)計,程序的主要界面、代碼實現(xiàn),設(shè)計結(jié)果的總結(jié),附錄或參考資料登錄、查詢、增加、刪除、修改本系統(tǒng)中的各個表信息時間安排:1、需求分析,聯(lián)系實際,歷時2天。2、各種設(shè)計簡要說明需求分析,數(shù)據(jù)設(shè)計,功能設(shè)計,歷時4天。3、編碼,使用Java語言在JCreator4.50Pro集成開發(fā)環(huán)境中實現(xiàn)本系統(tǒng)的添加、刪除、查詢、讀取txt文檔,歷時4天。4、界面設(shè)計與軟件測試。使用可視化界面設(shè)計,完成系統(tǒng)各界面功能的設(shè)計與實現(xiàn)。完成本系統(tǒng)的初步測試與試運(yùn)行,歷時5天。5、java課程設(shè)計文檔的最后檢查與修訂,歷時1天指導(dǎo)教師簽名:年月日目錄一.應(yīng)用軟件的開發(fā)環(huán)境的簡要說明 6(一)開發(fā)環(huán)境: 6(二)運(yùn)行環(huán)境: 6二.需求分析 6(一)系統(tǒng)目標(biāo) 6(二)系統(tǒng)功能分析 61.功能需求: 62.非功能約束需求: 73.數(shù)據(jù)需求: 74.系統(tǒng)需求 7三.?dāng)?shù)據(jù)設(shè)計 7(一)數(shù)據(jù)流圖 7(二)數(shù)據(jù)字典 8數(shù)據(jù)項 8數(shù)據(jù)結(jié)構(gòu) 9數(shù)據(jù)流 9數(shù)據(jù)存儲 9處理過程 10四.功能設(shè)計 11(一)本系統(tǒng)的主要功能 11(二)Java源文件及其功能 11(三)詳細(xì)設(shè)計 121.主類StudentManager 122.類Add 123.類Cha 134.類Shan 13(四)結(jié)構(gòu)圖及流程圖 151.學(xué)生信息系統(tǒng)結(jié)構(gòu)圖 152.添加學(xué)生信息 163.刪除學(xué)生信息 164.修改學(xué)生信息 175.查詢學(xué)生信息 186.登錄 18五.程序的主要界面、代碼實現(xiàn) 19(一)登錄界面 19(二)主界面 21(三)添加學(xué)生信息界面 25(四)刪除學(xué)生信息界面 30(五)修改學(xué)生信息界面 33(六)查詢學(xué)生信息界面 38六.設(shè)計結(jié)果的總結(jié) 41七.附錄或參考資料 41一.應(yīng)用軟件的開發(fā)環(huán)境的簡要說明(一)開發(fā)環(huán)境:開發(fā)環(huán)境的選擇會影響到j(luò)ava的設(shè)計,所以在這里給出學(xué)生信息管理系統(tǒng)的開發(fā)與運(yùn)行環(huán)境如下:開發(fā)環(huán)境:WindowsXP開發(fā)工具:JCreator4.50Pro文本文件管理系統(tǒng):txt(二)運(yùn)行環(huán)境:為了保證系統(tǒng)運(yùn)行的效率和可靠性。其運(yùn)行要求如下:運(yùn)行環(huán)境:JCreator4.50Pro以上客戶端:Windows98/NT/XP等硬件環(huán)境:服務(wù)器CPU:PIII500以上,內(nèi)存:256M以上客戶機(jī)CPU:P200MMX以上,內(nèi)存:32M以上二.需求分析(一)系統(tǒng)目標(biāo)本系統(tǒng)的用戶主要不是學(xué)生。通過一個學(xué)生信息管理系統(tǒng),使學(xué)生的信息管理工作系統(tǒng)化、規(guī)范化、自動化,從而達(dá)到提高管理效率的目的。(二)系統(tǒng)功能分析1.功能需求:(1)驗證用戶輸入的登錄信息。用戶只有輸入正確的登錄信息后,才能進(jìn)入信息管理系統(tǒng)。(2)查詢學(xué)生信息功能。選擇該功能后,可以查詢學(xué)生基本信息。(3)添加學(xué)生信息功能。選擇該功能后,可以添加學(xué)生的學(xué)生基本信息。(4)修改學(xué)生信息功能。選擇該功能后,可以修改學(xué)生的學(xué)生基本信息。(5)刪除學(xué)生信息功能。選擇該功能后,可以刪除學(xué)生的學(xué)生基本信息。(6)退出。可以退出本信息管理系統(tǒng)。2.非功能約束需求:(1)安全性:權(quán)限管理,身份檢驗。(2)可靠性:基本能夠運(yùn)行,不會系統(tǒng)崩潰。(3)時間響應(yīng)速度:查詢,更新。3.數(shù)據(jù)需求:(1)學(xué)生信息的添加和刪除都需要管理人員來執(zhí)行。(2)輸入學(xué)生信息時,要求學(xué)生信息完整。(3)登錄時要求輸入用戶名和匹配的密碼。4.系統(tǒng)需求(1)本系統(tǒng)只有輸入正確的用戶名和密碼,才能進(jìn)入系統(tǒng)。(2)但凡進(jìn)入系統(tǒng)的人,都可以執(zhí)行各種操作。三.?dāng)?shù)據(jù)設(shè)計(一)數(shù)據(jù)流圖圖2.1學(xué)生信息管理系統(tǒng)的頂層數(shù)據(jù)流圖根據(jù)基本系統(tǒng)模型,對其逐步細(xì)化,得到描述邏輯系統(tǒng)細(xì)化后的數(shù)據(jù)流圖,如圖2.2所示。圖2.2學(xué)生信息管理系統(tǒng)的0層數(shù)據(jù)流圖(二)數(shù)據(jù)字典數(shù)據(jù)項有了系統(tǒng)的數(shù)據(jù)流圖后,還有相當(dāng)多的數(shù)據(jù)信息如學(xué)生具體信息需要進(jìn)一步描述,這就是需要定義數(shù)據(jù)字典,才能把現(xiàn)有的系統(tǒng)描述清楚。圖2.3列出了系統(tǒng)的主要數(shù)據(jù)字1.數(shù)據(jù)項:學(xué)號含義說明:唯一識別學(xué)生的號碼別名:學(xué)生證號類型:字符型長度:10取值范圍:0000000000—9999999999取值含義:前四位表示班級號、中間四位表示專業(yè)代碼、后兩位表示學(xué)生編號與其他數(shù)據(jù)項的邏輯關(guān)系:標(biāo)識項2.數(shù)據(jù)項:姓名含義說明:學(xué)生的名稱類型:字符型長度:10取值范圍:所有漢字3.數(shù)據(jù)項:性別含義說明:識別學(xué)生性別 類型:字符型長度:2取值范圍:男、女4.數(shù)據(jù)項:專業(yè)含義說明:表示該生所學(xué)的專業(yè)類型:字符型長度:305.數(shù)據(jù)項:年級含義說明:該表該生所在的年級類型:字符型長度:206.數(shù)據(jù)項:出生含義說明:該表該生出生年月類型:字符型長度:4取值范圍:無(eg:1994.03.24)7.數(shù)據(jù)項:用戶含義說明:是否有登錄的權(quán)限類型:字符型長度:10數(shù)據(jù)結(jié)構(gòu)1.數(shù)據(jù)結(jié)構(gòu):學(xué)生含義說明:是學(xué)生信息管理系統(tǒng)的主要數(shù)據(jù),定義了一個學(xué)生的有關(guān)信息組成:姓名、學(xué)號、性別、專業(yè)、年級、出生2.數(shù)據(jù)結(jié)構(gòu):用戶含義說明:是學(xué)生信息管理系統(tǒng)的數(shù)據(jù),定義了有關(guān)用戶的信息組成:用戶名、密碼數(shù)據(jù)流1.數(shù)據(jù)流:登錄信息說明:用戶用來登錄學(xué)籍系統(tǒng)的用戶學(xué)生信息數(shù)據(jù)流來源:用戶數(shù)據(jù)流去向:用戶信息認(rèn)證組成:用戶名2.數(shù)據(jù)流:學(xué)生信息查詢結(jié)果說明:用戶查看學(xué)生信息后得到的結(jié)果數(shù)據(jù)流來源:查詢學(xué)生信息數(shù)據(jù)流去向:用戶組成:姓名、學(xué)號、性別、專業(yè)、年級、出生數(shù)據(jù)存儲1.數(shù)據(jù)存儲:學(xué)生信息數(shù)據(jù)說明:記錄所有學(xué)生的學(xué)生信息資料庫流入數(shù)據(jù)流:相關(guān)人員輸入流出數(shù)據(jù)流:學(xué)生查詢學(xué)生信息數(shù)據(jù)量:由信息詳細(xì)情況而定存取方式:隨機(jī)存取5.數(shù)據(jù)存儲:用戶登錄信息數(shù)據(jù)說明:用戶的登錄信息流入數(shù)據(jù)流:管理員輸入或用戶輸入流出數(shù)據(jù)流:驗證用戶信息數(shù)據(jù)量:由用戶登錄多少決定存取方式:隨機(jī)存取處理過程1.處理過程:查詢學(xué)生信息說明:用戶獲得所查學(xué)生信息輸入:選擇查詢學(xué)生信息功能輸出:查詢結(jié)果處理:用戶進(jìn)入系統(tǒng)后,選擇查詢學(xué)生信息功能,獲得相應(yīng)信息2.處理過程:添加學(xué)生信息說明:用戶添加學(xué)生信息輸入:選擇添加學(xué)生信息功能輸出:添加成功處理:用戶進(jìn)入系統(tǒng)后,選擇添加學(xué)生信息功能3.處理過程:刪除所查學(xué)生信息說明:用戶刪除學(xué)生信息輸入:選擇刪除學(xué)生信息功能輸出:刪除結(jié)果處理:用戶進(jìn)入系統(tǒng)后,選擇刪除學(xué)生信息功能4.處理過程:修改學(xué)生信息說明:學(xué)生修改學(xué)生信息輸入:選擇修改學(xué)生信息功能輸出:修改結(jié)果處理:用戶進(jìn)入系統(tǒng)后,選擇修改學(xué)生信息功能學(xué)生基本信息表(Student)數(shù)據(jù)類型特殊屬性描述String不為空姓名String不為空學(xué)號String不為空性別String不為空專業(yè)String不為空年級String不為空出生表3.1學(xué)生信息基本表四.功能設(shè)計(一)本系統(tǒng)的主要功能運(yùn)行該系統(tǒng)成功后,會出現(xiàn)一個登錄的界面,輸入正確的用戶名后,會出現(xiàn)一個主界面,上面有5個子菜單分別是添加、修改、查詢、刪除和退出。點擊它們會出現(xiàn)不同的界面,分別有不同的功能:1.StudentMessage.java該類負(fù)責(zé)創(chuàng)建學(xué)生信息管理系統(tǒng)的主窗口,該類還有main方法,程序從該類開始執(zhí)行。2.Add.java該類創(chuàng)建的對象是StudentManager類的重要成員之一,負(fù)責(zé)提供添加學(xué)生基本信息的界面。3.Xiu.java該類創(chuàng)建的對象是StudentManager類的重要成員之一,負(fù)責(zé)提供查詢和修改學(xué)生基本信息的界面。4.Shan.java該類創(chuàng)建的對象是StudentManager類的重要成員之一,負(fù)責(zé)提供刪除學(xué)生基本信息的界面。5.Cha.java創(chuàng)建的對象是StudentManager類的重要成員之一,該類負(fù)責(zé)提供查詢學(xué)生基本信息的界面。6.Login1.java該類創(chuàng)建的對象是StudentManager類的重要成員之一,該類負(fù)責(zé)用戶登錄時的檢驗。本系統(tǒng)是基于數(shù)據(jù)庫的學(xué)生信息管理系統(tǒng),實現(xiàn)了連接數(shù)據(jù)庫,錄入、修改、查詢、刪除學(xué)生信息的功能。(二)Java源文件及其功能1.admin.txt該文件為登錄提供登錄的用戶名,Login1調(diào)用該文件。2.student.txt該文件為添加、修改、查詢、刪除操作提供學(xué)生信息,Add,Shan,Cha和Xiu調(diào)用該文件。(三)詳細(xì)設(shè)計1.主類StudentManager成員變量描述變量類型名稱按鈕JButtonb1(添加)按鈕JButtonb2(刪除)按鈕JButtonb3(修改)按鈕JButtonb4(查詢)按鈕JButtonb5(退出)面板容器JPanelJp表4.1主要成員變量(屬性)方法名稱返回類型功能備注Studentmessage無類型創(chuàng)建窗口構(gòu)造方法main無類型執(zhí)行程序程序的主函數(shù)表4.2主要方法2.類Add成員變量描述變量類型名稱ArrayListArrayLista單行文本JTextField學(xué)號、姓名、專業(yè)、年級、出生、性別標(biāo)題JLable學(xué)號、姓名、專業(yè)、年級……面板容器JPanelJp按鈕JButton確定、清空、返回表4.3主要成員變量(屬性)方法名稱返回類型功能備注Add無類型創(chuàng)建添加學(xué)生信息界面構(gòu)造方法表4.4主要方法3.類Cha成員變量描述變量類型名稱ArrayList對象類型ArrayLista面板容器JPanelJp按鈕JButton確定、清空、返回標(biāo)題JLable請輸入內(nèi)容:單行文本JTextFieldNULL多行文本框JTextAreaNULL滾動條JScrollPaneNULL表4.5主要成員變量(屬性)方法名稱返回類型功能備注Cha無類型創(chuàng)建查找學(xué)生信息界面構(gòu)造方法readDate無類型讀取studen.txt中的數(shù)據(jù)無Js無類型執(zhí)行查找無表4.6主要方法4.類Shan成員變量描述變量類型名稱ArrayList對象類型ArrayLista面板容器JPanelJp按鈕JButton確定、清空全部數(shù)據(jù)、返回標(biāo)題JLable請輸入要刪除的……單行文本JTextFieldNULL表4.7主要成員變量(屬性)方法名稱返回類型功能備注Shan無類型創(chuàng)建刪除學(xué)生信息界面構(gòu)造方法readDate無類型讀取studen.txt中的數(shù)據(jù)無Delete無類型執(zhí)行刪除無表4.8主要方法5.類Xiu成員變量描述變量類型名稱ArrayList對象類型ArrayLista面板容器JPanelJp按鈕JButton查找、修改、返回標(biāo)題JLable學(xué)號、姓名、專業(yè)、年級……單行文本JTextField學(xué)號、姓名、專業(yè)、年級……表4.9主要成員變量(屬性)方法名稱返回類型功能備注Xiu無類型創(chuàng)建修改學(xué)生信息界面構(gòu)造方法readDate無類型讀取studen.txt中的數(shù)據(jù)無Pc無類型執(zhí)行修改后保存無Cx無類型執(zhí)行查詢并顯示在框中無表4.10主要方法6.類Login1成員變量描述變量類型名稱ArrayList對象類型ArrayLista面板容器JPanelJp按鈕JButton確定標(biāo)題JLable請輸入用戶名:單行文本JTextFieldNULL密碼框JPasswordFieldpassWord表4.11主要成員變量(屬性)方法名稱返回類型功能備注Login1無類型創(chuàng)建登錄學(xué)生信息界面構(gòu)造方法readDate無類型讀取studen.txt中的數(shù)據(jù)無Log無類型執(zhí)行查詢是否有該用戶無表4.12主要方法(四)結(jié)構(gòu)圖及流程圖1.學(xué)生信息系統(tǒng)結(jié)構(gòu)圖圖4.1學(xué)生信息系統(tǒng)結(jié)構(gòu)圖2.添加學(xué)生信息圖4.2添加學(xué)生信息流程圖3.刪除學(xué)生信息圖4.3刪除學(xué)生信息流程圖4.修改學(xué)生信息圖4.4刪除學(xué)生信息流程圖5.查詢學(xué)生信息圖4.5刪除學(xué)生信息流程圖6.登錄圖4.6登錄學(xué)生信息系統(tǒng)流程圖五.程序的主要界面、代碼實現(xiàn)(一)登錄界面圖5.1登錄界面源代碼:classLogin1extendsJFrame{ JLabell1=newJLabel("用戶名:"); JLabell3=newJLabel("歡迎登錄學(xué)生信息管理系統(tǒng)!"); JLabell2=newJLabel("密碼:"); JPasswordFieldpassWord=newJPasswordField(); JButtonb1=newJButton("確定"); JTextFieldjtf=newJTextField(150); ArrayLista=newArrayList(); JPaneljp=newJPanel(); publicLogin1(){Fontf=newFont("黑體",Font.BOLD,15);//修改字體 l3.setFont(f);//修改字體 jp.add(l3); jp.add(l1); jp.add(jtf); jp.add(l2); jp.add(passWord); jp.add(b1); getContentPane().add(jp); jp.setLayout(null); intx=0,y=0; l3.setBounds(x+60,y+10,350,30); l1.setBounds(x+70,y+50,200,30); jtf.setBounds(x+130,y+60,80,25); l2.setBounds(x+70,y+100,200,40); passWord.setBounds(x+130,y+105,80,25); b1.setBounds(x+100,y+170,70,25); setSize(300,300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setTitle("學(xué)生信息管理系統(tǒng)登錄");setVisible(true);b1.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) { log(); } } ); //查詢是否有該用戶 } voidreadDate(){ try{ Scannersc=newScanner(newFile("admin.txt")); while(sc.hasNextLine())//一行一行的讀取 { Stringtemp=sc.nextLine(); a.add(temp);//txt中的所有數(shù)據(jù),逐行將數(shù)據(jù)加載到ArrayList中 }}catch(Exceptionex){} } publicvoidlog(){ a.clear(); readDate(); booleanflag=true; if(jtf.getText().equals("")) { JOptionPane.showMessageDialog(null,"用戶名不能為空!"); }elseif(passWord.getText().equals("")) { JOptionPane.showMessageDialog(null,"密碼不能為空!"); }else { Stringsh=jtf.getText(); Stringsh2=passWord.getText(); for(inti=0;i<a.size();i++) { Stringstr=(String)a.get(i); if(str.indexOf(sh)>=0&&str.indexOf(sh2)>=0) { flag=false; dispose(); StudentMessages=newStudentMessage(); } } if(flag) {JOptionPane.showMessageDialog(null,"密碼錯誤"); jtf.setText(null); passWord.setText(null);} } } }(二)主界面圖5.2主界面源代碼:importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.io.*;importjava.util.*;publicclassStudentMessageextendsJFrame{ CInsteadc1=newCInstead(); Containerc; JButtonb1; JButtonb2; JButtonb3; JButtonb4; JButtonb5;JLabeltail;publicStudentMessage(){setContentPane(c1); c=getContentPane();Fontf=newFont("隸書",Font.BOLD,20);//修改字體b1=newJButton("添加"); b2=newJButton("刪除");b3=newJButton("修改"); b4=newJButton("查詢");b5=newJButton("退出"); tail=newJLabel("學(xué)生信息管理系統(tǒng)");tail.setFont(f);//修改字體JPaneljp=newJPanel();c.add(tail); c.add(b1); c.add(b2); c.add(b3); c.add(b4); c.add(b5); c.setLayout(null); intx=0,y=0; tail.setBounds(x+80,y+30,200,40); b1.setBounds(x+120,y+90,70,25); b2.setBounds(x+120,y+140,70,25); b3.setBounds(x+120,y+190,70,25); b4.setBounds(x+120,y+240,70,25); b5.setBounds(x+120,y+290,70,25); setSize(330,450); show(); setTitle("學(xué)生信息管理系統(tǒng)"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); b5.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) {System.exit(0);} } ); //關(guān)閉 b4.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) {Chac=newCha();} } ); //查詢 b1.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) {Addc=newAdd();} } ); //添加b2.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) {Shanc=newShan();} } ); //刪除b3.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) {Xiuc=newXiu();} } ); //修改 setVisible(true);}publicstaticvoidmain(String[]args){Login1n=newLogin1();}classCInsteadextendsJPanel{ ImageIconicon; Imageimg; publicCInstead() { icon=newImageIcon(StudentMessage.class.getResource("12.jpg")); img=icon.getImage(); } publicvoidpaintComponent(Graphicsg) { super.paintComponent(g); g.drawImage(img,0,0,null); }}}(三)添加學(xué)生信息界面圖5.3添加學(xué)生信息界面源代碼:classAddextendsJFrame{ JLabell1=newJLabel("添加學(xué)生信息"); JLabell2=newJLabel("姓名:"); JLabell3=newJLabel("性別"); JLabell4=newJLabel("學(xué)號:"); JLabell5=newJLabel("專業(yè):"); JLabell6=newJLabel("年級:"); JLabell7=newJLabel("出生:"); JButtonb1=newJButton("確定"); JButtonb2=newJButton("清空"); JButtonb3=newJButton("返回"); JTextFieldjtf1=newJTextField(15);JTextFieldjtf2=newJTextField(15);JTextFieldjtf3=newJTextField(15);JTextFieldjtf4=newJTextField(15);JTextFieldjtf5=newJTextField(15);JTextFieldjtf6=newJTextField(15);JPaneljp=newJPanel();ArrayLista=newArrayList(); Filefile=newFile("student.txt"); publicAdd(){ Fontf=newFont("黑體",Font.BOLD,20);//修改字體 l1.setFont(f);//修改字體 jp.add(l1); jp.add(l2); jp.add(jtf1);jp.add(l3);jp.add(jtf2);jp.add(l4);jp.add(jtf3);jp.add(l5);jp.add(jtf4);jp.add(l6);jp.add(jtf5);jp.add(l7);jp.add(jtf6);jp.add(b1);jp.add(b2);jp.add(b3); getContentPane().add(jp); jp.setLayout(null); intx=0,y=0; l1.setBounds(x+130,y+30,200,40); l2.setBounds(x+80,y+90,70,25); l3.setBounds(x+80,y+130,70,25); l4.setBounds(x+80,y+170,70,25); l5.setBounds(x+80,y+210,70,25); l6.setBounds(x+80,y+250,70,25); l7.setBounds(x+80,y+290,70,25); jtf1.setBounds(x+120,y+90,150,25); jtf2.setBounds(x+120,y+130,150,25); jtf3.setBounds(x+120,y+170,150,25); jtf4.setBounds(x+120,y+210,150,25); jtf5.setBounds(x+120,y+250,150,25); jtf6.setBounds(x+120,y+290,150,25); b1.setBounds(x+60,y+340,70,25); b2.setBounds(x+140,y+340,70,25); b3.setBounds(x+230,y+340,70,25); setSize(350,500); setTitle("添加"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); b3.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) {dispose();} } ); //關(guān)閉當(dāng)前頁面 b2.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) {jtf1.setText(null); jtf2.setText(null); jtf3.setText(null); jtf4.setText(null); jtf5.setText(null); jtf6.setText(null);} } ); //清空當(dāng)前頁面 b1.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) { try{ if(jtf1.getText().equals("")||jtf2.getText().equals("")||jtf3.getText().equals("")||jtf4.getText().equals("")||jtf5.getText().equals("")||jtf6.getText().equals("")) {JOptionPane.showMessageDialog(null,"不可以有空,請輸入完整信息!");} else { FileOutputStreamfos=newFileOutputStream(file,true); OutputStreamWriterosw=newOutputStreamWriter(fos); BufferedWriterbw=newBufferedWriter(osw); Stringstr1=jtf1.getText(); Stringstr2=jtf2.getText(); Stringstr3=jtf3.getText(); Stringstr4=jtf4.getText(); Stringstr5=jtf5.getText(); Stringstr6=jtf6.getText(); Strings1=newString(str1+""+str2+""+str3+""+str4+""+str5+""+str6); bw.write(s1); bw.newLine(); bw.flush(); bw.close(); osw.close(); fos.close(); } } catch(FileNotFoundExceptione1) { e1.printStackTrace(); } catch(IOExceptione2) { e2.printStackTrace(); } } } ); //寫入文檔中 } }(四)刪除學(xué)生信息界面圖5.4刪除學(xué)生信息界面源代碼:classShanextendsJFrame{ JLabell1=newJLabel("請輸入要刪除的學(xué)生的姓名或?qū)W號"); JTextFieldjtf=newJTextField(20); JButtonb1=newJButton("確定"); JButtonb2=newJButton("清空全部數(shù)據(jù)"); JButtonb3=newJButton("返回"); JPaneljp=newJPanel(); ArrayLista=newArrayList(); publicShan(){ Fontf=newFont("黑體",Font.BOLD,20);//修改字體 l1.setFont(f);//修改字體 jp.add(l1); jp.add(jtf);jp.add(b1);jp.add(b3);jp.add(b2); getContentPane().add(jp); jp.setLayout(null); intx=0,y=0; l1.setBounds(x+50,y+30,400,40); jtf.setBounds(x+100,y+100,200,25); b1.setBounds(x+100,y+170,70,25); b2.setBounds(x+140,y+220,140,25); b3.setBounds(x+230,y+170,70,25); setSize(440,300); setTitle("刪除"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); b3.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) {dispose();} } ); //返回 b2.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) {jtf.setText(null);} } ); //清空 b1.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) {delete();} } ); //刪除 }voidreadDate(){ try{ Scannersc=newScanner(newFile("student.txt")); while(sc.hasNextLine()) { Stringtemp=sc.nextLine(); a.add(temp);//逐行將數(shù)據(jù)加載到ArrayList中 }}catch(Exceptionex){} }voiddelete(){ try{ a.clear(); readDate(); BufferedReaderbr=newBufferedReader(newFileReader("student.txt")); StringBuffersb=newStringBuffer(4096); Stringxx=jtf.getText(); booleanflag=false; booleanflag2=false; for(inti=0;i<a.size();i++) { Stringstr=(String)a.get(i); if(str.indexOf(xx)<0) { flag=true; } } if(flag) {JOptionPane.showMessageDialog(null,"系統(tǒng)中沒有這個學(xué)生!");} for(inti=0;i<a.size();i++) { Stringstr=(String)a.get(i); if(str.indexOf(xx)<0)//找到不要刪除的行 sb.append(str).append("\r\n"); else flag2=true; } if(flag2) {JOptionPane.showMessageDialog(null,"找到該生的信息,已刪除!");} br.close(); BufferedWriterbw=newBufferedWriter(newFileWriter("student.txt")); bw.write(sb.toString()); bw.close(); }catch(Exceptionex){} }}(五)修改學(xué)生信息界面圖5.5修改學(xué)生信息界面(修改前)圖5.5.1student.txt中的信息顯示圖5.6修改學(xué)生信息界面(修改后)圖5.6.1student.txt中的信息顯示源代碼:classXiuextendsJFrame{ JLabell1=newJLabel("要修改的學(xué)生:"); JLabell2=newJLabel("姓名:"); JLabell3=newJLabel("性別"); JLabell4=newJLabel("學(xué)號:"); JLabell5=newJLabel("專業(yè):"); JLabell6=newJLabel("年級:"); JLabell7=newJLabel("出生:"); JButtonb1=newJButton("查找"); JButtonb2=newJButton("修改"); JButtonb3=newJButton("返回"); JTextFieldjtf0=newJTextField(10); JTextFieldjtf1=newJTextField(15);JTextFieldjtf2=newJTextField(15);JTextFieldjtf3=newJTextField(15);JTextFieldjtf4=newJTextField(15);JTextFieldjtf5=newJTextField(15);JTextFieldjtf6=newJTextField(15);JPaneljp=newJPanel();ArrayLista=newArrayList(); publicXiu(){ jp.add(l1); jp.add(jtf0); jp.add(l2); jp.add(jtf1);jp.add(l3);jp.add(jtf2);jp.add(l4);jp.add(jtf3);jp.add(l5);jp.add(jtf4);jp.add(l6);jp.add(jtf5);jp.add(l7);jp.add(jtf6);jp.add(b1);jp.add(b2);jp.add(b3); getContentPane().add(jp); jp.setLayout(null); intx=0,y=0; l1.setBounds(x+70,y+30,200,40); jtf0.setBounds(x+160,y+40,80,20); l2.setBounds(x+80,y+90,70,25); l3.setBounds(x+80,y+130,70,25); l4.setBounds(x+80,y+170,70,25); l5.setBounds(x+80,y+210,70,25); l6.setBounds(x+80,y+250,70,25); l7.setBounds(x+80,y+290,70,25); jtf1.setBounds(x+120,y+90,150,25); jtf2.setBounds(x+120,y+130,150,25); jtf3.setBounds(x+120,y+170,150,25); jtf4.setBounds(x+120,y+210,150,25); jtf5.setBounds(x+120,y+250,150,25); jtf6.setBounds(x+120,y+290,150,25); b1.setBounds(x+60,y+340,70,25); b2.setBounds(x+140,y+340,70,25); b3.setBounds(x+230,y+340,70,25); setSize(350,500); setTitle("修改"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); b3.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) {dispose();} } ); //關(guān)閉當(dāng)前頁面 b1.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) {cx();} } ); //查詢并顯示在框中 b2.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) {pc();} } ); //修改后保存 } voidreadDate(){ try{ Scannersc=newScanner(newFile("student.txt")); while(sc.hasNextLine())//一行一行的讀取 { Stringtemp=sc.nextLine(); a.add(temp);//txt中的所有數(shù)據(jù),逐行將數(shù)據(jù)加載到ArrayList中 }}catch(Exceptionex){} }publicvoidpc()//修改后保存{ try{ a.clear(); readDate(); BufferedReaderbr=newBufferedReader(newFileReader("student.txt")); StringBuffersb=newStringBuffer(4096); Stringxx=jtf0.getText(); for(inti=0;i<a.size();i++) { Stringstr=(String)a.get(i); if(str.indexOf(xx)<0)//找到不要刪除的行 sb.append(str).append("\r\n"); } br.close(); BufferedWriterbw=newBufferedWriter(newFileWriter("student.txt")); bw.write(sb.toString()); bw.close();} catch(Exceptionex){ } try{ if(jtf1.getText().equals("")||jtf2.getText().equals("")||jtf3.getText().equals("")||jtf4.getText().equals("")||jtf5.getText().equals("")||jtf6.getText().equals("")) {JOptionPane.showMessageDialog(null,"不可以有空,請輸入完整信息!");} else { FileOutputStreamfos=newFileOutputStream("student.txt",true); OutputStreamWriterosw=newOutputStreamWriter(fos); BufferedWriterbw=newBufferedWriter(osw); Stringstr1=jtf1.getText(); Stringstr2=jtf2.getText(); Stringstr3=jtf3.getText(); Stringstr4=jtf4.getText(); Stringstr5=jtf5.getText(); Stringstr6=jtf6.getText(); Strings1=newString(str1+""+str2+""+str3+""+str4+""+str5+""+str6); bw.write(s1); bw.newLine(); bw.flush(); bw.close(); osw.close(); fos.close(); } }catch(FileNotFoundExceptione1) { e1.printStackTrace(); }catch(IOExceptione2) { e2.printStackTrace(); }}publicvoidcx()//查詢并顯示在框中{try{ a.clear(); readDate(); booleanflag=true; Stringsh=jtf0.getText(); for(inti=0;i<a.size();i++) { Stringstr=(String)a.get(i); if(str.indexOf(sh)>=0) { Scannerss=newScanner(str); while(ss.hasNext()) { Stringa1=ss.next(); Stringa2=ss.next(); Stringa3=ss.next(); Stringa4=ss.next(); Stringa5=ss.next(); Stringa6=ss.next(); jtf1.setText(a1); jtf2.setText(a2); jtf3.setText(a3); jtf4.setText(a4); jtf5.setText(a5); jtf6.setText(a6); } flag=false; } } if(flag) {JOptionPane.showMessageDialog(null,"查無此人!");}}catch(Exceptionex){} } } (六)查詢學(xué)生信息界面圖5.7.查詢學(xué)生信息界面源代碼:classChaextendsJFrame{ JLabell1=newJLabel("請輸入的內(nèi)容:"); JButtonb1=newJButton("確定"); JButtonb2=newJButton("清空"); JButtonb3=newJButton("返回"); JTextFieldjtf=newJTextField(20);JTextAreajta=newJTextArea(10,30);JPaneljp=newJPanel(); JScrollPanejsp=newJScrollPane();//為多行文本框加入滾動條 ArrayLista=newArrayList(); publicCha(){ jp.add(l1); jp.add(jtf); jp.add(jta); jp.add(jsp);jp.add(b1);jp.add(b2);jp.add(b3); getContentPane().add(jp); setSize(370,300); setTitle("查找"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); b3.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) {dispose();} } ); //關(guān)閉當(dāng)前頁面 b2.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) {jtf.setText(null); jta.setText(null);} } ); //清空 b1.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEventae) {js();} } ); //執(zhí)行查詢}voidreadDate(){ try{ Scannersc=newScanner(newFile("student.txt")); while(sc.hasNextLine())//一行一行的讀取 { Stringtemp=sc.nextLine(); a.add(temp);//txt中的所有數(shù)據(jù),逐行將數(shù)據(jù)加載到ArrayList中 }}catch(Exceptionex){} }publicvoidjs(){ a.clear(); readDate(); booleanflag=true; Stringsh=jtf.getText(); for(inti=0;i<a.size();i++) { Stringstr=(String)a.get(i); if(str.indexOf(sh)>=0) { Scannerss=newScanner(str); while(ss.hasNext()) { Stringa1=ss.next(); Stringa2=ss.next(); Stringa3=ss.next(); Stringa4=ss.next(); Stringa5=ss.next(); Stringa6=ss.next(); jta.append("姓名:"+a1+"\r\n"+"性別:"+a2+"\r\n"+"學(xué)號:"+a3+"\r\n"+"專業(yè):"+a4+"\r\n"+"年級:"+a5+"\r\n"+"出生年月:"+a6+"\r\n"); } flag=false; } } if(flag) {JOptionPane.showMessageDialog(null,"查無此人!");} }}六.設(shè)計結(jié)果的總結(jié)這幾周的JAVA課程設(shè)計,時間上說長不長,說短也不短,卻讓我學(xué)到了很多,第一點就是:JAVA很難,似乎是學(xué)不完的,你覺得自己了解一點,是總會發(fā)現(xiàn)還有很多自己所不懂的東西,還有很多自己所沒探知的領(lǐng)域,很多知識運(yùn)用到實踐中很有一定的難度,看著自己的程序運(yùn)行結(jié)果,突然發(fā)現(xiàn)JAVA真的很神奇,居然能運(yùn)行出那么漂亮的系統(tǒng),雖然它依舊很簡陋。在我們上機(jī)調(diào)試程序的過程中,我遇到了很多的問題,自己設(shè)計是總是覺得沒有頭緒,無從下手。后來還是看了這一學(xué)期的java實驗的實驗報告,我才總結(jié)出如何寫的。遇到不懂得問題時,問問同學(xué)是一個好的方法,網(wǎng)絡(luò)是一個全能的幫手,不懂得問題都可以在上面找到答案。在這期末考試前期,學(xué)院給我們安排的課程設(shè)計周,總讓我們覺的有些為難我們,這樣一個復(fù)雜困難而又繁瑣的作業(yè),但是完成以后就會發(fā)現(xiàn),課程設(shè)計不僅讓我們鞏固了所學(xué)的知識,還使得我們學(xué)習(xí)到了更多平時所忽略的,最重要的是,它磨礪了我們,讓我們在大學(xué)的下一個階段能更好的成長。七.附錄或參考資料[1]耿祥義,張躍平.Java2實用教程(第三版)[M].北京:清華大學(xué)出版社,2006[2](美)霍斯特曼(Horstmann
C.S.)&nbs.Java2核心技術(shù)(卷Ⅱ高級特性原書第7版)/Sun公司核心技術(shù)叢書[M].機(jī)械工業(yè)出版社,2006[3][4]葉乃文,王丹java語言程序設(shè)計教程機(jī)械工業(yè)出版社2010.1[5]張桂珠劉麗陳愛國Java面向?qū)ο蟪绦蛟O(shè)計(第2版)北京郵電大學(xué)出版社[6]畢廣吉.Java程序設(shè)計實例教程[M].北京:冶金工業(yè)出版社,2007年基于C8051F單片機(jī)直流電動機(jī)反饋控制系統(tǒng)的設(shè)計與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實現(xiàn)基于單片機(jī)的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測試儀的研制基于單片機(jī)的自動找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗臺控制器的研制基于單片機(jī)的軟起動器的研究和設(shè)計H
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2019-2025年中國醫(yī)用X射線機(jī)行業(yè)市場深度分析及發(fā)展前景預(yù)測報告
- 中國阿奇霉素行業(yè)發(fā)展前景預(yù)測及投資策略研究報告
- 2025年廢鐵項目投資分析及可行性報告
- 2022-2027年中國支線航空行業(yè)市場調(diào)研及未來發(fā)展趨勢預(yù)測報告
- 印花扁平絨面料行業(yè)市場發(fā)展及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2024-2026年中國有線電視調(diào)制解調(diào)器市場競爭格局及投資戰(zhàn)略規(guī)劃報告
- 2025年豬皮頭層項目可行性研究報告
- 2025公司合作合同模板
- 2025摩托車買賣合同范本格式
- 2025農(nóng)牧漁業(yè)類合同范本
- 2025蛇年一年級寒假作業(yè)創(chuàng)意與寓意齊【高清可打印】
- 多系統(tǒng)萎縮鑒別及治療
- 設(shè)備的使用和維護(hù)管理制度模版(3篇)
- 浙江省寧波市慈溪市2023-2024學(xué)年高三上學(xué)期語文期末測試試卷
- 草學(xué)類專業(yè)生涯發(fā)展展示
- 2024年廣東省公務(wù)員錄用考試《行測》真題及解析
- 輔導(dǎo)員年度述職報告
- 七年級歷史試卷上冊可打印
- 2024-2030年全球及中國洞察引擎行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 《東南亞經(jīng)濟(jì)與貿(mào)易》習(xí)題集、案例、答案、參考書目
- 燒烤店裝修合同范文模板
評論
0/150
提交評論