产品销售管理系统.docx
- 文档编号:9062943
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:83
- 大小:570.84KB
产品销售管理系统.docx
《产品销售管理系统.docx》由会员分享,可在线阅读,更多相关《产品销售管理系统.docx(83页珍藏版)》请在冰豆网上搜索。
产品销售管理系统
摘要
本文介绍了商品销售管理系统的开发过程。
论文详尽论述了从需求分析、系统分析、概要设计、详细设计、以及测试与调试的整个开发过程,遵循软件工程的方法。
文章中所论述的管理信息系统,是一个将业务处理从纯人工操作转换成人工与计算机共同处理的一个实例,并对转换过程进行了详细策划。
本软件开发的过程中采用本系统采用了GUI设计,生成软件界面美观。
主题词:
商品销售管理
目录
一、课程设计目的5
二、课程设计的任务及要求5
任务:
图形化界面(GUI)编程,编写一个记事本程序5
三、实验步骤与源程序5
四、测试数据与实验结果11
五、结果分析与实验体会19
源代码21
六、设计体会与小结69
七、参考文献70
一、课程设计目的
(1)使学生巩固和提高Java编程技术;
(2)培养学生掌握程序设计的基本思路和方法;
(3)加强学生研发、调试程序的能力;
(4)培养学生分析、解决问题的能力;
(5)提高学生的科技论文写作能力二.
二、课程设计的任务及要求
任务:
图形化界面(GUI)编程,编写一个记事本程序
(1)用图形用户界面实现。
(2)能实现编辑、保存、另存为、查找替换等功能。
三、实验步骤与源程序
1.选题与团队分工
选题:
产品销售管理系统
分工:
角色
姓名
承担的具体任务
组长
黄国辉
程序的主入口、客户类、修改产品、修改客户、下单及一些界面类
组员
陈旦旦
产品类、销添加删除客户、产品的类
组员
赵晓涛
初始化数据类、查询客户、产品类、用户类
2.系统需求分析
系统功能描述
商品销售系统
系统管理员:
添加客户资料、删除客户资料、修改客户资料、查询客户资料、添加商品、删除商品、修改商品、查询商品、下单、取消下单、修改密码(包括销售人员)
销售人员:
添加客户资料、修改客户资料、查询客户资料、修改商品、下单、取消下单、修改密码
系统用例图
(黄国辉)
搜查实体类
异常类
(陈旦旦)
(赵晓涛)
四、测试数据与实验结果
登陆界面
输入错误
系统管理员主界面
修改客户(失败)
修改客户(成功)
添加产品
查询客户资料
销售人员主界面
下单
查询产品
修改密码
五、结果分析与实验体会
(黄国辉)本次实验对系统的功能没有做修改,主要是优化了系统的结构。
首先是本次实验大量运用了继承,尤其是界面,大多数的界面继承的是ReviseClientGUI这个界面,重复利用了界面上的布局以及标签,大大简化了工作量以及代码的长度,有些界面是继承的一些相似的界面,例如删除客户继承了删除产品的界面,而删除产品又是继承于修改客户这个界面。
其次,本次实验添加了一个自定义异常类,当创建新用户的时候密码低于三位数会自动派出此异常。
本次试验还添加了一个Search类,里面有一些常用函数,例如查找客户、查找产品、比较字符串、删除客户等方法,在其他界面中要用可以调用此嘞的一些方法,实现了类的封装。
此外,本次实验还将以前在输入一些非法数据会产生的异常给补上了,例如有NullPointerException、NumberFormatException等等。
有一些界面只需要接收一个用户输入的数据,所以就是用了JOPtionPane类中的showInputDialog函数用来接收数据,大大简化了代码量,优化了系统性能。
本次实验画了整体系统的类图之间的关系,大大加深了我对此系统的了解,形成了一个严密的框架,对于今后的学习会有很大的帮助。
老师的代码对于我们的学习是有很大的帮助的,学习是一件长期的事,实践着“痛并快乐着……”的感觉是非常好的,我会继续坚持下去的。
(陈旦旦)本次实验主要运用了属性以及函数的继承,隐藏,重载等操作。
通过遮羞方法的运用,能够明显简化代码的复杂度,尤其是继承的运用,通过继承其他属性函数的操作,从而简化程序的复杂度,此外还需要运用文本域的隐藏操作,对于新的操作需要重新定义标签和文本域,另外在继承操作时需要注意继承的对象公共和私有,来避免错误。
在编程时会出现一些异常,对于异常的处理,可以通过publicvoidp(intx){
try{
}
catch(Exceptione){
}
finally{
}
}语句来捕获异常,如果在try语句中出现异常,则会被抛出。
对于处理不了的异常或者要转型的异常,在方法的声明处通过throws语句抛出异常。
本次实验还练习了通过visio软件画系统类图和用例图,包括实体类、界面类,特性与操作的参数的输入,顶层包的加载等等。
(赵晓涛)第三次试验是在第二次的基础上的拓展,在这次试验中我完成了我所有的包中的文件的测试,以及完成了相应的文件的类图的画图。
在类图的画画过程中还是有一些不懂得地方,对于系统中的集体的操作和特性有的区分的不是很清楚,在画类图的时候参考了老师的类图的画法,还有同学的帮助。
这次试验掌握了类图的画法,和对继承的一些了解。
源代码
/*销售系统主登陆窗口图形界面类*/
packageSalesSystem;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importSalesSystem.lhz.*;
importSalesSystem.xc.*;
importSalesSystem.qyb.*;
importjava.util.*;
publicclassGUIextendsFrameimplementsActionListener,ItemListener
{
TextFieldtxId;//一定一个宽度为10个字符的文本框,用于答案输入
TextFieldtxPassword;
LabellbTitle;
LabellbId;
LabellbPassword;
ButtonbtOk;
ButtonbtCancel;
ButtonbtReset;
Labeltype;
ChoicetypeChoice;
FontmyFont;
Stringchtype;
publicUseru;
GUI()//构造函数,用来初始化
{
super("主登陆界面");//调用父类构造函数
btOk=newButton("确定");
btCancel=newButton("退出");
btReset=newButton("重置");
chtype="销售人员";
typeChoice=newChoice();
type=newLabel("身份:
");
lbTitle=newLabel("商品销售系统");
lbTitle.setFont(myFont);
lbId=newLabel("用户账号");
txId=newTextField(10);
lbPassword=newLabel("用户密码");
txPassword=newTextField(10);
myFont=newFont("宋体",Font.BOLD,20);//定义字体为黑体、加粗、字号18
GridBagLayoutgbl=newGridBagLayout();
GridBagConstraintsgbc=newGridBagConstraints();
setLayout(gbl);
//设置标题控件的位置
gbc.anchor=GridBagConstraints.NORTH;//让标题顶部居中
gbc.gridwidth=GridBagConstraints.REMAINDER;//让标题成为所在行最后(也是唯一)一个组件
add(lbTitle,gbc);
//设置姓名控件的位置
gbc.anchor=GridBagConstraints.WEST;//让ID标签位于左侧
gbc.gridwidth=1;//占一个单元格
add(lbId,gbc);
gbc.gridwidth=GridBagConstraints.REMAINDER;//让ID输入框成为所在行最后一个组件
add(txId,gbc);
//设置密码控件的位置
gbc.gridwidth=1;
add(lbPassword,gbc);
gbc.gridwidth=GridBagConstraints.REMAINDER;
add(txPassword,gbc);
//设置身份控件的位置
gbc.gridwidth=1;
add(type,gbc);
add(typeChoice,gbc);
typeChoice.add("销售人员");
typeChoice.add("系统管理员");
gbc.gridwidth=GridBagConstraints.REMAINDER;//让ID输入框成为所在行最后一个组件
add(typeChoice,gbc);
gbc.anchor=GridBagConstraints.SOUTH;
gbc.gridwidth=1;
add(btOk,gbc);
gbc.gridwidth=1;
add(btCancel,gbc);
gbc.gridwidth=GridBagConstraints.REMAINDER;//让ID输入框成为所在行最后一个组件
add(btReset,gbc);
btOk.addActionListener(this);//为输入文本框注册监听器对象
btReset.addActionListener(this);//为按钮注册监听器对象
btCancel.addActionListener(this);
typeChoice.addItemListener(this);
setBackground(Color.yellow);//设置背景色为黄色
setSize(300,260);
setBounds(450,220,300,260);
setVisible(true);
validate();
}
publicvoiditemStateChanged(ItemEvente)
{
if(e.getItemSelectable()instanceofChoice)
{
chtype=((Choice)e.getItemSelectable()).getSelectedItem();
}
}
publicvoidactionPerformed(ActionEvente)//实现ActionListener接口的actionPerformed方法
{
if(e.getSource()==btOk)
{//判断事件源,如果是输入文本框
booleana,b,c;
a=Init.init.user1.userTypeJudge(txId.getText(),txPassword.getText(),chtype);
b=Init.init.user2.userTypeJudge(txId.getText(),txPassword.getText(),chtype);
c=Init.init.user3.userTypeJudge(txId.getText(),txPassword.getText(),chtype);
if(a||b||c)
{
if(chtype.equals("系统管理员"))
{
newManagerGUI("系统管理员:
黄国辉");
this.setVisible(false);
}
else
{
if(b)u=Init.init.user2;
elseu=Init.init.user3;
newSalesmanGUI("销售人员:
"+txId.getText(),u);
this.setVisible(false);
}
}
elseif(Init.init.user1.userPsdJudge(txId.getText(),txPassword.getText())||Init.init.user2.userPsdJudge(txId.getText(),txPassword.getText())||Init.init.user3.userPsdJudge(txId.getText(),txPassword.getText()))
JOptionPane.showMessageDialog(null,"密码输入错误!
");
elseJOptionPane.showMessageDialog(null,"此账号不存在!
","错误",JOptionPane.ERROR_MESSAGE);
}
elseif(e.getSource()==btReset)
{
txId.setText("");
txPassword.setText("");
}
else
System.exit(0);//系统正常退出,如果参数是1,则为异常退出
}
}
/*销售系统主入口类*/
packageSalesSystem;
importjava.util.*;
importjava.io.*;
importSalesSystem.xc.*;
publicclassMain
{
publicstaticvoidmain(Stringargs[])
{
System.out.println(Init.init.user1.tostring());
System.out.println(Init.init.user2.tostring());
System.out.println(Init.init.user3.tostring());
System.out.println(Init.init.goods[0].tostring());
System.out.println(Init.init.goods[1].tostring());
System.out.println(Init.init.goods[2].tostring());
System.out.println(Init.init.goods[3].tostring());
System.out.println(Init.init.goods[4].tostring());
newGUI();//构造一个新窗体对
}
}
/*销售系统添加客户图形界面类*/
packageSalesSystem.lhz;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importSalesSystem.qyb.*;
importSalesSystem.xc.*;
publicclassAddClientGUIextendsAddGoods//继承与AddGoods因为AddGoods与其界面比较相似
{
Searchsearch=newSearch();
publicAddClientGUI()
{
super("添加客户");
lbID.setText("客户姓名");
lbGender.setText("客户性别");
lbTitle1.setText("添加客户");
lbGoodsamount1.setVisible(false);
txtGoodsamount1.setVisible(false);
btnOK.setBounds(30,130,80,40);
btnQuit.setBounds(110,130,80,40);
btnReset.setBounds(190,130,80,40);
setSize(300,230);
setBounds(300,160,300,230);
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==btnQuit)
dispose();
elseif(e.getSource()==btnOK)
{
Stringtmpname=txtGoodsname1.getText();
if(Search.isEmpty(tmpname))//是否输入文字
{
try{
search.searchClient(tmpname);
if(search.findClient!
=null)
{JOptionPane.showMessageDialog(null,"此客户已存在");}
else
{
Init.init.client[Client.lth++]=newClient(tmpname,txtGoodsprice1.getText());
JOptionPane.showMessageDialog(null,"添加客户资料成功");
this.setVisible(false);
}
}
catch(NullPointerExceptionee){}
}
}
else
{
txtID.setText("");
txtGender.setText("");
}
}
}
/*销售系统添加产品图形界面类*/
packageSalesSystem.lhz;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjavax.swing.JOptionPane;
importSalesSystem.qyb.*;
importSalesSystem.xc.*;
publicclassAddGoodsextendsReviseClientGUI//界面继承了ReviseClientGUI添加了异常处理若未输入弹出错误对话框
{
publicJTextFieldtxtGoodsname1;//引用
publicJTextFieldtxtGoodsprice1;
publicJTextFieldtxtGoodsamount1;
publicJLabellbGoodsname1;
publicJLabellbGoodsprice1;
publicJLabellbGoodsamount1;
SearchsGoods;
publicAddGoods(Strings)
{
super(s);
sGoods=newSearch();
txtGoodsname1=txtID;
txtGoodsprice1=txtGender;
txtGoodsamount1=txtGoodsname;
lbGoodsname1=lbID;
lbGoodsprice1=lbGender;
lbGoodsamount1=lbGoodsname;
lbTitle1.setText("添加产品");
lbGoodsname1.setText("产品名称");
lbGoodsprice1.setText("产品价格");
lbGoodsamount1.setText("产品总量");
btnOK.setBounds(30,170,80,40);
btnQuit.setBounds(110,170,80,40);
btnReset.setBounds(190,170,80,40);
lbTitle1.setBounds(100,0,150,40);
lbGoodsname1.setBounds(50,50,100,30);
txtGoodsname1.setBounds(130,50,100,30);
lbGoodsprice1.setBounds(50,90,100,30);
txtGoodsprice1.setBounds(130,90,100,30);
lbGoodsamount1.setBounds(50,130,100,30);
txtGoodsamount1.setBounds(130,130,100,30);
setSize(300,270);
setBounds(300,160,300,270);
lbGoodsprice.setVisible(false);
txtGoodsprice.setVisible(false);
lbGoodsamount.setVisible(false);
txtGoodsamount.setVisible(false);
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==btnQuit)
dispose();
elseif(e.getSource()==btnOK)
{
Stringtmpname=txtGoodsname1.getText();
if(sGoods.isEmpty(tmpname))
{
try{
sGoods.searchGoods(tmpname);
if(sGoods.findGoods!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 产品 销售 管理 系统