java課程設計學生學籍管理系統2_第1頁
java課程設計學生學籍管理系統2_第2頁
java課程設計學生學籍管理系統2_第3頁
java課程設計學生學籍管理系統2_第4頁
java課程設計學生學籍管理系統2_第5頁
已閱讀5頁,還剩27頁未讀 繼續免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

/課程設計(論文)任務書學院理學院專業信息與計算科學學生姓名孫康班級學號1309010224課程名稱Java程序設計課程設計課程設計(論文)題目學生學籍管理系統設計題目:學生學籍管理系統,用java語言編程知識和Eclipse軟件實現學生學籍管理系統程序。設計目的:1)復習、鞏固Java語言的基礎知識,進一步加深對Java語言的理解和掌握;2)課程設計為學生提供了一個既動手又動腦,獨立實踐的機會,將課本上的理論知識和實際有機的結合起來,鍛煉學生的分析解決實際問題的能力。提高學生適應實際,實踐編程的能力;3)培養學生在項目開發中的團隊合作精神、創新意識與能力。計劃與進度安排:成績:指導教師(簽字):2010年7月8日專業負責人(簽字):2010年7月18日主管院長(簽字):2010年7月19日摘要Java語言是當前最為流行的程序設計語言之一,諸多優秀的的特性使其成為被業界廣泛認可和采用的工具。本設計可以幫助同學掌握和應運所學的面向對象程序設計學生學籍信息管理系統的編程內容,培養同學們建立對象模型,處理對象和對象集關系和對圖形用回界面設計編程以與文件和流的編程問題的能力,訓練同學為解決實際問題而創建較完整的簡單面向對象和管理系統編程應運程序的獨立編程能力.本設計是一個常見的學生學籍管理系統應運程序.系統實現的功能:界面操作實現學生學籍信息的添加、刪除、查詢、修改功能,在文本文件中的的信息的動態處理。關鍵詞:學生學籍管理系統;圖形用戶界面設計;文件和流;java目錄一設計目的………………………1二設計問題………………………1三概要設計………………………13.1主程序面板設計………………23.2功能組件的功能實現…………33.2.1添加學生信息…………33.2.2查詢學生信息…………43.2.3修改學生信息…………43.2.4刪除學生信息…………53.2.5重置學生信息…………5四詳細設計………………………54.1圖形用戶界面設計……………54.2添加功能的實現………………94.3重置功能的實現………………104.4查詢功能的實現………………104.5刪除功能的實現………………124.6修改功能的實現………………154.7系統的運行……………………18五設計總結………………………18參考文獻……………19致謝…………………19學生學籍管理系統一、設計目的隨著現代社會的快速發展,我們已進入信息化時代,管理系統在人們的生活中的應用越來越廣泛,它已深入到我們工作、學習、生活的各個方面。為了適應時代的發展,本次課程設計的主要任務是設計一個學生學籍管理系統并完成一些基本操作。其目的是:運用已學的java知識編一些簡單使用的程序,通過本課程設計使我們加深理解、鞏固課堂理論知識和實驗知識;使我們初步具備綜合運用所學Java語言基礎知識,面向對象程序設計的基本思想、方法與技術,用戶界面設計編程和文件編程技術等開發簡單應用系統的基本能力;使理論和實際相結合,真正做到學以致用,并適應時代發展的潮流。二、設計問題學生學籍管理系統要求完成:學生學籍信息的添加、刪除、查詢、修改功能使用界面操作使用文件完成首先設計面板,然后往面板里添加組件,點擊各個組件來實現要求的對學生學籍信息的添加、刪除、查詢、修改功能。三、概要設計學生信息管理系統的程序文件為AddStudentInformation.java,在AddStudentInformation.java包含名為AddStudent的類。其主要功能為構成學生信息管理系統的主體框架,實現框架上各個組件的事件偵聽。主要包括2個模塊:圖形用戶界面的構建:組件監聽事件的實現。用例圖1表示如下學生信息錄入學生信息錄入信息添加信息刪除信息查詢信息修改添加信息重置學籍信息數據文件學生學籍信息顯示例圖13.1、主程序面板設計:設計主面板如圖所示,主面板分為學籍信息輸入區、功能操作區和學籍信息顯示區。在學生信息輸入區里分別有學號、姓名、性別、班級、系別等信息的輸入文本框,其數據類型均置為String類型。在功能操作區里有五個按鈕分別為:添加、修改、重置、刪除、查詢。分別實現對文本文件中的的學生信息數據進行添加、修改、刪除、查詢。其中重置功能按鈕為對主程序界面中的信息輸入區和信息顯示區的文本框中的內容進行清除操作。在學籍信息顯示區里使用DefaultTableModeltableModel=newDefaultTableModel();String[]titles={"學號","姓名","性別","班級","系別"};定義五個titles用來學籍信息的顯示。主程序面板如例圖2所示。例圖2學籍信息輸入學籍信息輸入學籍信息顯示功能操作學籍信息顯示功能操作3.2、功能組件的功能實現:3.2.1添加學生信息在文本框中輸入學生信息包括學號、姓名、性別、班級、系別,點擊添加按鈕彈出對話框如圖。該學生信息已成功添加至文件。如例圖3,4例圖3例圖43.2.2查詢學生信息在學號文本框里輸入想要查詢的學號0809010214,在學生信息顯示欄顯示信息。如例圖5:例圖53.2.3修改學生信息在學生信息輸入區輸入完整的學生信息,點擊修改按鈕彈出如下對話框,點擊是(Y)按鈕,程序自動修改文本文件中的學生信息,如例圖6,7。例圖6例圖7打開text1.txt文件,查找所修改內容,成功修改內容,再查詢學號為08090104的學生信息為如例圖8例圖8說明信息修改成功。3.2.4刪除學生信息只需在信息輸入區輸入所要刪除的學生信息的學號,點擊刪除按鈕彈出如下對話框例圖9點擊是(Y)按鈕,程序進行執行刪除功能,并彈出如下對話框,如例圖10例圖103.2.5重置信息點擊重置按鈕,學籍信息輸入區和學籍信息顯示區的文本框中的內容都設置為空。四、詳細設計4.1圖形用戶界面設計定義AddStudent類繼承JFrame類使用ActionListener,ItemListener接口實現對事件的監聽。以下為用戶界面的程序代碼與分析:定義String類型的num,name,grade,sex,xibie,oldStr六個變量;在本系統中默認學籍信息中的學號為學生信息的唯一可區分標識。刪除、查詢和修改時均以學號來進行信息的檢索和匹配檢測。使用JLabel標簽類定義lbl_titlelbl_numlbl_namelbl_sexlbl_classlbl_department;使用JTextField類創建文本框用以學籍信息的輸入和顯示。使用JButton類創建btn_repbtn_xgbtn_cxbtn_shbtn_add功能按鈕。使用addItemListener()和addActionListener()方法功能按鈕事件進行監聽。使用JRadioButton類創建rb_manrb_woman用以學生學籍信息性別的選擇。使用DefaultTableModel類定義五個titles用來學籍信息的顯示。使用Container容器類,并使用add()方法添加組件到容器中。使用setBounds()方法對每個組件進行位置的設置,并使界面達到最優化。使用setVisible(true)使界面顯示各個組件。classAddStudentextendsJFrameimplementsActionListener,ItemListener{ publicStringnum,name,grade,sex,xibie,oldStr; JLabellbl_title=newJLabel("學生信息"); JLabellbl_num=newJLabel("學號:"); JLabellbl_name=newJLabel("姓名:"); JLabellbl_sex=newJLabel("性別:"); JLabellbl_class=newJLabel("班級:"); JLabellbl_department=newJLabel("系別:"); JTextFieldtxt_num=newJTextField(); JTextFieldsfzText1=newJTextField();JTextFieldbnameText1=newJTextField();JTextFieldxbText1=newJTextField();JTextFielddateText1=newJTextField();JTextFieldxb=newJTextField(); JTextFieldtxt_name=newJTextField(11); JTextFieldtxt_class=newJTextField(11); JTextFieldtxt_department=newJTextField(); JButtonbtn_rep=newJButton("重置"); JButtonbtn_xg=newJButton("修改"); JButtonbtn_cx=newJButton("查詢"); JButtonbtn_sh=newJButton("刪除"); JButtonbtn_add=newJButton("添加"); JRadioButtonrb_man=newJRadioButton("男"); JRadioButtonrb_woman=newJRadioButton("女"); DefaultTableModeltableModel=newDefaultTableModel();String[]titles={"學號","姓名","性別","班級","系別"};Stringa,b,c,d,f;privateJLabelinfoLab=newJLabel("學生信息管理"); ButtonGroupbg=newButtonGroup(); AddStudent(Strings){ super(s); this.setBounds(500,50,390,600); Containercon=this.getContentPane(); con.setLayout(null); con.add(lbl_title); con.add(lbl_num); con.add(lbl_name); con.add(lbl_sex); con.add(lbl_class); con.add(lbl_department); con.add(txt_num); con.add(txt_name); con.add(txt_class); con.add(txt_department); con.add(btn_rep); con.add(btn_xg); con.add(btn_cx); con.add(btn_sh); con.add(btn_add); con.add(rb_man); con.add(rb_woman); bg.add(rb_man); bg.add(rb_woman); con.add(infoLab); con.add(sfzText1); con.add(bnameText1); con.add(xbText1); con.add(dateText1); con.add(xb); lbl_title.setBounds(150,50,100,25); lbl_num.setBounds(100,100,50,25); lbl_name.setBounds(100,150,50,25); lbl_sex.setBounds(100,200,50,25); lbl_class.setBounds(100,250,50,25); lbl_department.setBounds(100,300,50,25); btn_add.setBounds(20,350,60,25); btn_sh.setBounds(230,350,60,25); btn_xg.setBounds(90,350,60,25); btn_cx.setBounds(300,350,60,25); btn_rep.setBounds(160,350,60,25); txt_num.setBounds(150,100,110,25); txt_name.setBounds(150,150,110,25); txt_class.setBounds(150,250,110,25); txt_department.setBounds(150,300,110,25); rb_man.setBounds(150,200,50,25); rb_woman.setBounds(220,200,50,25); infoLab.setBounds(0,410,100,25); sfzText1.setBounds(0,450,80,20);bnameText1.setBounds(80,450,80,20); xb.setBounds(160,450,80,20);xbText1.setBounds(240,450,80,20);dateText1.setBounds(320,450,80,20); tableModel.setColumnIdentifiers(titles); JTabletable=newJTable(tableModel); JScrollPanescr=newJScrollPane(table); con.add(scr); scr.setBounds(0,430,400,300); rb_man.addItemListener(this); rb_woman.addItemListener(this); btn_add.addActionListener(this); btn_rep.addActionListener(this); btn_xg.addActionListener(this); btn_sh.addActionListener(this); btn_cx.addActionListener(this); setVisible(true); 4.2添加功能的實現定義addDate()方法實現學籍信息的添加,使用getText()方法獲取文本框中的學生學籍信息,并使用PrintWriter(new(newFile("text1.txt"),true))類下的println()方法將信息寫入文件text1.txt。其中每個學籍信息之間用|隔開,并換行保存以方便信息的的讀取和查詢。添加成功之后執行setText()方法使各個文本框中的信息為空以方便其他功能的實現。以下為具體的代碼:publicvoidaddDate(){ Stringsex=null; if(rb_man.isSelected()){ sex=rb_man.getText();}else{ sex=rb_woman.getText(); } JOptionPane.showMessageDialog(null,"學號:"+txt_num.getText()+"\n姓名:"+txt_name.getText()+"\n性別"+sex+"\n班級:"+txt_class.getText()+"\n系別:"+txt_department.getText()); PrintWritermm=null; Stringfs=txt_num.getText()+"|"+txt_name.getText()+"|"+sex+"|"+txt_class.getText()+"|"+txt_department.getText(); try{ mm=newPrintWriter(new(newFile("text1.txt"),true)); mm.println(fs); }catch(IOExceptione1){ e1.printStackTrace(); } mm.close(); JOptionPane.showMessageDialog(null,"添加成功","溫馨提示",JOptionPane.INFORMATION_MESSAGE); txt_num.setText(null); txt_name.setText(null); txt_class.setText(null); txt_department.setText(null); bg.remove(rb_man); bg.remove(rb_woman); rb_man.setSelected(false); rb_woman.setSelected(false); }4.3重置功能的實現使用setText()方法使各個文本框中的信息為空,使用JRadioButton類下的remove()和setSelected(flase)方法使性別單選按鈕置為未被選定狀態。publicvoidrepDate(){ txt_num.setText(null); txt_name.setText(null); txt_class.setText(null); txt_department.setText(null); bg.remove(rb_man); bg.remove(rb_woman); rb_man.setSelected(false); rb_woman.setSelected(false); bg.add(rb_man); bg.add(rb_woman); sfzText1.setText("");bnameText1.setText("");dateText1.setText("");xb.setText("");xbText1.setText("");infoLab.setText("學生信息"); }4.4查詢功能的實現定義查詢方法實現查詢功能,首先使用equals方法進行判別學號輸入區文本框中的內容是否為空,為空的時候則提示用回輸入學號進行查詢,不為空使用類BufferedReader下的readLine()方法正行讀取文件text1.txt中的內容,使用類StringTokenizer對讀取的整行數據以“|“進行分割,每個分割點的內容賦值給String類型的num,name,sex,grade,xibie。再次使用equal方法判斷學號輸入文本框中的內容是否和num相同,若相同則依次使用setText()方法將學籍信息顯示區的文本框內容設置為所查找的文件數據。其中包括文件的異常處理。以下為具體代碼:publicvoidCheckDate(){ if(txt_num.getText().toString().equals("")){ JOptionPane.showMessageDialog(null,"請輸入學號","溫馨提示",JOptionPane.INFORMATION_MESSAGE);} try{BufferedReaderin=newBufferedReader(new("text1.txt"));Strings; while((s=in.readLine())!=null) { StringTokenizert=newStringTokenizer(s,"|"); num=t.nextToken(); name=t.nextToken(); sex=t.nextToken(); grade=t.nextToken(); xibie=t.nextToken(); if(num.equals(txt_num.getText())){ sfzText1.setText(num); bnameText1.setText(name); dateText1.setText(xibie); xb.setText(sex); xbText1.setText(grade); infoLab.setText("查詢成功!");} } }catch(IOExceptione){ e.printStackTrace(); }} 4.5刪除功能的實現刪除學籍信息時用戶只需輸入學生的學號即可刪除文本文件中的該生的學籍信息,其實現是基于查詢功能,首先是查詢文本文件中的數據,如果輸入的學號和查詢到的信息相同時,提示用戶是否要刪除該生學籍信息,如果選擇是(Y),則刪除該學生的所有信息。在實現刪除功能時,本系統采用緩沖流StringBufferbuf的相關特性,在信息匹配成功之后,使用readLine()方法自動查找到該學籍信息在文本文件中所在的行,將該行之前的內容使用append()方法追加到緩沖流buf中,而該行數據則設置為空追加至buf中,該行之后的內容則正常追加至buf中,然后再寫入文本文件text1.txt中,其中也包括對文件讀取寫入的異常的處理,從而實現了信息的刪除。以下為具體代碼:publicvoiddeleteDate(){ if(rb_man.isSelected()){ sex=rb_man.getText();}else{ sex=rb_woman.getText(); } Stringm="確定要刪除該學生的記錄嗎?\n請檢查文本文件中的數據格式確保每行數據之間和文本最后無空行";intok=JOptionPane.showConfirmDialog(null,m,"確認",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(ok==JOptionPane.YES_OPTION){ try{BufferedReaderin=newBufferedReader(new("text1.txt"));Strings; while((s=in.readLine())!=null) { StringTokenizert=newStringTokenizer(s,"|"); num=t.nextToken(); name=t.nextToken(); sex=t.nextToken(); grade=t.nextToken(); xibie=t.nextToken(); if(num.equals(txt_num.getText())){ oldStr=num+"|"+name+"|"+sex+"|"+grade+"|"+xibie;} } }catch(IOExceptione){ } try{ =newFile("text1.txt"); BufferedReaderst=newBufferedReader(newInputStreamReader(new(file))); StringBufferbuf=newStringBuffer(); Strings=null; for(intj=1;(s=st.readLine())!=null&&!s.equals(oldStr);j++){ buf=buf.append(s); buf=buf.append("\n"); } while((s=st.readLine())!=null){ buf=buf.append(s); buf=buf.append("\n"); } buf.append(""); st.close(); PrintWriterpw=newPrintWriter(new(file)); pw.println(buf.toString().toCharArray()); pw.flush(); pw.close(); } catch(IOExceptione){ e.printStackTrace(); } JOptionPane.showMessageDialog(null,"刪除成功","溫馨提示",JOptionPane.INFORMATION_MESSAGE); txt_num.setText(null); txt_name.setText(null); txt_class.setText(null); txt_department.setText(null); bg.remove(rb_man); bg.remove(rb_woman); rb_man.setSelected(false); rb_woman.setSelected(false); }elseif(ok==JOptionPane.NO_OPTION){} }4.6修改功能的實現修改學籍信息和刪除功能實現方法類似,只是在修改的具體過程有些差異,修改學籍信息時需要用戶輸入完整的學籍信息,點擊修改按鈕,系統彈出對話框提示是否要刪除學生學籍信息,點擊是(Y)進行修改學籍信息,首先也是對文本文件的讀取和信息匹配檢測,以學號為標識進行匹配檢測。若學號相同,使用readLine()方法自動查找到該學籍信息在文本文件中所在的行,將該行之前的內容使用append()方法追加到緩沖流buf中,而該行數據則設置為從文本框中獲取的內容追加至buf中,該行之后的內容則正常追加至buf中,然后再寫入文本文件text1.txt中,其中也包括對文件讀取寫入的異常的處理,從而實現了信息的修改。以下為具體代碼:publicvoideditData(){ if(rb_man.isSelected()){ sex=rb_man.getText();}else{ sex=rb_woman.getText(); } Stringm="確定要修改該學生的記錄嗎?";intok=JOptionPane.showConfirmDialog(null,m,"確認",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(ok==JOptionPane.YES_OPTION){ try{BufferedReaderin=newBufferedReader(new("text1.txt"));Strings; while((s=in.readLine())!=null) { StringTokenizert=newStringTokenizer(s,"|"); num=t.nextToken(); name=t.nextToken(); sex=t.nextToken(); grade=t.nextToken(); xibie=t.nextToken(); if(num.equals(txt_num.getText())){ oldStr=num+"|"+name+"|"+sex+"|"+grade+"|"+xibie;} } }catch(IOExceptione){ e.printStackTrace(); } try{ =newFile("text1.txt"); BufferedReaderst=newBufferedReader(newInputStreamReader(new(file))); StringBufferbuf=newStringBuffer(); Strings=null; for(intj=1;(s=st.readLine())!=null&&!s.equals(oldStr);j++){ buf=buf.append(s); buf=buf.append("\n"); } while((s=st.readLine())!=null){ buf=buf.append(s); buf=buf.append("\n"); } buf=buf.append(txt_num.getText()+"|"+txt_name.getText()+"|"+sex+"|"+txt_class.getText()+"|"+txt_department.getText()); st.close(); PrintWriterpw=newPrintWriter(new(file)); pw.println(buf.toString().toCharArray()); pw.f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論