电子商务专业课程设计会员信息管理系统Word文件下载.docx
《电子商务专业课程设计会员信息管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《电子商务专业课程设计会员信息管理系统Word文件下载.docx(49页珍藏版)》请在冰豆网上搜索。
自从Java推出以来,JDK已经成为使用最广泛的JavaSDK。
JDK是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。
JDK是学好Java的第一步。
而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。
从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。
2.eclipse
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。
二、结构设计与结构功能图
1.结构设计
根据对系统进行需求分析,本系统将分为4个模块:
●会员基本信息管理
管理会员基本信息,包括个人信息的添加、修改、删除以及查询。
●会员消费信息管理
管理会员的消费信息,包括消费记录的添加、修改、删除以及查询。
●会员积分信息管理
管理会员积分信息,包括会员积分的添加、修改、删除以及查询。
。
2.功能结构图
会员信息管理系统功能结构如图2.1所示。
添加
图2.1会员信息管理系统功能结构图
三、系统实现
该系统由4个模块构成,包括会员信息管理系统主界面模块、会员基本信息管理模块、会员消费信息管理模块和会员积分信息管理模块。
下面分别加以叙述:
①会员信息管理系统主界面模块
图3.1会员信息管理系统主界面
②会员基本信息管理模块
图3.2会员基本信息管理模块的运行界面
③会员消费信息管理模块
图3.3会员消费信息管理模块运行界面
④会员积分信息管理模块
图3.4会员积分信息管理模块的运行界面
四、系统调试与测试
4.1测试的定义及目的
软件测试就是在软件投入运行之前,对软件需求分析、设计规格说明和编码的最终复审,是保证软件质量的关键步骤。
如果要给软件测试下定义,可以这样讲,软件测试是为了发现错误而执行程序的过程。
测试的目的在于将软件设计时设计者与程序开发者之间理解不一致的地方、功能与需求不一致的地方、不符合逻辑思维的情况都反映给质量控制部门,由质量控制部门调配需求部门统一做出一个明确解答,再由开发人员进行修改和补充。
4.2系统功能测试
功能测试主要是测试程序模块是否实现了设计中所要求的功能。
功能测试中需要注意的有:
(1)查询功能中,是按会员号进行查询的。
每次查询前需要先输入会员号,如果没有,程序运行时会弹出提示信息窗口,告诉用户输入会员信息。
(2)录入功能中,需要注意的是前台设置的数值长度是否大于后台数值长度,以及前台和后台的数据结构是否相符,很多时候录入功能无法实现是由于这些原因。
还有就是必须录入的字段的设置时候有误。
(3)测试删除功能中需要注意的是单击"
删除"
按钮后,一般会出现提示信息,询问是否确定删除。
通常情况下,我们单击"
确认"
按钮查看信息是否被删除掉了,而忽略了单击"
取消"
按钮后程序的反应:
这时有可能的是没有删除,还有一种可能是即便单击了"
按钮,也一样删除了数据。
(4)关于修改功能的测试主要是看修改确认后是否数据真正已被修改了。
这是最基本的功能,需要注意的是看是否能把不应该修改的数据也修改成功了。
4.3系统调试常见错误
1.NullPointerException异常
一般是对一个为NULL值的变量进行操作引起的。
为避免这种异常,最好在对变量操作之前检查,看它是否为NULL值。
2.NumberFormatException异常
这是由于数字的格式错误而出现的例外。
为了避免出现此类错误,一般必须保证数据格式输入正确。
结束语
经过这次课题的设计并实现,尽管会遇到很多难题,但是让我更加受益的是在这次课题中得到的经验、心得和锻炼。
我发现开发项目的过程其实就是个不断的解决问题的过程,从中也感觉到项目开发的快乐,一个人永远有学不完的知识,就算是项目开发中的知识点都学了,但在实际的开发过程中仍然会遇到不少问题,遇到问题时要做到两点:
一个是“查”
,一个是“问”。
不懂的地方就得要自己找答案,可以从书本、网络中查找解决的答案;
再一个就是问周边的同学。
比如,在本科课题的编写代码部分,本人就参考了《java核心技术》,从中得到了图形编程的很多有用的方法。
这次课程的设计给我以前所学的知识做了一个总结,为我深入学习编程做了铺垫。
在本课题中存在的不足之处是在所难免的,本人将在日后加于改进。
致谢
在本课题的设计和实现的过程中遇到的不少的难题,我要感谢那些给我带来帮助的书籍和internet,还有周边的同学们。
如果没有他们的帮助,本课题的设计和实现就不会如期顺利完成。
还要感谢我们的指导老师给我们这么多学生的文档认真批改,让我们知道在课程设计与实现的过程中存在的问题。
附录:
程序源代码
(1)Menu.java(主窗口)
packageCRM;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjava.util.*;
importjavax.swing.*;
importjavax.swing.border.*;
classMenuextendsJFrameimplementsActionListener{
JButtonCustomerManager=newJButton("
会员信息"
);
JButtonConsumptionManager=newJButton("
消费信息"
JButtonScore=newJButton("
会员积分信息"
JMenuBarmb=newJMenuBar();
//菜单栏
JPaneljp=newJPanel();
//用来填放子模块
Containercp=getContentPane();
Stringusername;
Menu(){
}
Menu(Stringusername){
this.username=username;
mb.add(CustomerManager);
mb.add(ConsumptionManager);
mb.add(Score);
cp.add(mb,"
North"
//设置边框
jp.setBorder(BorderFactory.createTitledBorder(
BorderFactory.createLineBorder(Color.blue,2),null,
TitledBorder.CENTER,TitledBorder.TOP));
jp.setLayout(newBorderLayout());
JLabellabel1=newJLabel(newImageIcon("
4.jpg"
));
jp.add(label1);
JLabellabel2=newJLabel(newImageIcon("
2.jpg"
jp.add(label2,"
South"
JScrollPanescrollpane=newJScrollPane(jp);
cp.add(scrollpane);
Toolkitkit=Toolkit.getDefaultToolkit();
Dimensionscreen=kit.getScreenSize();
intx=screen.width;
/*取得显示器窗口的宽度*/
inty=screen.height;
/*取得显示器窗口的高度*/
setSize(600,600);
intxcenter=(x-600)/2;
intycenter=(y-600)/2;
setLocation(xcenter,ycenter);
/*显示在窗口中央*/
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//注册临听器
CustomerManager.addActionListener(this);
ConsumptionManager.addActionListener(this);
Score.addActionListener(this);
publicvoidactionPerformed(ActionEvente){
Stringcmd=e.getActionCommand();
if(cmd.equals("
)){
newCustomerManager();
}
newConsumptionManager();
newScore();
publicstaticvoidmain(String[]args){
newMenu("
"
}
(2)Score.java(会员积分管理界面)
classCustomer1implementsjava.io.Serializable{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
Stringnumber,name,lastmonth,thismonth,sex,total;
publicCustomer1(){
};
publicvoidsetNumber(Stringnumber){
this.number=number;
publicStringgetNumber(){
returnnumber;
publicvoidsetName(Stringname){
this.name=name;
publicStringgetName(){
returnname;
publicvoidsetlastmonth(Stringlastmonth){
this.lastmonth=lastmonth;
publicStringgetlastmonth(){
returnlastmonth;
publicvoidsetthismonth(Stringthismonth){
this.thismonth=thismonth;
publicStringgetthismonth(){
returnthismonth;
publicvoidsetSex(Stringsex){
this.sex=sex;
publicStringgetSex(){
returnsex;
publicvoidsettotal(Stringtotal){
this.total=total;
publicStringgettotal(){
returntotal;
publicclassScoreextendsJFrame{
JLabellb=newJLabel("
录入请先输入记录,查询、删除请先输入会员号,修改时对查询"
+"
内容改后的保存!
JTextField会员号,姓名,上月积分,本月积分,总积分;
JRadioButton男,女;
ButtonGroupgroup=null;
JButton录入,查询,删除,修改,显示;
JPanelp1,p2,p3,p4,p5,p6,pv,ph;
Customer1会员=null;
Hashtable<
String,Customer1>
会员散列表=null;
Filefile=null;
FileInputStreaminOne=null;
ObjectInputStreaminTwo=null;
FileOutputStreamoutOne=null;
ObjectOutputStreamoutTwo=null;
publicScore(){
super("
会员积分信息管理系统"
会员号=newJTextField(10);
姓名=newJTextField(10);
上月积分=newJTextField(10);
本月积分=newJTextField(10);
总积分=newJTextField(10);
group=newButtonGroup();
男=newJRadioButton("
男"
true);
女=newJRadioButton("
女"
false);
group.add(男);
group.add(女);
录入=newJButton("
录入"
查询=newJButton("
查询"
删除=newJButton("
修改=newJButton("
修改"
显示=newJButton("
显示"
录入.addActionListener(newInputAct());
查询.addActionListener(newInquestAct());
修改.addActionListener(newModifyAct());
删除.addActionListener(newDeleteAct());
显示.addActionListener(newShowAct());
修改.setEnabled(false);
p1=newJPanel();
p1.add(newJLabel("
会员号:
JLabel.CENTER));
p1.add(会员号);
p2=newJPanel();
p2.add(newJLabel("
姓名:
p2.add(姓名);
p3=newJPanel();
p3.add(newJLabel("
性别:
p3.add(男);
p3.add(女);
p4=newJPanel();
p4.add(newJLabel("
上月积分:
p4.add(上月积分);
p5=newJPanel();
p5.add(newJLabel("
本月积分:
p5.add(本月积分);
p6=newJPanel();
p6.add(newJLabel("
总积分:
p6.add(总积分);
pv=newJPanel();
pv.setLayout(newGridLayout(6,1));
pv.add(p1);
pv.add(p2);
pv.add(p3);
pv.add(p4);
pv.add(p5);
pv.add(p6);
ph=newJPanel();
ph.add(录入);
ph.add(查询);
ph.add(修改);
ph.add(删除);
ph.add(显示);
file=newFile("
会员积分信息.txt"
会员散列表=newHashtable<
();
if(!
file.exists()){
try{
FileOutputStreamout=newFileOutputStream(file);
ObjectOutputStreamobjectOut=newObjectOutputStream(out);
objectOut.writeObject(会员散列表);
objectOut.close();
out.close();
}catch(IOExceptione){
}
Containercon=getContentPane();
con.setLayout(newBorderLayout());
con.add(lb,BorderLayout.NORTH);
con.add(pv,BorderLayout.CENTER);
con.add(ph,BorderLayout.SOUTH);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(100,50,500,380);
publicstaticvoidmain(Stringargs[]){
newScore();
classInputActimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
修改.setEnabled(false);
Stringnumber="
;
number=会员号.getText();
if(number.length()>
0){
try{
inOne=newFileInputStream(file);
inTwo=newObjectInputStream(inOne);
会员散列表=(Hashtable)inTwo.readObject();
inOne.close();
inTwo.close();
}catch(Exceptionee){
System.out.println("
创建散列表出现问题!
}
if(会员散列表.containsKey(number)){
Stringwarning="
该会员信息已存在,请到修改页面修改!
JOptionPane.showMessageDialog(null,warning,"
警告"
JOptionPane.WARNING_MESSAGE);
}//endif1
else{
Stringm="
该会员信息将被录入!
intok=JOptionPane.showConfirmDialog(null,m,"
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
if(ok==JOptionPane.YES_OPTION){
Stringname=姓名.getText();
Stringlastmonth=上月积分.getText();
Stringthismonth=本月积分.getText();
Stringtotal=总积分.getText();
Stringsex=null;
if(男.isSelected()){
sex=男.getText();
}else{
sex=女.getText();
}
会员=newCustomer1();
会员.setNumber(number);
会员.setName(name);
会员.setlastmonth(lastmonth);
会员.setthismonth(thismonth);
会员.settotal(total);
会员.setSex(sex);
try{
outOne=newFileOutputStream(file);
outTwo=newObjectOutputStream(outOne);
会员散列表.put(number,会员);
outTwo.wr