JAVA_課程設(shè)計(jì)報(bào)告_第1頁(yè)
JAVA_課程設(shè)計(jì)報(bào)告_第2頁(yè)
JAVA_課程設(shè)計(jì)報(bào)告_第3頁(yè)
JAVA_課程設(shè)計(jì)報(bào)告_第4頁(yè)
JAVA_課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、JAVA程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告 設(shè)計(jì)題目: 學(xué)生信息管理系統(tǒng) 學(xué)院名稱: 信息工程學(xué)院 專業(yè)班級(jí): 13計(jì)本1 姓 名: 學(xué) 號(hào): 目錄一 需求分析。3二 概要設(shè)計(jì)。3三 詳細(xì)設(shè)計(jì)。3 3.1 數(shù)據(jù)庫(kù)設(shè)計(jì)。3 3.2 模塊及窗體設(shè)計(jì)。33.2.1 數(shù)據(jù)庫(kù)模塊設(shè)計(jì)。33.2.2 用戶登錄識(shí)別模塊。53.2.3用戶信息管理模塊。6(1) 密碼修改。6(2)用戶信息添加和刪除。83.2.4 學(xué)生息管理模塊。10(1)添加信息。10(2)信息查看。11(3)信息修改。12(4)刪除信息。143.2.5 系統(tǒng)管理模塊。153.2.6 主窗體菜單設(shè)計(jì)。15四 軟件測(cè)試。15五 總結(jié)。15參考資料:17一 需

2、求分析 本系統(tǒng)的主要目的就是實(shí)現(xiàn)學(xué)生信息管理,使學(xué)生信息管理工作更加容易,從而提高工作效率,降低管理成本. 系統(tǒng)中需要對(duì)擁護(hù)身份進(jìn)行管理,采取登陸進(jìn)入系統(tǒng)的形式.二 概要設(shè)計(jì)/*概要設(shè)計(jì)階段主要是粗略描述整個(gè)軟件的框架,并從業(yè)務(wù)的角度描述軟件的模塊、工作流程等。項(xiàng)目的成功取決于設(shè)計(jì)的好壞,而概要設(shè)計(jì)則是整個(gè)設(shè)計(jì)的關(guān)鍵部分。概要設(shè)計(jì)的主要任務(wù)是將用戶的需求劃分為不同的功能,然后將這些功能細(xì)分成模塊,并給模塊一些規(guī)則約束,以達(dá)到各個(gè)模塊之間可以相互交流的目的。概要設(shè)計(jì)關(guān)乎到系統(tǒng)的整體架構(gòu),因此想做好一個(gè)概要設(shè)計(jì),不僅僅要熟悉用戶的業(yè)務(wù)流程,還要具備相當(dāng)豐富的設(shè)計(jì)經(jīng)驗(yàn)。2.1 概要設(shè)計(jì)的原則概要設(shè)計(jì)

3、是根據(jù)系統(tǒng)分析的需求和工作環(huán)境的情況對(duì)整個(gè)軟件的總體結(jié)構(gòu)進(jìn)行大致的設(shè)計(jì)。概要設(shè)計(jì)要堅(jiān)持以下幾個(gè)原則。(1)細(xì)分原則:軟件系統(tǒng)都是由很多不同的模塊組成,當(dāng)設(shè)計(jì)一套軟件時(shí),要先將所有的功能分解。解決復(fù)雜問題的方法是將其分解成幾個(gè)小問題,一個(gè)個(gè)來解決。(2)提高代碼重用性:在面向?qū)ο笤O(shè)計(jì)中,首先考慮的就是代碼的重用,一個(gè)好的設(shè)計(jì),將來在升級(jí)換代時(shí)不需要太大的改動(dòng),節(jié)省了人力物力。(3)從上而下層層分析:概要設(shè)計(jì)要從整體出發(fā),逐個(gè)剖析軟件的功能,從上而下,先分析系統(tǒng)總的功能,然后一步步細(xì)分,直到最小的功能模塊。(4)一致性原則:概要設(shè)計(jì)要求所有功能模塊在定義時(shí)使用統(tǒng)一的規(guī)范。(5)提高獨(dú)立性,減少耦合

4、:各個(gè)模塊與模塊之間盡量減少關(guān)聯(lián),否則修改一個(gè)地方就會(huì)引起其他多處的變動(dòng),不符合面向?qū)ο蟮脑瓌t。一般情況下,對(duì)類封裝后,只允許對(duì)類進(jìn)行擴(kuò)展,而不能修改,而封裝的類必須具有單一職責(zé),既理論情況下不允許兩個(gè)類共同完成一個(gè)功能。(6)模塊的大小要盡量適中:不是結(jié)構(gòu)算法越復(fù)雜的模塊越好,模塊的大小要根據(jù)實(shí)際工作目標(biāo)和其他類的耦合緊密程度來決定。經(jīng)驗(yàn)表明,一個(gè)模塊的規(guī)模不應(yīng)過大,模塊的總行數(shù)應(yīng)控制在10100行的范圍內(nèi),最好為3060行,這樣理解和閱讀都較方便。過長(zhǎng)的模塊往往是分解不充分的表現(xiàn),會(huì)增加閱讀理解的難度;但小規(guī)模太多也會(huì)使模塊之間聯(lián)系變得復(fù)雜,增大系統(tǒng)在模塊調(diào)用時(shí)傳遞信息所花費(fèi)的開銷。由于概

5、要設(shè)計(jì)是整個(gè)設(shè)計(jì)的重中之重,牽一發(fā)而動(dòng)全身,所以要努力做一個(gè)好的概要設(shè)計(jì),才能在今后軟件開發(fā)過程中不再反復(fù)?,F(xiàn)在軟件行業(yè)流行模式化驅(qū)動(dòng)設(shè)計(jì),將一些市場(chǎng)上比較成功的模式拿來用在自己的設(shè)計(jì)中。2.2 將用戶需求模塊化根據(jù)概要設(shè)計(jì)的原則來分析一下本項(xiàng)目的用戶需求,并最終轉(zhuǎn)化成用程序語言描述的模塊。什么樣的需求才是一個(gè)模塊?模塊應(yīng)該具備如下3個(gè)特征。(1)輸入和輸出:模塊必須能被調(diào)用并且正確的返回調(diào)用,而且調(diào)用都是相對(duì)一個(gè)對(duì)象而言,這是模塊獨(dú)立性的一個(gè)體現(xiàn)。(2)處理功能:模塊必須可以對(duì)調(diào)用的輸入數(shù)據(jù)進(jìn)行靈活的處理,并為輸出準(zhǔn)備好處理結(jié)果。(3)程序代碼:用來實(shí)現(xiàn)模塊功能的源代碼。3.3 確定系統(tǒng)最終

6、模塊概要設(shè)計(jì)中最重要的就是確定此項(xiàng)目包括哪些模塊。根據(jù)上兩節(jié)講述的設(shè)計(jì)原則和模塊特征,將用戶需求轉(zhuǎn)化為下面的模塊。*/2.1 UML用例圖1 用戶登錄信息管理2 用戶信息管理學(xué)生信息管理系統(tǒng)管理系統(tǒng)首頁(yè)用戶登陸信息管理用戶信息管理學(xué)生信息管理通過身份請(qǐng)求添加刪除用戶修改密碼添加查看修改刪除系統(tǒng)管理重新登陸退出登陸2.2 模塊設(shè)計(jì)1 數(shù)據(jù)庫(kù)設(shè)計(jì)模塊2 用戶登錄識(shí)別模塊3 用戶信息管理模塊4 學(xué)生信息管理模塊5 系統(tǒng)管理模塊三 詳細(xì)設(shè)計(jì)3.1 數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)名稱:student 表名:user, stud表user:存放登陸用戶的用戶名和密碼表stud:存放學(xué)生基本信息學(xué)生表(stus)字段名類

7、型備注stusIDVarchar(30)學(xué)生idstuNameNvarchar(50)Not nullstuSexNchar(1)性別男 或者女stuAgeint年齡0stuDeptNvarchar(30)所在系3.2 模塊及窗體設(shè)計(jì)3.2.1 數(shù)據(jù)庫(kù)模塊設(shè)計(jì)將數(shù)據(jù)庫(kù)的連接包裝在一個(gè)database類中,以便其他模塊能夠輕松調(diào)用,避免每次重寫數(shù)據(jù)庫(kù)連接代碼。下表是他的基本屬性文件名成員變量成員方法database.javapublic static Connection cn;public static Statement st; public static ResultSet rs;publ

8、ic static boolean joinDB()public static boolean executeSQL(String sqlString)public static boolean query(String sqlString)代碼如下:import java.sql.*;/引入包public class database public static Connection cn; /定義一個(gè)連接對(duì)象 public static Statement st;/定義一個(gè)SQL語句對(duì)象 public static ResultSet rs;/定義一個(gè)數(shù)據(jù)集 public static b

9、oolean joinDB() /用來判斷是否連接成功 boolean joinFlag; try joinFlag = true; Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/通過調(diào)用java.lang中的Class類的forName方法來實(shí)現(xiàn)JDBCODBC橋接器 cn = DriverManager.getConnection(jdbc:odbc:student,sa,);創(chuàng)建一個(gè)連接對(duì)象 cn.setCatalog(student);/加載數(shù)據(jù)庫(kù) System.out.println(數(shù)據(jù)庫(kù)連接成功); st = cn.createStat

10、ement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); /返回一個(gè)可滾動(dòng)的結(jié)果集,數(shù)據(jù)庫(kù)變化時(shí)結(jié)果集跟著變化 ;不能用結(jié)果集更新數(shù)據(jù)庫(kù)中的表 return joinFlag; catch (SQLException sqlEx) System.out.println(sqlEx.getMessage(); joinFlag = false; return joinFlag; catch (ClassNotFoundException notfoundEX) System.out.println(notfoundEX

11、.getMessage(); joinFlag = false; return joinFlag; public static boolean executeSQL(String sqlString) boolean executeFlag; try st.execute(sqlString); executeFlag = true; catch (Exception e) executeFlag = false; System.out.println(sql exception: + e.getMessage(); return executeFlag; public static bool

12、ean query(String sqlString) try rs = null; rs = st.executeQuery(sqlString); catch (Exception Ex) System.out.println(sql exception: + Ex); return false; return true; 3.2.2 用戶登錄識(shí)別模塊代碼封裝在類Land里,所用到的信息保存在表user里下表是他的基本屬性文件名控件成員方法Land.javaJLabel:labelname=newJLabel(用戶名)labelmima=new JLabel(密碼)Jbutton: bte

13、nter=new JButton(確定);btcancel=new JButton(清空);private void Judge(String sqlString)判斷用戶名和密碼是否正確的成員方法代碼:private void Judge(String sqlString) if (database.joinDB() /如果數(shù)據(jù)庫(kù)連接成功 if (database.query(sqlString) /如果SQL語句執(zhí)行成功 try if(database.rs.isBeforeFirst() /如果指向記錄集的在第一條記錄的前面 System.out.println(密碼正確); jf.se

14、tVisible(false);/窗體不可見 .close();/關(guān)閉數(shù)據(jù)庫(kù)連接 new Main();/主窗體 else System.out.println(錯(cuò)誤); new JOptionPane().showMessageDialog(null,用戶名或密碼錯(cuò)誤!,JOptionPane.ERROR_MESSAGE); catch(Exception ex) System.out.println(ex.getMessage(); else System.out.println(連接數(shù)據(jù)庫(kù)不成功!); 按鈕“確定”的監(jiān)聽事件代碼:public void actionPerformed (

15、ActionEvent e) if(textname.getText().equals()new JOptionPane().showMessageDialog(null,用戶名不能為空!);else if(textmima.getText().equals()new JOptionPane().showMessageDialog(null,密碼不能為空!);elseString sql=select * from user where user_id = + textname.getText() + and password = + textmima.getText()+ ;System.o

16、ut.println(sql);Judge(sql);/調(diào)用成員方法,判斷是否用戶名和密碼正確3.2.3 用戶信息管理模塊(1) 密碼修改用戶名將自動(dòng)從表user里檢索出來,供用戶選擇以下是它的基本屬性文件名控件名稱xgmima.javaJlabel: lbe2、lbe3、lbe4、lbe5jTextField: tf JpasswordField:pas1、pas2、pas3Jbutton: b1=new JButton(提交); b2=new JButton(退出);將所有用用戶名讀出來 database.joinDB();/連接數(shù)據(jù)庫(kù) String sql=select * from u

17、ser; try if(database.query(sql) while(database.rs.next()/依次將用戶名讀出 String name=database.rs.getString(user_id); tf.addItem(name); catch(Exception e)確定“按鈕”的監(jiān)聽事件代碼:b1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String name= + tf.getSelectedItem(); System.out.println

18、(name); String sql=select * from user where user_id=+ name +; System.out.println(sql); try if(database.query(sql) database.rs.next(); String ps1=pas1.getText(); String password=database.rs.getString(Password); if(ps1.equals(password) if(pas2.getText().equals(pas3.getText()String supdate=update user

19、set password=+ pas3.getText()+ where user_id=+ name +; database.executeSQL(supdate); new JOptionPane().showMessageDialog(null,密碼更改成功!); else new JOptionPane().showMessageDialog(null,兩次密碼不同!); else new JOptionPane().showMessageDialog(null,舊密碼不正確!); catch(Exception el) System.out.println(el); );(2)用戶信

20、息添加和刪除上半部分用來添加用戶,下半部分用來刪除用戶基本屬性如下文件名控件名AddDeleteUser.javaprivate JButton butACancel,butDCancel,butDelete,butOk; private JComboBox cbUserName; private JLabel jLabel1,jLabel2,jLabel3,jLabel4,jLabel5; private JPasswordField pas1,pas2,pas3; private JTextField txtname;/將所有用用戶名讀出來 database.joinDB(); Strin

21、g sql=select * from user; try if(database.query(sql) while(database.rs.next()/記錄集若有記錄則通過循環(huán)將數(shù)據(jù)依次讀出 String name=database.rs.getString(user_id); cbUserName.addItem(name); catch(Exception e)/為添加按鈕加事件- butOk.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e)if(txtname.getTe

22、xt().equals() /判斷是否為空new JOptionPane().showMessageDialog(null,用戶名不能為空!);else if(pas1.getText().equals()new JOptionPane().showMessageDialog(null,密碼不能為空!);else if(pas1.getText().equals(pas2.getText()String sql=insert into user values(+ txtname.getText() +,+ pas1.getText() +);tryif(database.executeSQL(

23、sql)/若SQL執(zhí)行成功 new JOptionPane().showMessageDialog(null,添加成功!); cbUserName.addItem(txtname.getText(); catch(Exception ea) );刪除按鈕監(jiān)聽事件代碼butDelete.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String name= + cbUserName.getSelectedItem();/得到用戶名 String sql=select * from

24、 user where user_id=+ name +; try if(database.query(sql) database.rs.next(); String pas=pas3.getText(); String password=database.rs.getString(Password); System.out.println(password); if(pas.equals(password)/比較密碼是否與記錄集里對(duì)應(yīng)一致 String sdelete=delete from user where user_id=+ name +; if(database.executeSQ

25、L(sdelete) new JOptionPane().showMessageDialog(null,刪除成功!); pas3.setText(); cbUserName.removeAllItems();/將刪除的條目從JcomboBox中刪除 String sql1=select * from user; if(database.query(sql1) while(database.rs.next()/更新JcomboBox條目 String name1=database.rs.getString(user_id); cbUserName.addItem(name1); else new

26、 JOptionPane().showMessageDialog(null,密碼不正確!); catch(Exception el) System.out.println(el); );3.2.4 學(xué)生信息管理模塊(1)添加信息 該添加是按照先添加學(xué)生信息,添加學(xué)生信息中的“添加“按鈕代碼:butOk.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e)if(jtf1.getText().equals()new JOptionPane().showMessageDialog(null,

27、學(xué)號(hào)不能為空);else if(jtf2.getText().equals()new JOptionPane().showMessageDialog(null,姓名不能為空);else if(jtf3.getText().equals()new JOptionPane().showMessageDialog(null,性別不能為空);else String sql=insert into stud values(+ jtf1.getText() +,+ jtf2.getText() +,+ jtf3.getText() +,+ jtf4.getText()+,+ jtf5.getText()+

28、,+ jtf6.getText()+,+ jtf7.getText()+);tryif(database.executeSQL(sql) new JOptionPane().showMessageDialog(null,添加成功!); catch(Exception ea) );(2)信息查看分為查看學(xué)生基本信息和查看學(xué)生成績(jī)信息,因?yàn)榇a和窗體大致相識(shí),進(jìn)取其一講述下面是他的屬性文件名稱控件名稱viewstud.java JtextArea:te=new JTextArea();代碼為:class viewstud extends JInternalFrame viewstud()super

29、(查看學(xué)生基本信息);/窗體顯示得名稱Container con=getContentPane();/創(chuàng)建JinternalFrame的容器對(duì)象con.setLayout(new BorderLayout();/設(shè)定窗體布局JTextArea te=new JTextArea();JScrollPane croll=new JScrollPane(te); /加載垂直水平滾動(dòng)條con.add(croll,BorderLayout.CENTER);database.joinDB(); /連接數(shù)據(jù)庫(kù) String sql=SELECT * FROM stud; try if(database.qu

30、ery(sql) while(database.rs.next() te.append(學(xué)號(hào): +database.rs.getString(1)+ ); te.append(姓名: +database.rs.getString(2)+ ); te.append(性別: +database.rs.getString(3)+ ); te.append(年齡: +database.rs.getString(4)+ ); te.append(政治面貌:+database.rs.getString(5)+ ); te.append(系別: +database.rs.getString(6)+ ); t

31、e.append(班級(jí): +database.rs.getString(7)+ );te.append(n); catch(SQLException ex) System.out.println(ex); this.setClosable(true);/關(guān)閉窗口可用setVisible(true);/窗體可見setBounds(20,70,600,350);(3)信息修改信息修改分為學(xué)生基本信息修改,學(xué)生成績(jī)信息修改,由于原理相似就以修改學(xué)生基本信息作為例子進(jìn)行介紹下面是他的屬性信息文件名稱控件名稱xiugai.java private JButton butCancel,butOk,butS

32、how;private JLabel jLabel1,jLabel2,jLabel3,jLabel4,jLabel5,jLabel6,jLabel7; private JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6,jtf7;顯示信息按鈕的監(jiān)聽事件代碼如下:database.joinDB(); butShow.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e)if(jtf1.getText().equals()new JOptionPane().sh

33、owMessageDialog(null,請(qǐng)輸入學(xué)號(hào));else String sql=select * from grade where 學(xué)號(hào)= + +jtf1.getText() +;tryif(database.query(sql)/此處用了個(gè)database.executeSQL(sql)提示resultset 關(guān)閉 if(!database.rs.first()JOptionPane.showMessageDialog(null,沒有該學(xué)生信息.); /下面是用來顯示其他文本框里的內(nèi)容else database.rs.first(); jtf2.setText(database.rs

34、.getString(VBA開發(fā)); jtf3.setText(database.rs.getString(大學(xué)英語); jtf4.setText(database.rs.getString(java開發(fā)); jtf5.setText(database.rs.getString(SQLServer); jtf6.setText(database.rs.getString(高等數(shù)學(xué)); jtf7.setText(database.rs.getString(網(wǎng)站建設(shè)); butOk.setEnabled(true); catch(NullPointerException upe) System.o

35、ut.println(upe.toString(); catch(SQLException sqle)System.out.println(sqle.toString();catch(Exception ex)System.out.println(ex.toString(); );(4)刪除信息刪除學(xué)生信息下面是窗口屬性文件名稱控件名稱shanchu.javaprivate JButton butCancel,butOk; private JLabel jLabel1; private JTextField jtf1;private JPanel p;butOk=new JButton(刪除)

36、;butCancel=new JButton(清空)刪除按鈕監(jiān)聽事件代碼如下:butOk.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e)if(jtf1.getText().equals()new JOptionPane().showMessageDialog(null,請(qǐng)輸入學(xué)號(hào));else String sql=select * from stud where 學(xué)號(hào)= + +jtf1.getText() +;tryif(database.query(sql)/此處用了個(gè)data

37、base.executeSQL(sql)提示resultset 關(guān)閉 if(!database.rs.first() JOptionPane.showMessageDialog(null,沒有該學(xué)生信息.);else String sqq=delete from stud where 學(xué)號(hào)= +jtf1.getText() +; String qll=delete from grade where 學(xué)號(hào)=+jtf1.getText() +; String slq=select * from grade where 學(xué)號(hào)=+jtf1.getText()+; if(database.query(slq) if(database.rs.first()if(database.executeSQL(qll) if(database.executeSQL(sqq)JOptionPane.showMessageDialog(null,刪除成功); 3.2.5 系統(tǒng)管理模塊重新登陸監(jiān)聽事件代碼:land.addActionListener(new ActionListener

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論