




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《JAVA程序設計》課程設計報告 設計題目:學生信息管理系統(tǒng) 學院名稱:信息工程學院 專業(yè)班級:13計本1 姓名: 學號:目錄一需求分析。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3二概要設計。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3三具體設計。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。33.1數據庫設計。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。33.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一需求分析本系統(tǒng)的重要目的就是實現學生信息管理,使學生信息管理工作更加容易,從而提高工作效率,減少管理成本.系統(tǒng)中需要對擁護身份進行管理,采用登陸進入系統(tǒng)的形式.二概要設計/************************************************************************概要設計階段重要是粗略描述整個軟件的框架,并從業(yè)務的角度描述軟件的模塊、工作流程等。項目的成功取決于設計的好壞,而概要設計則是整個設計的關鍵部分。概要設計的重要任務是將用戶的需求劃分為不同的功能,然后將這些功能細提成模塊,并給模塊一些規(guī)則約束,以達成各個模塊之間可以互相交流的目的。概要設計關乎到系統(tǒng)的整體架構,因此想做好一個概要設計,不僅僅要熟悉用戶的業(yè)務流程,還要具有相稱豐富的設計經驗。2.1概要設計的原則概要設計是根據系統(tǒng)分析的需求和工作環(huán)境的情況對整個軟件的總體結構進行大體的設計。概要設計要堅持以下幾個原則。(1)細分原則:軟件系統(tǒng)都是由很多不同的模塊組成,當設計一套軟件時,要先將所有的功能分解。解決復雜問題的方法是將其分解成幾個小問題,一個個來解決。(2)提高代碼重用性:在面向對象設計中,一方面考慮的就是代碼的重用,一個好的設計,將來在升級換代時不需要太大的改動,節(jié)省了人力物力。(3)從上而下層層分析:概要設計要從整體出發(fā),逐個剖析軟件的功能,從上而下,先分析系統(tǒng)總的功能,然后一步步細分,直到最小的功能模塊。(4)一致性原則:概要設計規(guī)定所有功能模塊在定義時使用統(tǒng)一的規(guī)范。(5)提高獨立性,減少耦合:各個模塊與模塊之間盡量減少關聯(lián),否則修改一個地方就會引起其他多處的變動,不符合面向對象的原則。一般情況下,對類封裝后,只允許對類進行擴展,而不能修改,而封裝的類必須具有單一職責,既理論情況下不允許兩個類共同完畢一個功能。(6)模塊的大小要盡量適中:不是結構算法越復雜的模塊越好,模塊的大小要根據實際工作目的和其他類的耦合緊密限度來決定。經驗表白,一個模塊的規(guī)模不應過大,模塊的總行數應控制在10~100行的范圍內,最佳為30~60行,這樣理解和閱讀都較方便。過長的模塊往往是分解不充足的表現,會增長閱讀理解的難度;但小規(guī)模太多也會使模塊之間聯(lián)系變得復雜,增大系統(tǒng)在模塊調用時傳遞信息所花費的開銷。由于概要設計是整個設計的重中之重,牽一發(fā)而動全身,所以要努力做一個好的概要設計,才干在此后軟件開發(fā)過程中不再反復?,F在軟件行業(yè)流行模式化驅動設計,將一些市場上比較成功的模式拿來用在自己的設計中。2.2將用戶需求模塊化根據概要設計的原則來分析一下本項目的用戶需求,并最終轉化成用程序語言描述的模塊。什么樣的需求才是一個模塊?模塊應當具有如下3個特性。(1)輸入和輸出:模塊必須能被調用并且對的的返回調用,并且調用都是相對一個對象而言,這是模塊獨立性的一個體現。(2)解決功能:模塊必須可以對調用的輸入數據進行靈活的解決,并為輸出準備好解決結果。(3)程序代碼:用來實現模塊功能的源代碼。3.3擬定系統(tǒng)最終模塊概要設計中最重要的就是擬定此項目涉及哪些模塊。根據上兩節(jié)講述的設計原則和模塊特性,將用戶需求轉化為下面的模塊。**************************************************************************/2.1UML用例圖1用戶登錄信息管理2用戶信息管理3學生信息管理4系統(tǒng)管理系統(tǒng)首頁系統(tǒng)首頁用戶登陸信息管理用戶信息管理學生信息管理通過身份請求添加刪除用戶修改密碼添加查看修改刪除系統(tǒng)管理重新登陸退出登陸2.2模塊設計1數據庫設計模塊2用戶登錄辨認模塊3用戶信息管理模塊4學生信息管理模塊5系統(tǒng)管理模塊三具體設計3.1數據庫設計數據庫名稱:student表名:user,stud表user:存放登陸用戶的用戶名和密碼表stud:存放學生基本信息學生表(stus)字段名類型備注stusIDVarchar(30)學生idstuNameNvarchar(50)NotnullstuSexNchar(1)性別'男'或者'女'stuAgeint年齡>0stuDeptNvarchar(30)所在系……3.2模塊及窗體設計3.2.1數據庫模塊設計將數據庫的連接包裝在一個database類中,以便其他模塊可以輕松調用,避免每次重寫數據庫連接代碼。下表是他的基本屬性文獻名成員變量成員方法database.javapublicstaticConnectioncn;publicstaticStatementst;publicstaticResultSetrs;publicstaticbooleanjoinDB()publicstaticbooleanexecuteSQL(StringsqlString)publicstaticbooleanquery(StringsqlString)代碼如下:importjava.sql.*;//引入包publicclassdatabase{publicstaticConnectioncn;//定義一個連接對象publicstaticStatementst;//定義一個SQL語句對象publicstaticResultSetrs;//定義一個數據集publicstaticbooleanjoinDB(){//用來判斷是否連接成功booleanjoinFlag;try{joinFlag=true;Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//通過調用java.lang中的Class類的forName方法來實現JDBC—ODBC橋接器cn=DriverManager.getConnection("jdbc:odbc:student","sa","");創(chuàng)建一個連接對象cn.setCatalog("student");//加載數據庫System.out.println("數據庫連接成功");st=cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);//返回一個可滾動的結果集,數據庫變化時結果集跟著變化;不能用結果集更新數據庫中的表returnjoinFlag;}catch(SQLExceptionsqlEx){System.out.println(sqlEx.getMessage());joinFlag=false;returnjoinFlag;}catch(ClassNotFoundExceptionnotfoundEX){System.out.println(notfoundEX.getMessage());joinFlag=false;returnjoinFlag;}}publicstaticbooleanexecuteSQL(StringsqlString){booleanexecuteFlag;try{st.execute(sqlString);executeFlag=true;}catch(Exceptione){executeFlag=false;System.out.println("sqlexception:"+e.getMessage());}returnexecuteFlag;}publicstaticbooleanquery(StringsqlString){try{rs=null;rs=st.executeQuery(sqlString);}catch(ExceptionEx){System.out.println("sqlexception:"+Ex);returnfalse;}returntrue;}}3.2.2用戶登錄辨認模塊代碼封裝在類Land里,所用到的信息保存在表user里下表是他的基本屬性文獻名控件成員方法Land.javaJLabel:labelname=newJLabel("用戶名")labelmima=newJLabel("密碼")Jbutton:btenter=newJButton("擬定");btcancel=newJButton("清空");privatevoidJudge(StringsqlString)判斷用戶名和密碼是否對的的成員方法代碼:privatevoidJudge(StringsqlString){if(database.joinDB()){//假如數據庫連接成功if(database.query(sqlString))//假如SQL語句執(zhí)行成功try{if(database.rs.isBeforeFirst()){//假如指向記錄集的在第一條記錄的前面System.out.println("密碼對的");jf.setVisible(false);//窗體不可見.close();//關閉數據庫連接newMain();//主窗體}else{System.out.println("錯誤");newJOptionPane().showMessageDialog(null,"用戶名或密碼錯誤!","",JOptionPane.ERROR_MESSAGE);}}catch(Exceptionex){System.out.println(ex.getMessage());}}else{ System.out.println("連接數據庫不成功!!!"); }}按鈕“擬定”的監(jiān)聽事件代碼:publicvoidactionPerformed(ActionEvente){if(textname.getText().equals("")){ newJOptionPane().showMessageDialog(null,"用戶名不能為空!"); } elseif(textmima.getText().equals("")){ newJOptionPane().showMessageDialog(null,"密碼不能為空!"); } else{ Stringsql="select*fromuserwhereuser_id='"+textname.getText()+"'andpassword='"+textmima.getText()+"'"; System.out.println(sql); Judge(sql);//調用成員方法,判斷是否用戶名和密碼對的 }}3.2.3用戶信息管理模塊(1)密碼修改用戶名將自動從表user里檢索出來,供用戶選擇以下是它的基本屬性文獻名控件名稱xgmima.javaJlabel:lbe2、lbe3、lbe4、lbe5jTextField:tfJpasswordField:pas1、pas2、pas3Jbutton:b1=newJButton("提交");b2=newJButton("退出");將所有用用戶名讀出來database.joinDB();//連接數據庫Stringsql="select*fromuser";try{ if(database.query(sql)){ while(database.rs.next()){//依次將用戶名讀出 Stringname=database.rs.getString("user_id"); tf.addItem(name); } } }catch(Exceptione){}擬定“按鈕”的監(jiān)聽事件代碼:b1.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ Stringname=""+tf.getSelectedItem(); System.out.println(name); Stringsql="select*fromuserwhereuser_id='"+name+"'"; System.out.println(sql); try{ if(database.query(sql)){ database.rs.next(); Stringps1=pas1.getText(); Stringpassword=database.rs.getString("Password"); if(ps1.equals(password)){ if(pas2.getText().equals(pas3.getText())){Stringsupdate="updateusersetpassword='"+pas3.getText()+"'whereuser_id='"+name+"'"; database.executeSQL(supdate); newJOptionPane().showMessageDialog(null,"密碼更改成功!"); } else{ newJOptionPane().showMessageDialog(null,"兩次密碼不同!"); } } else{ newJOptionPane().showMessageDialog(null,"舊密碼不對的!"); } } } catch(Exceptionel){ System.out.println(el); } } });(2)用戶信息添加和刪除上半部分用來添加用戶,下半部分用來刪除用戶基本屬性如下文獻名控件名AddDeleteUser.javaprivateJButtonbutACancel,butDCancel,butDelete,butOk;privateJComboBoxcbUserName;privateJLabeljLabel1,jLabel2,jLabel3,jLabel4,jLabel5;privateJPasswordFieldpas1,pas2,pas3;privateJTextFieldtxtname;//將所有用用戶名讀出來database.joinDB();Stringsql="select*fromuser";try{ if(database.query(sql)){ while(database.rs.next()){//記錄集若有記錄則通過循環(huán)將數據依次讀出 Stringname=database.rs.getString("user_id"); cbUserName.addItem(name); } } }catch(Exceptione){}//為添加按鈕加事件-----------------------------------------butOk.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ if(txtname.getText().equals("")){//判斷是否為空 newJOptionPane().showMessageDialog(null,"用戶名不能為空!"); } elseif(pas1.getText().equals("")){ newJOptionPane().showMessageDialog(null,"密碼不能為空!"); } elseif(pas1.getText().equals(pas2.getText())){ Stringsql="insertintouservalues('"+txtname.getText()+"','"+pas1.getText()+"')"; try{ if(database.executeSQL(sql)){//若SQL執(zhí)行成功 newJOptionPane().showMessageDialog(null,"添加成功!"); cbUserName.addItem(txtname.getText()); } } catch(Exceptionea){} } } });刪除按鈕監(jiān)聽事件代碼butDelete.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ Stringname=""+cbUserName.getSelectedItem();//得到用戶名 Stringsql="select*fromuserwhereuser_id='"+name+"'"; try{ if(database.query(sql)){ database.rs.next(); Stringpas=pas3.getText(); Stringpassword=database.rs.getString("Password"); System.out.println(password); if(pas.equals(password)){//比較密碼是否與記錄集里相應一致 Stringsdelete="deletefromuserwhereuser_id='"+name+"'"; if(database.executeSQL(sdelete)){ newJOptionPane().showMessageDialog(null,"刪除成功!");pas3.setText("");cbUserName.removeAllItems();//將刪除的條目從JcomboBox中刪除Stringsql1="select*fromuser"; if(database.query(sql1)){ while(database.rs.next()){//更新JcomboBox條目 Stringname1=database.rs.getString("user_id"); cbUserName.addItem(name1); } } } } else{ newJOptionPane().showMessageDialog(null,"密碼不對的!"); }} } catch(Exceptionel){ System.out.println(el); }} });3.2.4學生信息管理模塊(1)添加信息該添加是按照先添加學生信息,添加學生信息中的“添加“按鈕代碼:butOk.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ if(jtf1.getText().equals("")){ newJOptionPane().showMessageDialog(null,"學號不能為空"); } elseif(jtf2.getText().equals("")){ newJOptionPane().showMessageDialog(null,"姓名不能為空"); } elseif(jtf3.getText().equals("")){ newJOptionPane().showMessageDialog(null,"性別不能為空"); } else{ Stringsql="insertintostudvalues('"+jtf1.getText()+"','"+jtf2.getText()+"','"+jtf3.getText()+"','"+jtf4.getText()+"','"+jtf5.getText()+"','"+jtf6.getText()+"','"+jtf7.getText()+"')"; try{ if(database.executeSQL(sql)){ newJOptionPane().showMessageDialog(null,"添加成功!"); } } catch(Exceptionea){} } } });(2)信息查看分為查看學生基本信息和查看學生成績信息,由于代碼和窗體大體相識,進取其一講述下面是他的屬性文獻名稱控件名稱viewstud.javaJtextArea:te=newJTextArea();代碼為:classviewstudextendsJInternalFrame{viewstud() {super("查看學生基本信息");//窗體顯示得名稱 Containercon=getContentPane();//創(chuàng)建JinternalFrame的容器對象 con.setLayout(newBorderLayout());//設定窗體布局 JTextAreate=newJTextArea(); JScrollPanecroll=newJScrollPane(te);//加載垂直水平滾動條 con.add(croll,BorderLayout.CENTER); database.joinDB();//連接數據庫Stringsql="SELECT*FROMstud";try{if(database.query(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)+""); te.append("班級:"+database.rs.getString(7)+""); te.append("\n"); } }}catch(SQLExceptionex){System.out.println(ex);} this.setClosable(true);//關閉窗口可用 setVisible(true);//窗體可見 setBounds(20,70,600,350); }}(3)信息修改信息修改分為學生基本信息修改,學生成績信息修改,由于原理相似就以修改學生基本信息作為例子進行介紹下面是他的屬性信息文獻名稱控件名稱xiugai.javaprivateJButtonbutCancel,butOk,butShow;privateJLabeljLabel1,jLabel2,jLabel3,jLabel4,jLabel5,jLabel6,jLabel7;privateJTextFieldjtf1,jtf2,jtf3,jtf4,jtf5,jtf6,jtf7;顯示信息按鈕的監(jiān)聽事件代碼如下:database.joinDB();butShow.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ if(jtf1.getText().equals("")){ newJOptionPane().showMessageDialog(null,"請輸入學號"); } else{ Stringsql="select*fromgradewhere學號="+"'"+jtf1.getText()+"'"; try{ if(database.query(sql)){//此處用了個database.executeSQL(sql)提醒resultset關閉 if(!database.rs.first()) { JOptionPane.showMessageDialog(null,"沒有該學生信息..."); }//下面是用來顯示其他文本框里的內容 else{ database.rs.first(); jtf2.setText(database.rs.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(NullPointerExceptionupe) { System.out.println(upe.toString()); } catch(SQLExceptionsqle) { System.out.println(sqle.toString()); } catch(Exceptionex) { System.out.println(ex.toString()); } } } });(4)刪除信息刪除學生信息下面是窗口屬性文獻名稱控件名稱shanchu.javaprivateJButtonbutCancel,butOk;privateJLabeljLabel1;privateJTextFieldjtf1;privateJPanelp;butOk=newJButton("刪除");butCancel=newJButton("清空")刪除按鈕監(jiān)聽事件代碼如下:butOk.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ if(jtf1.getText().equals("")){ newJOptionPane().showMessageDialog(null,"請輸入學號"); } else{ Stringsql="select*fromstudwhere學號="+"'"+jtf1.getText()+"'"; try{ if(database.query(sql)){//此處用了個database.executeSQL(sql)提醒resultset關閉 if(!database.rs.first()) { JOptionPane.showMessageDialog(null,"沒有該學生信息..."); } else{Stringsqq="deletefromstudwhere學號='"+jtf1.getText()+"'";Stringqll="deletefromgradewhere學號='"+jtf1.getText()+"'"; Stringslq="select*fromgradewhere學號='"+jtf1.getText()+"'"; if(database.query(slq)){ if(database.rs.first()){
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 路沿石的施工方案
- 關于個人聘用合同范例
- 會務外包合同范本
- 鍋爐鋼板施工方案
- 能譜CT定量參數在喉及下咽部病變良惡性鑒別診斷中的價值
- 高長徑比銀納米線的制備及其在鋰金屬電池中的應用
- 鬼針草的鉻富集機理研究
- 加工包回收合同范例
- 出租小冷庫合同范本
- 產品招商意向合同范本
- 2025屆浙江省湖州、衢州、麗水高三11月三地市一模考試化學試卷
- 2025年湖南藝術職業(yè)學院單招職業(yè)技能測試題庫參考答案
- 2025年湖南鐵道職業(yè)技術學院單招職業(yè)技能測試題庫學生專用
- 《臨床常見心理問題》課件
- 2025年廣州開發(fā)區(qū)水質監(jiān)測中心第四次招考聘用編外人員2人高頻重點模擬試卷提升(共500題附帶答案詳解)
- 教學課件:《民事訴訟法》(本科)
- 2024年吉林省生活垃圾清運和處理市場前景預測及投資規(guī)劃研究報告
- 2025年湖南省高職單招《語文》高頻必練考試題庫400題(含答案)
- 《SSD市場調查》課件
- 以教育家精神引領教師專業(yè)成長的價值及實踐路徑
- 《質量管理標準化手冊》
評論
0/150
提交評論