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

下載本文檔

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

文檔簡介

1、 面向對象程序設計課程設計報告題 目:學生學籍管理系統軟件設計與實現 院 (系): 信息科學與工程學院 專業班級: 計算機科學與技術1201班 學生姓名: 程偉 學 號: 20121183011 指導教師: 吳奕 20 14 年 12 月 29 日至20 15 年 1 月 9 日華中科技大學武昌分校制 面向對象程序設計 課程設計任務書一、設計(調查報告/論文)題目學生學籍管理系統軟件設計與實現二、設計(調查報告/論文)主要內容內容:創建一個學生信息的界面,能夠實現學生的學號,姓名,性別,出生日期,專業和照片的錄入,修改,查詢,刪除和打印。這樣能夠詳細準確的查詢到學生的信息,而且能夠更加直觀方便

2、的了解學生的信息。 基本功能與要求:1 錄入學生信息:系統操作人員打開學生信息添加界面,輸入相關的信息(姓名、性別、出生日期、入學年份、專業和學院等)。2 修改學生信息:根據學生的學號查詢出該學生的相關信息,修改相關條目后保存在數據庫中。3 刪除學生信息:根據學生的學號查詢出該學生的相關信息,確定刪除后,在數據庫中刪除該信息。4 查詢、打印學生信息:可以根據學生學號、學生姓名、學生性別、學生所學專業、學生所屬學院來對學生信息進行查詢,所有符合查詢條件的學生信息將都被顯示出來。三、原始資料1.面向對象程序設計課程設計指導書2. 耿祥義JAVA大學實用教程北京:清華大學出版社,2009四、要求的設

3、計(調查/論文)成果1.課程設計報告2.課程設計軟件五、進程安排布置任務,查找資料、需求分析1天總體設計1天詳細設計1.5天編制源程序實現3.5天測試與修改1天撰寫課設報告2天六、主要參考資料1 張廣彬. Java課程設計案例精編(第二版).北京:清華大學出版社, 2011. 2 耿祥義. Java課程設計(第二版).北京:清華大學出版社, 2008.3 耿祥義JAVA大學實用教程北京:清華大學出版社,20094 鄒林達陳國君 Java2程序設計基礎北京:清華大學出版社,20105 鄒林達Java2程序設計基礎實驗指導北京:清華大學,2010指導教師(簽名): 20 年 月 日目 錄1需求與總

4、體設計11.1需求分析11.2總體設計11.3設計要求21.4系統主要功能圖21.5系統主要類圖32詳細設計42.1 ManagerWindow類42.1.1 成員變量和方法42.1.2 詳細類圖42.2 Student類52.2.1 成員變量和方法52.2.2 詳細類圖52.3 StudentPicture類52.3.1 成員變量和方法52.3.2 詳細類圖52.4 InputStudent類62.4.1 成員變量和方法62.4.2 詳細類圖62.5 Inquest類72.5.1 成員變量和方法72.5.2 詳細類圖72.6 ModifySituation類82.6.1 成員變量和方法82.

5、6.2 詳細類圖82.7 Delete類92.7.1成員變量和方法92.7.2詳細類圖93編碼實現104系統測試384.1ManagerWindow創建窗口384.2InputStudent學生信息錄入窗口384.3Inquest查詢,打印窗口394.4 ModifySituation信息修改窗口394.5Delete刪除信息窗口39總 結401需求與總體設計1.1需求分析學生信息管理系統是一個教育單位不可缺少的部分。一個功能齊全、簡單易用的信息管理系統不但能有效地減輕學校相關工作人員的工作負擔,它的內容對于學校的決策者和管理者來說都至關重要。所以學生信息管理系統應該能夠為用戶提供充足的信息和

6、快捷的查詢手段。但一直以來人們使用傳統人工的方式管理文件檔案、統計和查詢數據,隨著科學技術的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領域并發揮著來越重要的作用。作為計算機應用的一部分,使用計算機對學校的各類信息進行管理,具有手工管理所無法比擬的優點. 本系統完成了學生信息的增加、修改、刪除、查詢。1.2總體設計在設計學籍管理系統時,需要編寫7個Java源文件:ManagerWindow.java ,ModifySituation.java,InputStudent.java,Inquest.java,Delete.java ,Student.java,

7、StudentPicture.java。學籍管理系統除了需要編寫的7個Java源文件所給出的類外,還需要Java系統提供的一些重要的類,如JMenuItem,HashMap和File等類。專業.txt:學籍管理系統通過使用名字為“專業.txt”的文本文件來生成專業名稱列表,以便靈活、有效地錄入專業信息。允許用戶自己編寫“專業.txt”文件,只要將該文件和應用程序存放到同一目錄中即可。ManagerWindow.java(主類):ManagerWindow類負責創建學籍管理系統的主窗口,該類含有main方法,程序從該類開始執行。ManagerWindow類的成員變量中有4種重要類型的對象:Inp

8、utStudent、Inquest、ModifySituation和Delete對象。ManagerWindow類的主要成員的作用將在后面詳細闡述。Student.java:Student類所創建的對象是InputStudent類的成員之一,負責封裝學生的基本信息。StudentPicture.java:StudentPicture類所創建的對象是InputStudent、Inpuest和ModifySituation類的成員之一,負責顯示學生的照片。InputStudent.java: InputStudent類創建的對象是MangerWindow類的重要成員之一,負責提供錄入學生基本信息的

9、界面。Inquest.java:Inquest類創建的對象是MangerWindow類的重要成員之一,負責提供查詢學生基本信息及打印基本信息的界面。ModifySituation.java:ModifySituation類創建的對象是MangerWindow類的重要成員之一,負責提供修改學生基本信息的界面。Delete.java:Delete類創建的對象是MangerWindow類的重要成員之一,負責提供刪除學生基本信息的界面。1.3設計要求1、錄入學生信息:用戶可以通過菜單選項讓程序呈現“錄入學生基本信息”功能的界面,系統操作人員打開學生信息添加界面,輸入相關的信息(姓名、性別、出生日期、照

10、片、專業和學院等)。2、修改學生信息:根據學生的學號查詢出該學生的相關信息,修改相關條目后保存在數據庫中。3、刪除學生信息:根據學生的學號查詢出該學生的相關信息,確定刪除后,在數據庫中刪除該信息。4、查詢、打印學生信息:可以根據學生學號、學生姓名、學生性別、學生所學專業、學生所屬學院來對學生信息進行查詢,所有符合查詢條件的學生信息將都被顯示出來。1.4系統主要功能圖系統的主要功能:學籍管理系統所用到的一些重要的類以及之間的組合關系如下圖學籍管理系統除了需要編寫的7個Java源文件所給出的類外,還需要Java系統提供的一些重要的類,如JMenuItem,HashMap和File等類1.5系統主要

11、類圖2詳細設計2.1 ManagerWindow類2.1.1 成員變量和方法l “基本信息錄入”是InputStudent對象,負責提供錄入信息的界面。l “基本信息修改”是ModifySituation對象,負責提供修改信息的界面。l “基本信息查詢”是Inquest對象,負責提供查詢與打印信息的界面。l “基本信息刪除”是Delete對象,負責提供刪除信息的界面。l “基本信息”是HashMap<String,Student>創建的散列映射,用于存儲鍵/值數據對,其中的鍵必須是一個String對象,鍵對應的值必須是Student對象。l file是Flie文件對象,程序將“基本

12、信息”散列映射寫入該文件中。l “錄入”、“修改”、“查詢”、“刪除”和“歡迎界面”是JMenuItem創建的菜單項,這些菜單項都將當前窗口注冊為自己的ActionEvent事件監視器。l ManagerWindow()是構造方法,負責完成窗口的初始化。l actionPerformed(ActionEvent)方法是ManagerWindow類實現的ActionListener接口中的方法。ManagerWindow創建的窗口是“錄入”、“刪除”、“查詢與打印”、“刪除”和“歡迎界面”菜單項的ActionEvent事件監視器,當用戶選擇其中某個菜單項時,窗口將執行actionPerforme

13、d(ActionEvent)方法進行相應的操作。l main方法是程序運行的入口方法。2.1.2 詳細類圖2.2 Student類2.2.1 成員變量和方法l number、name、disciping、grade、borth、和sex是String對象,它們的值分別表示學生的“學號”、“姓名”、“專業”、“年級”、“出生日期”和“性別”。l imagePic是File對象,用來存放學生的照片圖像和引用。l setNumber(String)和getNumber()方法分別用來設置number和獲取number的值。l setImagePic(File)和getImagePic()方法分別用來

14、設置imagePic的引用。2.2.2 詳細類圖2.3 StudentPicture類2.3.1 成員變量和方法l imageFile是File對象,用來存放圖像文件的引用。l tool是Toolkit對象,負責創建Image對象。l StudentPicture()是構造方法,負責創建pic對象。l setImageFile(File)方法負責設置imageFile對象。l paintComponent(Graphics)方法負責繪制根據imageFile文件創建的Image對象。2.3.2 詳細類圖2.4 InputStudent類2.4.1 成員變量和方法l “學生”是Student創建

15、的對象,該對象含有和學生有關的數據。l pic是StudentPicture創建的對象,負責繪制學生的照片。l “基本信息表”是HashMap<String,Student>創建的散列映射,用于存儲鍵/值數據對,其中的鍵必須是一個String對象,鍵對應的值必須是Student對象。l “錄入”、“重置”和“選擇照片”是JButton創建的對象,這些按鈕都將當前容器注冊為自己的ActionEvent事件監視器。l systemFile和imagePic是File聲明的對象,其中systemFile存放的文件引用和ManagerWindow類中的file的相同,程序將“基本信息表”散

16、列映射寫入systemFile文件中;而imagePic存放的文件引用有用戶選擇指定。l InputStudent(File)是構造方法,用來創建“基本信息錄入”對象,當創建該對象時,通過該構造方法的參數將ManagerWindow類中的file的引用傳遞給systemFile。l actionPerformed(ActionEvent)方法是InputStudent類實現的ActionListener接口中的方法。InputStudent創建的容器是“錄入”、“重置”和“選擇照片”按鈕的ActionEvent事件監視器,當用戶單擊其中某個按鈕時,容器將執行actionPerformed(Ac

17、tionEvent)方法進行相應的操作。2.4.2 詳細類圖2.5 Inquest類2.5.1 成員變量和方法l pic是StudentPicture創建的對象,負責繪制學生的照片。l print是PrintJob對象,負責打印。l “基本信息表”是HashMap<String,Student>創建的散列映射,用于存儲鍵/值數據對,其中的鍵必須是一個String對象,鍵對應的值必須是Student對象。程序將從systemFile文件中讀出曾寫入到該文件中的HashMap<String,Student>對象,并將這個對象的引用賦給“基本信息表”,然后查詢“基本信息表”中

18、的數據。l “查詢”、“打印文本照片”、“打印文本”和“打印照片”是JButton創建的對象,這些按鈕都將當前容器注冊為自己的ActionEvent事件監視器。l systemFil是File聲明的對象,其中systemFile存放的文件引用和ManagerWindow類中的file的相同。 l Inquest(File)是構造方法,用來創建“基本信息查詢”對象,當創建該對象時,通過該構造方法的參數將ManagerWindow類中的file的引用傳遞給systemFile。l actionPerformed(ActionEvent)方法是InputStudent類實現的ActionListen

19、er接口中的方法。Inquest創建的對話框是“查詢”、“打印文本照片”、“打印文本”和“打印照片”按鈕的ActionEvent事件監視器,當用戶單擊其中某個按鈕時,對話框將執行actionPerformed(ActionEvent)方法進行相應的操作。2.5.2 詳細類圖2.6 ModifySituation類2.6.1 成員變量和方法l pic是StudentPicture創建的對象,負責繪制學生的照片。l “基本信息表”是HashMap<String,Student>創建的散列映射,用于存儲鍵/值數據對,其中的鍵必須是一個String對象,鍵對應的值必須是Student對象。

20、程序將從systemFile文件中讀出曾寫入到該文件中的HashMap<String,Student>對象,并將這個對象的引用賦給“基本信息表”。程序可以修改“基本信息表”中的數據,然后再將“基本信息表”寫入到systemFile文件中。l “開始修改”、“錄入修改”、“重置”和“選擇照片”是JButton創建的對象,這些按鈕都將當前容器注冊為自己的ActionEvent事件監視器。l systemFile和imagePic是File聲明的對象,其中systemFile存放的文件引用和ManagerWindow類中的file的相同,imagePic存放的文件引用有用戶選擇指定。l

21、ModifySituation(File)是構造方法,用來創建“基本信息修改”對象,當創建該對象時,通過該構造方法的參數將ManagerWindow類中的file的引用傳遞給systemFile。l actionPerformed(ActionEvent)方法是InputStudent類實現的ActionListener接口中的方法。InputStudent創建的容器是“開始修改”、“錄入修改”、“重置”和“選擇照片”按鈕的ActionEvent事件監視器,當用戶單擊其中某個按鈕時,容器將執行actionPerformed(ActionEvent)方法進行相應的操作。2.6.2 詳細類圖2.7

22、 Delete類2.7.1成員變量和方法l “基本信息表”是HashMap<String,Student>創建的散列映射,用于存儲鍵/值數據對,其中的鍵必須是一個String對象,鍵對應的值必須是Student對象。程序將從systemFile文件中讀出曾寫入到該文件中的HashMap<String,Student>對象,并將這個對象的引用賦給“基本信息表”。程序可以刪除“基本信息表”中的特定數據,然后再將“基本信息表”寫入到systemFile文件中。l “刪除”是JButton創建的對象,這些按鈕都將當前容器注冊為自己的ActionEvent事件監視器。l syst

23、emFile和imagePic是File聲明的對象,其中systemFile存放的文件引用和ManagerWindow類中的file的相同。l Delete(File)是構造方法,用來創建“基本信息刪除”對象,當創建該對象時,通過該構造方法的參數將ManagerWindow類中的file的引用傳遞給systemFile。l actionPerformed(ActionEvent)方法是InputStudent類實現的ActionListener接口中的方法。InputStudent創建的容器是“刪除”按鈕的AcionEvent事件監視器,當用戶單擊該按鈕時,容器將執行actionPerform

24、ed(ActionEvent)方法進行相應的操作。2.7.2詳細類圖3編碼實現源代碼package 學生學籍管理系統;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.HashMap;import java.util.*;import javax.swing.filechooser.*;public class ManagerWindow extends JFrame implements ActionListenerpublic static voi

25、d main(String args) new ManagerWindow(); InputStudent 基本信息錄入; ModifySituation 基本信息修改; Inquest 基本信息查詢與打印; Delete 基本信息刪除; JMenuBar bar; JMenu fileMenu; JMenuItem 錄入,修改,查詢與打印,刪除,歡迎界面; HashMap<String,Student> 基本信息=null; File file=null; CardLayout card=null; JLabel label=null; JPanel pCenter; publi

26、c ManagerWindow() 錄入=new JMenuItem("錄入學生基本信息"); 修改=new JMenuItem("修改學生基本信息"); 查詢與打印=new JMenuItem("查詢與打印學生基本信息"); 刪除=new JMenuItem("刪除學生基本信息"); 歡迎界面=new JMenuItem("歡迎界面"); bar=new JMenuBar(); fileMenu=new JMenu("菜單選項"); fileMenu.add(錄入); fi

27、leMenu.add(修改); fileMenu.add(查詢與打印); fileMenu.add(刪除); fileMenu.add(歡迎界面); bar.add(fileMenu); setJMenuBar(bar); label=new JLabel("學籍管理系統",JLabel.CENTER); label.setIcon(new ImageIcon("welcome.jpg"); label.setFont(new Font("隸書",Font.BOLD,36); label.setHorizontalTextPositi

28、on(SwingConstants.CENTER); label.setForeground(Color.red); 基本信息=new HashMap<String,Student>(); 錄入.addActionListener(this); 修改.addActionListener(this); 查詢與打印.addActionListener(this); 刪除.addActionListener(this); 歡迎界面.addActionListener(this); card=new CardLayout(); pCenter=new JPanel(); pCenter.s

29、etLayout(card); file=new File("基本信息.txt"); if(!file.exists() try FileOutputStream out=new FileOutputStream(file); ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(基本信息); objectOut.close(); out.close(); catch(IOException e) 基本信息錄入=new InputStudent(file); 基本信息修

30、改=new ModifySituation(file); 基本信息查詢與打印=new Inquest(file); 基本信息刪除=new Delete(file); pCenter.add("歡迎界面",label); pCenter.add("錄入界面",基本信息錄入); pCenter.add("修改界面",基本信息修改); pCenter.add("刪除界面",基本信息刪除); add(pCenter,BorderLayout.CENTER); validate(); setVisible(true); se

31、tBounds(100,50,460,280); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) int n=JOptionPane.showConfirmDialog(null,"確認退出嗎?","確認對話框", JOptionPane.YES_NO_OPTION ); if(n=JOptionPane.YES_OPTION) Syste

32、m.exit(0); ); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=錄入) 基本信息錄入.clearMess(); card.show(pCenter,"錄入界面"); else if(e.getSource()=修改) 基本信息修改.clearMess(); card.show(pCenter,"修改界面"); else if(e.getSource()=查詢與打印) 基本信息查詢與打印.clearMess(); 基本信息查詢與打印.setLocat

33、ion(getBounds().x+getBounds().width,getBounds().y); 基本信息查詢與打印.setVisible(true); else if(e.getSource()=刪除) card.show(pCenter,"刪除界面"); else if(e.getSource()=歡迎界面) card.show(pCenter,"歡迎界面"); class Student implements Serializable String number,name,discipling,grade,borth,sex; File im

34、agePic; public void setNumber(String number) this.number=number; public String getNumber() return number; public void setName(String name) =name; public String getName() return name; public void setDiscipling(String discipling) this.discipling=discipling; public String getDisciping() return

35、 discipling; public void setGrade(String grade) this.grade=grade; public String getGrade() return grade; public void setBorth(String borth) this.borth=borth; public String getBorth() return borth; public void setSex(String sex) this.sex=sex; public String getSex() return sex; public void setImagePic

36、(File image) imagePic=image; public File getImagePic() return imagePic; class StudentPicture extends JPanel File imageFile; Toolkit tool; public StudentPicture() tool=getToolkit(); public void setImage(File imageFile) this.imageFile=imageFile; repaint(); public void paintComponent(Graphics g) super.

37、paintComponent(g); int w=getBounds().width; int h=getBounds().height; if(imageFile!=null) Image image=tool.getImage(imageFile.getAbsolutePath(); g.drawImage(image,0,0,w,h,this); else g.drawString("沒有選擇照片圖像",20,30); class InputStudent extends JPanel implements ActionListener Student 學生=null

38、; StudentPicture pic; HashMap<String,Student> 基本信息表=null; JTextField 學號,姓名,年級,出生; JButton 選擇照片; JComboBox 專業; JRadioButton 男,女; ButtonGroup group=null; JButton 錄入,重置; FileInputStream inOne=null; ObjectInputStream inTwo=null; FileOutputStream outOne=null; ObjectOutputStream outTwo=null; File sy

39、stemFile,imagePic; public InputStudent(File file) systemFile=file; pic=new StudentPicture(); 學號=new JTextField(5); 姓名=new JTextField(5); 專業=new JComboBox(); try FileReader inOne=new FileReader("專業.txt"); BufferedReader inTwo= new BufferedReader(inOne); String s=null; int i=0; while(s=inTwo

40、.readLine()!=null) 專業.addItem(s); inOne.close(); inTwo.close(); catch(IOException exp) 專業.addItem("數學"); 專業.addItem("計算機科學與技術"); 年級=new JTextField(5); 出生=new JTextField(5); 選擇照片=new JButton("選擇"); group=new ButtonGroup(); 男=new JRadioButton("男",true); 女=new JR

41、adioButton("女",false); group.add(男); group.add(女); 錄入=new JButton("錄入"); 重置=new JButton("重置"); 錄入.addActionListener(this); 選擇照片.addActionListener(this); 重置.addActionListener(this); Box box1=Box.createHorizontalBox(); box1.add(new JLabel("學號:",JLabel.CENTER); b

42、ox1.add(學號); Box box2=Box.createHorizontalBox(); box2.add(new JLabel("姓名:",JLabel.CENTER); box2.add(姓名); Box box3=Box.createHorizontalBox(); box3.add(new JLabel("性別:",JLabel.CENTER); box3.add(男); box3.add(女); Box box4=Box.createHorizontalBox(); box4.add(new JLabel("專業:"

43、,JLabel.CENTER); box4.add(專業); Box box5=Box.createHorizontalBox(); box5.add(new JLabel("年級:",JLabel.CENTER); box5.add(年級); Box box6=Box.createHorizontalBox(); box6.add(new JLabel("出生:",JLabel.CENTER); box6.add(出生); Box boxH=Box.createVerticalBox(); boxH.add(box1); boxH.add(box2);

44、 boxH.add(box3); boxH.add(box4); boxH.add(box5); boxH.add(box6); boxH.add(Box.createVerticalGlue(); JPanel picPanel=new JPanel(); picPanel.setBackground(Color.green); picPanel.add(new JLabel("選擇照片:",JLabel.CENTER); picPanel.add(選擇照片); JPanel putButton=new JPanel(); putButton.add(錄入); putBu

45、tton.add(重置); JPanel messPanel=new JPanel(); messPanel.add(boxH); messPanel.setBackground(Color.cyan); putButton.setBackground(Color.red); setLayout(new BorderLayout(); JSplitPane splitV= new JSplitPane(JSplitPane.VERTICAL_SPLIT,picPanel,pic); JSplitPane splitH=new JSplitPane(JSplitPane.HORIZONTAL_S

46、PLIT,messPanel,splitV); add(splitH,BorderLayout.CENTER); add(putButton,BorderLayout.SOUTH); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=錄入) String number="" number=學號.getText(); if(number.length()>0) try inOne=new FileInputStream(systemFile); inTwo=new Object

47、InputStream(inOne); 基本信息表=(HashMap<String,Student>)inTwo.readObject(); inOne.close(); inTwo.close(); catch(Exception ee) if(基本信息表.containsKey(number) String warning="該生基本信息已存在,請到修改頁面修改!" JOptionPane.showMessageDialog(this,warning,"警告", JOptionPane.WARNING_MESSAGE); else Str

48、ing m="基本信息將被錄入!" int ok=JOptionPane.showConfirmDialog(this,m,"確認", JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE); if(ok=JOptionPane.YES_OPTION) String name=姓名.getText(); String discipling=(String)專業.getSelectedItem(); String grade=年級.getText(); String borth=出生.getText(); String sex=null; if(男.isSelected

溫馨提示

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

評論

0/150

提交評論