客户管理系统2.docx

上传人:b****6 文档编号:5998717 上传时间:2023-01-02 格式:DOCX 页数:22 大小:169.75KB
下载 相关 举报
客户管理系统2.docx_第1页
第1页 / 共22页
客户管理系统2.docx_第2页
第2页 / 共22页
客户管理系统2.docx_第3页
第3页 / 共22页
客户管理系统2.docx_第4页
第4页 / 共22页
客户管理系统2.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

客户管理系统2.docx

《客户管理系统2.docx》由会员分享,可在线阅读,更多相关《客户管理系统2.docx(22页珍藏版)》请在冰豆网上搜索。

客户管理系统2.docx

客户管理系统2

3

三级实践课题设计任务书

姓名

题目

客户管理系统的开发

开发一个比较完善的基于JAVA的客户管理服务系统,主要任务是用计算机对企业客户进行日常管理,如企业客户信息的添加、删除、修改、查询。

系统还区分了客户端与服务器端。

可以实现多台计算机同时访问服务器进行客户的管理工作。

主要功能包括:

1.对客户的基本管理功能,系统界面的组建(独立完成)

2.区分客户端与服务器端。

3.对数据库中的数据进行基本操作,实现系统的管理功能

开发工具:

Photoshop、MySQL

第1周(2012-02-20~2012-02-24):

学习编写客户管理系统中所需要的相关的知识,为后两周的课题的编写打下基础。

第2周(2012-02-27~2012-03-02):

开始编写程序的界面代码,参考各种资料,逐个实现程序的功能。

第3周(2012-03-05~2012-03-09):

测试已编好的程序,找到程序中的不知,修改程序,使程序更加完善。

原主

始要

资参

料考

与文

 

[01](美)梁(Liang,Y.D.).JAVA语言程序设计基础篇(原书第6版)[M]:

机械工业出版社2008.6

[02]凯德纳黑德,勒迈,陈武.21天学通Java2:

专业参考版.[M]人民邮电出版社2004.01

[03]洪维恩何嘉.JAVA2面向对象程序设计.[M]中国铁道出版社2005.01

[04]张靓顾慧敏.JAVA案例开发.[M]中国水利水电出版社.2005.01

指导教师签字:

年月日

客户管理系统

摘要

企业是一个生产、管理的集散地,生产资料和企业客户资料繁多,包含很多信息数据的管理。

在过去的企业中用书面管理信息,在修改、查询、添加企业客户信息方面都没有很好的发挥它的效益,企业客户资料管理复杂、工作量大比较突出,不能利用多种途径查询企业客户资料,修改后不能同步更改所有档案资料。

这就是企业客户管理系统开发的基本环境。

设计处理查询方式单一,添加不能与统计同步,出错率高,出错后不易更改。

由于信息比较多,企业客户信息管理比较混乱;一般客户情况是记录的,资料的数目和内容记录在文件中,资料室的工作人员和管理人员也只能当时比较清楚,时间一长,如再有进行查询,查找了造成查询费时,费力。

如果对很长时间以前的资料进行更改就更加困难了。

基于此类问题,我组认为有必要建立一个企业客户管理系统,使资料管理工作规范化,程序化,避免资料管理随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询、修改和保存资料情况。

管理人员必须以管理员身份登录,保证了系统的安全性。

系统的总体任务是使企业管理人员可以轻松快捷地完成对企业客户管理的任务。

有利于提高管理效率。

关键词:

客户信息管理、通讯录、系统管理

目录

摘要1

第1章项目分析1

1.1问题描述1

1.2技术分析1

第2章数据库设计2

2.1数据库图表设计2

2.2数据库图表2

第3章程序界面构建3

3.1程序界面板块5

3.2程序界面代码讲解5

第4章结束语12

附录:

主要源程序17

第1章项目分析

本系统用于企业的客户资料管理。

主要任务是用计算机对企业客户进行日常管理,如企业客户信息的添加、删除、修改、查询。

能进行单条件的企业客户信息查询的查询。

1.1问题描述

程序需要有一个简洁的界面,使管理者一看便知怎么操作。

程序还需要实现增加、修改、删除、查询功能。

项目中我组用到了MySQL数据库实现客户信息的储存。

同时设置了登录功能只有管理员才能对客户进行相关的操作。

为解决这些问题我们就得查询个方面的资料,为更好的解决问题做好准备。

1.2技术分析

考虑到本系统的性能要求,和现有的条件,我选择了WINDOWSXP中文版作为开发、测试和运行的平台。

因为WINDOWS操作系统是目前应用最广的操作系统,它以全新的图形界面,简单快捷的操作方式,支持多媒体功能等特点而成为软件发展的流行趋势,选用它作为开发平台,易于功能的扩展和软件升级。

针对目前世界上流行的大量软件和开发工具,经过认真分析其优缺点并根据平时所学的知识,结合企业客户管理系统的需要和目前的硬件环境,我选用Eclipse作为软件开发工具。

本程序主要是利用JAVA语言编写,具有良好的可移植性。

能够适用于多种平台,对系统的推广有很大的作用。

本系统的数据库也是使用的最简单的数据库,MySQL它具有简单的界面方便的操作,可以让我们远离那些大型数据库的繁琐操作。

第2章数据库设计

数据库设计是应用系统开发的一个重要环节,数据库结构的好坏将直接对应用系统的效率及实现结果产生重要影响。

在数据库设计的开始阶段应尽量全面考虑用户的各种需求,收集基础数据、数据结构及数据处理流程。

2.1数据库图表设计

数据库中主要是存储的客户信息,由于时间有限本系统中的管理员只有一个默认的。

无法修改管理员的ID为admin密码为admin。

并没有用到数据库来存储管理员的信息。

数据库中的表为custom,表中的主要数据为id、name、phone、address。

2.2数据库图表

表中个变量的属性如图:

图2.1custom表中的变量及其属性

Custom表中数据情况如图:

图2.2custom表中数据情况

数据库中还要对用户进行设置,如果不进行设置其他的计算机就无法与服务器的数据库进行连接,也就无法得到数据库中相应的数据。

在第二周程序制作的时候遇到了这样的问题,在老师的细心帮助之下我们得到了良好的解决。

第3章程序界面构建

由于客户管理系统的众多要求,我组决定进行分工。

主要有程序界面的开发,程序中服务器及客户端的开发以及程序与数据库之间的通信。

我主要负责的是程序界面构建这部分的设计主要是实现:

系统界面客户端系统主要有7个类:

Land.java:

实现系统的登录页面。

Client.java:

实现与服务器端的通信功能。

TableModeldemo.java:

这主要是系统的主界面。

它联系了程序的个个类。

NewRecordDialog.java:

这个类是系统的添加界面。

NewSelect.java:

这个类者是系统的查找界面。

User.java:

这个类是系统的管理员信息类,储存管理员的信息。

DB.java:

它主要实现系统的功能,以及对数据库的各种操作。

程序界面构造主要用到JTable类,JSplitPane类。

JTable主要用于建立表格以显示客户基本信息,JSplitPane类主要用于设置界面的分隔栏。

程序的主要流程如下图:

 

图3.1程序的主流程图

程序中的个个类之间也存在这各种的关系如下图:

 

图3.2程序各类之间的调用关系

下面将为你讲解我们程序功能实现的详细细节。

3.1程序界面板块

图3.3程序主界面截图

3.2程序界面代码讲解

publicstaticJTablejTable1=newJTable(tableModel);

JTable是一个Swing组件,在二维网格的行列中显示数据。

JTable不直接支持滚动。

要创建一个可滚动的表格,需要创建滚动窗格JScrollPane,并把JTable的实例添加到该滚动窗格中,它的列首将不可见,因为列首存放在滚动面板的首部。

JTable有三个支持模型:

表格模型、列模型和列表选择模型。

表格模型用来存储和处理数据;列模型用来表示表格种的所有列;列表选择模型与JList中使用的相同,用来在表格中选择行、列和单元格。

JTable也有两个有用的支持类TableColumn和JTableHeader。

TableColumn包含一个具体列的信息,JTableHeader包含JTable表头的信息。

每列都有一个默认的编辑器和绘制器。

也可以通过实现TableCellEditor接口来创建一个自定义的编辑器,通过实现TableCellReaderer接口来创建一个自定义绘制器。

privateDatedate=newDate();

一个包装了毫秒值的瘦包装器(thinwrapper),它允许JDBC将毫秒值标识为SQLDATE值。

毫秒值表示自1970年1月1日00:

00:

00GMT以来经过的毫秒数。

为了与SQLDATE的定义一致,由java.sql.Date实例包装的毫秒值必须通过将小时、分钟、秒和毫秒设置为与该实例相关的特定时区中的零来“规范化”。

privateJLabeljlblStatus1=newJLabel();

publicstaticJLabeljlblStatus2=newJLabel();

jlblStatus1此组件用于为系统显示各种提示信息。

jlblStatus2此组件用于为系统显示用户所在行数。

privateDBdb=newDB();

为功能函数DB创建一个实类。

publicTableModeldemo(){

setTitle("****客户管理系统****");

为程序主界面设置标题

JPanelpanel1=newJPanel();

panel1.setLayout(newGridLayout(7,1,0,5));

panel1.add(jbtconnection);

panel1.add(jbtRestore);

panel1.add(jbtAddRow);

panel1.add(jbtDeleteRow);

panel1.add(jbtupdate);

panel1.add(jbtseek);

panel1.add(jbtnext);

panel1组件为系统中的各个按键

JPanelpanel2=newImagee();

panel2.setForeground(Color.red);

panel2.setFont(newFont("Courier",Font.BOLD,35));

panel2组件为系统的欢迎界面,组件重新构造了JPanel类。

JPanelpanel3=newJPanel();

panel3.setLayout(newBorderLayout());

panel3.add(jlblStatus2,BorderLayout.SOUTH);

panel3.add(newJScrollPane(jTable1),BorderLayout.CENTER);

panel3.setPreferredSize(newDimension(400,200));

panel3用于显示客户信息的界面

JSplitPanejSplitPane2=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,panel1,panel3);

JSplitPanejSplitPane1=newJSplitPane(JSplitPane.VERTICAL_SPLIT,panel2,jSplitPane2);

分隔窗格JSplitPane是一个方便的Swing容器,它包含用分隔栏(divider)分隔开的两个组件。

分隔栏可以水平或垂直地分隔容器,拖动分隔栏可以改变每个组件所占空间的大小。

指定该容器被水平分隔或垂直分隔,可能的取值有:

JSplitPane.HORIZONTAL_SPLIT和JSlitPane.VERTICAL_SPLIT,默认值为JSplitPane.HORIZONTAL_SPLIT,它把容器分成左半部分和右半部分右边或底部的组件。

add(jSplitPane1,BorderLayout.CENTER);

add(jlblStatus1,BorderLayout.SOUTH);

此句为把已分配好的各个面板添加到JFrame上完成界面的构建。

jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

setSize(750,550);

此句为设置主界面的大小

setLocationRelativeTo(null);

此句为设置页面居中选项

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

此句为设置页面关闭后的操作

setVisible(true);

此句为设置页面显示

jbtconnection.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

try{

db.setConnection();

jlblStatus1.setText(time+"数据库以成功链接!

");

}

catch(Exceptionex){

ex.printStackTrace();

}

}

});

此句为与书据库建立连接按键的监听,并调用主函数的setConnection方法,以取得与数据库的连接。

jbtAddRow.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

try{

db.insert();

jlblStatus1.setText(time+"添加成功!

");

}catch(SQLExceptionex){

jlblStatus1.setText(ex.toString());

JOptionPane.showMessageDialog(null,"添加失败!

");

}

}

});

此句为添加客户信息按键设置监听,调用功能函数中的添加方法insert,以实现对客户信息的添加功能。

jbtDeleteRow.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

if(jTable1.getSelectedRow()>=0){

tableModel.removeRow(jTable1.getSelectedRow());

try{

db.delete();

jlblStatus1.setText(time+"删除成功!

");

}catch(SQLExceptionex){

jlblStatus1.setText(ex.toString());

JOptionPane.showMessageDialog(null,"删除失败!

");

}

}

}

});

此句为删除客户信息按键设置监听,调用功能函数中的添加方法delete,以实现对客户信息的删除功能。

jbtupdate.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

try{

db.update();

jlblStatus1.setText(time+"修改成功!

");

}

catch(Exceptionex){

jlblStatus1.setText(ex.toString());

JOptionPane.showMessageDialog(null,"修改失败!

");

}

}

});

此句为修改客户信息按键设置监听,调用功能函数中的修改方法update,以实现对客户信息的修改功能。

jbtseek.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

try{

newNewSelect();

jlblStatus1.setText(time+"查询!

");

}

catch(Exceptionex){

jlblStatus1.setText(ex.toString());

}

}

});

此句为查询客户信息按键设置监听,调用函数NewSelect,显示查找界面,以实现对客户信息的查询功能。

jbtRestore.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

try{

db.setConnection();

jlblStatus1.setText(time+"以重新排序!

");

}catch(Exceptionex){

jlblStatus1.setText(ex.toString());

}

}

});

此句为重新加载客户信息按键设置监听,调用功能函数中的修改方法setConnection,以实现对客户信息的重新加载功能。

jbtnext.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

JOptionPane.showMessageDialog(null,"欢迎下次使用!

");

System.exit(0);

}

});

此句为退出按键设置监听,实现退出功能。

listSelectionModel.addListSelectionListener(newListSelectionListener(){

publicvoidvalueChanged(ListSelectionEvente){

db.listSelectionModel_valueChanged(e);

}

});

监听JTable中鼠标按键所选行数的变化。

classImageeextendsJPanel{

ImageIconiamgeIcon=newImageIcon("1.jpg");

java.awt.Imageiamge=iamgeIcon.getImage();

publicvoidpaintComponent(Graphicsg){

super.paintComponent(g);

if(iamge!

=null)

g.drawImage(iamge,0,0,getWidth(),getHeight(),this);

FontMetricsfm=g.getFontMetrics();

intstringWidth=fm.stringWidth("欢迎使用客户管理系统");

intstringAscent=fm.getAscent();

intx=getWidth()/2-stringWidth/2;

inty=getHeight()/2+stringAscent/2;

g.drawString("欢迎使用客户管理系统",x,y);

}

重新编写JPanel,在JPanel添加图片1.jpg,作为程序欢迎使用界面的背景,并在背景上画出"欢迎使用客户管理系统"字样。

第4章结束语

本次的课题已经较好的完成,在本学期的开学初期,我们在学校机房进行了为期三周的JAVA实训。

现在即将结束了,回首本学期的java学习,重点还是在学习概念等一些常识性的东西,通过这次为期三周的实训,遇到了很多自己感兴趣的问题,就会很有兴趣,当然学知识可不能凭自己的爱好和一时兴趣,不能遇到自己不敢兴趣的问题就把它抛给同学,要学会自己踏踏实实认真的去解决问题。

要一步一个脚印,认认真真,踏踏实实,理论与实践相结合,在扎实掌握课本实例和内容之后,有一定的扩展阅读和课外学习,充分全面的了解JAVA的应用和扩展运用。

本次我们小组所做的程序是“客户管理系统”基本功能已经较好的完成,可是还是有一些不完善,比如我们的通讯录没有能够做到把通讯录里所储存的信息以列表的形式展现出来,所以还是有些不完善,,我们的指导老师对我们的程序作出了大体评价,发现我们的思想还是处于一个比较简单的过程当中,老师的几句简单评价,就带给我们无与伦比的冲击性,由于我们写程序的经验尚且较少,很多东西无法考虑到位,老师的点评,使我们认识到了不足与今后的前进方向与目标,使我们更加具有动力与激情,拥有了继续认真学习JAVA的信心,拥有了成为一位合格的高级程序员的壮志,在编写程序的过程当中,我们在一开始就遇到了问题,一直在纠结与是使用数据库连接还是使用文件,经过老师的耐心讲解,我们了解到了尚未接触到的Jar包等一些列名词,但是经过第二个问题就是我们的程序在进行按钮新窗口的链接,在新窗口弹出时,无法将老窗口关闭,纠结了好久,询问老师,老师还给我用了“父子”的生动例子来讲解,最终我们查找JDK,查找类的用法终于完美解决!

甚是兴奋!

本次的课题已经较好的完成,只有部分功能没有实现。

还得通过以后的继续学习来慢慢的完善。

整个程序的效果还是很好的简单使用,没有错误。

可以帮助用户建立完善的通信录。

程序中还有很多的不足,比如程序没有模糊查询的功能,只有用户输入与文本中出入的相同的信息,系统才会检索出来该联系人。

程序中还没有列出所有联系人的信息,这不方便用户的各项操作。

程序的添加功能也存在一定的不足,只有用回把说有的信息输入以后才能添加成功。

在我所学的语言当中,我自认为JAVA是一门比较强大的面向对象的编程语言,不仅仅因为它的跨平台性,更多的是因为它的灵活多变和实用性较强,可以说比较的经典和强悍。

所以学好java语言有很大的用处,这次实训,面对一道陌生的题目和要求时,不应慌张和无措,首先应该想到这和课本上的哪些知识具有结合点,回忆和分析这种结构的算法和具体实施方法,综合考虑其他的方面,例如:

该题的易写性和易懂性及其他的问题的可利用性。

在编写时,一个小小的符号,一个常量变量的设定,这都无不考量着我们的细心和严谨,所以学习JAVA,不仅对我们以后学习其他语言有很大的好处,而且也让我们知道了和理解了作为一个编程人员首先应具有的良好心理素质,那就是冷静思考和专心致志。

对待学术知识应该是严谨和认真。

这次实训,我们更多学到的是不懂就问和自己应该尽自己的全力去尝试,哪怕失败,只要自己尽自己的全力,和身边同学一起探讨而不是抄袭,团结合作,发挥团队意识,最后在自己的努力下,终于运行成功,这种成就感美不可言,心情愉悦至极。

据我

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

当前位置:首页 > 自然科学

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

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