个人基于电话簿管理系统.docx

上传人:b****4 文档编号:3666279 上传时间:2022-11-24 格式:DOCX 页数:37 大小:430.28KB
下载 相关 举报
个人基于电话簿管理系统.docx_第1页
第1页 / 共37页
个人基于电话簿管理系统.docx_第2页
第2页 / 共37页
个人基于电话簿管理系统.docx_第3页
第3页 / 共37页
个人基于电话簿管理系统.docx_第4页
第4页 / 共37页
个人基于电话簿管理系统.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

个人基于电话簿管理系统.docx

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

个人基于电话簿管理系统.docx

个人基于电话簿管理系统

代码行数

572

项目名称

个人电话簿管理系统

1.实训目的

面向对象程序设计课程设计是计算机科学与技术专业培养计划中的重要实践教学环节,旨在通过一个管理信息系统的开发,加深学生对Java语言的理解和应用,尤其是对面向对象编程思想、Java编码规范、图形用户接口、JDBC访问数据库的理解,巩固软件工程课程的相关知识,了解软件开发的基本流程,进一步提高学生的学习能力、理解能力、表达能力及沟通能力。

2.实训内容

使用MyEclipse为开发工具,使用RationalRose为建模工具,使用MySQL为数据库服务器,基于GUI和JDBC技术,分析、设计并实现一个管理信息系统。

3.需求分析

3.1需求描述

登录:

输入账号和密码,完成登录操作,进入主界面,显示电话簿中的所有联系人姓名以及可进行的相关操作的选项。

退出:

登录后可进行退出操作,结束整个程序。

注册:

输入账户、密码和确认密码完成新用户的注册。

按字典序显示所有联系人的姓名:

登录成功后在主界面中以表格形式按字典序升序显示所有联系人的姓名。

添加联系人:

输入联系人的各项信息,完成联系人信息的添加操作,添加成功后以表格形式按字典序升序显示所有的联系人信息。

删除联系人:

根据联系人的主键,完成联系人的删除操作,删除成功后以表格形式按字典序升序显示剩余联系人的信息。

修改联系人:

输入联系人主键,显示联系人的详细信息,输入每个字段值,完成联系人信息的修改,修改成功后以表格形式按字典序升序显示所有的联系人信息。

查询联系人:

利用模糊查询完成对联系人名称的查询操作,获得包含查询关键字的联系人姓名列表,再输入某个联系人的主键,显示该联系人的详细信息。

3.2用例描述

 

4.功能设计

4.1系统层次方框图

为保证系统具有较好的可维护性和可扩展性,对系统进行分层设计,共分四层:

●视图层:

接收用户输入信息,显示界面信息和用户信息

●控制层:

访问流程控制

●业务层:

完成具体功能的实现

●数据库访问层:

完成对数据库访问操作的封装

具体结构如下图所示:

 

 

4.2算法设计(活动图或时序图)

 

 

注册活动图

登录活动图

添加活动图删除互动图

查询活动图修改活动图

 

5.数据设计

5.1类图设计

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

Ø数据库访问层:

DBConn类

Ø数据封装类:

Userxx类、User类

Ø业务层:

Userxxdao类、Userdao类

Ø控制层:

Tooljdbc类

Ø视图层:

Login类、类、LxManager类

Ø其它:

RunFrame类

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

1.数据库访问层

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

2.数据封装类

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

3.业务层

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

4.控制层

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

5.视图层

6.其它

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

 

5.2数据表设计

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

表5-1t_user表

序号

字段名

类型

长度

备注

1

id

int

4

主键

2

account

char

20

唯一性、不为空

3

password

char

20

不为空

表5-2t_xinxi表

序号

字段名

类型

长度

备注

1

id

int

4

主键

2

name

char

20

不为空

3

sex

int

2

0表示男,1表示女

4

tel

char

20

不为空

 

6.运行结果

1.注册

程序运行后,首先显示系统的登录界面,在其中可输入账号和密码进行登录操作,或输入“2”进行账户注册。

注册成功后需要重新输入账号和密码进行登录。

2.登录

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

登录成功后显示此用户信息和系统主控制界面。

3.添加

输入“4”,选择添加用户信息操作。

依次输入用户的姓名、性别和电话,完成添加。

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

如果添加失败,则显示失败的提示信息,

4.删除

输入“3”,选择删除用户信息操作。

输入要删除的用户的id(主键)值,完成删除。

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

如果删除失败,则显示删除失败的提示信息。

5.修改

输入“2”,选择修改用户信息操作。

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

再依次输入要修改的用户名、性别和电话,执行修改操作。

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

如果修改失败,则显示删除失败的提示信息。

6.查询

输入“1”,选择查询用户信息操作。

输入要查询的用户名,显示所查用户的信息,之后显示所有用户信息和系统主控制界面。

7.关键代码

1、数据库访问类

packageccut.wzy.jdbc;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.sql.Statement;

/**

*工具bean

*连接数据库

*驱动串

*数据库的地址

*数据库的登录名、密码

*更新、查询的实现

*

*/

publicclassDBConn{

privatestaticfinalStringDRIVER="com.mysql.jdbc.Driver";//驱动串

privatestaticfinalStringURL="jdbc:

mysql:

//localhost:

3306/mydb?

useUnicode=true&characterEncoding=UTF-8";//访问本机的MySQL数据库test,test是库名,可以根据实际情况修改

privatestaticfinalStringUSERNAME="root";

privatestaticfinalStringPASSWORD="123456";//访问MySQL的密码,可以根据实际情况修改

privateConnectioncon;//数据库连接对象

privateStatementst;//sql语句的执行对象

privateResultSetrs;//查询结果集,用来存放查询的结果,没有查到rs为空

privateintn;//更新数据时,成功操作的行数

//a)语句加载数据库的驱动程序

static{

try{

Class.forName(DRIVER);

}catch(ClassNotFoundExceptione){

//TODOAuto-generatedcatchblock

System.out.println("驱动程序找不到");

}

}

//b)建立数据库连接

publicConnectiongetCon(){

try{

con=DriverManager.getConnection(URL,USERNAME,PASSWORD);

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

System.out.println("数据库连接失败");

}

returncon;

}

//c)创建执行sql语句的对象

publicStatementgetSt(){

try{

st=this.getCon().createStatement();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

System.out.println("创建执行sql语句的对象失败");

}

returnst;

}

//ִ执行sql语句--查询

publicResultSetgetRs(Stringsql){

try{

rs=this.getSt().executeQuery(sql);

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returnrs;//在调用类中使用集合对象进行接收

}

//执行sql语句--更新(增加、删除、修改)

publicintgetN(Stringsql){

try{

n=this.getSt().executeUpdate(sql);

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returnn;//在调用类中使用整形变量接收

}

//d)断开数据库连接

publicvoidcloseRs(){

try{

rs.close();

st.close();

con.close();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

publicvoidcloseN(){

try{

st.close();

con.close();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

}

2、数据封装类

(1)User.Java

packageccut.wzy.model;

publicclassUser{

privateintid;

privateStringusername,password;

publicintgetId(){

returnid;

}

publicvoidsetId(intid){

this.id=id;

}

publicStringgetUsername(){

returnusername;

}

publicvoidsetUsername(Stringusername){

this.username=username;

}

publicStringgetPassword(){

returnpassword;

}

publicvoidsetPassword(Stringpassword){

this.password=password;

}

publicUser(intid,Stringusername,Stringpassword){

super();

this.id=id;

this.username=username;

this.password=password;

}

publicUser(){

super();

}

}

(2)Userxx.Java

packageccut.wzy.model;

publicclassUserxx{

privateintid;

privateStringname,xinbie,tel;

publicintgetId(){

returnid;

}

publicvoidsetId(intid){

this.id=id;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicStringgetXinbie(){

returnxinbie;

}

publicvoidsetXinbie(Stringxinbie){

this.xinbie=xinbie;

}

publicStringgetTel(){

returntel;

}

publicvoidsetTel(Stringtel){

this.tel=tel;

}

publicUserxx(intid,Stringname,Stringxinbie,Stringtel){

super();

this.id=id;

this.name=name;

this.xinbie=xinbie;

this.tel=tel;

}

publicUserxx(){

super();

}

@Override

publicStringtoString(){

return"Userxx[id="+id+",name="+name+",xinbie="+xinbie

+",tel="+tel+"]";

}

}

3、业务层

(1)Userxxdao.java

packageccut.wzy.dao;

 

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.text.Collator;

importjava.util.ArrayList;

importjava.util.Collections;

importjava.util.Comparator;

importjava.util.List;

importccut.wzy.jdbc.DBConn;

importccut.wzy.model.User;

importccut.wzy.model.Userxx;

importccut.wzy.tool.Tooljdbc;

publicclassUserxxdao{

privateDBConndb;

publicUserxxdao(){

db=Tooljdbc.getdb();

}

publicintadd(Userxxaa){

Stringsql="INSERTINTOt_xinxi(name,xingbie,tel)VALUES('"+aa.getName()+"','"+aa.getXinbie()+"','"+aa.getTel()+"')";

returndb.getN(sql);

}

publicintupdate(Userxxaa,intid){

ResultSetrs=db.getRs("SELECT*FROMt_xinxiWHEREid="+id);

if(rs==null){

System.out.println("用户不存在");

return0;

}

Stringsql="UPDATEt_xinxisetname='"+aa.getName()+"',tel='"+aa.getTel()+"',xingbie='"+aa.getXinbie()+"'whereid="+id;

returndb.getN(sql);

}

publicintdelete(intid){

Stringsql="DELETEFROMt_xinxiWHEREid="+id;

returndb.getN(sql);

}

publicListlist(){

Stringsql="SELECT*FROMt_xinxi";

ResultSetrs=db.getRs(sql);

Listcourse=newArrayList();

try{

while(rs.next()){

Userxxcou=newUserxx();

cou.setName(rs.getString("name"));

cou.setXinbie(rs.getString("xingbie"));

cou.setTel(rs.getString("tel"));

course.add(cou);

}

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

course=null;

}

Collections.sort(course,newComparator(){

@Override

publicintcompare(Userxxo1,Userxxo2){

Comparatorcom=Collator.getInstance(java.util.Locale.CHINA);

returnpare(o1.getName(),o2.getName());

}

});

returncourse;

}

publicListlist(Stringname){

Stringsql="SELECT*FROMt_xinxiWHEREnamelike'"+name+"%'";

ResultSetrs=db.getRs(sql);

Listcourse=newArrayList();

try{

while(rs.next()){

Userxxcou=newUserxx();

cou.setName(rs.getString("name"));

cou.setXinbie(rs.getString("xingbie"));

cou.setTel(rs.getString("tel"));

course.add(cou);

}

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

course=null;

}

//Collections.sort(course,newComparator(){

//

//@Override

//publicintcompare(Userxxo1,Userxxo2){

//Comparatorcom=Collator.getInstance(java.util.Locale.CHINA);

//returnpare(o1.getName(),o2.getName());

//}

//});

returncourse;

}

publicListlist(intid){

Stringsql="SELECT*FROMt_xinxiWHEREid="+id;

ResultSetrs=db.getRs(sql);

Listcourse=newArrayList();

try{

while(rs.next()){

Userxxcou=newUserxx();

cou.setName(rs.getString("name"));

cou.setXinbie(rs.getString("xingbie"));

cou.setTel(rs.getString("tel"));

course.add(cou);

}

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

course=null;

}

//Collections.sort(course,newComparator(){

//

//@Override

//publicintcompare(Userxxo1,Userxxo2){

//Comparatorcom=Collator.getInstance(java.util.Locale.CHINA);

//returnpare(o1.getName(),o2.getName());

//}

//});

returncourse;

}

}

(2)Userdao.java

packageccut.wzy.dao;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importccut.wzy.jdbc.DBConn;

importccut.wzy.model.User;

importccut.wzy.tool.Tooljdbc;

publicc

展开阅读全文
相关搜索

当前位置:首页 > 小学教育 > 其它课程

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

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