首页 > 代码库 > 学生信息管理系统-----文档资料

学生信息管理系统-----文档资料

1.系统的设计模式
   该学生基本信息管理系统按照MVC设计模式进行设计开发.
   系统包有controller,model,uitil,view,以及model下的子包dao,vo.其中
   controller存放所有的事件处理监听器类.
   dao存放所有的操作类,如用户操作(UserDao),学生信息(StudentInformationDao)

   util存放所有的功能类,如jdbc的封装(DBManaer),数据格式校验(Validate).

   view存放所有的用户界面,如登陆界面(LoginView),主界面(MainView).
   vo存放所有的实体类,如用户(User),学生信息(StudentInformation).

 

2.设计过程
2014-12-22
首先进行登录功能的设计

1)登录图形界面的设计
登录图形界面采用BorderLayout布局,分为Top,Center,Bottom三个部分.
Top区域只定义了JLabel类的一个对象,显示"用户登录"字样.
Center区域用到了JTextFiled,JPasswordFiled,以及JLabel,分别显示文本框,密码框和它们所对应的标签.
Bottom区域用JButton实现了三个按钮,分别实现登录,取消,退出功能.

2)用户实体类(User)的设计
两个私有成员变量username和password以及它们的Getter,Setter方法,构造方法.

3)数据库用户表设计
      名          类型   长度    为空?
username varchar 10 不允许为空 主键
password varchar 15 不允许为空
并在表中添加一条记录,如下:
username="111" password="111"

4)登录监听器类的设计
实现登录,取消,退出这三个按钮的点击事件.
登录功能:
1.如果用户名密码与数据库中user表中的相符合,则登录成功,进入主界面.
2.如果用户名密码至少一个为空,则出现提示框(showMessageDialog)"用户名密码不能为空".
3.若果用户名密码输入错误,则出现提示框"用户名密码不正确,还有2次机会",如果超过3次输入,则自动退出系统.
取消功能:
点击取消按钮,清空用户名,密码.
退出功能:
点击退出按钮,出现询问框(showConfirmDialog)"您确信退出该程序吗?"选择"是",退出.选择"否",返回登陆界面.

2014-12-23
主界面设计

1)主界面图形界面的设计
主界面包含3个菜单,基本操作菜单,导入导出菜单,帮助菜单.
基本操作菜单有三个菜单项:增加,查询,密码修改,退出.
导入导出菜单有四个菜单项:从excel导入,从txt导入,导出到excel,导出到txt.
帮助菜单有两个菜单项:关于本系统,系统帮助.
主菜单界面主要用到JMenu,JMenuBar,JMenuItem.

2014-12-23
接下来是主界面帮助菜单菜单项的实现(比较简单)

1)关于本系统
一、关于本系统界面的设计
使用JLabel设计
显示该系统的名称,班级,学号,时间,制作人信息.
名称,班级,学号,时间信息显示在窗口中央,制作人信息显示在窗口的右下角. 二、关于本系统点击事件
在帮助系统监听器(HelpSystemController)中使用showAboutSystem()方法实现.

2)系统帮助
一、系统帮助界面的设计
直接创建一个窗体,规定其大小,Frame.setSize(700,500)
用文件读写的方式,通过File,FileReader,BufferedReader把txt文件读取到TextArea中.并根据实际情况添加上下滚动条.
二、系统帮助点击事件
在帮助系统监听器(HelpSystemController)中使用showSystemHelp()方法实现.

关于本系统基本实现.

2014-12-24
实现基本操作菜单菜单项的功能

1)退出
一、退出界面的设计
退出界面只是一个询问框"您确信要退出该系统吗?"选择"是",退出该系统;选择"否",返回主界面MainView.
二、退出点击事件
在基本操作监听器(BaseWorkController)中使用exitSystem()方法实现.

2)密码修改
一、密码修改界面的设计
密码修改界面和登陆界面比较类似,这里就不在多说,三个密码框以及各自对应的标签,三个按钮"修改","取消","返回".

二、密码修改点击事件
在基本操作监听器(BaseWorkController)中使用showUpdatePasswordView()方法实现.
三、实现功能

1.点击"修改"按钮,若输入的原密码与数据库中的不相符,则显示提示框"原密码不正确".
2.当"新密码"与"确认密码"不相同时"显示提示框"两次密码不一致"请检查"
3.对密码的校验:密码长度6-10;密码中至少包含一个数字,一个大写字母,一个小写字母,不能有空格(这个留在最后写).

3)增加
一、数据库学生信息表的设计

名    类型   长度    为空?
id varchar 15 不允许为空 主键
name varchar 15 不允许为空
gender varchar 10 不允许为空
birth varchar 20 不允许为空
province varchar 20 不允许为空
interest varchar 50 不允许为空
phonenumber varchar 15 不允许为空

二、信息增加界面的设计
信息增加界面采用BorderLayout布局,分为Top,Center,Bottom三个部分.
Top区域只定义了JLabel类的一个对象,显示"填写学生基本信息"字样.
Center区域是学生的一些基本信息,包括学号,姓名,性别,生日,省份,特长,手机号码.其中性别是单选框,特长是复选框,省份是下拉列表.其余为单行文本框.
Bottom区域有三个按钮,"保存","取消","返回".

三、增加点击事件
在基本操作监听器(BaseWorkController)中使用addStudentView()方法实现.

四、实现功能
1.所有信息都必须输入或选择,若为空,则显示提示框"***字段不能为空"
2.对于学号,要求是10位长度的纯数字组成,否则显示提示框"学号格式不正确"
3.输入的学号不能在数据库中存在,否则显示提示框"该学号已存在"
4.对于手机号码,要求是合法的手机号码,否则显示提示框"手机号码格式不正确"
5.对于生日,要求是合法的日期,即"yyyy-mm-dd"格式,否则显示提示框"输入的生日字段不是一个有效的日期"
6.点击"保存",在数据库中增加一条记录,并显示询问框"您输入的信息已成功保存,是否继续输入?",若点击"是"则清空各组件内容后返回到"增加界面",否则返回到"主界面";
7.当点击"取消",清空各组件的输入或选择.
8.当点击"返回",关闭"信息增加"界面,返回到"主界面".

4)查询
一、查询界面的设计
查询图形界面采用BorderLayout布局,分top,center,bottom三个面板.
top:
四个JLabel,四个JTextField,两个按钮JButton"开始查询","清空条件".
center:
DefaultTableModel实体类.
bottom:
四个JButton按钮,"修改","删除","导出到Excel","返回".

二、增加点击事件
在基本事件监听器(BaseWorkController)中使用findView()方法实现.

三、实现功能
可按学号,姓名,性别,省份条件查询,也可组合查询(仅限性别和省份查询).
选中查询的信息,可以进行修改或操作或删除功能,直接影响数据库中的数据.
点击返回,返回到主界面.

基本操作基本实现.

2014-12-25
实现导入导出功能

1)导入txt文本信息到数据库
一、窗口界面
利用 JFileChooser choosertxt=new JFileChooser(),点击"从txt导入"菜单项时,直接弹出文件选择框,选择文件,进行操作.

二、点击事件
在导入导出监听器(ImportExportController)中使用showImportTxtView()方法实现.

三、实现功能
1.当txt文档中某行的学号与数据库表中的学号重复时,显示提示信息"文件中第?行的学号在数据库中已存在,请检查1!",并把没有重复的学号的信息保存到数据库中.
2.若导入成功,显示提示信息"成功导入?条记录到数据库中".

2)导入Excel表格信息到数据库
一、窗口界面
与txt导入相同.利用 JFileChooser choosertxt=new JFileChooser(),点击"从excel导入"菜单项时,直接弹出文件选择框,选择文件,进行操作.

二、点击事件
在导入导出监听器(ImportExportController)中使用showImportExcelView()方法实现.

三、实现功能
1.当excel表格中某行的学号与数据库表中的学号重复时,显示提示信息"文件中第?行的学号在数据库中已存在,请检查1!",并把没有重复的学号的信息保存到数据库中.
2.若导入成功,显示提示信息"成功导入?条记录到数据库中".

3)导出到txt文档
一、窗口界面
利用 JFileChooser choosertxt=new JFileChooser(),点击"导出到txt"菜单项时,直接弹出文件选择框,选择文件,进行操作.

二、点击事件
在导入导出监听器(ImportExportController)中使用showExportTxtView()方法实现.

三、实现功能
把数据库中的学生信息保存到txt文档中,在txt中实现自动换行.

4)导出到ecel文档
一、窗口界面
利用 JFileChooser choosertxt=new JFileChooser(),点击"导出到excel"菜单项时,直接弹出文件选择框,选择文件,进行操作.

二、点击事件
在导入导出监听器(ImportExportController)中使用showExportExcelView()方法实现.

三、实现功能
把数据库中的学生信息保存到excel文档中.

导入导出基本实现.

 

3.主要功能模块的实现
1.登录模板的实现
流程图:
登陆界面设计→vo,dao设计→登录事件监听器
实现:
在LoginController类中增加构造方法,获取视图对面的成员变量.通过getText()可得到自己输入的 用户名,密码.
在UserDao类中增加checkUser()方法,返回值为boolean类型,用来判断用户名密码是否与数据库中 的相同,通过LoginController中调用实现登录功能,同时增加time变量,来记录输入次数,当time>3,自 动退出该系统.清空则用setText()方法将用户名密码赋值为""即可.用showMessageDialog()方法显示提示框,用showConfirmDialog()方法显示询问框.

2.密码修改的实现
流程图:
密码修改界面→事件监听器
实现:
与登陆功能类似.在UserDao类中增加checkUserOld()方法,校验输入的旧密码是否正确,通过调用实 现.若果输入的数字为空,用length()==0判断比equal("")好一点.

3.增加信息的实现
流程图:增加界面→vo,dao设计→增加事件监听器
实现:
图形界面注意排版问题.功能的实现与上面类似.新出现了下拉列表框,单选按钮,复选框.
下拉列表框:
下拉列表框中的内容是各个省份,定义一个provinces数组,将各个省份和"请选择"添加 到数组, 用setMaximumRowCount(7)方法规定最大显示7行信息. 当点击取消按钮时,下拉列 表框中的内容变为 "请选 择",该功能的实现用setSelectedItem("请选择")方法实现.如果 判断省份是否选择时,应用 getSelectedItem().toString().equals("请选择")来判断.要注 意:getSelectedItem()类型并不是 String,而是Object.
单选按钮:
单选按钮的内容是性别,把JRadioButton放到ButonGroup中,实现单选功能,但是取消的 时候如 果直接调用SetSelection(false)是无法实现的.解决办法是再创建一JRadioButton, 不要把这个按钮 添加到面板中.实现取消时,只需要调用这个按钮即可.调用 隐藏按钮的方 法是doClick().判断是否 选中的方法是isSelected().
复选框:
判断是否被选中:isSelected(),清空:setSelected(false).

其他的实现都与上述密码框的实现相同.

4.系统帮助的实现
实现:
本想用JTextArea来实现的,只不过滚动条功能按照网上尝试了几种方法,无法实现.改用TextArea,
TextArea自动有滚动条功能.通过File,FileReader,BufferedReader读取txt文档中的内容,通过append()方法写入TextArea.
setEditable(false):无法修改txt文档的内容.
\r\n:实现换行功能.

5.导入导出功能的实现
实现:
从txt导入,导出到txt
导入主要用到File,FileReader,BufferedReader把txt文档的内容读出来,通过for循环把读出来的内 容写入数据库中.
导出:首先通过sql语句把数据库中的数据拿出来,指定导出路径,利用for语句,File,Write类将信息 写入txt文档,从而实现导出功能.
从excel导入,导出到excel
表格的操作与文档的操作不同.用到Workbook,Sheet.
导入:首先实例化一个工作表,通过双重for循环,sheet.getRows(),sheet.getColumns()得到每个格 子的信息,再利用双重for循环以及sql语句将得到的信息存入数据库,实现导入.
导出:
用到WritableWorkbook,WritableSheet,Label这三个类.
先从数据库中把信息拿出来,用for循环,通过addCell()把每个字段存入表格中,实现导入功能.

6.查询功能的实现
实现:
最主要的是6个按钮的实现.
查询按钮:
查询功能比较简单.调用StudentInformationDao中的ById(),ByName(),ByGender(),ByProvince()方法实现.如果没有查找到信息,出现对话框"查询不到该字段,请检查输入是否有误".
清空条件:
用setText()方法,将各个TextField中的值设为空即可.
修改:
修改界面和增加界面相同,用鼠标点击获取一行信息,把这些信息显示在修改界面上,点击保存,从数据库中删除原本的信息,把修改后的信息保存到数据库中.对于单选按钮和复选框,用setSelected(true)表示选中.
删除:
将查询到的信息储存在list表中,利用鼠标点击获取的row,以及对数据库进行操作的delinformation()方法,从数据库中删除选中的一行信息,同时在表中也删除这行信息.
导出到Excel表格:
遇到导入导出中的导出到Excel表格方法完全相同,不做讲解.
要注意的是:在最后两个for循环里i,j,m,u变量的递增.
返回:
隐藏FindView窗口.setVisible(False);


4.系统的不足
1.功能实现了,但界面不美观,太单调.
2.有些代码过于繁琐.(找不到更好的方法去实现)

 

5.本门课程的收获

这门课让我学到了很多.java的基本语法,ArrayList,菜单,java IO,对数据库的操作,java图形界面编程,
学java编程,最主要的是还是图形界面.
创建图形界面的步骤:
1.创建界面容器.
2.创建容器的布局.
3.向容器中添加基本组件或其他容器.
4.用监听器来响应各种事件.
然后将java文件打包生成一个可运行的.jar文件(电脑里必须有jre才能直接运行),然后用jsmooth生成exe文件,这正是我们想要得到的.

 

6.课程的建议
多布置作业,多练习才能够让自己熟练掌握.


7.以后的发展方向
对Andriod手机应用的开发感兴趣.

 

PS:之后会陆续的把源代码上传.

学生信息管理系统-----文档资料