基于用户个人电话簿管理系统Word格式.docx

上传人:b****6 文档编号:21154319 上传时间:2023-01-28 格式:DOCX 页数:40 大小:819.03KB
下载 相关 举报
基于用户个人电话簿管理系统Word格式.docx_第1页
第1页 / 共40页
基于用户个人电话簿管理系统Word格式.docx_第2页
第2页 / 共40页
基于用户个人电话簿管理系统Word格式.docx_第3页
第3页 / 共40页
基于用户个人电话簿管理系统Word格式.docx_第4页
第4页 / 共40页
基于用户个人电话簿管理系统Word格式.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

基于用户个人电话簿管理系统Word格式.docx

《基于用户个人电话簿管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《基于用户个人电话簿管理系统Word格式.docx(40页珍藏版)》请在冰豆网上搜索。

基于用户个人电话簿管理系统Word格式.docx

图4.2登录功能时序图

图4.3登录功能活动图

图4.4注册功能时序图

图4.5注册功能活动图

图4.6显示所有电话簿信息时序图

图4.7显示所有电话簿信息活动图

图4.8电话簿信息添加时序图

图4.9电话簿信息添加活动图

图4.10查询电话簿信息时序图

图4.11查询电话簿信息活动图

5.数据设计

5.1类图设计

根据分析,系统由14个类构成,分别为:

数据库访问层:

DB类

数据封装类:

Login类、User类

业务层:

LoginService类、UserService类

控制层:

Controller类

视图层:

AddView类、DeleteView类、ModifyView类、QueryView类、MainView类、

Operation类

其它:

Test类

系统中各类之间关系如下图所示:

图5.1系统类图

5.1.1.数据库访问层

DB类用于封装JDBC的操作,完成对数据库的直接访问,创建对象,具体内容如下所示:

图5.2数据库访问层类图

5.1.2.数据封装类

Login类和User类分别用于登录、注册操作时的数据封装和电话簿信息管理时的数据封装,具体内容如下图所示:

图5.3数据封装类类图

5.1.3.业务层

LoginService类进行登录、注册等对Login类的访问操作,UserService类进行电话簿信息管理的操作,两者均采用单态模式创建对象,具体内容如下图所示:

图5.4业务层类图

5.1.4.控制层

Controller类用于进行系统的流程控制,具体内容如下所示:

图5.5控制层类图

5.1.5.视图层

MainView类用于完成登录、注册等提示信息的显示和系统主界面的显示,具体内容如下所示:

图5.6MainView类图

Operation接口是增、删、改、查等操作的抽象,AddView类、DeleteView类、ModifyView类、QueryView类均使用Operation接口,分别完成增、删、改、查、导出等操作,利用简单工厂模式与Controller类建立关系,具体内容如下所示:

图5.7视图层类图

5.1.6.其它

Test类是程序的主类,用于启动系统,具体内容如下:

图5.8Test类图

5.2数据表设计

根据概要设计中login类图和User类图可知,系统需要两张表t_login和t_suer,其中,t_login表用于存储登录信息,t_suer表用于存储电话簿基本信息,两张表之间没有关联关系,具体结构如下所示:

表5-2-1t_login表

序号

字段名

类型

长度

备注

1

id

int

11

主键

2

username

varchar

30

唯一性、不为空

3

userpass

不为空

表5-2-2t_user表

name

sex

10

4

tel

可为空

6.运行结果

6.1.登录

用户可在系统首界面直接输入账号和密码进行登录,或在注册成功后再进行登录。

登录成功后显示所有通讯录信息和系统主控制界面。

图6.1登录成功后的显示

6.2.添加

“1,选择添加电话簿信息操作,次输入联系人的姓名、电话和性别,完成添加。

添加成功后,显示成功的提示信息,并显示所有电话簿信息和系统主控制界面。

如果添加失败,则显示失败的提示信息,并提示重新输入。

图6.2添加电话簿信息界面

6.3.删除

输入“2”,选择删除电话簿信息操作。

如果输入“123返回删除菜单。

输入要删除的联系人的id(主键)值,完成删除。

删除成功后,显示成功的提示信息,并显示所有电话簿信息和系统主控制界面。

如果删除失败,则显示删除失败的提示信息,并提示重新输入。

图6.3删除电话簿信息界面

6.4.修改

输入“3”,选择修改电话簿信息操作。

如果输入“123返回修改菜单。

输入要修改的用户的id(主键)值,显示该电话簿的信息。

再依次输入要修改的联系人的姓名、电话、QQ号和性别,执行修改操作。

修改成功后,显示成功的提示信息,并显示所有电话簿信息和系统主控制界面。

如果修改失败,则显示删除失败的提示信息,并提示重新输入。

图6.4改电话簿信息界面

6.5.查询

输入“4”,选择查询电话簿信息操作。

如果输入“0”表示返回查询菜单。

输入要查询的联系人名,显示以改名称作为关键字的所有电话簿的信息,之后显示所有通讯录信息和系统主控制界面。

图6.5查询到电话簿息的界面

6.6.退出

输入“0”,表示退出系统,结束整个程序。

图6.6出系统界面

6.7.导出电话本

图6.7电话薄导出文件界面

图6.8导出账单信息位置的界面

7.关键代码

7.1数据库访问类(DB.java)

packageDB;

//创建连接方法每次直接调用获得连接加载数据库类

//重要的参数ip地址+端口,数据库名,用户名,密码

importjava.sql.*;

publicclassDB{

privatestaticConnectioncon;

privatePreparedStatementpre;

privateResultSetrs;

privatestaticDBdb;

static{

try{

Class.forName("

com.mysql.jdbc.Driver"

);

//加载驱动

}catch(ClassNotFoundExceptione){

e.printStackTrace();

}

}

privateDB(){

publicstaticDBgetInstance(){

if(db==null){

db=newDB();

returndb;

}//单态

publicstaticConnectionbuildConnection(){

con=DriverManager.getConnection("

jdbc:

mysql:

//localhost:

3306/demo?

useUnicode=true&

characterEncoding=utf-8"

"

root"

//建立数据库连接

}catch(SQLExceptione){

returncon;

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();

}

2、数据封装类

2.1Login.java

packageperson;

publicclassLogin{

privateStringusername;

privateStringpassword;

publicStringgetUsername(){

returnusername;

publicvoidsetUsername(Stringusername){

this.username=username;

publicStringgetPassword(){

returnpassword;

publicvoidsetPassword(Stringpassword){

this.password=password;

2.2User.java

publicclassUser{

privateintid;

privateStringname;

privateintsex;

privateinttel;

publicintgetId(){

returnid;

publicvoidsetId(intid){

this.id=id;

publicStringgetName(){

returnname;

publicvoidsetName(Stringname){

this.name=name;

publicintgetSex(){

returnsex;

publicvoidsetSex(intsex){

this.sex=sex;

publicintgetTel(){

returntel;

publicvoidsetTel(inttel){

this.tel=tel;

3、业务层

3.1LoginService.java

packageService;

importjava.util.Scanner;

importperson.Login;

importDB.DB;

publicclassLoginService{

privateDBdb;

privatestaticLoginServiceservice;

privateLoginService(){

db=DB.getInstance();

publicstaticLoginServicegetInstance(){

if(service==null){

service=newLoginService();

returnservice;

publicbooleanlogin(Loginlo){

Stringsql="

select*fromt_loginwhereusername=?

andpassword=?

"

;

ResultSetrs=db.executeQueryByParam(sql,lo.getUsername(),lo.getPassword());

if(rs.next()){

returntrue;

finally{

db.close();

returnfalse;

publicbooleanregister(Loginlo){

insertintot_login(username,password)values(?

?

)"

intcount=db.executeUpdate(sql,lo.getUsername(),lo.getPassword());

db.close();

if(count>

0){

returntrue;

else{

returnfalse;

3.2UserService.java

importjava.util.ArrayList;

importjava.util.List;

importperson.User;

publicclassUserService{

privatestaticUserServiceservice;

privateUserService(){

publicstaticUserServicegetInstance(){

service=newUserService();

publicList<

User>

getAllUsers(){

Stringsql="

select*fromt_suerorderbyname"

ResultSetrs=db.executeQueryNoParam(sql);

List<

users=null;

users=this.getList(rs);

}finally{

db.close();

returnusers;

queryUsersByName(Stringname){

select*fromt_suerwherenamelike?

ResultSetrs=db.executeQueryByParam(sql,"

%"

+name+"

privateList<

getList(ResultSetrs)throwsSQLException{

users=newArrayList<

();

Useruser;

while(rs.next()){

user=newUser();

user.setId(rs.getInt

(1));

user.setName(rs.getString

(2));

user.setSex(rs.getInt(3));

user.setTel(rs.getInt(4));

users.add(user);

publicbooleaninsertOneUser(Stringname,intsex,inttel){

insertintot_suer(name,sex,tel)values(?

intcount=db.executeUpdate(sql,name,sex,tel);

if(count>

0){

}else{

publicbooleandeleteUserById(intid){

deletefromt_suerwhereid=?

intcount=db.executeUpdate(sql,id);

if(count>

}else{

publicbooleanupdateUser(intid,Stringname,intsex,inttel){

updatet_suersetname=?

sex=?

tel=?

whereid=?

intcount=db.executeUpdate(sql,name,sex,tel,id);

0){

publicUsergetUserById(intid){

Stringsql="

select*fromt_suerwhereid=?

ResultSetrs=db.executeQueryByParam(sql,id);

Useruser=newUser();

user.setId(id);

user.setName(rs.getString

(2));

user.setSex(rs.getInt(3));

user.setTel(rs.getInt(4));

returnuser;

}catch(SQLExceptione){

}finally{

returnnull;

4、视图层

4.1operation.java

packageview;

//接口

importjava.util.InputMismatchException;

importService.UserService;

publicinterfaceOperation{

voidoperation(UserServiceservice)throwsInputMismatchException;

4.2AddView.java

ackageview;

importjava.util.Date;

importjava.text.ParseException;

importjava.text.SimpleDateFormat;

impo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1