JAVA_課程設計報告_第1頁
JAVA_課程設計報告_第2頁
JAVA_課程設計報告_第3頁
JAVA_課程設計報告_第4頁
JAVA_課程設計報告_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

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

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

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

7、型備注stusIDVarchar(30)學生idstuNameNvarchar(50)Not nullstuSexNchar(1)性別男 或者女stuAgeint年齡0stuDeptNvarchar(30)所在系3.2 模塊及窗體設計3.2.1 數據庫模塊設計將數據庫的連接包裝在一個database類中,以便其他模塊能夠輕松調用,避免每次重寫數據庫連接代碼。下表是他的基本屬性文件名成員變量成員方法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; /定義一個連接對象 public static Statement st;/定義一個SQL語句對象 public static ResultSet rs;/定義一個數據集 public static b

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

10、ement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); /返回一個可滾動的結果集,數據庫變化時結果集跟著變化 ;不能用結果集更新數據庫中的表 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 用戶登錄識別模塊代碼封裝在類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() /如果數據庫連接成功 if (database.query(sqlString) /如果SQL語句執(zhí)行成功 try if(database.rs.isBeforeFirst() /如果指向記錄集的在第一條記錄的前面 System.out.println(密碼正確); jf.se

14、tVisible(false);/窗體不可見 .close();/關閉數據庫連接 new Main();/主窗體 else System.out.println(錯誤); new JOptionPane().showMessageDialog(null,用戶名或密碼錯誤!,JOptionPane.ERROR_MESSAGE); catch(Exception ex) System.out.println(ex.getMessage(); else System.out.println(連接數據庫不成功!); 按鈕“確定”的監(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);/調用成員方法,判斷是否用戶名和密碼正確3.2.3 用戶信息管理模塊(1) 密碼修改用戶名將自動從表user里檢索出來,供用戶選擇以下是它的基本屬性文件名控件名稱xgmima.javaJlabel: lbe2、lbe3、lbe4、lbe5jTextField: tf JpasswordField:pas1、pas2、pas3Jbutton: b1=new JButton(提交); b2=new JButton(退出);將所有用用戶名讀出來 database.joinDB();/連接數據庫 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)將數據依次讀出 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)/比較密碼是否與記錄集里對應一致 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 學生信息管理模塊(1)添加信息 該添加是按照先添加學生信息,添加學生信息中的“添加“按鈕代碼:butOk.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e)if(jtf1.getText().equals()new JOptionPane().showMessageDialog(null,

27、學號不能為空);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)信息查看分為查看學生基本信息和查看學生成績信息,因為代碼和窗體大致相識,進取其一講述下面是他的屬性文件名稱控件名稱viewstud.java JtextArea:te=new JTextArea();代碼為:class viewstud extends JInternalFrame viewstud()super

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

30、ery(sql) while(database.rs.next() te.append(學號: +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(班級: +database.rs.getString(7)+ );te.append(n); catch(SQLException ex) System.out.println(ex); this.setClosable(true);/關閉窗口可用setVisible(true);/窗體可見setBounds(20,70,600,350);(3)信息修改信息修改分為學生基本信息修改,學生成績信息修改,由于原理相似就以修改學生基本信息作為例子進行介紹下面是他的屬性信息文件名稱控件名稱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,請輸入學號);else String sql=select * from grade where 學號= + +jtf1.getText() +;tryif(database.query(sql)/此處用了個database.executeSQL(sql)提示resultset 關閉 if(!database.rs.first()JOptionPane.showMessageDialog(null,沒有該學生信息.); /下面是用來顯示其他文本框里的內容else database.rs.first(); jtf2.setText(database.rs

34、.getString(VBA開發(fā)); jtf3.setText(database.rs.getString(大學英語); jtf4.setText(database.rs.getString(java開發(fā)); jtf5.setText(database.rs.getString(SQLServer); jtf6.setText(database.rs.getString(高等數學); jtf7.setText(database.rs.getString(網站建設); 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)刪除信息刪除學生信息下面是窗口屬性文件名稱控件名稱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,請輸入學號);else String sql=select * from stud where 學號= + +jtf1.getText() +;tryif(database.query(sql)/此處用了個data

37、base.executeSQL(sql)提示resultset 關閉 if(!database.rs.first() JOptionPane.showMessageDialog(null,沒有該學生信息.);else String sqq=delete from stud where 學號= +jtf1.getText() +; String qll=delete from grade where 學號=+jtf1.getText() +; String slq=select * from grade where 學號=+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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論