學(xué)生管理系統(tǒng)實(shí)訓(xùn)報告(java語言)_第1頁
學(xué)生管理系統(tǒng)實(shí)訓(xùn)報告(java語言)_第2頁
學(xué)生管理系統(tǒng)實(shí)訓(xùn)報告(java語言)_第3頁
學(xué)生管理系統(tǒng)實(shí)訓(xùn)報告(java語言)_第4頁
學(xué)生管理系統(tǒng)實(shí)訓(xùn)報告(java語言)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Java實(shí)訓(xùn)設(shè)計報告PAGE PAGE 15Java實(shí)訓(xùn)設(shè)計報告學(xué)生管理系統(tǒng)一、項(xiàng)目需求通過與科信學(xué)院教務(wù)人員的詳細(xì)交流,目標(biāo)系統(tǒng)具備以下功能。1. 教師客戶端功能* 可以更改密碼;* 可以添加學(xué)生,并要求填寫學(xué)生基本信息;* 可以根據(jù)學(xué)號查詢學(xué)生基本信息及其成績;* 有權(quán)限控制,每個管理員只能管理其所在學(xué)院的信息;* 可以添加新課程、新班級;* 可以控制選課的課程范圍,并可以控制選課的時間,即:可以控制選課開始和結(jié)束時間;* 可以錄入成績,緩存成績,檢查無誤后公布成績。2. 學(xué)生客戶端功能* 學(xué)生可以查看自己的基本信息;* 學(xué)生可以查看自己的成績,已修學(xué)分和不及格成績信息;* 學(xué)生端可以進(jìn)行

2、遠(yuǎn)程選課,并且可以查看課表。根據(jù)以上相關(guān)功能,現(xiàn)規(guī)劃數(shù)據(jù)流圖和數(shù)據(jù)字典如下:二、項(xiàng)目設(shè)計在設(shè)計學(xué)生管理系統(tǒng)時,編寫20個Java源文件:ChangePwd.java、ChangePwdTeacher.java、ChoseCourse.java、CourseTable.java、CourseManage.java、GetScore.java、GetStuInfo.java、GradeInDB.java、Login.java、NewClass.java、NewCourse.java、NewStu.java、StuClient.java、StuFailGrade.java、StuGrade.java

3、 、StuInfo.java、StuScore.java、TeacherClient.java、TeachSearchInfo.java、Welcome.java學(xué)生管理系統(tǒng)除了上述20個Java源文件所給出的類外,還需要Java系統(tǒng)提供的一些重要類,如JButton,JTextField,JTextArea,LinkedList等。下面是20個Java源文件的功能:(1)Login.java(主類)Login類負(fù)責(zé)創(chuàng)建學(xué)生管理系統(tǒng)登陸界面的主窗口,該類含有main方法,學(xué)生管理系統(tǒng)從該類開始執(zhí)行。Login類是繼承Jframe類,有一個ActionListener接口,并且加載了Mysql數(shù)

4、據(jù)庫連接。該類中有兩種身份類型:學(xué)生、管理員,在登錄窗口中選擇相應(yīng)的身份類型,輸入信息正確后就會進(jìn)入相應(yīng)的客戶端。(2)ChangePwd.java類該類是學(xué)生客戶端修改密碼的類,在該類中,用戶提供原始密碼(登陸成功的密碼)后并且輸入新密碼和確認(rèn)新密碼后點(diǎn)擊“確認(rèn)”按鈕就可以修改密碼。(3)ChangePwdTeacher.java類該類是教師客戶端修改密碼的類,在該類中,用戶提供原始密碼(登陸成功的密碼)后并且輸入新密碼和確認(rèn)新密碼后點(diǎn)擊“確認(rèn)”按鈕就可以修改密碼。(4)ChoseCourse.java類該類主要是控制學(xué)生選課,學(xué)生根據(jù)教師安排的課程信息,由學(xué)生輸入已經(jīng)安排好的“課程號”就可

5、以選課。(5)CourseTable.java類該類主要控制學(xué)生的課程安排,就是以課表顯示學(xué)生的選課信息。(6)NewClass.java類該類主要是有教師操作,教師通過輸入正確的班級號、班級名、專業(yè)信息后就可以添加新的班級。(7)NewStu.java類該類作為教師客戶端的一個主要模塊,該模塊是教師添加新學(xué)生。教師通過輸入學(xué)生的基本信息,包括:姓名、出生年月、學(xué)號、籍貫、入學(xué)年份、專業(yè)等等。這樣就可以添加新學(xué)生。(8)StuClient.java類該類是基于Login類的,這是學(xué)生客戶端的界面類,該類控制了學(xué)生客戶端要顯示什么內(nèi)容,由什么功能等等。包括:修改密碼、查看自己基本信息和成績、選課

6、等功能界面的顯示。(9)TeacherClient.java類該類是教師客戶端界面的類,該類和StuClient類的功能基本相似,主要包括修改密碼、添加新學(xué)生、查看學(xué)生基本信息和成績信息、進(jìn)行課程安排、添加新課程和班級等功能的顯示。(10)StuInfo.java類StuInfo.java類是學(xué)生查詢學(xué)生自己的基本信息。(11)TeachSearchInfo.java類TeachSearchInfo.java類是教師根據(jù)學(xué)生提供的基本信息建立學(xué)生基本信息電子檔案。即新生報到功能的實(shí)現(xiàn)。(12)Welcome.java類該類最為簡單,僅僅通過一張xs.jpg圖片顯示在學(xué)生和教師客戶端中。(13)

7、CourseManage.java類該類是教師管理課程,教師可以對課程安排,包括:周次、任課教師、學(xué)分等信息,為學(xué)生選課做準(zhǔn)備。(14)GetScore.java類該類是提供學(xué)生的成績各科成績,包括及格成績和不及格成績,以及學(xué)分。(15)GetStuInfo.java類根據(jù)學(xué)號獲得學(xué)生相應(yīng)基本信息的方法。教師在輸入學(xué)生學(xué)號后點(diǎn)擊“查詢”按鈕查看相應(yīng)學(xué)生的基本信息。(16)GradeInDB.java類該類的功能是公布學(xué)生某一科的成績,教師通過點(diǎn)擊“公布該科成績單”就會公布該科的成績,學(xué)生就會在學(xué)生自己客戶端查看自己的成績信息。(17)NewCourse.java類該類主要是有教師操作,教師通過

8、輸入正確的課程號、課程名、學(xué)分信息后就可以添加新的課程,這個類與NewClass.Java的功能相似。(18)StuFailGrade.java類該類功能是顯示學(xué)生的不及格成績。學(xué)生在查看成績時候,點(diǎn)擊“不及格成績”時顯示的界面。(19)StuGrade.java類該類功能是顯示學(xué)生的已修課程成績。學(xué)生在查看成績時候,點(diǎn)擊“已修課程成績”時顯示的界面。(20)StuScore.java類該類是教師通過輸入學(xué)生的“學(xué)號”進(jìn)行查詢學(xué)生的成績信息。1、Login類(主類)(1)數(shù)據(jù)和方法Login類是javax.swing包中JFrame的一個字類,并實(shí)現(xiàn)了ActionListener接口。類中有關(guān)

9、數(shù)據(jù)和方法的詳細(xì)說明。1)成員變量該類中的變量大部分都是私有的,這樣有利于信息的封裝。其中包括:private Connection conn;/連接數(shù)據(jù)庫用到private Statement stmt; /執(zhí)行數(shù)據(jù)庫語句private ResultSet rs; /結(jié)果集private JPanel jp=new JPanel();/創(chuàng)建用來存放空間的容器private JLabel jl1=new JLabel(用戶名);private JLabel jl2=new JLabel(密碼);/創(chuàng)建用戶名和密碼輸入框private JTextField jtf=new JTextField(

10、);private JPasswordField jpwf=new JPasswordField();private JRadioButton jrbArray=new JRadioButton(普通學(xué)生,true),new JRadioButton(管理人員);/創(chuàng)建單選按鈕數(shù)組private ButtonGroup bg=new ButtonGroup();/創(chuàng)建組/創(chuàng)建操作按鈕private JButton jb1=new JButton(登陸);private JButton jb2=new JButton(重置);2)方法main(String args);方法是學(xué)生管理系統(tǒng)程序運(yùn)行

11、的入口方法。Login();是構(gòu)造方法,負(fù)責(zé)完成窗口的初始化。addListener();添加事件監(jiān)聽器方法。initialFrame();初始化窗體actionPerformed(ActionEvent e);實(shí)現(xiàn)接口方法initialConnection();自定義的初始化數(shù)據(jù)庫連接的方法closeConn();關(guān)閉數(shù)據(jù)庫2、代碼import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.util.*;import .*;import java.i

12、o.*;import java.sql.*;import javax.sql.*;public class Login extends JFrame implements ActionListener private String host;/聲明Connection引用、Statement對象引用與結(jié)果集引用private Connection conn;private Statement stmt;private ResultSet rs;private JPanel jp=new JPanel();/創(chuàng)建用來存放空間的容器private JLabel jl1=new JLabel(用戶名

13、);private JLabel jl2=new JLabel(密碼);private JLabel jl3=new JLabel();/正在登陸提示標(biāo)簽/創(chuàng)建用戶名和密碼輸入框private JTextField jtf=new JTextField();private JPasswordField jpwf=new JPasswordField();private JRadioButton jrbArray=new JRadioButton(普通學(xué)生,true),new JRadioButton(管理人員);/創(chuàng)建單選按鈕數(shù)組private ButtonGroup bg=new Butto

14、nGroup();/創(chuàng)建組/創(chuàng)建操作按鈕private JButton jb1=new JButton(登陸);private JButton jb2=new JButton(重置);public Login() this.addListener(); initialFrame();/初始化界面 public void addListener() this.jb1.addActionListener(this);/為登陸按鈕注冊監(jiān)聽器this.jb2.addActionListener(this);/為重置按鈕注冊監(jiān)聽器this.jtf.addActionListener(this);/為用戶

15、名文本框注冊監(jiān)聽器this.jpwf.addActionListener(this);/為用戶名密碼框注冊監(jiān)聽器public void initialFrame() jp.setLayout(null); /設(shè)為空布局/將控件添加到容器相應(yīng)位置jl1.setBounds(30,100,110,25);jp.add(jl1);jtf.setBounds(120,100,130,25);jp.add(jtf);jl2.setBounds(30,140,110,25);jp.add(jl2);jpwf.setBounds(120,140,130,25);jp.add(jpwf);jpwf.setEc

16、hoChar(*);bg.add(jrbArray0);bg.add(jrbArray1);jrbArray0.setBounds(40,180,100,25);jp.add(jrbArray0);jrbArray1.setBounds(145,180,100,25);jp.add(jrbArray1);jb1.setBounds(35,210,100,30);jp.add(jb1);jb2.setBounds(150,210,100,30);jp.add(jb2);jl3.setBounds(40,250,150,25);jp.add(jl3);this.add(jp);/設(shè)置窗口的標(biāo)題、大

17、小、位置以及可見性this.setTitle(登陸);this.setResizable(false);Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();int centerX=screenSize.width/2;int centerY=screenSize.height/2;int w=300;/本窗體寬度int h=320;/本窗體高度this.setBounds(centerX-w/2,centerY-h/2-100,w,h);/設(shè)置窗體出現(xiàn)在屏幕中this.setVisible(true);publi

18、c void actionPerformed(ActionEvent e) if(e.getSource()=jb1)/按下登陸按鈕String name=this.jtf.getText().trim();if(name.equals()JOptionPane.showMessageDialog(this,請輸入用戶名,錯誤,JOptionPane.ERROR_MESSAGE);jl3.setText(); return;String pwd=new String(jpwf.getPassword().trim();if(pwd.equals()JOptionPane.showMessage

19、Dialog(this,請輸入密碼,錯誤,JOptionPane.ERROR_MESSAGE);jl3.setText(); return;int type=this.jrbArray0.isSelected()?0:1;/獲取登陸類型try/初始化連接 this.initialConnection();if(type=0)/普通學(xué)生登陸String sql=select * from user_stu where stu_id=+name+ and pwd=+pwd+; rs=stmt.executeQuery(sql);if(rs.next() new StuClient(name);/創(chuàng)

20、建學(xué)生客戶短窗口this.dispose();/關(guān)閉登陸窗口并釋放資源else/彈出錯誤提示窗口JOptionPane.showMessageDialog(this,用戶名或密碼錯誤,錯誤,JOptionPane.ERROR_MESSAGE);jl3.setText();this.closeConn();/關(guān)閉連接,語句及結(jié)果集else/教師登陸String sql=select coll_id from user_teacher where uid=+name+ and pwd=+pwd+;rs=stmt.executeQuery(sql);if(rs.next() String coll_

21、id=rs.getString(1);new TeacherClient(coll_id);/創(chuàng)建教師客戶端窗口this.dispose();/關(guān)閉登陸窗口并釋放資源else/彈出錯誤提示窗口JOptionPane.showMessageDialog(this,用戶名或密碼錯誤,錯誤,JOptionPane.ERROR_MESSAGE);jl3.setText();this.closeConn();/關(guān)閉連接,語句及結(jié)果集catch(SQLException ea) ea.printStackTrace();else if(e.getSource()=this.jb2)/按下重置按鈕,清空輸入

22、信息 this.jtf.setText(); this.jpwf.setText(); else if(e.getSource()=jtf)/當(dāng)輸入用戶名并回車時this.jpwf.requestFocus(true);else if(e.getSource()=jpwf)/當(dāng)輸入密碼并回車時this.jb1.requestFocus(true);/自定義的初始化數(shù)據(jù)庫連接的方法public void initialConnection() try/加載驅(qū)動,創(chuàng)建Connection及StatementClass.forName(org.gjt.mm.mysql.Driver); conn=D

23、riverManager.getConnection(jdbc:mysql:/localhost:3306/test,root,root); stmt=conn.createStatement();catch(SQLException e)JOptionPane.showMessageDialog(this,連接失敗,請檢查主機(jī)地址是否正確,錯誤,JOptionPane.ERROR_MESSAGE); e.printStackTrace();catch(ClassNotFoundException e)e.printStackTrace();/初始化的關(guān)閉數(shù)據(jù)庫連接的方法public void

24、 closeConn() try if(rs!=null)rs.close();if(stmt!=null)stmt.close();if(conn!=null)conn.close();catch(SQLException e)e.printStackTrace();public static void main(String args) Login login=new Login();/創(chuàng)建登陸窗體對象3、效果圖Login創(chuàng)建的窗口效果如圖1所示。圖1 登錄窗體學(xué)生管理系統(tǒng)共有三個窗體:登錄窗體、教師客戶端窗體、學(xué)生客戶端窗體。主要操作如下:(1)如果用戶名或密碼錯誤,則會彈窗錯誤提示對話

25、框,如圖2所示。圖2 錯誤提示框(2)當(dāng)用戶為教師時,登錄成功后的窗體會自動全屏顯示,展開左邊的樹狀列表,如圖3所示,然后通過單擊不同節(jié)點(diǎn)進(jìn)行相應(yīng)的業(yè)務(wù)操作。圖3教師客戶端主窗體(3)通過單擊“退出”節(jié)點(diǎn)時,系統(tǒng)會彈出對話框確認(rèn),如圖4所示,根據(jù)用戶選擇進(jìn)行相應(yīng)操作。圖4退出確認(rèn)效果圖圖5 添加學(xué)生窗體(4)當(dāng)有新生報到時,用戶可以單擊“新生報到”節(jié)點(diǎn),進(jìn)入如圖5所示的添加學(xué)生窗體界面。(5)當(dāng)教師需要查詢某個學(xué)生的基本信息時,可以單擊“基本信息查詢”節(jié)點(diǎn)輸入學(xué)號進(jìn)行查詢,界面如圖6所示。圖6 學(xué)生基本信息查詢窗體(6)每學(xué)期開始,各學(xué)院都應(yīng)該為學(xué)生安排可選課程,這時可以通過“開課選項(xiàng)設(shè)置”進(jìn)入選課設(shè)置界面進(jìn)行操作,如圖7所示。教師進(jìn)行課程設(shè)置后效果如圖8所示圖7 開課選項(xiàng)設(shè)置窗體圖8 開課選項(xiàng)設(shè)置效果圖圖9 成績錄入窗體(7)在每個學(xué)期期末,需

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論