基于个人用户信息管理系统Word格式文档下载.docx
《基于个人用户信息管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于个人用户信息管理系统Word格式文档下载.docx(41页珍藏版)》请在冰点文库上搜索。
![基于个人用户信息管理系统Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-4/30/7c9ba173-2c5c-41eb-8ec5-f771f85e30a2/7c9ba173-2c5c-41eb-8ec5-f771f85e30a21.gif)
亍二
^iriclude^J用户信息营理
4.功能设计
4.1系统层次方框图
为保证系统具有较好的可维护性和可扩展性,对系统进行分层设计,共分四层:
视图层:
接收用户输入信息,显示界面信息和用户信息
控制层:
访问流程控制
业务层:
完成具体功能的实现
数据库访问层:
完成对数据库访问操作的封装
具体结构如下图所示:
4.2算法设计(活动图或时序图)
1•登录功能
在主界面(MainView)输入账号和密码,封装成Login对象后发后给业务层(LoginService),在业务层中组合成执行登录操作的SQL语句,再将其传递给数据库访问类(DB,由其完成数据库的查询操作。
依据查询结果,如果成功则创建控制类(Controller)对象,显示欢迎信息和对用户信息进行维护的选
项;
如果失败,则显示提示信息并允许重新输入账号和密码。
图4.1登录功能时序图
图4.2登录功能活动图
2•注册功能
在主界面输入数字1,表示进行注册操作。
依次输入账户、密码和确认密码,当密码和确认密码不一
致时,需要重新输入密码和确认密码。
之后,账户和密码封装至Login对象中,传递给业务层
(LoginService),由业务层组合成添加SQL语句,发送至数据库访问类(DB),完成添加操作。
如果添
加成功,则返回主界面,输入新注册的账户和密码进行登录;
如果添加失败,则重新进行输入。
图4.2注册功能时序图
图4.2注册功能活动图
3•显示所有用户信息功能
登录成功及完成对用户信息增、删、改操作后,均需要进行所有用户信息的显示,由控制类
完成对数据
(Controller)调用视图层(MainView)中的方法,在方法中再利用业务层(UserService库访问类(DB的访问,获取tuser表的所有记录。
匚ontroller
MainVie;
■/
UserServic
DB
歸用方'
去
谓用方法
>
1*
就歪「表耶莓
记录的SQL语句
4.添加用户信息功能
返巨lListH蠡
Li打中的薮据
远回结果集
在控制类(Controller)输出的选择信息的提示下(1表示执行添加操作),利用简单工厂模式创建视图层(AddView)对象,之后回调接口方法,完成对业务层(UserService)中注册方法的调用,在该
方法中向数据库访问类(DB发送添加SQL语句。
如果添加成功,则显示所有用户信息(参考显示所有用户信息功能的实现);
如果添加失败,则提示重新输入。
创建对象
接口回调
添加SQL语匀
图4.5用户信息添加时序图
A
Y
图4.6
用户信息添加活动图
5•查询用户信息功能
在控制类(Controller)输出的选择信息的提示下(4表示执行添加操作),利用简单工厂模式创建
视图层(QueryView)对象,之后回调接口方法,在方法中输入要查询的用户名,再对业务层(UserService)
中查询方法执行调用,在该方法中向数据库访问类(DB发送模糊查询SQL语句。
如果查询成功,则显
示查询到的用户信息(参考显示所有用户信息功能的实现);
如果查询失败,则提示重新输入。
Controller
QueryVie-v
喽口叵逅
ifi回童询运爭
UEerService
DE
—►
刃行模欄当甬
V
遗回琶诲结集集
侷空童恆方:
图4.7查询用户信息时序图
(调用摄匚方:
去(疾匚三调)
®
图4.7查询用户信息活动图注:
删除用户信息和修改用户信息的功能设计请参考添加用户信息操作。
5.数据设计
5.1类图设计
根据分析,系统由13个类构成,分别为:
DB类
数据封装类:
Login类、User类
LoginService类、UserService类
Controller类
AddView类、DeleteView类、ModifyView类、QueryView类、MainView类、Operation类
其它:
Test类
1.数据库访问层
DB类用于封装JDBC的操作,完成对数据库的直接访问,采用单态模式创建对象。
2.数据封装类
Login类和User类分别用于登录、注册操作时的数据封装和用户信息管理时的数据封装。
3.业务层
LoginService类进行登录、注册等对Login类的访问操作,UserService类进行用户信息管理的操
作,两者均采用单态模式创建对象。
4.控制层
Controller类用于进行系统的流程控制。
5.视图层
MainView类用于完成登录、注册等提示信息的显示和系统主界面的显示,具体内容如下所示:
Operation接口是增、删、改、查等操作的抽象,AddView类、DeleteView类、ModifyView类和QueryView类均使用Operation接口,分别完成增、删、改、查等操作,利用简单工厂模式与Controller类建立关
系.
6.其它
Test类是程序的主类,用于启动系统。
5.2数据表设计
根据概要设计中Login类图和User类图可知,系统需要两张表t_login和t_user,其中,t_login
表用于存储登录信息,t_user表用于存储用户基本信息,两张表之间没有关联关系,具体结构如下所示:
表5-1tlogin表
序号
字段名
类型
长度
备注
1
id
int
4
主键
2
account
char
20
唯一性、不为空
3
password
不为空
表5-2tuser表
name
sex
0表示男,1表示女
birthday
date
默认
6.运行结果
1•注册
1”进
程序运行后,首先显示系统的登录界面,在其中可输入账号和密码进行登录操作,或输入“
行账户注册。
注册成功后需要重新输入账号和密码进行登录。
success1
regist亡r
pleaseinputyouraccount:
图5.1注册界面
如果输入的密码和确认密码不一致,则需要重新输入。
pleaseinputyouraccountandpasswordtologirijenter1forregisteronenewuser,pleaseinputaccount:
pleaseinputpassword:
pleaseinputconfirmationpassword:
passwordisnotequalsconfirmationpassword,inputagain'
图5.2密码和确认密码不一致
2•登录
用户可在系统首界面直接输入账号和密码进行登录,或在注册成功后再进行登录。
登录成功后显示所有用户信息和系统主控制界面。
pleaseinputyourpassword:
welcometoyoul
id|name|sei|birthday
5陈男1990-01-04
pleaseselectyouroperation:
1.insert2.delete3.modify4.query5.已xit
图5.3登录成功后的显示
3•添加
输入“1”,选择添加用户信息操作。
输入“0”表示返回上一级菜单。
依次输入用户的姓名、性别和生日,完成添加。
添加成功后,显示成功的提示信息,并显示所有用户信息和系统主控制界面。
如果添加失败,则显示失败的提示信息,并提示重新输入。
pleaseselectyouroperation:
1.insert2.delete3.inodify4.query5*exit
pleaseinputname\sex\birthdaytoADD・ifreturninput0:
addsuccess
welcometoyou!
id|name
5陈男
6李明男
1.insert2.delete3.modify
1990-01-04
2000-07-04
4.query5.eiit
图5.4添加用户信息界面
4•删除
输入“2”,选择删除用户信息操作。
如果输入“0”表示返回上一级菜单。
输入要删除的用户的id
(主键)值,完成删除。
删除成功后,显示成功的提示信息,并显示所有用户信息和系统主控制界面。
如果删除失败,则显示删除失败的提示信息,并提示重新输入。
nsert2.delete3.modify4.query5*eiit
pleaseinputuseridtoDELETE,ifreturninput0:
deletesuccess
welcometoyouI
id|name|sex|birthday
6李明男2000-07-04
图5.5删除用户信息界面
5.修改
输入“3”,选择修改用户信息操作。
输入要修改的用户的id
(主键)值,显示该用户的信息。
再依次输入要修改的用户名、性别和生日,执行修改操作。
修改成功后,显示成功的提示信息,并显示所有用户信息和系统主控制界面。
如果修改失败,则显示删除失败的提示信息,并提示重新输入。
@1^寿X扌火變
pleaseselectyauropeiatiqii;
1・insert2・de1ete3・modify4.ciucry5・esit
pleaseinputuser'
idtoMODIFY,ifreturninput0:
|
6李明男2000-07-01
pleaseinputn(?
wname:
pleaseinputnewser:
pleaseinputnewbirthday;
modifysuccess
welcometoyoui
id|naine|sex|birthday
6李超男2001-05-01
plea官cselectyouroperation:
1.insert2.delete3.modify4.query5.exit
图5.6修改用户信息界面
6.查询
输入“4”,选择查询用户信息操作。
输入要查询的用户名,显
示以改名称作为关键字的所有用户的信息,之后显示所有用户信息和系统主控制界面。
pleaseselectyourcpexation:
L・insert2・delete3・modify4・query5.exit
pleaseinputnameioquery,ifreturninput0:
id|tiarne|sei|Sirthday
6李超男2001-0571
weLcometoyou'
id|name|sesIbirthday
1*insert2.delete3*modifyJquery5.exit
图5.7查询到用户信息的界面
如果没有查询到相应信息,则显示没有数据的提示,并可进行重新输入。
Linsert2・delete3.modify4.query5.exit
pleaseinputnametoquery,ifreturninput0:
noresult
图5.8没有查询到用户信息的界面
6.退出
输入“5”,表示退出系统,结束整个程序。
1.insert2,delete3.modify
4,query
5.exit
Bye
图5.9退出系统界面
7.关键代码
一、数据库访问类(DB.java)
packagecn.edu.ccut.util;
importjava.sql.*;
publicclassDB{
privateConnectioncon;
privatePreparedStatementpre;
privateResultSetrs;
privatestaticDBdb;
static{
try{
Class.forName("
com.mysql.jdbc.Driver"
);
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}
privateDB(){}
publicstaticDBgetInstance(){
if(db==null){
db=newDB();
returndb;
privatevoidbuildConnection(){
con=DriverManager.getConnection("
jdbc:
mysql:
//localhost:
3306/demo"
"
root"
"
}catch(SQLExceptione){
publicResultSetexecuteQueryByParam(Stringsql,Object...o){
this.buildConnection();
pre=con.prepareStatement(sql);
for(inti=0;
i<
o.length;
i++){
pre.setObject(i+1,o[i]);
rs=pre.executeQuery();
returnrs;
publicResultSetexecuteQueryNoParam(Stringsql){
;
publicintexecuteUpdate(Stringsql,Object...o){
intcount=pre.executeUpdate();
returncount;
return0;
publicvoidclose(){
if(rs!
=null){
rs.close();
pre.close();
con.close();
二、数据封装类
1.Login.java
packagecn.edu.ccut.po;
importjava.sql.Date;
publicclassUser{
privateintid;
privateStringname;
privateintsex;
privateDatebirthday;
publicintgetId(){
returnid;
publicvoidsetld(intid){
this.id=id;
publicStringgetName(){
returnname;
publicvoidsetName(Stringname){this.name=name;
publicintgetSex(){
returnsex;
publicvoidsetSex(intsex){
this.sex=sex;
publicDategetBirthday(){
returnbirthday;
publicvoidsetBirthday(Datebirthday){this.birthday=birthday;
2.User.java
publicclassLogin{
privateStringusername;
privateStringpassword;
publicStringgetUsername(){returnusername;
publicvoidsetUsername(Stringusername){this.username=username;
publicStringgetPassword(){
returnpassword;
publicvoidsetPassword(Stringpassword){this.password=password;
三、业务层
1、LoginService.java
packagecn.edu.ccut.service;
importcn.edu.ccut.po.Login;
importcn.edu.ccut.util.DB;
importjava.sql.ResultSet;
importjava.sql.SQLException;
publicclassLoginService{
privateDBdb;
privatestaticLoginServiceservice;
privateLoginService(){
db=DB.getInstance();
publicstaticLoginServicegetInstatnce(){
if(service==null){
service=newLoginService();
returnservice;
publicbooleanlogin(LoginIo){
Stringsql="
select*fromt_loginwhereusername=?
andpassword=?
ResultSetrs=db.executeQueryByParam(sql,lo.getUsername(),lo.getPassword());
try{
if(rs.next())