获取项目源文件,学习交流联系Q:1415736481,可指导毕设,课设
商品房销售中的客户信息管理系统设计报告
在现代商品房销售中,客户信息关系到销量,因此该系统十分适合于一般小型楼盘管理客户信息,方便销售人员及时查看客户资料。
商品房销售中的客户信息管理系统主要包括用户管理、客户信息管理等基本功能。实现用户信息的增删及客户信息的修改、查询、删除、添加等几个方面的功能。
首先管理员拥有最高权限,可以实现对客户的所有功能,并且可以添加、删除管理员和销售人员,而销售人员只享有一般权限,可以查看用户信息。用一个登录界面同时实现了管理员和销售人员的登录,大大简化了系统设计。
1.2 设计任务与要求
编写一个商品房销售中的客户信息管理系统。客户信息包括客户编号、客户姓名、客户号码。具体实现的功能:能过实现增加客户信息、删除客户信息、查询客户信息、 修改客户信息等。
1.3 开发环境以及工具
系统编程基于JAVA Swing的图形用户界面开发,数据信息连接后台为Mysql数据库。系统运行环境为运行Windows7的PC机,具有JDK1.7以上Java编译环境,Eclipse编辑环境,以及Mysql数据库环境。
2.1 系统功能分析
本系统主要实现客户信息的管理,包括客户信息的添加、修改、查询和删除,及一些辅助项目的管理,如登录系统用户管理和销售人员管理。整个系统模块划分如图2-1所示:
图2-1 系统模块划分
2.2 用例图及用例说明
(1)添加客户信息用例描述
添加客户信息,是商品房客户信息管理系统的一项基本服务。在商品房客户信息管理系统的建模过程中,将这一行为抽象为一个用例。在不考虑软件的具体实现细节基础上,给出如下的用例描述。
Use Case 名称 |
添加客户 |
执行者 |
管理员 |
前置条件 |
管理员通过系统验证后,成功登录管理系统 |
事件流 |
A.输入管理员的用户名; |
若输入不正确,则提示“输入的口令不正确,请重新输入!!!” |
|
输入正确,则提示“请您输入您的密码!” |
|
B.输入密码; |
|
若输入不正确,则提示“输入的口令不正确,请重新输入!!!” |
|
成功登录系统后,显示管理员界面; |
|
C.输入要添加客户的编号; |
|
若客户已存在,提示“添加失败” |
|
若管理员可以正常添加,提示“添加成功” |
|
D. 管理员点击“确定”,客户增加一条客户信息; |
|
E. 添加完成,点击“退出”,退出系统。 |
|
后置条件 |
管理员成功添加客户信息,商品房客户信息管理系统保存添加记录并修改数据库中的信息。 |
删除客户信息,是商品房客户信息管理系统的一项基本服务。在商品房客户信息管理系统的建模过程中,将这一行为抽象为一个用例。在不考虑软件的具体实现细节基础上,给出如下的用例描述。
Use Case 名称 |
删除客户 |
执行者 |
管理员 |
前置条件 |
管理员通过系统验证后,成功登录管理系统 |
事件流 |
A.输入管理员的用户名; |
若输入不正确,则提示“输入的口令不正确,请重新输入!!!” |
|
输入正确,则提示“请您输入您的密码!” |
|
B.输入密码; |
|
若输入不正确,则提示“输入的口令不正确,请重新输入!!!” |
|
成功登录系统后,显示管理员界面; |
|
C.输入要添加客户的编号; |
|
若客户存在,提示“删除成功” |
|
若客户不存在,提示“删除失败” |
|
D. 管理员点击“确定”,客户删除一条客户信息; |
|
E. 删除完成,点击“退出”,退出系统。 |
|
后置条件 |
管理员成功删除客户信息,商品房客户信息管理系统保存删除记录并修改数据库中的信息。 |
查询客户信息,是商品房客户信息管理系统的一项基本服务。在商品房客户信息管理系统的建模过程中,将这一行为抽象为一个用例。在不考虑软件的具体实现细节基础上,给出如下的用例描述。
Use Case 名称 |
查询客户 |
执行者 |
管理员 |
前置条件 |
管理员通过系统验证后,成功登录管理系统 |
事件流 |
A.输入管理员的用户名; |
若输入不正确,则提示“输入的口令不正确,请重新输入!!!” |
|
输入正确,则提示“请您输入您的密码!” |
|
B.输入密码; |
|
若输入不正确,则提示“输入的口令不正确,请重新输入!!!” |
|
成功登录系统后,显示管理员界面; |
|
C.输入要查询客户的编号; |
|
若客户存在,提示“客户存在” |
|
若客户不存在,提示“客户不存在” |
|
D. 管理员点击“确定”,显示出客户信息; |
|
E. 查询完成,点击“退出”,退出系统。 |
|
后置条件 |
管理员成功查询客户信息,商品房客户信息管理系统保存查询记录。 |
修改客户信息,是商品房客户信息管理系统的一项基本服务。在商品房客户信息管理系统的建模过程中,将这一行为抽象为一个用例。在不考虑软件的具体实现细节基础上,给出如下的用例描述。
Use Case 名称 |
修改客户 |
执行者 |
管理员 |
前置条件 |
管理员通过系统验证后,成功登录管理系统 |
事件流 |
A.输入管理员的用户名; |
若输入不正确,则提示“输入的口令不正确,请重新输入!!!” |
|
输入正确,则提示“请您输入您的密码!” |
|
B.输入密码; |
|
若输入不正确,则提示“输入的口令不正确,请重新输入!!!” |
|
成功登录系统后,显示管理员界面; |
|
C.输入要修改客户的编号; |
|
若客户存在,提示“更新成功” |
|
若客户不存在,提示“更新失败” |
|
D. 管理员点击“确定”,修改客户信息; |
|
E. 查询完成,点击“退出”,退出系统。 |
|
后置条件 |
管理员成功查询客户信息,商品房客户信息管理系统保存查询记录。 |
根据客户信息管理描述,画出商品房客户信息管理系统整体用例图,见图2-1。
图2-2 商品房销售中的客户信息管理系统用例图
图3-1 系统类图
图3-2 系统状态图
图3-3 用户登录时序图
图3-4 用户操作时序图
本系统主要采用MVC模式。以下为系统文件结构图。
图3-5 系统文件结构
3.5 数据库设计
本系统运行需要与后台数据库进行数据库访问,本系统采用mysql数据进行数据库读取访问。因此需要在建立数据库(customermanagerment),并在数据库内建立3张表,以下为数据库中表信息。
表3-1 数据库中表信息
序号 |
表名 |
主要表字段名 |
|
customer (客户表) |
客户编号、客户姓名、客户号码 |
2 |
manager(管理员表) |
工号、姓名、登录密码 |
3 |
sales(销售人员表) |
工号、姓名、登录密码 |
客户的设计是为了对客户信息进行操作用的。客户编号是唯一确定客户信息记录的,其他字段是客户的一些基本信息。表的具体结构设计如表3-2所示:
表3-2 客户表表结构
字段名称 |
数据类型及长度 |
可否为空 |
约束条件 |
说明 |
id |
varchar(20) |
NO |
主键 |
客户编号 |
name |
varchar(20) |
YES |
|
客户姓名 |
phone |
varchar(11) |
YES |
|
客户号码 |
系统管理员信息表,该表的设计用于记录管理人员的信息,方便对管理员的管理,表中包括管理员工号和管理员的登录密码,表的具体结构设计如表3-3所示:
表3-3 管理员表表结构
字段名称 |
数据类型及长度 |
可否为空 |
约束条件 |
说明 |
id |
Varchar(20) |
NO |
主键 |
管理员工号 |
name |
Varchar(4) |
YES |
|
管理员姓名 |
password |
Varchar(20) |
YES |
|
管理员密码 |
销售人员信息表的设计是为了对销售人员信息进行管理,其中工号是唯一的。主要是为了唯一区分销售人员的信息。工号和密码还可以用于系统的登录。其他字段都是销售人员的一些基本信息。表的具体结构设计如表3-4所示:
表3-4 销售人员表表结构
字段名称 |
数据类型及长度 |
可否为空 |
约束条件 |
说明 |
id |
Varchar(20) |
NO |
主键 |
销售人员工号 |
name |
Varchar(4) |
YES |
|
销售人员姓名 |
password |
Varchar(20) |
YES |
|
销售人员密码 |
3.6 系统UI界面设计
3.6.1 登录模块界面设计
登录界面主要用于用户输入有效用户名与密码进行登录的。登录界面设计效果如图所示:
图3-6 系统登录界面
3.6.2 系统主界面设计
图3-7 系统主界面
3.6.3 添加客户信息界面
图3-8 添加信息界面
3.6.4 删除客户信息界面
图3-9 删除信息界面
3.6.5 查询客户信息界面
图3-10 查询信息界面
3.6.6 修改客户信息界面
图3-11 修改信息界面
4.1 登录模块
功能描述:用户输入用户名与密码,登录时系统进行用户合法性验证,验证合法后方可进入到系统主界面。
protected void logon(ActionEvent e)
{
if (usertextField.getText().trim().length() == 0 ||
userpasswordField.getPassword().length == 0)
{
javax.swing.JOptionPane.showMessageDialog(null, "用户&密码不允许为空", "系统提示", javax.swing.JOptionPane.ERROR_MESSAGE);
return;
}
ISalesDao ssi = new SalesDaoImp();
IManagerDao mdi = new ManagerDaoImp();
String name = usertextField.getText().trim();
String password = String.valueOf(userpasswordField.getPassword());
Manager m = new Manager();
m.setName(name);
m.setPassWord(password);
Sales sale=new Sales();
sale.setName(name);
sale.setPassWord(password);
System.out.println(m.getName());
System.out.println(m.getPassWord());
if (mdi.isExist(m))
{
ManagerMainUI frame = new ManagerMainUI();
this.setVisible(false);
if (managermainui == null)
{
managermainui = new ManagerMainUI();
}
managermainui.setVisible(true);
}
else if (ssi.isExist(sale))
{
SaleMainUI frame = new SaleMainUI();
this.setVisible(false);
if (salemainui == null)
{
salemainui = new SaleMainUI();
}
salemainui.setVisible(true);
}
else
{
javax.swing.JOptionPane.showMessageDialog(null, "输入的用户名或者密码错误,请重试!", "系统提示", javax.swing.JOptionPane.ERROR_MESSAGE);
usertextField.setText(null);
userpasswordField.setText(null);
usertextField.requestFocus();
return;
}
}
}
4.2 系统管理模块
//登出
if (lu == null)
{
lu = new LogonUI();
}
this.setVisible(false);
lu.setVisible(true);
//退出
this.setVisible(false);
4.3 操作管理模块
功能描述:通过用户输入相应的信息,系统进行有效性检查,提示相应信息,合法后进行数据库插入操作。
核心代码:
public void process()
{
String id=textField_id.getText().trim().toString();
String name=textField_name.getText().trim().toString();
String phone=textField_phone.getText().trim().toString();
Customer c=new Customer();
c.setId(id);
c.setName(name);
c.setPhone(phone);
int result = csi.addCustomer(c);
if(result > 0)
{
javax.swing.JOptionPane.showMessageDialog(null, "添加成功!", "系统提示", javax.swing.JOptionPane.INFORMATION_MESSAGE);
this.setVisible(false);
return;
}
else
{
javax.swing.JOptionPane.showMessageDialog(null, "添加失败!", "系统提示", javax.swing.JOptionPane.ERROR_MESSAGE);
return;
}
}
功能描述:查询出数据,选择要删除的数据库,系统进行是否要删除的判断,进行数据库删除操作。
核心代码:
private void deletecustomer()
{
String id=textField_id.getText().trim();
if(!textField_id.equals(""))
{
int result=csi.deleteCustomer(id);
if(result>0)
{
javax.swing.JOptionPane.showMessageDialog(null, "删除成功!", "系统提示", javax.swing.JOptionPane.ERROR_MESSAGE);
}
else
{
javax.swing.JOptionPane.showMessageDialog(null, "删除失败!", "系统提示", javax.swing.JOptionPane.ERROR_MESSAGE);
}
//System.out.println(textField);
this.setVisible(false);
}
else
{
javax.swing.JOptionPane.showMessageDialog(null, "请输入删除信息!", "系统提示", javax.swing.JOptionPane.ERROR_MESSAGE);
textField_id.setText(null);
textField_id.requestFocus();
return;
}
}
功能描述:查询需要更新的记录,进行相应修改后,系统进行数据库有效性检查,提示相应的信息,合法后进行数据库更新操作。
核心代码:
public void modifycustomer()
{
String newphone = textField_newcustomer.getText().trim().toString();
String oldphone = textField_oldcustomer.getText().trim().toString();
System.out.println(newphone);
Customer e = new Customer();
e.setPhone(newphone);
int result = csi.updateCustomerByPhone(e,oldphone);
if(result>0)
{
javax.swing.JOptionPane.showMessageDialog(null, "更新成功!", "系统提示", javax.swing.JOptionPane.INFORMATION_MESSAGE);
this.setVisible(false);
return;
}
else
{
javax.swing.JOptionPane.showMessageDialog(null, "更新失败!", "系统提示", javax.swing.JOptionPane.ERROR_MESSAGE);
return;
}
}
功能描述:检查用户输入的查询条件是否合法,合法后,进行数据库的查询操作。
核心代码:
public void showCustomerInfo()
{
String customername = textField_name.getText().trim().toString();
String customerphone = csi.getCustomerPhone(customername);
//System.out.println(customername);
Customer e=new Customer();
e.setName(customername);
e.setPhone(customerphone);
//textField_phone.setText(customerphone);
if (csi.isExistn(customername))
{
javax.swing.JOptionPane.showMessageDialog(null, "客户存在", "系统提示", javax.swing.JOptionPane.INFORMATION_MESSAGE);
System.out.println(customerphone);
textField_name.setEnabled(true);
textField_name.setText(customername);
textField_phone.setText(customerphone);
return;
}
else
{
javax.swing.JOptionPane.showMessageDialog(null, "客户不存在", "系统提示", javax.swing.JOptionPane.ERROR_MESSAGE);
return;
}
}
5.1 用户登录测试
等价类划分:
表5-1 用户登录等价类划分
测试用例 |
等价类 |
预期结果 |
测试输出 |
LT001 |
T1N1- T1P1 |
成功登录并进入主界面 |
成功登录并进入主界面 |
LT002 |
T1N1- T1P2 |
登录失败,并提示 |
登录失败,并提示 |
LT003 |
T1N1- T1P3 |
登录失败,并提示:密码不能为空 |
登录失败,并提示:密码不能为空 |
LT004 |
T1N2- T1P1 |
登录失败,并提示 |
登录失败,并提示 |
LT005 |
T1N2- T1P2 |
登录失败,并提示 |
登录失败,并提示 |
LT006 |
T1N2- T1P3 |
登录失败,并提示:密码不能为空 |
登录失败,并提示:密码不能为空 |
LT007 |
T1N3- T1P1 |
登录失败,并提示:用户名不能为空 |
登录失败,并提示:用户名不能为空 |
LT008 |
T1N3- T1P2 |
登录失败,并提示:用户名不能为空 |
登录失败,并提示:用户名不能为空 |
LT009 |
T1N3- T1P3 |
登录失败,并提示:用户名不能为空 |
登录失败,并提示:用户名不能为空 |
5.2 增加客户测试
等价类划分:
表5-2 增加客户等价类划分
测试用例 |
等价类 |
预期结果 |
测试输出 |
AT001 |
T2N1- T2P1 |
客户添加成功 |
客户添加成功 |
AT002 |
T2N1- T2P2 |
客户添加失败,并提示 |
客户添加失败,并提示 |
AT003 |
T2N1- T2P3 |
客户添加成功 |
客户添加成功 |
AT004 |
T2N2- T2P1 |
客户添加失败,并提示 |
客户添加失败,并提示 |
AT005 |
T2N2- T2P2 |
客户添加失败,并提示 |
客户添加失败,并提示 |
AT006 |
T2N2- T2P3 |
客户添加失败,并提示 |
客户添加失败,并提示 |
AT007 |
T2N3- T2P1 |
客户添加失败,并提示 |
客户添加失败,并提示 |
AT008 |
T2N3- T2P2 |
客户添加失败,并提示 |
客户添加失败,并提示 |
AT009 |
T2N3- T2P3 |
客户添加失败,并提示 |
客户添加失败,并提示 |
5.3 删除客户测试
等价类划分:
表5-3 删除客户等价类划分
测试用例 |
等价类 |
预期结果 |
测试输出 |
DT001 |
T2N1 |
客户删除失败,并提示 |
客户删除失败,并提示 |
DT002 |
T2N2 |
客户删除失败,并提示 |
客户删除失败,并提示 |
DT003 |
T2N3 |
客户删除成功 |
客户删除成功 |
5.4 查询客户测试
等价类划分:
表5-4 查询客户等价类划分
测试用例 |
等价类 |
预期结果 |
测试输出 |
FT001 |
T2N1 |
客户查询失败,并提示 |
客户查询失败,并提示 |
FT002 |
T2N2 |
客户查询失败,并提示 |
客户查询失败,并提示 |
FT003 |
T2N3 |
客户查询成功 |
客户查询成功 |
5.5 修改客户测试
等价类划分:
表5-5 修改客户等价类划分
测试用例 |
等价类 |
预期结果 |
测试输出 |
MT001 |
T2N1- T2P1 |
客户修改失败,并提示 |
客户修改失败,并提示 |
MT002 |
T2N1- T2P2 |
客户修改失败,并提示 |
客户修改失败,并提示 |
MT003 |
T2N1- T2P3 |
客户修改失败,并提示 |
客户修改失败,并提示 |
MT004 |
T2N2- T2P1 |
客户修改失败,并提示 |
客户修改成功 |
MT005 |
T2N2- T2P2 |
客户修改失败,并提示 |
客户修改失败,并提示 |
MT006 |
T2N2- T2P3 |
客户修改失败,并提示 |
客户修改成功 |
MT007 |
T2N3- T2P1 |
客户修改成功 |
客户修改成功 |
MT008 |
T2N3- T2P2 |
客户添加失败,并提示 |
客户修改失败 |
MT009 |
T2N3- T2P3 |
客户修改失败,并提示 |
客户修改失败,并提示 |
此次课程设计在陆老师的悉心指导下,并且通过自己不断的摸索和交流学习,最终商品房销售中的客户信息管理系统得以完成。系统充分的运用到了Java程序语言、Mysql数据库、MVC架构等知识,使系统的层次性分明,各模块之间的耦合度降低。
通过陆老师几次课程,对于系统各个模块有了初步了解,完成了基本的客户的处理:增加、删除、修改、查询。在课程设计中,遇到了一些问题,也感觉到自己存在的不足,通过向他人请教以及查阅相关资料,自己感觉收获了很多。此次课程设计,增加了自己对计算机编程方面的渴望,对于系统体系结构有了更深层次的理解,希望在今后的日子里,通过不断向老师学习,拓展自己的知识面,使自我的编程水平得到不断提高。
[1] 耿祥义,张跃平. 《Java与面向对象程序设计》.第二版.北京:清华大学出版社,2013.
[2] 李春葆,曾平. 数据库原理与应用.第二版.北京:清华大学出版社,2007.
[3] 李钟尉,陈丹丹.java项目开发案例全程实录(第2版) 2011.
[4] 刘长炯.MyEclipse6 Java开发中文教程[M].北京:电子工业出版社 2007.
[5] 印雯. Java语言与面向对象程序设计[M].北京:清华大学出版 2000.
[6] Swing ,David M.Geary.Java2图形设计[M].北京:机械工业出版社 2000.
[7] 王珊,萨师煊. 数据库系统概论(第四版)[M].北京:高等教育出版社 2006.
[8] 郑岩.数据仓库与数据挖掘原理及应用.[M].北京:清华大学出版社 2011
[9] 张海藩. 软件工程导论(第5版).[M] .北京:清华大学出版社 2007