java实现学籍管理系统
本教程为大家分享了学籍管理系统的具体java代码,供大家参考,具体内容如下
1.需求分析
1.1系统功能设计
(1)能够查询学生的基本信息,如:学号,姓名年龄,班级和性别
(2)能对表格中的学生信息实现增加,删除,查找,修改等功能
(3)能将数据保存到MySQL数据库中,记录下来
(4)能把数据通过mysql数据库进行数据更新
1.2系统模块设计
学籍管理系统包括增加信息模块,删除信息模块,修改信息模块,查询信息模块,更新数据模块。系统管理人员能够查询学生的学号,姓名,性别,年龄,所获奖项等信息。
(具体的系统结构设计E-R图请翻阅附录2)
2.系统实现
本系统使用Java/JDBC语言编程的方法实现学籍管理。
用Java实现mysql数据库,该技术主要是使用了导入JDBC.jar,使得Java程序员能够自由调用标准数据库访问类和接口。
JDBC和Java结合使用,使用户可以容易的使用sql语句实现数据库的大部分操作,而Java的容易移植,适合于多种操作系统的特点配合JDBC使用,可以满足用户需求。
2.1主要布局文件
根据“一事一地原则”,进行该程序的布局,书写了相关文档供用户阅读,mysql中的数据也可以导出到“studinfo.txt”文件中,便于用户打印或者查阅。采用的JDBC为5.0.8版本。2.2关键接口段代码及其注解
packagejdbc;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
publicclassTestJDBC{
publicstaticvoidmain(String[]args){
try{
Class.forName("com.mysql.jdbc.Driver");
//建立与数据库的Connection连接
//数据库所处于的ip:127.0.0.1(本机)
//数据库的端口号:3306(mysql专用端口号)
//数据库名称studinfo
//编码方式UTF-8
//账号root
//密码admin
Connectionc=DriverManager
.getConnection(
"jdbc:mysql://127.0.0.1:3306/studinfo?characterEncoding=UTF-8",
"root","admin");
System.out.println("连接成功,获取连接对象:"+c);
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}catch(SQLExceptione){
e.printStackTrace();
}
}
}
2.2DAO接口
packagejdbc;
importjava.util.List;
importcharactor.student;
publicinterfaceDAO{
//增加
publicvoidadd(studentstud);
//修改
publicvoidupdate(studentstud);
//删除
publicvoiddelete(intid);
//获取
publicHeroget(intid);
//查询
publicList<student>list();
//分页查询
publicList<student>list(intstart,intcount);
}
//详细sql语句和代码实现请查后页附录备注!
2.3设计方法
采用单例化的设计模式,在分别设计增删查改功能时,分别独立的调用数据库,以免后期维护软件麻烦,本软件将连接数据库功能独立的拿出来作为一个类,在后期使用的时候只需要调用即可,无需反复实现大段的数据库连接代码,减少代码冗余,利于后期系统的进一步完善,以及便于其他程序员阅读。
(下面为了老师阅读方便,只做sql-conncet连接的单例展示!)
packageutil;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
publicclassDBUtil{
staticStringip="127.0.0.1";
staticintport=3306;
staticStringdatabase="student";
staticStringencoding="UTF-8";
staticStringloginName="root";
staticStringpassword="admin";
static{
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}
}
publicstaticConnectiongetConnection()throwsSQLException{
Stringurl=String.format("jdbc:mysql://%s:%d/%s?characterEncoding=%s",ip,port,database,encoding);
returnDriverManager.getConnection(url,loginName,password);
}
}
2.4界面展示
在界面下方通过按钮实现增删修改和导入功能,在下方的填选框中可键入学生id实现查询功能(这里假设id为该系统唯一的主键,触发回车即可)
3.系统缺陷
该系统存在很多bug,例如在导入导出数据的时候,新数据和旧数据之间的空行无法消除,新的学号插入时和旧学号可能会引起冲突,导致软件自动关闭,总体来说还有很多进步的地方,望进一步修复。
其次就是,本次设计的软件的实体只有一个学生,较为单一,所以实现起来不是太麻烦,只是没有很多的余地将上课学的E-R图等设计的实现加入考察,希望寒假可以实现学生,课程,以及老师三表之间的查询,将这个系统进一步完善。
4.文件系统实现和数据库实现的优劣
文件系统面向某一应用程序,共享性差,冗余度大,数据独立性差,记录内有结构,整体无结构,由应用程序自己控制。
数据库系统面向现实世界,共享性高,冗余度小,具有较高的物理独立性和一定的逻辑独性,整体结构化,用数据模型描述,由数据库管理系统提供数据的安全性、完整性、并发控制和恢复能力。提高了数据的共享性;降低了数据的冗余度,提高了数据的一致性;采用一定的数据模型实现数据结构化;数据由DBMS统一管理和控制,且更利于非计算机人士的操作和使用,降低了学习成本。并且随着数据库技术的发展和当今软件配合使用,使得用户都意识不到自己的软件在使用数据库功能。
附录1:代码片段中的sql语句实现增删查改
(功能的实现较为相同,这里展示第一个update,add,delete功能就不重复展示繁琐的代码了,只列出关键代码以供查阅)
1.更新的实现
//update实现代码片段
publicupdate(Studentstu){
booleanresult=false;
if(stu==null){
returnresult;
}
try{
//check
if(queryBySno(stu.getSno())==0){
returnresult;
}
//实现update
Stringsql="updatestudentsetid=?,name=?,class=?,sex=?";
String[]param={stu.getId(),stu.getName(),stu.getClass(),stu.getSex()};
introwCount=db.executeUpdate(sql,param);
if(rowCount==1){
result=true;
}
}catch(SQLExceptionse){
se.printStackTrace();
}finally{
destroy();
}
returnresult;
}
2.delete实现代码
Stringsql="deletefromstudentwhereid=?”;
String[]param={stu.getId()};
3.add实现代码
Stringsql="insertintostudent(id,name,class,sex)values(?,?,?,?)";
String[]param={stu.getId(),stu.getName(),stu.getClass(),stu.getSex()};
4.查询实现(根据id查询)
privateintqueryById(Stringid)throwsSQLException{
intresult=0;
if("".equals(id)||id==null){
returnresult;
}
StringcheckSql="select*fromstudentwhereid=?";
String[]checkParam={id};
rs=db.executeQuery(checkSql,checkParam);
if(rs.next()){
result=1;
}
returnresult;
}
}
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。