基于JUI+JDBC实现的学生管理系统.docx
- 文档编号:8979974
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:33
- 大小:2.31MB
基于JUI+JDBC实现的学生管理系统.docx
《基于JUI+JDBC实现的学生管理系统.docx》由会员分享,可在线阅读,更多相关《基于JUI+JDBC实现的学生管理系统.docx(33页珍藏版)》请在冰豆网上搜索。
基于JUI+JDBC实现的学生管理系统
代码行数
2333
项目名称
基于JUI+JDBC实现的学生管理系统
1.实训目的
面向对象程序设计课程设计是计算机科学与技术专业培养计划中的重要实践教学环节,旨在通过一个管理信息系统的开发,加深学生对Java语言的理解和应用,尤其是对面向对象编程思想、Java编码规范、图形用户接口、JDBC访问数据库的理解,巩固软件工程课程的相关知识,了解软件开发的基本流程,进一步提高学生的学习能力、理解能力、表达能力及沟通能力。
2.实训内容
使用Eclipse为开发工具,使用RationalRose为建模工具,使用MySQL为数据库服务器,基于GUI和JDBC技术,分析、设计并实现一个管理信息系统。
3.需求分析
3.1需求描述
本系统是学生信息管理系统,所以应该做到可以录入学生信息,修改学生信息,删除学生信息,查询学生信息,以及最后的所有学生的信息表的导出,具体模块功能如下:
(一)用户设置:
①用户登录
②用户基本信息显示
③用户的增删改
④系统退出
(二)基本信息设置
①增加学生信息
②删除修改学生信息
③模糊查询信息
④导出学生信息表
(三)学生信息
①根据学生id进行查询并且显示信息
<注:
>其中增删改信息操作流程:
(1)增加学生信息
增加学生信息主要是把学生信息录入系统中,录入信息包括学生的学号,姓名,出生日期,部门以及城市
(2)修改学生信息
修改学生信息功能可以通过输入学生的学号,如果该学生在系统中,就弹出一个可以编辑的显示可以修改的窗体,然后用户再编辑想要修改的信息,如果该学生不在系统中,就弹出该学生不在系统中的提醒窗体。
(3)查询学生信息
通过查询功能输入学生的学号来查询学生的所有信息
(4)删除学生信息
通过删除学生信息的功能输入想要删除学生的编号,然后在系统中删除该学生。
(5)导出学生信息表
通过该功能导出学生信息表(以.txt文本格式导出)
3.2概要设计
系统功能用例图
3.3用例描述
(一)用例图:
①用户登录执行的功能用例图(图3-2-1):
图3-2-1用户的用例图
②具体功能用例图(图3-2-2):
图3-2-2具体功能用例图
(二)用例描述
用例:
登录
ID:
1
简单描述:
系统的用户、输入正确的用户名和密码进入系统
主参与者:
用户
副参与者:
无
主流:
(1)进入系统登录页面
(2)键入预先分配好的帐号和密码
(3)点击登录,进入系统
(4)登录成功
(5)用户名或者密码输入错误超过三次直接退出系统
1.登录模块
用例:
修改学生信息
ID:
2
简单描述:
系统的用户、进本系统
主参与者:
用户
副参与者:
无
前置条件:
用户,需要进入本系统的基本信息设置模块
主流:
(1)进入系统主管理页面
(2)点击基本信息管理设置按钮
(3)点击增删改按钮,在显示的学生信息的表格中鼠标选中要修改的学生信息进行出入要修改的信息进行修改操作
(4)弹框弹出提示信息“修改成功”
后置条件:
存在要修改的学生
附加流:
修改出错时提示出错误信息
2.修改学生模块
3.id查询学生信息
用例:
id查询学生信息
ID:
3
简单描述:
系统的用户、进本系统
主参与者:
用户
副参与者:
无
前置条件:
用户,需要进入本系统的学生信息设置模块
主流:
(1)进入系统主管理页面
(2)点击学生信息管理设置按钮
(3)点击学生id查询按钮,输入id
(4)查询成功,界面显示查到的相应信息
后置条件:
存在要查询的学生
附加流:
查询出错时提示出错误信息
4.删除学生信息
用例:
删除学生信息
ID:
4
简单描述:
系统的用户、进本系统
主参与者:
用户
副参与者:
无
前置条件:
用户,需要进入本系统的基本信息设置模块
主流:
(1)进入系统主管理页面
(2)点击基本信息管理设置按钮
(3)点击增删改按钮,在显示的学生信息的表格中鼠标选中要删除的学生信息进行一键删除信息操作
(4)弹框弹出提示信息“删除成功”
后置条件:
存在要删除的学生
附加流:
删除出错时提示出错误信息
5.增加学生
用例:
增加学生信息
ID:
5
简单描述:
系统的用户、进本系统
主参与者:
用户
副参与者:
无
前置条件:
用户,需要进入本系统的基本信息设置模块
主流:
(1)进入系统主管理页面
(2)点击基本信息管理设置按钮
(3)点击增删改按钮,输入姓名、城市、所属部门进行增加新学生信息
(4)弹框弹出提示信息“增加成功”
后置条件:
管理员登录后台成功
附加流:
增加出错时提示出错信息
4.功能设计
4.1系统层次方框图
系统结构
为保证系统具有较好的可维护性和可扩展性,对系统进行分层设计,共分四层:
● 视图层:
接收用户输入信息,显示界面信息和用户信息
● 控制层:
访问流程控制
● 业务层:
完成具体功能的实现
● 数据库访问层:
完成对数据库访问操作的封装
具体结构如图所示:
4.2算法设计(活动图或时序图)
5.数据设计
5.1类图设计
1.数据访问层:
包括一个类(MyDb.java)主要功能加载驱动连接数据库,执行sql语句并返回结果。
2.业务层:
包括一个类(userService.java)主要功能是完成具体功能的实现
3.控制层:
包括一个类(Login.java)主要功能是完成系统的流程
4.视图层:
主要包括七个类:
1.MainJFrame.java:
进入系统的显示的主界面类(包括三大模块:
用户设置、基本信息设置、学生信息)
2.UserInfo.java:
用户信息的增删改查功能类(输入用户名和密码进行增删改功能并且判断用户名和密码不能为空)
3.UserInfo_zsg.java:
学生信息的怎删改查操作类
4.instudent.java:
单独增加学生信息功能类
5.fuzzy_find.java:
实现学号的模糊查询功能并显示出来类
6.can.java:
实现模糊查询以及导出查询到的数据表(以.txt格式导出)和导出学生全部信息表
7.find.java:
根据学生id单独查询学生以及以表格形式显示出来
5.2数据表设计
①用户登录表设计:
②学生信息表设计:
6.运行结果
主界面功能测试:
结果如图6-1所示
图6-1登录界面
1.用户名或者密码错误三次提示信息会自动退出系统如下图:
图6-2登录失败界面
2.用户信息的注册退出操作
图6-3程序退出界面
图6-4主界面
增加学生信息功能测试:
图6-5增加学生信息界面
ID查找个人学生信息功能测试
图6-6id查询学生信息界面
id模糊查找学生信息功能测试
图6-7id模糊查询学生信息界面
修改学生信息功能测试
图6-8修改学生信息界面
删除学生信息功能测试
图6-9删除学生信息界面
按学生相应的查询导出数据表:
图6-9导出数据表
7.关键代码
一:
数据访问层:
MyDb.java类:
packagegyf.beanss.db;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclassMyDb{
privatefinalstaticStringDRIVER="com.mysql.jdbc.Driver";
privateConnectioncon;//数据库连接对象
privateStatementst;//sql语句的执行对象
privateResultSetrs;////查询结果集,用来存放查询的结果,没有查到rs为空
privateintn;////更新数据时,成功操作的行数
static{//加载
try{
Class.forName(DRIVER);//加载驱动
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
System.out.println("驱动异常");
}
}
/**
*建立数据库连接操作
*@return
*/
publicConnectiongetMysqlCon(){
try{
//&useUnicode=true&characterEncoding=UTF8(处理往数据库存数据中文乱码的问题)
Stringdbur1="jdbc:
mysql:
//localhost:
3306/cs?
"//更改数据库名
+"user=root&password=root&useUnicode=true&characterEncoding=UTF8";
con=DriverManager.getConnection(dbur1);
}catch(SQLExceptione){
e.printStackTrace();
System.out.println("数据库连接失败");
}
returncon;
}
/**
*创建执行sql语句的对象
*@return
*/
publicStatementgetPreST(Stringsql){
try{
st=this.getMysqlCon().prepareStatement(sql);
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnst;
}
/**
*创建执行sql语句的对象
*@return
*/
publicStatementgetCreST(){
try{
st=this.getMysqlCon().createStatement();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnst;
}
/**
*执行sql语句--查询
*/
publicResultSetgetRs(Stringsql){
try{
rs=this.getCreST().executeQuery(sql);
}catch(SQLExceptione){
e.printStackTrace();
}
returnrs;
}
/**
*执行sql语句--更新(增加、删除、修改)
*/
publicintgetN(Stringsql){
try{
n=this.getCreST().executeUpdate(sql);
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnn;
}
/**
*关闭执行查询所创建的所有对象
*/
publicvoidcloseRs(){
try{
rs.close();
st.close();
con.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
/**
*关闭执行更新所创建的所有对象
*/
publicvoidcloseN(){
try{
st.close();
con.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
二:
服务层
userService.java类
packagegyf.beanss.Services;
importjava.util.List;
importgyf.beanss.dao.User_DAO;
importgyf.beanss.ps.User;
importgyf.beanss.ps.student_message;
publicclassUserServices{
User_DAOuser_DAO;
publicUserServices(){
super();
user_DAO=newUser_DAO();
}
/**
*登录模块的用户名和密码的验证方法
*/
publicbooleanlogin(Useruser){
Userus1=user_DAO.FindBNamPass(user);
if(us1==null){
returnfalse;
}else{
returntrue;
}
}
/**
*显示数据表中的所有信息
*@return
*/
publicList
List
returnall;
}
/**
*删除用户信息
*@paramid
*@return
*/
publicbooleandelete(intid){
intuser=user_DAO.delete(id);
if(user==1){
System.out.println("删除成功1条记录");
returntrue;
}
else{
returnfalse;
}
}
}
三:
控制层
Login.java类
packagegyf.beannss.Main;
importjava.awt.Color;
importjava.awt.Container;
importjava.awt.Dimension;
importjava.awt.Toolkit;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.KeyEvent;
importjava.awt.event.KeyListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JPasswordField;
importjavax.swing.JTextField;
importgyf.beanss.Services.UserServices;
importgyf.beanss.View.MainJFrame;
importgyf.beanss.ps.User;
publicclassLoginextendsJFrameimplementsActionListener,KeyListener{
intcount=0;//判断记录登录失败次数
/**
*控件布置
*/
publicStringming;
privateJFramejf=newJFrame("登录界面");//窗框显示
privateContainercon=jf.getContentPane();//容器
privateJTextFieldj4=newJTextField(10);//用户名输入框
privateJPasswordFieldj5=newJPasswordField(10);//密码输入框
privateJLabelj1=newJLabel("用户名");//j1标签
privateJLabelj2=newJLabel("密码");//j2标签
privateJLabelj3=newJLabel("欢迎登陆");//j3标签
privateJButtonjb1=newJButton("确定");//jb1确定按钮
privateJButtonjb2=newJButton("取消");//jb2取消按钮
/*
*面板实例化
*/
privateJPaneljp1=newJPanel();//jp1面板
privateJPaneljp2=newJPanel();
privateJPaneljp3=newJPanel();
Login(Stringming){
this.ming=ming;
jf.setSize(200,210);
jf.setVisible(true);
//------设置屏幕居中显示------
ToolkitKIT=Toolkit.getDefaultToolkit();
Dimensionscreen=KIT.getScreenSize();
intX=screen.width;
intY=screen.height;
intXcenter=(X-this.getSize().width)/2;
intYcenter=(Y-this.getSize().height)/2;
jf.setLocation(Xcenter,Ycenter);
//----------------------------
//将jp1,jp2,jp3,三个面板按着北,中,南三个方向依次摆放
con.add(jp1,"North");
con.add(jp2,"Center");
con.add(jp3,"South");
//给三个面板添加颜色
jp1.setBackground(Color.cyan);
jp2.setBackground(Color.PINK);
jp3.setBackground(Color.green);
jb1.setBackground(Color.red);
jb2.setBackground(Color.red);
//将相应的组件添加在相应的面板上
jp1.add(j3);
jp2.add(j1);
jp2.add(j4);
jp2.add(j2,"East");
jp2.add(j5);
jp3.add(jb1);
jp3.add(jb2);
//给按钮添加监听
jb1.addActionListener(this);
jb2.addActionListener(this);
j4.addKeyListener(this);
j5.addKeyListener(this);
}
//主函数
publicstaticvoidmain(String[]args){
newLogin("");
}
/**
*事物监听方法
*/
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jb1){
confirm();//用来判断用户名和密码
ming=j4.getText();
}elseif(e.getSource()==jb2){
jf.dispose();//点击取消按钮后窗体退出
}
}
/**
*验证用户名和密码
*/
publicvoidconfirm(){
//执行查找方法
Stringusername=j4.getText();
Stringuserpass=j5.getText();
Useruser=newUser(username,userpass);
UserServicesus=newUserServices();
//login(user);//用来判断用户名和密码
if(us.login(user)){
MainJFramecc=newMainJFrame();//调用菜单的窗口
jf.hide();//调用后进入菜单界面后登录窗口隐藏
}else{
count++;
JOptionPane.showMessageDialog(null,"用户名或密码错误","提示!
",JOptionPane.YES_NO_OPTION);
j4.setText("");
j5.setText("");
if(count==3){
JOptionPane.showMessageDialog(null,"用户名或密码错误超过三次","提示!
",JOptionPane.YES_NO_OPTION);
jf.hide();
jf.getDefaultCloseOperation();
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 JUI JDBC 实现 学生 管理 系统