日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库课程设计报告总结

發布時間:2023/12/10 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库课程设计报告总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、課程設計題目

學生信息管理系統

二、課程設計目的

數據庫系統課程設計是為了配合學習數據庫系統原理及應用開發而設置的,是將關系數據庫理論知識轉化為解決實際問題能力的重要環節。數據庫系統課程設計目的在于加深對關系數據庫理論知識的理解,通過使用具體的 DBMS,掌握一種實際的數據庫管理系統并掌握其操作技術,熟練掌握使用數據庫前端開發工具(如 VB、 C++、 Java、 JSP、 Delphi、PowerBuilder 等),進一步提高同學們運用數據庫技術解決實際問題的能力。

學校每年都有新生入學、老生畢業,還有其他各種人事變動。如何有效地管理這些學生的信息,幫助學校和老師掌握學生的情況,這就是學生信息管理系統需要完成的功能。

關于本系統的設計,筆者出于對以下幾點的考慮,最終敲定設計的課題為學生信息管理系統:

每個學校每個學院都有學生信息管理系統,目的是對每年入學退學轉學、獲得各項獎勵、獲得各種處分、的學生基本信息的管理,目前隨著計算機的普及,使用紙質檔表格記錄學生信息的方式已經落伍,原因之一是紙質檔難以實現對學生信息的刪除,修改次數頻繁也會使得紙質檔不清晰,無法實現學生信息的快捷查詢,原因之二是當紙質檔學生信息冊只有一份時,教師修改學生信息數據時需要相互傳閱,麻煩耗時;當紙質學生信息冊有多份時,教師僅僅有權限實現對本班學生信息的修改,學院需要統計各班的學生信息情況,而這會導致最終學期匯總時的工作量巨大。基于以上原因,學生信息管理系統的開發和設計十分有必要,考慮到這些因素,筆者最終敲定設計的課題為學生信息管理系統。

三、總體設計

3.1 實驗要求

本系統主要的功能是收集學生的個人信息,以便向教師提供每個學生在校的情況。

系統的主要功能有:

1、學生個人信息輸入,包括:姓名、性別、院系、生日、籍貫、生源所在地;

2、學生流動情況的輸入,包括:轉系、休學、復學、退學、畢業;

3、獎懲情況的輸入;

4、學生個人情況查詢和修改,包括流動情況和獎罰情況。

系統功能概念模型:

3.2 本系統所運用到技術棧

版本控制系統:Git

數據庫技術:MySql

后端技術:JavaBean、JavaSwing

3.3 本系統所運用到的編程工具

代碼編寫:Eclipse

數據庫圖形化管理工具:Navicat for MySQL

前端頁面設計插件:windowBuilder

代碼托管服務:gitee

3.4 核心技術介紹

Mysql:MySQL 是一個關系型數據庫管理系統,由瑞典 MySQL AB 公司開發,目前屬于 Oracle 公司。MySQL 是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。

windowBuilder:windowBuilder是一個工作在Eclipse IDE下的可視化的窗體設計插件,利用它,通過拖拽、直接屬性設置等交互式的設計方式,自動生成所見即所得的界面所需要的Java代碼,從而高效地完成Java GUI程序的圖形用戶界面的設計。在復雜的GUI界面設計上,它將顯著提高開發效率,事半功倍。

Git:Git 是一個免費并且開源的分布式版本控制系統,旨在快速高效地處理從小到大所有項目的版本管理。Git 非常容易學習,低植入,高性能。因為擁有輕量的本地分支,易用的暫存區,和多工作流的特點,它超越了類似Subversion, CVS,Perforce和ClearCase的其他的 SCM 工具。簡潔來說,Git是一個分布式版本控制系統。

3.5 模塊介紹

數據庫表設計:

學生基本信息表

學生獎勵代碼表

學生獎勵信息表

老師注冊表

學生注冊表

學生懲罰信息表

學生懲罰代碼表

學生學籍變更信息表

學生學籍信息變更代碼表

登錄模塊:

學生首頁模塊:

修改密碼模塊:

學生實名認證模塊:

學生基本信息模塊:

老師首頁模塊:

老師操作學生學籍信息模塊:

老師錄入學生獎勵信息模塊:

老師錄入學生處罰信息模塊:

老師查詢學生信息模塊:

3.6 設計步驟

1、在Eclipse中安裝windowBuilder插件,并創建WindowBuilder工程項目。

2、在Maven官網下載jar包并導入工程。

3、打開Swing Design插件設計前端登錄頁面,并完成基本的注冊和退出系統的后端功能。

4、設計學生系統首頁和老師系統首頁,并完成登錄模塊的登錄和重置輸入的后端功能。

5、設計并實現修改密碼、返回登錄窗口、學生信息實名認證的后端功能。

6、設計并實現老師系統中錄入學生學籍變更、獎勵記錄、處分記錄的后端功能。

7、設計并實現老師系統中查詢學生信息的頁面及按鈕的后端功能。

8、設計并實現學生系統中查詢自己學籍變更、獎勵記錄和處罰記錄的后端功能。

四、詳細設計

4.1 項目資源目錄介紹

4.2 關鍵代碼介紹

4.2.1 安裝windowBuilder插件,并創建WindowBuilder工程項目

查看eclipse版本,在eclipse官網中找到與之相匹配的windowBuilder插件版本,復制對應的插件版本下載鏈接。在eclipse中點擊Help中的Install New Software進入界面后,點擊Add,將之前復制過的插件下載鏈接粘貼到Location輸入框中,Name中填寫windowBuilder(隨便填,不填都可以),點擊OK。點擊Select All,點擊Next,一路Next,后點擊接受條約點擊Finish,然后等待安裝成功,重啟Eclipse。

重啟Eclipse后,新建工程,點擊New-other,選擇WindowBuilder-Swing Designer中的JFrame,點擊Next,輸入類名后點擊Finish。在項目實體類中點擊左下角的Design按鈕,進行頁面設計。

4.2.2 在Maven官網下載jar包并導入工程

打開Maven倉庫,搜索需要的jar包名稱,點擊所需版本的jar包之后,點擊Files欄中的jar按鈕,進入jar包的下載。將下載的jar包拷貝到項目的libs目錄下,點擊Project-properties,進入界面后點擊Java Build Path,選擇Libraries欄,點擊Add JARs…選擇libs目錄下剛添加進去的jar包,點擊OK后完成。如圖4-3所示。

4.2.3設計前端登錄頁面,并完成注冊和退出系統的后端功能

前端頁面的設計依賴于windowBuilder插件,在Designer設計頁面設置布局后拖拽組件,在Desigen頁面對應的java文件中會自動生成Javaswing代碼,此處展示登錄頁面的部分Javaswing代碼,之后不再展示前端代碼:

//登錄按鈕板塊 Login = new JFrame(); login.setBounds(100, 100, 849, 598); login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); login.setLocationRelativeTo(null);//將登錄界面置于屏幕中間 JButton button_login = new JButton("\u767B\u5F55"); button_login.setBounds(430, 506, 94, 33); button_login.setFont(new Font("微軟雅黑 Light", Font.BOLD, 17));

從登錄模塊點擊注冊按鈕后跳轉到注冊按鈕,直接退出登錄窗口,打開注冊窗口即可,注冊按鈕實現的后端代碼如下:

button_register.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new register_frame().main(null);//打開注冊login.dispose();//關閉登錄窗口} });

登錄頁面跳轉到注冊頁面后,用戶設置用戶名和新密碼,以及確認新密碼,獲取用戶輸入的數據,通過所有判斷條件后調用sqlUpdate實體類中的方法操作數據庫,將用戶輸入的用戶名和密碼插入到相應的數據庫表中。確定注冊按鈕的后端實現代碼如下:

button_right.addActionListener(new ActionListener() {/*注冊確認按鈕實現的代碼*/public void actionPerformed(ActionEvent e) {if (e.getSource()==button_right) {//用戶點擊了確認按鈕/*判斷用戶行為,顯示相應窗口*/if (textField_username.getText().toString().equals("")) {JOptionPane.showMessageDialog(null, "請輸入用戶名和密碼","友情提示",2);//用戶用戶名和密碼均未輸入}else if (textField_password.getText().toString().equals("")) {JOptionPane.showMessageDialog(null, "請輸入密碼","友情提示",2);//用戶未輸入密碼}else if (textField_username.getText().toString().equals("")) {JOptionPane.showMessageDialog(null, "請輸入用戶名","友情提示",2);//用戶未輸入用戶名}else if (textField_rightKey.getText().toString().equals("")) {JOptionPane.showMessageDialog(null, "請確認密碼,保證兩次輸入密碼相同","友情提示",2);//用戶未確認密碼}else {//用戶所有信息均已輸入且滿足確認的要求if (textField_rightKey.getText().toString().equals(textField_password.getText().toString())) {//兩次輸入密碼相同if (comboBox_user.getSelectedItem().toString().equals("老師")) {//判斷出用戶類型為老師String sql="Insert Into register_teacher(username,password) values(?,?)";//編寫sql語句sqlUpdate.update(sql, textField_username.getText().toString(),textField_password.getText().toString());//調用自定義函數將老師的賬號和密碼插入到數據庫中JOptionPane.showMessageDialog(null, "注冊成功");}else {//判斷出用戶類型為學生String sql="Insert Into register_student(username,password) values(?,?)";//編寫sql語句sqlUpdate.update(sql, textField_username.getText().toString(),textField_password.getText().toString());//調用自定義函數將學生的賬號和密碼插入到數據庫中JOptionPane.showMessageDialog(null, "注冊成功");}new xt_application().main(null);//打開登錄窗口register.dispose();//關閉注冊窗口}else {//兩次輸入密碼不同JOptionPane.showMessageDialog(null, "兩次輸入的密碼不一致","友情提示",2);}}} }}

從登錄模塊退出系統,實現退出按鈕的功能,設計出退出按鈕后,實現其后端代碼,捕獲到用戶行為,彈出提示框,提示用戶是否確定要退出系統并創建變量接收用戶的點擊結果,當變量為0時,說明用戶點擊了“是”,此時關閉系統,若變量值不為0,則不執行退出系統操作,退出系統按鈕實現的后端代碼如下:

/*退出按鈕的代碼實現*/ button_exit.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自動生成的方法存根if (e.getActionCommand().toString().equals("退出")) {//捕獲到用戶行為int isExit = JOptionPane.showConfirmDialog(null, "您確定要退出系統嗎?","友情提示",JOptionPane.YES_NO_OPTION);//提示用戶是否要退出系統if(isExit==0) login.dispose();//退出系統}} });

4.2.4 設計學生系統首頁和老師系統首頁,完成登錄模塊的登錄和重置輸入的后端功能

設計學生系統首頁和老師系統首頁直接在Design頁面中拖拉組件即可,在此前端代碼不再展示,不再贅述。此處主要介紹登錄頁面的登錄和重置輸入按鈕的后端實現功能。

當用戶點擊登錄按鈕后,獲取到用戶輸入的用戶名、密碼和下拉框中選擇的登錄身份。當用戶選擇“學生”的身份進行登錄時,調用sqlUpdate實體類中的靜態方法,傳參為sql語句和參數,查詢出學生登錄表中是否有此賬號,若密碼錯誤或者賬號錯誤則給出相應的提示信息;若賬號密碼正確,則關閉登錄頁面,打開學生系統頁面。當用戶選擇“老師”的身份進行登錄時,代碼類似,只是查詢數據時是在老師登錄表中查詢是否有此賬號。登錄按鈕實現的后端代碼如下(注意:由于老師登錄的代碼與學生登錄的代碼類似,此處不再展示老師登錄的代碼):

public void actionPerformed(ActionEvent e) {String name=user_text.getText().toString();//用戶名String key=key_text.getText().toString();//密碼String idtf=user_type_comboBox.getSelectedItem().toString();if (e.getActionCommand().equals("登錄")) {if (name.isEmpty()&&!key.isEmpty()) {//用戶未輸入用戶名,只輸入了密碼JOptionPane.showMessageDialog(null,"用戶名不能為空","友情提示",2);//彈出用戶名為空的提示性對話框}else if (key.isEmpty()&&!name.isEmpty()) {//用戶只輸入了用戶名而未輸入密碼JOptionPane.showMessageDialog(null, "密碼不能為空","友情提示",2);//彈出密碼為空的提示性對話框}else if (key.isEmpty()&&name.isEmpty()) {//用戶均未輸入用戶名和密碼JOptionPane.showMessageDialog(null, "用戶名和密碼不能為空","友情提示",2);//彈出用戶名和密碼均為空的提示性對話框}else {if (idtf.equals("學生")) {//當用戶類型為學生時try {if (name.equals(sqlUpdate.user_Query("select username from register_student where username=?", name))) {//在數據庫中查詢到指定用戶名if (key.equals(sqlUpdate.pwd_Query("select password from register_student where password=?", key))) {//在數據庫中查詢到用戶名所對應的密碼stu_menu_frame f=new stu_menu_frame();//由于getId()未設置為靜態方法,故必須新設對象一調用getId()方法f.getId(sqlUpdate.id_Query("select id from register_student where username=?", name));//調用stu_menu_frame中的getId()方法,達到傳參的目的new stu_menu_frame().main(null);//驗證身份成功,登錄成功login.dispose();//關閉登錄頁面}else {JOptionPane.showMessageDialog(null, "密碼錯誤,請重新輸入","友情提示",2);//密碼錯誤,驗證身份失敗,登錄失敗}}else {JOptionPane.showMessageDialog(null, "用戶名不存在","友情提示",2);//用戶名不存在或者用戶類型不符合}} catch (HeadlessException e1) {// TODO 自動生成的 catch 塊e1.printStackTrace();} catch (Exception e1) {// TODO 自動生成的 catch 塊e1.printStackTrace();}} }

當用戶點擊登錄界面的重置按鈕后,將用戶名和密碼輸入框置空,并將下拉框的選項置為初始值。重置按鈕的后端實現代碼如下:

public void actionPerformed(ActionEvent e) {user_text.setText("");/*將輸入框置空*/key_text.setText("");user_type_comboBox.setSelectedIndex(0);} });

4.2.5設計并實現修改密碼、返回登錄窗口、學生信息實名認證的后端功能

創建變量保存登錄頁面傳來的用戶id,保證之后所有的操作都是圍繞此用戶的信息。當用戶點擊菜單項修改密碼按鈕時,將id進行傳參到menu_frame類中,打開修改密碼的窗口,關閉學生系統首頁的窗口。由于點擊菜單項打開新窗口的代碼邏輯類似,在此僅展示點擊修改密碼按鈕后的頁面跳轉邏輯,之后類似操作不再贅述,點擊修改密碼按鈕的后端代碼實現:

public void mousePressed(MouseEvent e) {// TODO 自動生成的方法存根if (e.getSource()==menuItem_change_key) {//捕獲到用戶點擊了菜單項修改密碼的按鈕stu_change_key_frame change_key=new stu_change_key_frame();//由于change_key_frame類中的getId()方法不是靜態方法,所以必須先創建對象change_key.getId(s_id);//調用getId()傳參new stu_change_key_frame().main(null);//打開修改密碼的窗口menu_frame.dispose();//關閉菜單窗口} }

當用戶點擊返回登錄頁面菜單項時,代碼邏輯打開登錄窗口并關閉菜單窗口即可,邏輯簡單,不再贅述。

當用戶點擊學生信息實名認證的菜單項時,向實名認證的類中傳參id,調用sqlUpdate類中的靜態方法查詢數據庫學生信息表中是否存在此id號學生的信息,若方法返回值不為0,則說明該用戶信息已經足夠完善,無需再完善信息;若方法返回值為0,則說明學生信息表中不存在此id號的學生信息,需要進行實名認證,打開完善信息的頁面,點擊實名認證菜單項的后端代碼實現如下:

public void mousePressed(MouseEvent e) {// TODO 自動生成的方法存根if (e.getSource()==menuItem_confirm) {try {confrim_frame confrim=new confrim_frame();//由于getId()并沒有設置為confrim_frame類中的靜態方法,所以必須新建立對象才能調用方法confrim.getId(s_id);//向confrim_frame類中傳參/*isId是id_Query()方法的返回值,若數據庫中已存在該s_id號,方法返回值為id值,說明在此之前用戶已經完善過信息,無需完善,若方法返回0值,說明此前用戶未完善信息*/int isId = sqlUpdate.id_Query("select id from student where id=?", s_id);//查找數據庫中是否存在登錄界面傳來的id號if (isId!=0) {//若id號存在說明該用戶無需完善信息JOptionPane.showMessageDialog(null, "信息已足夠完善","友情提示",2);}else {//若id號不存在說明該用戶是新用戶,需要完善信息new confrim_frame().main(null);//打開完善信息頁面}} catch (Exception e2) {// TODO: handle exceptione2.printStackTrace();}} }

4.2.6設計并實現老師系統中錄入學生學籍變更、獎勵記錄、處分記錄的功能

當老師點擊錄入信息中的學籍變更菜單項時,關閉教師管理系統窗口,打開修改學籍信息的窗口,老師輸入學號后點擊查詢,編寫sql語句并執行,查詢學生信息表中的相關信息,將查詢到的相應信息放入相應的標簽當中,達到數據回顯的目的,然后老師輸入學籍代碼點擊修改后,通過一系列判斷后,查詢到用戶輸入的學籍代碼所對應的學生學籍變更信息,編寫sql語句并執行,修改或者增添數據庫中學生學籍信息表數據,修改學籍信息菜單項的后端代碼實現如下:

public void actionPerformed(ActionEvent e) {if (e.getSource()==button_change&&textField_CODE.getText().toString().isEmpty()) {//當用戶未輸入級別代碼卻點擊了修改按鈕JOptionPane.showMessageDialog(null, "請您輸入級別代碼","友情提示",2);//彈出提示窗口}else if (e.getSource()==button_change&&label_getStuId.getText().toString().isEmpty()) {//當學號標簽上未顯示內容,但用戶點擊了修改按鈕JOptionPane.showMessageDialog(null, "請您先查找指定學生","友情提示",2);//彈出提示窗口}else {int code = Integer.parseInt(textField_CODE.getText().toString());//獲取用戶輸入在文本框內的學籍代碼,并將其轉換為int類型String StuId = textField_getStuId.getText().toString();//獲取用戶輸入在文本框內的學號int id=0;try {id = sqlUpdate.id_Query("select ID from student where s_studentid=?", StuId);//查找到相應學號的同學的id號} catch (Exception e2) {// TODO 自動生成的 catch 塊e2.printStackTrace();}//獲取查詢同學的id號if (e.getSource()==button_change) {//捕獲到用戶點擊了修改按鈕if (flag1==1) {if (code<0||code>4) {JOptionPane.showMessageDialog(null, "您輸入的學籍代碼錯誤,請輸入0~4之間的數字","友情提示",2);}else {if (flag2==1) {//該學生在學籍信息的數據庫中有記錄,只需修改學籍信息,而無需增添信息到數據庫中sqlUpdate.update("update change_information set CHANGE_CODE=? where STUDENTID=? ", code,StuId);//修改數據庫中的內容String DESCRIPTION="";try {DESCRIPTION = sqlUpdate.description_Query("select DESCRIPTION from change_code where code=?", code);//調用函數查詢到code對應的學籍狀態} catch (Exception e1) {// TODO 自動生成的 catch 塊e1.printStackTrace();}sqlUpdate.update("update change_information set DESCRIPTION=? where STUDENTID=?", DESCRIPTION,StuId);//將數據庫中DESCRIPTION的內容修改label_getXjZt.setText(DESCRIPTION);//將標簽的內容修改label_getXjCODE.setText(String.valueOf(code));//更新標簽上的內容java.util.Date date=new java.util.Date();//獲取點擊按鈕的當前時間SimpleDateFormat dateFormat=new SimpleDateFormat("YYYY-MM-dd");//設置時間的格式label_getTime.setText(dateFormat.format(date));//修改標簽上的內容sqlUpdate.update("update change_information set REC_TIME=? where STUDENTID=?", dateFormat.format(date),StuId);//更改數據庫中的內容}else {String DESCRIPTION="";try {DESCRIPTION = sqlUpdate.description_Query("select DESCRIPTION from change_code where code=?", code);//調用函數查詢到code對應的學籍狀態} catch (Exception e1) {// TODO 自動生成的 catch 塊e1.printStackTrace();}label_getXjZt.setText(DESCRIPTION);//將標簽的內容修改label_getXjCODE.setText(String.valueOf(code));//更新標簽上的內容java.util.Date date=new java.util.Date();//獲取點擊按鈕的當前時間SimpleDateFormat dateFormat=new SimpleDateFormat("YYYY-MM-dd");//設置時間的格式label_getTime.setText(dateFormat.format(date));//修改標簽上的內容/*向*/sqlUpdate.update("insert into change_information(ID,STUDENTID,CHANGE_CODE,REC_TIME,DESCRIPTION) values(?,?,?,?,?)", id,StuId,code,dateFormat.format(date),DESCRIPTION);flag2=1;}JOptionPane.showMessageDialog(null, "修改成功","友情提示",2);//彈出修改成功的提示窗口}}else {JOptionPane.showMessageDialog(null, "未查詢到該學生,故您無法修改學籍信息","友情提示",2);}}} }});

老師錄入學生獎勵記錄和處罰記錄的代碼邏輯和錄入學籍信息的類似,再次不再贅述。

4.2.7 設計并實現老師系統中查詢學生信息的頁面及按鈕的后端功能

設計學生信息查詢頁面同樣是使用windowBuilder組件進行設計,不再贅述。當輸入查詢條件后,點擊查詢按鈕,根據用戶輸入的數據進行判斷,通過數據類型來編寫sql語句(不得不說,我認為這是整個項目自己當時寫的最爛的一部分代碼了,代碼復用性特別差,完全可以封裝成函數,把獲取參數添加到集合中去,然后遍歷集合就好了,for循環中可以使用判斷語句然后拼接字符串最終把sql語句拼接好,然后進行傳參就好),然后調用類中的方法進行傳參。從數據庫表中查詢到信息后放入表格標簽中,實現數據顯示,然后每點擊一次查詢就清空一次表格數據,防止點擊查詢導致數據在表格中的追加而不是查詢顯示。另外,在表格右下角設計了刷新按鈕,此按鈕的目的是清空表格內容(其實我感覺是多此一舉的功能,因為每點擊一次查詢,在顯示出學生信息之前就會將表格內容清空),實現邏輯就是調用model中的setRowCount函數,使得表格中行數置0,數據清空。查詢學生信息的代碼展示一部分吧(實在太爛太長復用性太差,就不展示全部代碼了),查詢學生信息的部分代碼如下:

//若用戶只輸入了性別一欄信息 model.setRowCount( 0 );//將表格的行數置為0,實現每點擊查詢按鈕一次,表格就清空一次 String sex=comboBox_getSex.getSelectedItem().toString(); List<Student> list = null;//存放學生變量 try {list = sqlUpdate.Student_Query("select * from student where s_sex=?", sex);//查找數據庫中性別全為sex的學生 } catch (Exception e1) {// TODO 自動生成的 catch 塊e1.printStackTrace(); } for (int i = 0; i < list.size(); i++) {//遍歷集合,將每一個同學的基本信息輸入到表格中try {//將查詢到相應學號的學生的獎懲信息賦值予對象的相應屬性list.get(i).setXj_information(sqlUpdate.xj_rReward_Punish_query("select DESCRIPTION from change_information where STUDENTID=?", list.get(i).getStudentId()));list.get(i).setReward_information(sqlUpdate.xj_rReward_Punish_query("select DESCRIPTION from reward where STUDENTID=?", list.get(i).getStudentId()));list.get(i).setPunish_information(sqlUpdate.xj_rReward_Punish_query("select DESCRIPTION from punishment where STUDENTID=?", list.get(i).getStudentId()));list.get(i).setIsRight(sqlUpdate.IsPunish_query("select ENABLE from punishment where STUDENTID=?", list.get(i).getStudentId()));} catch (Exception e2) {// TODO: handle exceptione2.printStackTrace();}/*提取出學生的獎懲屬性賦值給新的變量*/String xj_information = list.get(i).getXj_information();String reward_information = list.get(i).getReward_information();String punish_information = list.get(i).getPunish_information();String isRight = list.get(i).getIsRight();/*提取出學生的基本屬性賦值給新的變量*/int studentId = list.get(i).getStudentId();String name = list.get(i).getName();String sex2 = list.get(i).getSex();int classid = list.get(i).getClassid();String collage = list.get(i).getCollage();String born = list.get(i).getBorn();String resident = list.get(i).getResident();/*設置表格中的行內容*/Object[] data=new Object[] {studentId,name,sex2,classid,collage,born,resident,xj_information,reward_information,punish_information,isRight};model.addRow(data);

4.2.8 設計并實現學生系統中查詢自己學籍變更、獎勵記錄和處罰記錄的功能

學生系統中查詢學籍變更、獎勵記錄和處罰記錄的功能其實十分類似,因為學生是沒有錄入自己獎勵記錄和處罰記錄的功能的,這個操作只能由老師實現,所以僅僅是一個數據回顯的實現,所以后端查詢數據庫,前端獲取到數據后,將數據放入標簽中顯示在頁面中即可。當用戶點擊查詢信息中的學籍變更菜單項時,將學生系統頁面關閉,打開學籍變更信息頁面,在頁面中可以看到數據庫中查詢到的信息。代碼邏輯是當用戶點擊了菜單項跳轉頁面時就把學生id進行傳參,然后在方法體中編寫sql語句,將id作為查詢條件進行查詢學生的學號、姓名、學籍代碼、學籍狀態和更新時間等信息,并將這些信息放入到標簽當中,以此在頁面中可以顯示出來。查詢學生學籍變更信息的后端代碼實現如下:

try {Connection con = connection.getConnection();String sql="select STUDENTID,CHANGE_CODE,REC_TIME,DESCRIPTION from change_information where ID=?";PreparedStatement statement=con.prepareStatement(sql);statement.setInt(1, s_id);ResultSet set = statement.executeQuery();if (set.next()) {label_getStuId.setText(String.valueOf(set.getInt(1)));//學號label_getCODE.setText(set.getString(2));//學籍代碼label_getDes.setText(set.getString(4));//學籍狀態label_getTime.setText(set.getString(3));//更新時間label_getName.setText(sqlUpdate.name_query("select s_name from student where id=?", s_id));//姓名} } catch (Exception e) {// TODO: handle exceptione.printStackTrace(); }

五、結果與分析

最終項目成型,學生信息管理系統目前未發現任何bug,項目實現了任務指導書中的所有基本功能,此項目有拓展功能存在,但此項目中存在很多不足之處,以下一并進行分析。

項目拓展功能:

①登錄注冊和修改密碼的功能,任務指導書上并沒有對這個功能做要求,筆者認為登錄注冊功能是系統所必需的基本功能,感覺沒有登錄注冊功能的系統是不完善的系統,所以項目中分別設計了老師登錄表和學生登錄表,在前端可以判斷出用戶身份,并對兩張表進行新增數據和查詢數據。修改密碼功能則是對兩張表進行修改數據。

②退出系統的功能:這個功能任務指導書上也沒有要求,但功能十分簡單,所以就一并實現了。因為整個系統都是在原有頁面上打開的新頁面,所以只需將當前頁面窗口關閉即可實現退出系統功能。

③返回登錄頁面的功能:此功能也十分簡單,和退出功能十分類似,只需要關閉當前頁面窗口,打開登錄頁面即可,也就是簡單的頁面跳轉。

項目功能不足之處:

①項目整體架構不好,只是單獨的Java文件,沒有面向接口編程,沒有利用好項目的三層架構。

②沒有封裝好函數,代碼過于冗余,代碼復用性不好,更新功能或完善功能較為困難。

③前端頁面是利用組件設計,但在一開始沒設置布局,某些頁面在顯示數據字數過多時會導致標簽錯位。且前端頁面不夠美觀。

④Jar包沒全部保存在libs目錄下,整個項目是引入的外部jar包,這會導致更改項目路徑后,出現jar包缺失的情況。

⑤項目中判斷語句過多,代碼閱讀性差(但還好注釋比較多)。

⑥類似于dao層的sqlUpdate文件中的代碼并沒有很好地完成它的功能,很多sql語句是其他文件傳參進來的,而應該的是sql語句在dao層編寫才對。

⑦涉及到輸入數據的部分,大多都是采用的輸入框形勢,并且沒有對輸入的數據進行校驗,一旦用戶輸入了非法數據(數據類型和數據庫中存儲的數據類型不一致)就會導致報錯,可以說輸入數據部分及其不完善。

六、小結與心得體會

談到項目功能的不足之處還是比較多的,這是當時學完Java后就做的第一個Swing項目作為練手,當時的主要目的是熟悉類、靜態方法等基礎知識點,所以這個項目并不成熟,代碼也過于冗余,復用性不好

但是通過這個項目,學習前后端交互知識還是及其不錯的,它是原生的jdbc加載驅動連接數據庫的,這些基礎打牢了再去學習一些框架就會輕松許多。另外,該項目能很好地鍛煉到Java基礎知識點,因為筆者是學完Java就寫的這個項目練手,當時對于類、繼承和靜態方法等一些不太明白不太熟練的點,這個項目作為練手是很好的選擇。為什么不更新這個項目呢(也就是為什么不把不足之處進行完善)?筆者已經說過,該項目沒有采用面向接口編程,沒有利用好三層架構,函數封裝的也不夠好,代碼冗余性、復用性以及閱讀性都不夠好,在此基礎上進行更新完善功能,筆者覺得意義不大,因為項目本身就是當時學完Java練手寫的,目的是熟悉Java的基礎知識,顯然目的是達到了的,筆者覺得這就足夠了。

通過此項目,還是很好的學習到了數據庫技術,對于sql語句的編寫,數據庫的連接方法,數據庫圖形化工具的使用,數據庫建模工具的使用,Java基礎知識都有所熟練,為之后框架的學習打下了良好的基礎。

體會

談到項目功能的不足之處還是比較多的,這是當時學完Java后就做的第一個Swing項目作為練手,當時的主要目的是熟悉類、靜態方法等基礎知識點,所以這個項目并不成熟,代碼也過于冗余,復用性不好

但是通過這個項目,學習前后端交互知識還是及其不錯的,它是原生的jdbc加載驅動連接數據庫的,這些基礎打牢了再去學習一些框架就會輕松許多。另外,該項目能很好地鍛煉到Java基礎知識點,因為筆者是學完Java就寫的這個項目練手,當時對于類、繼承和靜態方法等一些不太明白不太熟練的點,這個項目作為練手是很好的選擇。為什么不更新這個項目呢(也就是為什么不把不足之處進行完善)?筆者已經說過,該項目沒有采用面向接口編程,沒有利用好三層架構,函數封裝的也不夠好,代碼冗余性、復用性以及閱讀性都不夠好,在此基礎上進行更新完善功能,筆者覺得意義不大,因為項目本身就是當時學完Java練手寫的,目的是熟悉Java的基礎知識,顯然目的是達到了的,筆者覺得這就足夠了。

通過此項目,還是很好的學習到了數據庫技術,對于sql語句的編寫,數據庫的連接方法,數據庫圖形化工具的使用,數據庫建模工具的使用,Java基礎知識都有所熟練,為之后框架的學習打下了良好的基礎。

以上為本次課程設計的小結與心得體會,皆為真實感受,不管以后走的多遠,學的東西有多雜,Java、Mysql的基礎知識部分還是要時常溫習,基礎堅決要打牢,然后學習過新技術后要注意找項目練手,這樣才能對新知識進一步熟練掌握。

總結

以上是生活随笔為你收集整理的数据库课程设计报告总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。