java swing 组织机构_课内资源 - 基于Java Swing的小型社团成员管理系统

一、需求分析

1.1 个人信息

学号、姓名、性别、年级、系别、专业、出生日期、联系方式、个性签名、地址、照片。

6688e326f55dd3ba069bfc1958d72f41.png

1.2 基本功能要求管理员信息管理

登录、注销功能

修改密码功能

部落成员信息管理

添加成员

删除成员

修改成员信息

按条件查找筛选成员

2c79b5755a7513ee303f1db5a6607b63.png

1.3 高级特性管理员权限管理

成员信息包含照片

连接数据库性能的优化,比如:Connection

二、详细设计

2.1 数据库设计字段名

字段描述

数据类型

备注

psw

密码

nvarchar(30)

不为空

idNumber

学号

char(9)

主键

name

姓名

nvarchar(10)

不为空

sex

性别

char(2)

不为空

grade

年级

nvarchar(10)

不为空

dept

性别

nvarchar(30)

不为空

major

专业

nvarchar(30)

不为空

iden

身份

nvarchar(20)

不为空

born

出生日期

datetime

phone

联系方式

char(11)

pSignature

个性签名

nvarchar(50)

pAddress

地址

nvarchar(50)

picture

照片

nvarchar(150)

sql建表语句

create tablePersonInfo(

psw nvarchar(30)notnull,

idNumberchar(9)notnullprimary key,

name nvarchar(10)notnull,

sexchar(2)notnull,

grade nvarchar(10)notnull,

dept nvarchar(30)notnull,

major nvarchar(30)notnull,

iden nvarchar(20)notnull,

born datetimenull,

phonechar(11)null,

pSignature nvarchar(50)null,

pAddress nvarchar(50)null,

picture nvarchar(150)null

)

2.2 界面设计

登陆界面

a4d407eb0c894524c7c9c19d753d308a.png

主界面

3de0b1e5e2830c3ce02ac766cd4e2dfa.png

修改密码

aa0d09d3b169665ac6f17d70ec25a282.png

查询信息

e113e6c4a64cf0aaab10bbb7d5610123.png

修改信息

9e23c63132482a7d0cc699b19558947a.png

删除信息

df3ab2396c4678124b3ba8abbe1e61ee.png

2.3 分 包

2.3.1 视图层包View

9b35aa00970a0170482eb0abd663b998.png

2.3.2 控制层包Control

6c594a87712f3450f7556bf5f5192a17.png

2.3.3 模型层包Model

39b5297b440301d43f545d519e054d9a.png

2.4 分类

2.4.1 视图层类LoginView.java登录界面设计类

InfoManagerView.java信息管理系统主界面设计类

InfoPanel.java信息面板设计类

InfoSelectPanel.java查询信息面板设计类

InfoInsertPanel.java添加信息面板设计类

InfoUpdatePanel.java修改信息面板设计类

InfoDelPanel.java删除信息面板设计类

UpdatePasswordPanel.java修改密码面板设计类

2.4.2 控制层类InfoManager_01.java信息管理系统主类

LoginActEvents.java登录界面动作事件类

InfoManagerActEvents.java信息管理系统主界面动作事件类

InfoSelActEvents.java查询信息面板动作事件类

InfoInsActEvents.java添加信息面板动作事件类

InfoUpdActEvents.java修改信息面板动作事件类

InfoDelActEvents.java删除信息面板动作事件类

UpdPswActEvents.java修改密码面板动作事件类

ListSelEvents.java列表框选项事件类

2.4.3 模型层类Constants.java sql server数据库连接信息

DBUtil.java连接数据库操作类

DaoPattern.java操作数据库信息功能类(底层模型类)

InfoSelect.Java查询数据库信息类(业务逻辑处理类)

InfoUpdate.java更新数据库信息类(业务逻辑处理类)

三、开发实现

3.1 开发说明开发环境:eclipse

数据库:sql server 2008

项目UI界面使用eclipse的windowBuilder插件来设计

使用JDBC方式连接数据库

信息管理系统所涉及到的照片信息的处理,在项目路径下开一个文件夹picture,用来存储成员的照片信息,而在数据库中存储的是对应照片的路径。

使用mvc模式,按照功能和类型分类分包,使结构清晰。

提高系统安全性,系统要登录成功才能操作,对数据的增删改只有指定管理员才可以操作,以防止其他使用者随意更改数据,保证数据的安全性。

程序框架图

26b4be0bedaf7f6751c9e0104c999d1b.png

3.2 功能实现

3.2.1 数据库操作方面(对数据库操作即是crud)

将JDBC技术所需使用的数据库连接信息(数据库驱动程序,URL,用户名,密码等)封装成一个类,方便项目在不同数据库下使用时进行数据库信息修改。

设计一个操作数据库的模型类DaoPattern.java,里面是操作数据库信息的底层模型,包含两个方法,更新(包含增删改)数据库中的信息,和查询数据库中的信息,其中查询数据库信息返回的是结果集。这两个方法不提供具体的增删改查的sql语句,反而是把这些功能交到数据库业务逻辑层去实现。

设计操作数据库的业务逻辑类(InfoUpdate.java;InfoSelect.Java),这些类根据对数据库信息的不同操作而提供不同的sql语句来操作数据库。

对数据库信息的查询,尽量避免使用*查询所有信息而减慢查询的相应速度。

3.2.2 照片信息处理方面

在项目路径下开一个文件夹picture,用来存储成员的照片,而数据库中存储的是对应照片的路径。

添加/修改照片的处理:

点击选择照片按钮时,弹出打开文件选择对话框,此打开文件选择对话框设置文件过滤器,显示图片文件

对所选择的图片文件,还要做处理,处理所选择的文件是否存在

图片文件存在:还要做处理,处理项目路径下picture文件夹是否存在与当前图片文件同名的文件不存在同名文件:将所选择的图片复制到picture文件夹下,并获取图片路径,将路径添加到数据库中,并在标签上显示该照片

存在同名文件:提示用户所选文件不可用,要么更改所选文件的名称,要么另选文件

查询照片的处理:

从数据库中取出照片的路径,根据此路径创建图标图像对象:public ImageIcon(String filename) 根据指定的文件创建一个 ImageIcon

设置此图标图像的缩放,照片以适当大小显示在相应位置

将照片显示在标签上

3.2.3 登录模块输入学号和密码,选择登录的身份,点击“登录”按钮

初始学号是:111111111,初始密码:123456,初始身份:管理员

若学号为空,弹出提示对话框,提示“学号不能为空”

若学号不为空:但输入的学号不存在,提示“信息不存在”

而若是输入的信息不正确,则提示“您的信息有误!请重新输入”

若信息无误,释放登录界面,同时对用户权限进行设置;进入主界面,并显示当前使用者信息

若登录的是管理员,将“修改密码”, “添加成员信息”,“删除成员信息”,“修改成员信息”等菜单项设置为可编辑,允许用户操作

而若登录的是普通成员,则无法进行 修改密码 和 增删改信息操作

“重置”按钮:所以内容还原成默认

3.2.4 修改密码模块此模块只有管理员才可操作

若选择的是“设置”菜单下的“修改密码”菜单项,则进入修改密码界面

输入要修改密码的学号,设置新密码,并再次输入密码确认。

点击“修改”按钮:

如果新密码与确认密码不匹配,弹出提示对话框,提示“请准确输入您要修改的密码”

如果两个密码匹配:而要修改密码的学号不存在,弹出提示对话框提示“该学号不存在”

而若存在,会返回是否成功的信息。如果修改成功,弹出提示对话框提示“密码修改成功”,如果不成功,则提示“密码修改失败,请确认输入的信息是否正确!”

若要继续修改,点击“重置”按钮

点击“重置”按钮:清空文本框内容

3.2.5 查询成员信息模块

若选择的是“操作”菜单下的“查询成员信息”菜单项,有多种查询方式。

选择查询条件:年级、性别、系别;点击“泛查找”按钮

根据条件到数据库中查询信息,返回满足条件的学号如果集合为空,则没有查询结果,弹出对话框提示“找不到信息”

如果集合不为空,则有查询结果,在查询模板左侧的列表框中显示查询后的学号,并记录满足条件的学号共有几条

根据学号查询:

输入所要查询的学号,点击“根据学号查找”按钮

或在列表框中选择要查询的学号

如果是输入学号查询,还有防止输入的学号为空的情况。

获取输入或选中的学号,到数据库中去查询,返回查询后的结果集如果结果集为空:没有查询到任何信息。弹出提示对话框提示“该学号不存在,请确认后重新输入!”

如果结果集不为空:从结果集中取出信息显示在界面的相应位置。特别地,对于照片的处理,根据获取的照片路径创建图标图像对象,同时为了照片以适当的大小显示,设置了图像的缩放,然后把照片显示在对应标签上

3.2.6 添加成员信息模块填写成员基本信息,如果需要上传照片,点击“选择图片”按钮,将会弹出打开文件选择对话框,此文件选择器设置了文件过滤器(打开图片文件),并对于 所要打开的文件,先判断其在当前路径下是否存在。在存在的情况下,将其文件复制到项目路径下的picture文件夹中,但前提也要判断改文件夹是否存在同名文件。复制好后获取该文件在项目路径下的路径,存入到数据库中

点击“录入”按钮:录入 信息前,对于数据库中某些不允许为空的字段,先强制用户必须填写;然后对于所录入的学号,先到数据库中查询该学号是否已经存在。在不存在的情况 下,将填写的信息录入数据库中,并返回操作是否成功的提示

点击“重置”按钮:将内容清空还原成默认

3.2.7 修改成员信息模块用户要修改信息,必须先输入要修改信息的学号

点击“搜索”按钮:但前提要保证学号不为空,然后根据用户输入的学号,到数据库中去查询该学号成员的基本信息,返回结果集

如果结果集为空,弹出对话框提示“该学号不存在!请确认后重新输入!”

如果结果集不为空,将查询到的信息显示出来。用户就可以根据需要修改某些信息,对于照片的修改,与照片添加的操作类似,但有不同的一点是,一旦更换了照片,那么之前提供的照片要删除掉

点击“录入修改”按钮:获取用户修改后的信息,到数据库中去修改,并返回是否修改成功的提示信息

点击“重置”按钮:将全部内容清空还原默认

3.2.8 删除成员信息模块用户要删除信息,必须先输入要删除信息的学号

点击“搜索”按钮:但前提要保证学号不为空,然后根据用户输入的学号,到数据库中去查询该学号成员的基本信息,返回结果集

如果结果集为空,弹出对话框提示“该学号不存在!请确认后重新输入!”

如果结果集不为空,将查询到的信息显示出来。

点击“删除”按钮:为防止用户使用时由于某些不小心操作而删除数据,提高系统的安全性。所以在点击删除按钮的时候,还要弹出确认对话框,咨询用户是否删除。用户确认删除后,才到数据库中去删除信息,并返回删除是否成功的提示

点击“重置”按钮:文本内容清空还原默认

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541889.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java System类loadLibrary()方法与示例

系统类loadLibrary()方法 (System class loadLibrary() method) loadLibrary() method is available in java.lang package. loadLibrary()方法在java.lang包中可用。 loadLibrary() method is used to load the library with the given parameter named library_name(library …

CCF201509-2 日期计算(100分)

试题编号: 201509-2 试题名称: 日期计算 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述给定一个年份y和一个整数d,问这一年的第d天是几月几日?注意闰年的2月有29天。满足下面条件之一的…

Java StringBuilder trimToSize()方法与示例

StringBuilder类trimToSize()方法 (StringBuilder Class trimToSize() method) trimToSize() method is available in java.lang package. trimToSize()方法在java.lang包中可用。 trimToSize() method is used to minimize storage used for the characters (i.e. if the init…

第一百四十一节,JavaScript,封装库--DOM加载

JavaScript,封装库--DOM加载 DOM加载,跨浏览器封装DOM加载,当网页文档结构加载完毕后执行函数,不等待图片音频视频等文件加载完毕 /** dom_jia_zai()函数,DOM页面加载函数,等待页面结构加载完毕后就执行函数…

java 使用接口便于维护程序_Java初学——面向对象接口的应用

一、接口1.什么是接口接口是比抽象类更抽象的定义,接口不可以被实例化 实现类必须实现接口的所有方法 实现类可以实现多个接口 、多个接口使用逗号隔开 接口中的变量都是静态常量(public static final) 程序设计时面向接口的约定而不考虑具体实现 。2.为什么使用接口…

Java ResourceBundle getLocale()方法与示例

ResourceBundle类的getLocale()方法 (ResourceBundle Class getLocale() method) getLocale() method is available in java.util package. getLocale()方法在java.util包中可用。 getLocale() method is used to get the locale of this ResourceBundle. getLocale()方法用于获…

centos下安装pip时失败:

2019独角兽企业重金招聘Python工程师标准>>> [rootwfm ~]# yum -y install pip Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: mirrors.tuna.tsinghua.edu.cn * extras: mirrors.tuna.tsinghua…

java 标准输入流 关闭 打开_java输出流关流疑问,以下这个程序的in和out是否要关闭?...

/**标准IOjava.lang.System类中提供以下三个静态常量:staticfinalInputStreamin功能:“标准”输入流,流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指.../**标准IOjava.lang.System类中提供以下三个静…

Java RandomAccessFile readUTF()方法及示例

RandomAccessFile类readUTF()方法 (RandomAccessFile Class readUTF() method) readUTF() method is available in java.io package. readUTF()方法在java.io包中可用。 readUTF() method is used to read this RandomAccessFile as a string. readUTF()方法用于以字符串形式读…

LCD显示屏原理与应用

1、什么是LCD? (1)LCD(Liquid Crystal Display)俗称液晶.(2)液晶是一种材料,液晶这种材料具有一种特点:可以在电信号的驱动下液晶分子进行旋转,旋转时会影响透光性,因此我们可以在整个液晶面板后面用白光照&#xff08…

Java PipedInputStream connect()方法与示例

PipedInputStream类的connect()方法 (PipedInputStream Class connect() method) connect() method is available in java.io package. connect()方法在java.io包中可用。 connect() method is used to cause this PipedInputStream to be connected to the given PipedOutputS…

java写手机游戏_如何将自己编写的JAVA小游戏写到手机里?

2019-06-19怎么用java编写获取星期几的程序&#xff1f;import java。util。*; public class WeekDay { Calendar date Calendar。getInstance(); private int getMaxDate(int moth){ moth moth -1; if(moth > 12 || moth < 0){ System。 out。println("输入月份错…

Java PipedInputStream receive()方法与示例

PipedInputStream类的receive()方法 (PipedInputStream Class receive() method) receive() method is available in java.io package. receive()方法在java.io包中可用。 receive() method is used to receive a byte of content and it will block when no more input remain…

java去除重复对象_Java19-2 集合类去除重复对象

List独有方法&#xff1a;import java.util.ArrayList;import java.util.List;public class ListTest2 {public static void main(String[] args) {List listnew ArrayList();list.add("abc1");list.add("abc2");list.add("abc1");list.add(&quo…

SSM框架整合中遇到重复的问题Ambiguous handler methods mapped for HTTP

严重: Servlet.service() for servlet [spring] in context with path [/ssmDemo] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path /init.do: {public java.lang.String …

Java ObjectStreamClass lookup()方法与示例

ObjectStreamClass类lookup()方法 (ObjectStreamClass Class lookup() method) lookup() method is available in java.io package. lookup()方法在java.io包中可用。 lookup() method is used to lookup the descriptor for a class that can be serialized. lookup()方法用于…

java default parameter_JAVA菜鸟入门(7) default parameter , float/double vs BigDecimal

1 java的允许函数的默认参数吗?java不支持类似C那样&#xff0c;为函数设定默认参数&#xff0c;所以需要做的事情是&#xff0c;自己用函数重载的方式进行模拟。如下public class FFOverload {public String getName(String givenName,String familyName){return givenName&…

gitlab修改默认端口

部署gitlab的时候&#xff0c;一启动&#xff0c;发现80和8080端口已经被占用&#xff0c;无奈&#xff0c;只得先将监听80端口的nginx和监听8080端口的jenkins停止。这会儿有空&#xff0c;琢磨一下如何修改gitlab的默认端口。 修改主要分为两部分&#xff0c;一部分是gitlab总…

Java ObjectOutputStream reset()方法与示例

ObjectOutputStream类reset()方法 (ObjectOutputStream Class reset() method) reset() method is available in java.io package. reset()方法在java.io包中可用。 reset() method is used to reset this stream. It reset the stream to the position marked most recently. …

Excel 自定义关闭按钮

遇到过这样一个需求&#xff0c;是在excel关闭的时候&#xff0c;不要excel本身的保存窗口&#xff0c;只用自定义的. 这个的需要第一&#xff0c;是点击关闭时候触发&#xff0c; 第二&#xff1b;触发后&#xff0c;不能还是弹出那个窗口 第三&#xff1a;取消后&#xff0c;…