基于JUI+JDBC实现的学生管理系统文档格式.docx
《基于JUI+JDBC实现的学生管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《基于JUI+JDBC实现的学生管理系统文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
图3-2-1用户的用例图
②具体功能用例图(图3-2-2):
图3-2-2具体功能用例图
(二)用例描述
用例:
登录
ID:
1
简单描述:
系统的用户、输入正确的用户名和密码进入系统
主参与者:
用户
副参与者:
无
主流:
(1)进入系统登录页面
(2)键入预先分配好的帐号和密码
(3)点击登录,进入系统
(4)登录成功
(5)用户名或者密码输入错误超过三次直接退出系统
1.登录模块
修改学生信息
2
系统的用户、进本系统
前置条件:
用户,需要进入本系统的基本信息设置模块
(1)进入系统主管理页面
(2)点击基本信息管理设置按钮
(3)点击增删改按钮,在显示的学生信息的表格中鼠标选中要修改的学生信息进行出入要修改的信息进行修改操作
(4)弹框弹出提示信息“修改成功”
后置条件:
存在要修改的学生
附加流:
修改出错时提示出错误信息
2.修改学生模块
3.id查询学生信息
id查询学生信息
3
用户,需要进入本系统的学生信息设置模块
(2)点击学生信息管理设置按钮
(3)点击学生id查询按钮,输入id
(4)查询成功,界面显示查到的相应信息
存在要查询的学生
查询出错时提示出错误信息
4.删除学生信息
删除学生信息
4
(3)点击增删改按钮,在显示的学生信息的表格中鼠标选中要删除的学生信息进行一键删除信息操作
(4)弹框弹出提示信息“删除成功”
存在要删除的学生
删除出错时提示出错误信息
5.增加学生
增加学生信息
5
(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(){
//&
useUnicode=true&
characterEncoding=UTF8(处理往数据库存数据中文乱码的问题)
Stringdbur1="
jdbc:
mysql:
//localhost:
3306/cs?
"
//更改数据库名
+"
user=root&
password=root&
characterEncoding=UTF8"
con=DriverManager.getConnection(dbur1);
}catch(SQLExceptione){
数据库连接失败"
returncon;
*创建执行sql语句的对象
publicStatementgetPreST(Stringsql){
st=this.getMysqlCon().prepareStatement(sql);
returnst;
publicStatementgetCreST(){
st=this.getMysqlCon().createStatement();
*执行sql语句--查询
publicResultSetgetRs(Stringsql){
try{
rs=this.getCreST().executeQuery(sql);
returnrs;
*执行sql语句--更新(增加、删除、修改)
publicintgetN(Stringsql){
n=this.getCreST().executeUpdate(sql);
returnn;
*关闭执行查询所创建的所有对象
publicvoidcloseRs(){
rs.close();
st.close();
con.close();
*关闭执行更新所创建的所有对象
publicvoidcloseN(){
}
二:
服务层
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;
*显示数据表中的所有信息
publicList<
student_message>
showAll(){
List<
all=user_DAO.FindByall();
returnall;
/**
*删除用户信息
*@paramid
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;
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,"
用户名或密码错误超过三次"
jf.hide();
jf.getDefaultCloseOperation();
}