2018-11-06
簡易圖書借閱管理系統-總結

mybook7.png
一、需求分析

image.png

image.png
二、專案結構圖

13333.PNG
三、專案概要
專案主題:圖書借閱管理系統
專案時間:2018年10月29日—2018年11月3日
專案功能:①使用者模組:登入、註冊、檢視圖書資訊、借書、還書、修改密碼、切換賬號;②管理員模組:登入、圖書查詢(所有圖書資訊、指定圖書ID、指定書名的模糊查詢、重新整理)、歷史借閱記錄查詢、管理圖書(新增圖書、圖書下架、更新圖書、重新整理)、管理使用者(新增使用者、更新使用者、重新整理)、切換賬號。
專案技術實現:
資料庫:Mysql
JDBC工具:DBUtils
層與層之間解耦合:工廠設計模式
資料展示控制元件:JTable
訪問資料庫的查詢方法封裝使用技術:泛型,反射機制
四、專案技術要點總結:
①窗體 架構分析: 繼承了JFrame
② 窗體的方法:init()
-
窗體中各控制元件顯示出來的方法
-
1.把各個控制元件例項化
-
2.控制元件組裝起來,大的套小的,裡面先裝,再到外面
private void init() { }
③設定字型,字型大小:lab控制元件.setFont(new Font("幼圓", Font.PLAIN, 48));
④為按鈕註冊事件偵聽器
private void registerActionListener() { button_login.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { 程式碼塊 }
⑥登入功能:
-
1.獲取使用者輸入的使用者名稱和密碼
-
2.進行非空判斷,如果為空則提示使用者輸入,並程式返回
-
3.如果都不為空,那麼呼叫底層程式碼訪問資料庫查詢賬戶資訊是否存在,如存在則登 錄;不存在則登入失敗,提示使用者。
底層程式碼dao層:view層要先呼叫service層
UsersDao usersDao=new UsersDaoImpl();//不可以new UsersDao(),要new介面 。
⑦註冊功能:
-
1.獲取使用者輸入的使用者名稱和密碼
-
2.進行非空判斷,如果為空則提示使用者輸入,並程式返回
-
3.如果都不為空,那麼新增到底層程式碼中去?
-
4.註冊成功,返回登入介面
⑧網格佈局、方位佈局
new BorderLayout()?給大容器新增方位佈局---東西南北的
- GridLayout是網格佈局
⑨修改密碼(暫時缺少與之前程式碼相比較的判斷!!!!)
⑩給table增加事件偵聽器
//給table控制元件加事件監聽器
table.addMouseListener(new MouseListener() { @Override public void mouseReleased(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseClicked(MouseEvent e) { /** * 滑鼠點選:選定的行 * table.getSelectedRow();---得到的是行的索引 */ int row=table.getSelectedRow(); System.out.println(row); book_id=(Integer)table.getValueAt(row, 0); System.out.println("book_id:"+book_id); } });
⒒資料顯示模型-----------------介面卡模式
/**
* 內部類:定義資料模型
*/
private class BookDataModel implements TableModel{
/** * 我的資料來自於集合,定義一個私有的List集合 * List<Book> list * list是一個屬性 */ private List<Book> list; /** * 給屬性list賦值的方法setList() * */ public void setList(List<Book> list) { this.list=list; } /** * 下面的方法是從BookDataModel實現類中創建出來的 */ @Override public int getRowCount() { //得到行數 return list.size(); } @Override public int getColumnCount() { return 4;//寫死,4列 } @Override public String getColumnName(int columnIndex) { //指定表格表頭部分每列的名稱 if(columnIndex==0) { return "圖書編號"; }else if(columnIndex==1) { return "圖書名稱"; }else if(columnIndex==2) { return "借閱次數"; }else if(columnIndex==3) { return "是否可借"; }else { return "出錯"; } } @Override public Class<?> getColumnClass(int columnIndex) { //得到列的資料型別,我們都返回String,字串 return String.class; } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { //對單元格編輯,不可編輯 return false; } @Override public Object getValueAt(int rowIndex, int columnIndex) { /** * 非常重要,指定表格中某行某列的值,如果不寫,表格中看不到資料 * rowIndex行號 * */ Book book=list.get(rowIndex); if(columnIndex==0) { return book.getBook_id(); }else if(columnIndex==1) { return book.getBook_name(); }else if(columnIndex==2) { return book.getBook_count(); }else if(columnIndex==3) { //把數字轉換成字串 return (book.getStatus()==1)?"可借":"不可借"; }else { return "出錯"; } } @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { } @Override public void addTableModelListener(TableModelListener l) { } @Override public void removeTableModelListener(TableModelListener l) { } }
12.把數字轉換成字串
return (book.getStatus()==1)?"可借":"不可借";
五、收穫
通過一個星期的專案經歷,我完成了JavaSe的專案,第一次做專案,態度認真,比較積極。說說開始的想法吧:看了老師發的ppt需求分析,我分別整理了使用者、管理員他們對應的功能,再從使用者使用一個系統的角度出發,加上老師帶著我們完成了使用者的一些功能模組,仿照程式碼,就實現了其他的功能模組,當中肯定遇到很多的小bug的,怎麼辦呢?有異常,就找異常,處理異常,Debug就好了,不行就問百度,或者問其他的同學。其中有一些功能的實現有參考譚偉亮的“更新”,更改密碼的參考了林學亮同學,等。週末做的更新功能,似乎是我比較滿意的一個地方了,可以把資訊顯示出來,使用者體驗效果較好,其中添加了“重新整理”的功能,也就是查詢,不用切換螢幕即可看到變化,讓使用者使用方便。總的來說,就是考慮的比較周到,功能方面比較全面。因為我記住了廖老師的一句話:“你嚴格要求自己,嚴格要求自己的程式碼,以後會有幫助的。”
六、不足之處
1、介面結構不夠美觀
2、完成時間較長
3、程式碼能力還需要加強
4、缺乏創新型的想法
七、改進
針對於不足之處,會相對應的去努力,一步一步的敲好程式碼,爭取向高薪工作靠齊。不驕傲,不氣餒,繼續加油。