个人通讯录管理系统Word文档格式.docx
- 文档编号:4109526
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:31
- 大小:180.39KB
个人通讯录管理系统Word文档格式.docx
《个人通讯录管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《个人通讯录管理系统Word文档格式.docx(31页珍藏版)》请在冰点文库上搜索。
图1.2.2系统登录模块框架图
该子模块中用户在运用这个通讯录系统前要注册成为该系统的用户,每次打开通讯薄前都需要登录系统,以保证用户通讯信息安全性。
同时用户也可随时更改登录时所用的密码,提高安全性。
群组管理子模块框架如图1.3所示:
图1.2.3群组管理模块框架图
该子模块中用户根据自己实际情况对联系人信息可作相应的分组管理,加大通讯薄得灵活性。
联系人管理子模块框架如图1.4所示:
图1.2.4联系人管理模块框架图
该子模块实现用户对联系人的增、删、改、查。
第二章系统数据库设计
2.1数据库需求分析
数据库的需求分析是进行系统功能划分和系统设计最重要的一个环节,根据系统需求分析,大致设计3个数据库表:
用户表(userbase),联系人表(linkbase),群组表(groupbase)。
各个数据表的关系模型如下:
1).用户表(userbase):
(姓名,密码)。
2).联系人表(linkbase):
(编号,姓名,性别,电话,地址,Email,分组)。
3).群组表(groupbase):
(编号,分组)。
2.2数据库字典
表1用户表
字段名
类型
属性
说明
username
文本
用户账号
userpassword
口令
表2联系人表
name
姓名
sex
性别
phone
电话
address
地址
QQ邮箱
group
所属分组
num
主键
编号
表3分组表
群组
grouppnumber
2.3E-R图如下:
这一设计阶段是在系统功能结构图的基础上进行的,设计出能够满足用户需求的各种实体以及它们之间的关系,为后面的逻辑结构设计打下基础。
根据以上的分析设计结果,得到用户实体,联系人实体,分组实体,合计三个实体。
下面来介绍几个主要的实体的E-R图。
1.用户实体
一个安全的通讯录管理系统的职能是保证有进入和管理权限的用户能够进入此系统,并对系统里面的所属功能进行使用,对于没有权限的用户,一定不允许次非法用户有任何的进入和操作权限。
为此,我们得先注册成为此系统合法的用户,并把注册所用的用户名和密码保存在系统的数据库中,并且此时系统会为用户自动生成一个用户编号。
那么当我们以正确的方式,并输入正确的用户名和密码的时候就可以进去用户个人的通讯录系统。
用户实体包括:
用户编号、用户名,密码。
用户信息实体图如图2.3.1所示:
图2.3.1用户信息实体图
2.联系人实体
在个人通讯录系统中,用户使用此系统的目的就是为了更方便快捷的管理、查找、联系用户个人的亲戚、朋友和同事等。
那么联系人就是一个非常庞大的实体,系统必须知道当用户准备联系其中任何一人的时候,用户只要按正确的方式和路径去查找联系人后,系统就应当给出当初用户保存在此系统中联系人的一切相关信息。
联系人实体包含的属性有联系人姓名、性别、电话、地址、QQ号码、所属分组、以及编号。
联系人信息实体图如图2.3.2所示:
图2.3.2联系人信息实体图
3.分组实体
当用户的联系人建立得比较多的时候,为了更好的区分联系人和用户之间的关系,便于用户能够更便捷、快速的查找到用户所需要查找的联系人,系统特地的队联系人进行一个分组,比如分成亲人组、朋友组、同事组、客户组等等一系列的组别。
在建立好这些相关组别之后,当用户查找相关联系人的时候就可以按照组别查找。
分组表实体包含群组和编号。
分组表信息实体图如图2.3.3所示:
图2.3.3分组信息实体图
由上述对各实体的描述,可知系统实体间E-R图如图2.3.4:
图2.3.4系统实体间E-R图
第三章数据类的编写
在整个系统数据库中,涉及到了三个数据表:
用户表、联系人表、分组表,根据这三个数据表的结构的不同,在这章节内容中,对此分别别编写了一个类来对数据表进行操作。
3.1数据库连接公共类
在对数据表进行操作时,经常要对数据库进行连接的情况,为了避免重复编码,可将这些处理封装到单独的类中,通常称这些类为公共类。
在开发本系统时,对于用户登录、用户注册、对联系人的增删改查以及显示,对分组的增删改以及显示的操作,都涉及到了数据库连接,本系统将这一连接在一个DBTool类中实现。
DBTool类的实现如下:
importjava.sql.Connection;
importjava.sql.DriverManager;
publicclassDBTool{
publicConnectiongetConn(Stringurl){
try{//创建数据库连接驱动
Class.forName("
sun.jdbc.odbc.JdbcOdbcDriver"
);
returnDriverManager.getConnection(url);
}catch(Exceptione){
e.printStackTrace();
returnnull;
}
}
}
3.2数据表操作类
3.2.1用户表类
在其构造方法中完成数据库连接,代码实现如下:
packagecom.java.valuebean;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importcom.java.toolbean.DBTool;
publicclassUserBean{
privateConnectionconn=null;
privatePreparedStatementprst;
publicUserBean(){
Stringurl="
jdbc:
odbc:
list"
;
DBTooldt=newDBTool();
conn=dt.getConn(url);
对用户表的增和查找具体代码实现如下:
publicvoidinsert(Stringstr[]){//添加
try{
PreparedStatementprst=conn.prepareStatement("
insertintouserbase(姓名,密码)values(?
?
)"
prst.setString(1,str[0]);
prst.setString(2,str[1]);
prst.executeUpdate();
}catch(SQLExceptione){
publicResultSetgetAll(){//查询
ResultSetrs=null;
Statementst=conn.createStatement();
rs=st.executeQuery("
select*fromuserbase"
returnrs;
3.2.2联系人表类
importjava.sql.*;
importjavax.swing.JOptionPane;
publicclassLinkBean{
privateConnectionconn=null;
privateResultSetrs=null;
privateStatementst;
publicLinkBean(){
对联系人表的增删改查以及显示具体代码实现如下:
prst=conn.prepareStatement("
insertintolinkbase(编号,姓名,性别,电话,地址,Email,分组)values(?
…//此处为LinkBean中PreparedStatement对象获取各属性值
JOptionPane.showMessageDialog(null,"
\t添加成功!
"
publicintdeleteById(Stringid){//删除
intresult=-1;
deletefromlinkbasewhere编号=?
prst.setString(1,id);
result=prst.executeUpdate();
\t删除成功!
returnresult;
publicvoidrework(Stringstr[]){//修改
updatelinkbaseset编号=?
姓名=?
性别=?
电话=?
地址=?
Email=?
分组=?
where编号=?
\t修改成功!
publicResultSetgetById(Stringid){//查询
select*fromlinkbasewhere编号=?
rs=prst.executeQuery();
publicResultSetgetAll(){//显示所有
st=conn.createStatement();
select*fromlinkbase"
publicResultSetgetByGroup(Stringgroup){//显示该分组联系人
select*fromlinkbasewhere分组=?
prst.setString(1,group);
3.2.1分组表类
publicclassGroupBean{
publicGroupBean(){
对分组表的增删改以及显示具体代码如下:
publicintinsert(Stringstr[]){//添加
insertintogroupbase(编号,分组)values(?
publicintdeleteById(Stringid){//按删除
deletefromgroupbasewhere编号=?
updategroupbaseset编号=?
prst.setString(3,str[0]);
publicResultSetgetAll(){//显示
select*fromgroupbase"
第四章用户登录注册的设计
4.1用户登录功能的概述
当用户开始运行系统中得LoginFrame.java文件时,则进入用户登录页面,如图4.1.1所示:
图4.1.1用户登录界面
为了防止任意用户进入后台进行非法操作,可以设置登录功能。
当用户没有输入用户名和密码,或输入了错误的用户名和密码进行登录时,则会返回登录界面并显示相应的提示信息,如图4.1.2所示:
(a)(b)
(c)
图4.1.2用户登录非法示例图
用户登录模块的操作流程图如图4.1.3所示。
在实现登录功能时,首先对用户输入的用户名和密码进行是否为空的判断,若为空则提示用户输入用户和密码,若都不为空,则获取数据库中用户表中用户名和密码,并与用户输入的用户名和密码进行比对,若错误,则提示用户名或密码错误,若无误,则进入系统界面。
4.2用户登录功能的实现
1.界面设计
该登录界面的设计是用文本框中提交数据实现的,在用户框和密码框中,用户填写用户名和密码,然后按登录按钮,系统从数据库获取用户名和密码与用户用户输入的用户名和密码进行比对。
以下为登录界面的LoginFrame.java的关键代码:
publicLoginFrame(){
super("
用户登录"
…//此处为LoginFrame中组件的定义和布局
this.setBounds(500,300,500,500);
this.pack();
this.setResizable(false);
this.setVisible(true);
2.创建接受数据并处理登录事务的actionPerformed()方法
在登录界面中,登录将触发button,而监听器将监听到事务的发生,从数据库获取用户名和密码,与用户输入的用户名和密码比对。
其actionPerformed()方法代码如下:
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==loginBtn){
name=userTxt.getText().trim();
pwd=newString(passwordPwd.getPassword());
if(name.equals("
)){
JOptionPane.showMessageDialog(null,"
用户名不能为空,请重新输入用户名!
"
用户名空提示"
JOptionPane.OK_OPTION);
userTxt.requestFocus();
return;
}
elseif(pwd.equals("
密码不能为空,请重新输入密码!
密码空提示"
passwordPwd.requestFocus();
else{
try{
rs=conn.getAll();
rs.next();
Stringstrs[]=newString[2];
strs[0]=rs.getString
(1);
strs[1]=rs.getString
(2);
if(name.equals(strs[0].trim())&
&
pwd.equals(strs[1].trim())){
MainFramemain=newMainFrame();
this.dispose();
//关闭当前窗口,进入子窗口
}
else{
JOptionPane.showMessageDialog(null,"
用户名或密码错误!
登录失败提示"
}catch(SQLExceptionex){
ex=ex.getNextException();
}catch(Exceptionex){
ex.printStackTrace();
}finally{
conn.close();
}
}
if(e.getSource()==registerBtn){
RegisterFramere=newRegisterFrame();
Toolkittool=Toolkit.getDefaul
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 个人 通讯录 管理 系统