java實現(xiàn)學籍管理系統(tǒng)
本教程為大家分享了學籍管理系統(tǒng)的具體java代碼,供大家參考,具體內容如下
1.需求分析
1.1系統(tǒng)功能設計
(1)能夠查詢學生的基本信息,如:學號,姓名年齡,班級和性別
(2)能對表格中的學生信息實現(xiàn)增加,刪除,查找,修改等功能
(3)能將數(shù)據(jù)保存到MySQL數(shù)據(jù)庫中,記錄下來
(4)能把數(shù)據(jù)通過mysql數(shù)據(jù)庫進行數(shù)據(jù)更新
1.2系統(tǒng)模塊設計
學籍管理系統(tǒng)包括增加信息模塊,刪除信息模塊,修改信息模塊,查詢信息模塊,更新數(shù)據(jù)模塊。系統(tǒng)管理人員能夠查詢學生的學號,姓名,性別,年齡,所獲獎項等信息。
(具體的系統(tǒng)結構設計E-R圖請翻閱附錄2)
2.系統(tǒng)實現(xiàn)
本系統(tǒng)使用Java/JDBC語言編程的方法實現(xiàn)學籍管理。
用Java實現(xiàn)mysql數(shù)據(jù)庫,該技術主要是使用了導入JDBC.jar,使得Java程序員能夠自由調用標準數(shù)據(jù)庫訪問類和接口。
JDBC和Java結合使用,使用戶可以容易的使用sql語句實現(xiàn)數(shù)據(jù)庫的大部分操作,而Java的容易移植,適合于多種操作系統(tǒng)的特點配合JDBC使用,可以滿足用戶需求。
2.1主要布局文件
根據(jù)“一事一地原則”,進行該程序的布局,書寫了相關文檔供用戶閱讀,mysql中的數(shù)據(jù)也可以導出到“studinfo.txt”文件中,便于用戶打印或者查閱。采用的JDBC為5.0.8版本。 2.2關鍵接口段代碼及其注解
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class TestJDBC {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
// 建立與數(shù)據(jù)庫的Connection連接
// 數(shù)據(jù)庫所處于的ip:127.0.0.1 (本機)
// 數(shù)據(jù)庫的端口號: 3306 (mysql專用端口號)
// 數(shù)據(jù)庫名稱 studinfo
// 編碼方式 UTF-8
// 賬號 root
// 密碼 admin
Connection c = DriverManager
.getConnection(
"jdbc:mysql://127.0.0.1:3306/studinfo?characterEncoding=UTF-8",
"root", "admin");
System.out.println("連接成功,獲取連接對象: " + c);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2.2 DAO接口
package jdbc;
import java.util.List;
import charactor.student;
public interface DAO{
//增加
public void add(student stud);
//修改
public void update(student stud);
//刪除
public void delete(int id);
//獲取
public Hero get(int id);
//查詢
public List<student> list();
//分頁查詢
public List<student> list(int start, int count);
}
//詳細sql語句和代碼實現(xiàn)請查后頁附錄備注!
2.3 設計方法
采用單例化的設計模式,在分別設計增刪查改功能時,分別獨立的調用數(shù)據(jù)庫,以免后期維護軟件麻煩,本軟件將連接數(shù)據(jù)庫功能獨立的拿出來作為一個類,在后期使用的時候只需要調用即可,無需反復實現(xiàn)大段的數(shù)據(jù)庫連接代碼,減少代碼冗余,利于后期系統(tǒng)的進一步完善,以及便于其他程序員閱讀。
(下面為了老師閱讀方便,只做sql-conncet連接的單例展示!)
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
static String ip = "127.0.0.1";
static int port = 3306;
static String database = "student";
static String encoding = "UTF-8";
static String loginName = "root";
static String password = "admin";
static{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
String url = String.format("jdbc:mysql://%s:%d/%s?characterEncoding=%s", ip, port, database, encoding);
return DriverManager.getConnection(url, loginName, password);
}
}
2.4界面展示
在界面下方通過按鈕實現(xiàn)增刪修改和導入功能,在下方的填選框中可鍵入學生id實現(xiàn)查詢功能(這里假設id為該系統(tǒng)唯一的主鍵,觸發(fā)回車即可)
3.系統(tǒng)缺陷
該系統(tǒng)存在很多bug,例如在導入導出數(shù)據(jù)的時候,新數(shù)據(jù)和舊數(shù)據(jù)之間的空行無法消除,新的學號插入時和舊學號可能會引起沖突,導致軟件自動關閉,總體來說還有很多進步的地方,望進一步修復。
其次就是,本次設計的軟件的實體只有一個學生,較為單一,所以實現(xiàn)起來不是太麻煩,只是沒有很多的余地將上課學的E-R圖等設計的實現(xiàn)加入考察,希望寒假可以實現(xiàn)學生,課程,以及老師三表之間的查詢,將這個系統(tǒng)進一步完善。
4.文件系統(tǒng)實現(xiàn)和數(shù)據(jù)庫實現(xiàn)的優(yōu)劣
文件系統(tǒng)面向某一應用程序,共享性差,冗余度大,數(shù)據(jù)獨立性差,記錄內有結構,整體無結構,由應用程序自己控制。
數(shù)據(jù)庫系統(tǒng)面向現(xiàn)實世界,共享性高,冗余度小,具有較高的物理獨立性和一定的邏輯獨性,整體結構化,用數(shù)據(jù)模型描述,由數(shù)據(jù)庫管理系統(tǒng)提供數(shù)據(jù)的安全性、完整性、并發(fā)控制和恢復能力。提高了數(shù)據(jù)的共享性;降低了數(shù)據(jù)的冗余度,提高了數(shù)據(jù)的一致性;采用一定的數(shù)據(jù)模型實現(xiàn)數(shù)據(jù)結構化;數(shù)據(jù)由DBMS統(tǒng)一管理和控制,且更利于非計算機人士的操作和使用,降低了學習成本。并且隨著數(shù)據(jù)庫技術的發(fā)展和當今軟件配合使用,使得用戶都意識不到自己的軟件在使用數(shù)據(jù)庫功能。
附錄1:代碼片段中的sql語句實現(xiàn)增刪查改
(功能的實現(xiàn)較為相同,這里展示第一個update,add,delete功能就不重復展示繁瑣的代碼了,只列出關鍵代碼以供查閱)
1.更新的實現(xiàn)
// update 實現(xiàn)代碼片段
public update(Student stu) {
boolean result = false;
if (stu == null) {
return result;
}
try {
// check
if (queryBySno(stu.getSno()) == 0) {
return result;
}
// 實現(xiàn)update
String sql = "update student set id=?,name=?,class=?,sex=?";
String[] param = { stu.getId(), stu.getName(), stu.getClass(), stu.getSex() };
int rowCount = db.executeUpdate(sql, param);
if (rowCount == 1) {
result = true;
}
} catch (SQLException se) {
se.printStackTrace();
} finally {
destroy();
}
return result;
}
2.delete實現(xiàn)代碼(格式和類的建立都與1相同,更改sql語句即可)
String sql = "delete from student where id=?”;
String[] param = { stu.getId()};
3.add實現(xiàn)代碼
String sql = "insert into student(id,name,class,sex) values(?,?,?,?)";
String[] param = { stu.getId(), stu.getName(), stu.getClass(), stu.getSex()};
4.查詢實現(xiàn)(根據(jù)id查詢)
private int queryById(String id) throws SQLException {
int result = 0;
if ("".equals(id) || id == null) {
return result;
}
String checkSql = "select * from student where id=?";
String[] checkParam = { id };
rs = db.executeQuery(checkSql, checkParam);
if (rs.next()) {
result = 1;
}
return result;
}
}
更多學習資料請關注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
SpringBoot如何讀取配置文件參數(shù)并全局使用
這篇文章主要介紹了SpringBoot如何讀取配置文件參數(shù)并全局使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-12-12
基于springboot+jwt實現(xiàn)刷新token過程解析
這篇文章主要介紹了基于springboot+jwt實現(xiàn)刷新token過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03
詳解WebSocket+spring示例demo(已使用sockJs庫)
本篇文章主要介紹了WebSocket spring示例demo(已使用sockJs庫),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01
Java之MyBatis的Dao方式以及Dao動態(tài)代理詳解
這篇文章主要介紹了Java之MyBatis的Dao方式以及Dao動態(tài)代理詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12
springboot項目配置logback日志系統(tǒng)的實現(xiàn)
這篇文章主要介紹了springboot項目配置logback日志系統(tǒng)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04
jasypt對配置文件的數(shù)據(jù)加密與解密方式
這篇文章主要介紹了jasypt對配置文件的數(shù)據(jù)加密與解密方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
java數(shù)組及arrays類對數(shù)組的操作實例
下面小編就為大家?guī)硪黄猨ava數(shù)組及arrays類對數(shù)組的操作實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10

