




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件工程實驗報告1?實驗題目:[具體實驗題目]
實驗目的:1.深入理解軟件工程的基本概念和方法。2.掌握軟件開發過程中的需求分析、設計、編碼、測試等關鍵環節。3.通過實際操作,提高運用軟件工程知識解決實際問題的能力。
實驗環境:1.操作系統:[具體操作系統名稱]2.開發工具:[列舉使用的開發工具,如IDE名稱及版本號]3.編程語言:[使用的編程語言]
一、需求分析(一)問題描述[詳細闡述要解決的實際問題,例如一個簡單的學生信息管理系統,需要實現學生信息的錄入、查詢、修改和刪除等功能]
(二)用戶需求1.功能需求學生信息錄入:能夠準確錄入學生的基本信息,包括姓名、學號、性別、年齡、專業等。信息查詢:可以根據學號、姓名等條件查詢學生信息。信息修改:對已錄入的學生信息進行修改。信息刪除:刪除指定的學生信息。2.性能需求系統響應時間應在合理范圍內,對于常見操作(如查詢、修改)不超過[X]秒。能夠支持多用戶同時操作,確保數據的一致性和完整性。3.界面需求界面設計簡潔、直觀,易于操作。提供清晰的輸入提示和操作反饋。
(三)需求規格說明書1.學生信息管理系統功能規格|功能|描述|輸入|輸出|||||||學生信息錄入|錄入學生基本信息|姓名、學號、性別、年齡、專業|成功提示或錯誤信息||信息查詢|根據學號或姓名查詢學生信息|學號或姓名|學生信息詳情或無匹配提示||信息修改|修改指定學生的信息|學號及新的信息|成功提示或錯誤信息||信息刪除|刪除指定學號的學生信息|學號|成功提示或錯誤信息|2.性能規格系統響應時間:常見操作平均響應時間不超過[X]秒。并發處理能力:支持[X]個用戶同時在線操作。3.界面規格整體布局合理,操作按鈕和輸入框排列整齊。輸入框有明確的輸入提示文字,如"請輸入姓名"。操作成功或失敗時給出相應的提示框,如"信息錄入成功"或"學號不存在,請重新輸入"。
二、總體設計(一)系統架構設計1.分層架構表示層:負責與用戶交互,提供系統的界面。業務邏輯層:處理系統的業務邏輯,如學生信息的驗證、數據處理等。數據訪問層:負責與數據庫進行交互,實現數據的存儲和讀取。2.模塊劃分學生信息管理模塊:包含學生信息的錄入、查詢、修改和刪除功能。數據驗證模塊:對輸入的學生信息進行合法性驗證。數據庫操作模塊:封裝數據庫的連接、查詢、插入、更新和刪除操作。
(二)數據庫設計1.ER圖學生(Student):學號(Sno):主鍵,唯一標識學生。姓名(Sname):字符串類型。性別(Ssex):字符串類型。年齡(Sage):整數類型。專業(Smajor):字符串類型。2.表結構設計```sqlCREATETABLEStudent(SnoVARCHAR(20)PRIMARYKEY,SnameVARCHAR(50),SsexVARCHAR(10),SageINT,SmajorVARCHAR(50));```
(三)詳細設計1.學生信息管理模塊錄入功能:調用數據驗證模塊對輸入信息進行驗證,通過后調用數據庫操作模塊將數據插入數據庫。查詢功能:根據輸入的條件調用數據庫操作模塊查詢數據,返回查詢結果。修改功能:先查詢要修改的學生信息,驗證新輸入信息,然后調用數據庫操作模塊更新數據。刪除功能:查詢要刪除的學生信息,確認后調用數據庫操作模塊刪除數據。2.數據驗證模塊學號驗證:檢查學號是否符合格式要求(例如長度、是否為數字等)。年齡驗證:確保年齡為合法的整數且在合理范圍內。其他信息驗證:檢查姓名、性別、專業等是否為空或符合相應格式。3.數據庫操作模塊連接數據庫:使用合適的數據庫驅動建立與數據庫的連接。插入數據:構建SQL插入語句,將學生信息插入到Student表中。查詢數據:根據輸入條件構建SQL查詢語句,從Student表中獲取數據。更新數據:構建SQL更新語句,修改指定學生的信息。刪除數據:構建SQL刪除語句,刪除指定學號的學生記錄。
三、編碼實現(一)表示層代碼實現(以JavaSwing為例)```javaimportjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;
publicclassStudentInfoUIextendsJFrame{privateJTextFieldsnoField,snameField,ssexField,sageField,smajorField;
publicStudentInfoUI(){setTitle("學生信息管理系統");setSize(400,300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLayout(newGridLayout(6,2));
JLabelsnoLabel=newJLabel("學號:");snoField=newJTextField();JLabelsnameLabel=newJLabel("姓名:");snameField=newJTextField();JLabelssexLabel=newJLabel("性別:");ssexField=newJTextField();JLabelsageLabel=newJLabel("年齡:");sageField=newJTextField();JLabelsmajorLabel=newJLabel("專業:");smajorField=newJTextField();
JButtonaddButton=newJButton("添加");JButtonqueryButton=newJButton("查詢");JButtonupdateButton=newJButton("修改");JButtondeleteButton=newJButton("刪除");
add(snoLabel);add(snoField);add(snameLabel);add(snameField);add(ssexLabel);add(ssexField);add(sageLabel);add(sageField);add(smajorLabel);add(smajorField);add(addButton);add(queryButton);add(updateButton);add(deleteButton);
addButton.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){Stringsno=snoField.getText();Stringsname=snameField.getText();Stringssex=ssexField.getText();StringsageStr=sageField.getText();Stringsmajor=smajorField.getText();
//調用業務邏輯層進行信息錄入StudentInfoLogic.addStudent(sno,sname,ssex,sageStr,smajor);}});
queryButton.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){StringqueryCondition=snoField.getText();if(queryCondition.isEmpty()){queryCondition=snameField.getText();}//調用業務邏輯層進行信息查詢StudentInfoLogic.queryStudent(queryCondition);}});
updateButton.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){Stringsno=snoField.getText();Stringsname=snameField.getText();Stringssex=ssexField.getText();StringsageStr=sageField.getText();Stringsmajor=smajorField.getText();
//調用業務邏輯層進行信息修改StudentInfoLogic.updateStudent(sno,sname,ssex,sageStr,smajor);}});
deleteButton.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){Stringsno=snoField.getText();//調用業務邏輯層進行信息刪除StudentInfoLogic.deleteStudent(sno);}});
setVisible(true);}}```
(二)業務邏輯層代碼實現```javapublicclassStudentInfoLogic{publicstaticvoidaddStudent(Stringsno,Stringsname,Stringssex,StringsageStr,Stringsmajor){if(!StudentInfoValidator.validateStudent(sno,sname,ssex,sageStr,smajor)){JOptionPane.showMessageDialog(null,"輸入信息不合法,請檢查!");return;}intsage=Integer.parseInt(sageStr);StudentInfoDAO.addStudent(sno,sname,ssex,sage,smajor);JOptionPane.showMessageDialog(null,"學生信息錄入成功!");}
publicstaticvoidqueryStudent(StringqueryCondition){StudentInfostudent=StudentInfoDAO.queryStudent(queryCondition);if(student!=null){JOptionPane.showMessageDialog(null,"學號:"+student.getSno()+"\n姓名:"+student.getSname()+"\n性別:"+student.getSsex()+"\n年齡:"+student.getSage()+"\n專業:"+student.getSmajor());}else{JOptionPane.showMessageDialog(null,"未找到匹配的學生信息!");}}
publicstaticvoidupdateStudent(Stringsno,Stringsname,Stringssex,StringsageStr,Stringsmajor){if(!StudentInfoValidator.validateStudent(sno,sname,ssex,sageStr,smajor)){JOptionPane.showMessageDialog(null,"輸入信息不合法,請檢查!");return;}intsage=Integer.parseInt(sageStr);StudentInfoDAO.updateStudent(sno,sname,ssex,sage,smajor);JOptionPane.showMessageDialog(null,"學生信息修改成功!");}
publicstaticvoiddeleteStudent(Stringsno){if(StudentInfoDAO.deleteStudent(sno)){JOptionPane.showMessageDialog(null,"學生信息刪除成功!");}else{JOptionPane.showMessageDialog(null,"刪除失敗,未找到指定學號的學生!");}}}```
(三)數據訪問層代碼實現```javaimportjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;
publicclassStudentInfoDAO{privatestaticfinalStringURL="jdbc:mysql://localhost:3306/studentdb";privatestaticfinalStringUSER="root";privatestaticfinalStringPASSWORD="password";
publicstaticvoidaddStudent(Stringsno,Stringsname,Stringssex,intsage,Stringsmajor){try(Connectionconn=DriverManager.getConnection(URL,USER,PASSWORD)){Stringsql="INSERTINTOStudent(Sno,Sname,Ssex,Sage,Smajor)VALUES(?,?,?,?,?)";try(PreparedStatementpstmt=conn.prepareStatement(sql)){pstmt.setString(1,sno);pstmt.setString(2,sname);pstmt.setString(3,ssex);pstmt.setInt(4,sage);pstmt.setString(5,smajor);pstmt.executeUpdate();}}catch(SQLExceptione){e.printStackTrace();}}
publicstaticStudentInfoqueryStudent(StringqueryCondition){StudentInfostudent=null;try(Connectionconn=DriverManager.getConnection(URL,USER,PASSWORD)){Stringsql="SELECT*FROMStudentWHERESno=?ORSname=?";try(PreparedStatementpstmt=conn.prepareStatement(sql)){pstmt.setString(1,queryCondition);pstmt.setString(2,queryCondition);try(ResultSetrs=pstmt.executeQuery()){if(rs.next()){student=newStudentInfo();student.setSno(rs.getString("Sno"));student.setSname(rs.getString("Sname"));student.setSsex(rs.getString("Ssex"));student.setSage(rs.getInt("Sage"));student.setSmajor(rs.getString("Smajor"));}}}}catch(SQLExceptione){e.printStackTrace();}returnstudent;}
publicstaticvoidupdateStudent(Stringsno,Stringsname,Stringssex,intsage,Stringsmajor){try(Connectionconn=DriverManager.getConnection(URL,USER,PASSWORD)){Stringsql="UPDATEStudentSETSname=?,Ssex=?,Sage=?,Smajor=?WHERESno=?";try(PreparedStatementpstmt=conn.prepareStatement(sql)){pstmt.setString(1,sname);pstmt.setString(2,ssex);pstmt.setInt(3,sage);pstmt.setString(4,smajor);pstmt.setString(5,sno);pstmt.executeUpdate();}}catch(SQLExceptione){e.printStackTrace();}}
publicstaticbooleandeleteStudent(Stringsno){try(Connectionconn=DriverManager.getConnection(URL,USER,PASSWORD)){Stringsql="DELETEFROMStudentWHERESno=?";try(PreparedStatementpstmt=conn.prepareStatement(sql)){pstmt.setString(1,sno);introwsAffected=pstmt.executeUpdate();returnrowsAffected>0;}}catch(SQLExceptione){e.printStackTrace();}returnfalse;}}```
(四)數據驗證模塊代碼實現```javapublicclassStudentInfoValidator{publicstaticbooleanvalidateStudent(Stringsno,Stringsname,Stringssex,StringsageStr,Stringsmajor){if(sno.isEmpty()||sname.isEmpty()||ssex.isEmpty()||sageStr.isEmpty()||smajor.isEmpty()){returnfalse;}if(!sno.matches("^[09]{10}$")){returnfalse;}try{intsage=Integer.parseInt(sageStr);if(sage<1||sage>100){returnfalse;}}catch(NumberFormatExc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025建筑項目廉政合同
- 2025年遠程醫療服務助力分級診療的智能醫療技術應用報告
- 2025射頻識別(RFID)在工業互聯網平臺下的生產設備遠程控制與診斷創新報告
- 2025工程中介居間合同
- 2025域名交易注意事項與合同撰寫指南
- 2025合法民間借貸合同模板
- 2025年中國脂肪醇聚氧乙烯醚行業市場運行格局及投資前景預測分析報告
- 共享出行平臺信用體系建設與市場競爭力研究報告
- 廢舊塑料回收利用技術突破與產業價值鏈延伸策略報告
- 生態修復微生物技術在生物降解塑料包裝中的應用研究
- 第18課《井岡翠竹》課件-2024-2025學年統編版語文七年級下冊
- 公立醫院成本核算指導手冊
- 第七章-生物醫學工程的倫理問題
- MOOC 中醫與辨證-暨南大學 中國大學慕課答案
- 【大學課件】色彩構成
- 智能健身鏡行業分析及案例
- 大型場館TD-LTE覆蓋優化指導意見
- 中聯HIS系統掛號收費 操 作 說 明
- HIT(肝素誘導的血小板減少癥)課件
- 焊接件檢驗合格率統計表
- Mayo肘關節功能評分
評論
0/150
提交評論