版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告题目:网上商店销售管理及统计分析系统专 业 信息管理与信息系统班 级 姓 名 学 号 指导教师 完成日期 年 学期面向对象程序设计(Java)课程设计成绩评定 经考核,给出如下评语: 并综合评定该生课程设计成绩为 。指导教师: 年 月 日目录一、 系统需求分析3二、 系统实现目标3三、 相关技术4四、 系统设计4五、 系统实现4六、 系统配置七、 系统维护与扩展八、 心得体会九、 参考文献一、 系统需求分析1. 设计题目网上商店销售管理及统计分析系统2. 任务的描述随着电子商务技术的不断深入,在线购物已经越来越受人们的欢迎,在生活中越来越普遍。在网上商店的后台需要经常对用户,商品等
2、信息进行统计修改处理,并且需要统计产品销量及销售额,从而为网站发展决策提供有用的数据。3. 系统中用户的界面需求需要设计两个用户交互式界面,一个界面处理对销售数据最基本的统计查询,另一个界面处理基本信息的修改和查询。4. 功能需求系统实现对在线销售数据最基本的统计查询和基本信息的修改和查询。5. 性能需求网上信息处理要求准确而迅速,并且信息流量大、更新速度快,所以要求系统能实现对大量数据的快处理能力,使用方便,操作简单,易于维护,安全性好,能将信息及时反馈给决策者。二、 系统实现目标1. 主要用途对网上商店的后台数据库进行统计修改等处理。2. 实现功能统计查询各年各季度的销售额及全年的商品销售
3、情况;对基本信息,如会员,商品,配送点等信息的修改和查询。三、 相关技术本系统完全使用Java语言编写,在Java虚拟机上运行。Java是一种高级的、严格检查数据类型的、面向对象的程序设计语言。Java还是一种平台无关的、健壮和安全的的程序设计语言。Java平台由Java应用编程接口(API)和Java虚拟机(JVM)构成。这个平台构成了Java在不同计算机系统中编译和运行的环境。为了搭建Java平台,需要下载和安装Java软件开发工具箱(Java Development Kit,JDK),并设置Java编译和运行环境。 四、 系统设计1. 系统的框架数据库基本信息管理界面销售信息统计界面按时
4、间统计按产品统计信息查询信息修改删除添加2. 功能描述销售信息统计界面提供按时间统计查询各年各季度的销售额及按产品查询全年的商品销售情况的功能;基本信息管理界提供面对基本信息会员信息,商品信息,配送点信息的修改,查询和添加的功能。五、 系统实现1. 数据库的设计主要数据库结构表设计(E_Business.mdb)会员表cons:(cnum,cname,sex,birth,add,eadd)时间码表dates:(dat,yea,sea)商品表prods:(pnum,pname,a,b,supply)配送点表send:(snum,sname,sadd)销售表sells:(cnum,pnum,onu
5、m,dat,num,price,snum)数据库E-R图商品会员购买 m1 n供应商二级目录一级目录名称时间码数量编号性别订单号注册姓名单价日期码年月地址邮箱配送点名称编号编号地址 m2 m3逻辑结构设计2. 系统详细设计及代码说明程序源代码:/引入系统调用所需要的包:import javax.swing.*;import java.awt.event.*;import java.sql.*;/类Ecm继承自JFramepublic class Ecm extends JFrame/定义Panel b1 的组件变量JButton c11;JButton c12;JButton c13;JBut
6、ton c14;JButton c15;JButton c16;JButton c17;JLabel c21;JLabel c22;JLabel c23;JLabel c24;JLabel c25;JLabel c26;JLabel c27;JLabel c28;JLabel c29;JLabel c211;JLabel c221;JLabel c231;JLabel c241;JLabel c251;JLabel c261;JTextArea c31;JScrollPane c41;JTextField c51;JTextField c52;JTextField c53;JTextField
7、 c54;JTextField c55;JTextField c56;JTextField c57;/定义Panel b2 的组件变量JButton c18;JButton c19;JButton c110;JButton c111;JButton c112;JButton c113;JLabel c210;JLabel c212;JLabel c213;JLabel c214;JLabel c215;JLabel c216;JLabel c217;JLabel c218;JLabel c219;JLabel c220;JLabel c222;JLabel c223;JLabel c224;J
8、Label c225;JLabel c226;JTextArea c32;JScrollPane c42;JTextField c58;JTextField c59;JTextField c510;/构造函数public Ecm() setTitle("网上商店销售管理及统计系统"); /设置标题setSize(750,550); /设置大小setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/ 设置关闭窗口(1) 对“基本信息管理”界面进行设计,布局,对其中的组件的事件监听及处理。/定义Panel b1 并采用自由布局JPanel
9、 b1=new JPanel();b1.setLayout(null);c11=new JButton("会员信息"); /新建设组件对象并设置显示标志c11.setSize(100,25); / 设置组件大小c11.setLocation(10,50); / 设置组件在面板上的显示坐标c12=new JButton("商品信息");c12.setSize(100,25);c12.setLocation(10,100);c13=new JButton("配送点信息");c13.setSize(100,25);c13.setLocati
10、on(10,150);c21=new JLabel();c21.setSize(70,25);c21.setLocation(140,20);c22=newJLabel();c22.setSize(70,25);c22.setLocation(220,20); /将所有布局好的组件加进面板Panel b1b1.add(c11);b1.add(c12);b1.add(c13);b1.add(c14);b1.add(c15);b1.add(c16);b1.add(c17);b1.add(c21);b1.add(c22);b1.add(c23);b1.add(c24);b1.add(c25);b1.
11、add(c26);b1.add(c27);b1.add(c28);b1.add(c29);b1.add(c211);b1.add(c221);b1.add(c231);b1.add(c241);b1.add(c251);b1.add(c261);b1.add(c41);b1.add(c51);b1.add(c52);b1.add(c53);b1.add(c54);b1.add(c55);b1.add(c56);b1.add(c57);对所有组件采用相同方式的布局,并根据显示结果不断调整参数,得到最终布局如下所示:对面板上的所有组件添加事件监听及处理程序,代码如下:/对c11按钮添加事件监听c1
12、1.addActionListener(new ActionListener()/事件处理函数public void actionPerformed(ActionEvent e)/连接数据库tryString strurl = "jdbc:odbc:Driver=Microsoft Access Driver (*.mdb);DBQ=D:E_Business.mdb"Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn = DriverManager.getConnection(str
13、url,"","");Statement stmt = conn.createStatement();/用SQL语句对数据库进行操作,查询会员信息ResultSet rs = stmt.executeQuery("select * from cons");String s=""while(rs.next()s+=rs.getString(1)+"t"+rs.getString(2)+"t"+rs.getString(3)+"t"+rs.getString(
14、4)+"t"+rs.getString(5)+"t"+rs.getString(6)+"n"/将查询到的数据显示在文本域里c31.setText(s); /给查询到的列加上列名c21.setText("会员编号");c22.setText("注册名称");c23.setText("性 别");c24.setText("出生年份");c25.setText("地 址");c26.setText("电子邮箱");/将所查
15、询的表名显示在c29标签中c29.setText("cons");c211.setText("会员编号");c221.setText("注册名称");c231.setText("性 别");c241.setText("出生年份");c251.setText("地 址");c261.setText("电子邮箱");catch (Exception e1)System.out.println(e1););/对c12按钮添加事件监听c12.addActionLi
16、stener(new ActionListener()public void actionPerformed(ActionEvent e)/连接数据库/c12按钮使用的SQL语句,查询产品信息String sql="select * from prods" );/对c13按钮添加事件监听c13.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)/连接数据库/c13按钮使用的SQL语句,查询配送点信息ResultSet rs = stmt.executeQuery(&
17、quot;select * from sends"););/对c14按钮添加事件监听c14.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)/连接数据库String t=c51.getText(); /从c51文本框中获得输入的内容String s=c29.getText(); /从c29标签中获得需要查询的表名String sql;String s1="",s2="",s3="",s4="",
18、s5="",s6="",s7=""/根据从c29标签中获得的表名选择需要操作的表if(s.equals("cons")/根据从c51文本框中获得的内容构造SQL语句sql="select * from cons where cnum='"+t+"'"ResultSet rs = stmt.executeQuery(sql);while(rs.next()s1+=rs.getString(1);s2+=rs.getString(2);s3+=rs.getStri
19、ng(3);s4+=rs.getString(4);s5+=rs.getString(5);s6+=rs.getString(6);/将查询得到的结果显示在对应的文本框中c52.setText(s1);c53.setText(s2);c54.setText(s3); c55.setText(s4);c56.setText(s5);c57.setText(s6);else if(s.equals("prods")sql="select * from prods where pnum='"+t+"'"ResultSet r
20、s = stmt.executeQuery(sql);while(rs.next()s1+=rs.getString(1);s2+=rs.getString(2);s3+=rs.getString(3);s4+=rs.getString(4);s5+=rs.getString(5);c52.setText(s1);c53.setText(s2);c54.setText(s3);c55.setText(s4);c56.setText(s5);c57.setText("");else sql="select * from sends where snum='&
21、quot;+t+"'"ResultSet rs = stmt.executeQuery(sql);while(rs.next()s1+=rs.getString(1);s2+=rs.getString(2);s3+=rs.getString(3);c52.setText(s1);c53.setText(s2);c54.setText(s3);c55.setText("");c56.setText("");c57.setText("");catch (Exception e1)System.out.print
22、ln(e1););/对c16按钮添加事件监听c16.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)/连接数据库String t=c51.getText(); String s=c29.getText();String sql;/从文本框中获取数据,向数据库中插入数据String s1=c52.getText();String s2=c53.getText();String s3=c54.getText();String s4=c55.getText();String s5=c56.
23、getText();String s6=c57.getText();if(s.equals("cons")sql="insert into cons(cnum,cname,sex,birth,add,eadd) values('"+s1+"','"+s2+"','"+s3+"','"+s4+"','"+s5+"','"+s6+"')"else
24、 if(s.equals("prods")sql="insert into prods(pnum,pname,a,b,supply) values('"+s1+"','"+s2+"','"+s3+"','"+s4+"','"+s5+"')"else sql="insert into sends(snum,sname,sadd) values('"+s
25、1+"','"+s2+"','"+s3+"')");/对c15按钮添加事件监听与c16类似,所使用的SQL语句如下所示:/从数据库中删除数据String sql;if(s.equals("cons")sql="delete from cons where cnum='"+t+"'"else if(s.equals("prods")sql="delete from prods where pn
26、um='"+t+"'"else sql="delete from sends where snum='"+t+"'");/ c17所使用的SQL语句如下所示:对数据库中数据进行修改if(s.equals("cons")sql="update cons set cname='"+s2+"',sex='"+s3+"',birth='"+s4+"',add=
27、9;"+s5+"',eadd='"+s6+"' where cnum='"+t+"'"else if(s.equals("prods")sql="update prods set pname='"+s2+"',a='"+s3+"',b='"+s4+"',supply='"+s5+"' where pnum='
28、;"+t+"'"else sql="update sends set sname='"+s2+"',sadd='"+s3+"' where snum='"+t+"'"以对商品信息表操作为例,其它两个表操作类似。运行及测试结果如下图所示:在“基本信息管理”界面里单击“商品信息”显示如图所示:添加信息:单击确定后,数据写进数据库并立刻显示出来:删除信息的按钮及文本框:输入当前所操作的表中的数据编号,单击删除,数据从数据库中删除;修改时
29、必须先查询,然后在文本框中修改后,单击修改,更新数据库中的数据。(2) 对“销售信息统计”界面进行设计,布局,对其中的组件的事件监听及处理。/定义Panel b2并采用自由布局JPanel b2=new JPanel();b2.setLayout(null);/设置各组件的大小及位置c58=new JTextField("请输入查询的年份");c58.setSize(120,25);c58.setLocation(20,30);c210=new JLabel("年");c210.setSize(70,25);c210.setLocation(150,30
30、);c59=new JTextField("请输入查询的季度");c59.setSize(120,25);c59.setLocation(20,80);/将各组件加入Panel b2b2.add(c18);b2.add(c19);b2.add(c110);b2.add(c111);b2.add(c112);b2.add(c210);b2.add(c212);b2.add(c213);b2.add(c214);b2.add(c215);b2.add(c216);b2.add(c218);b2.add(c220);b2.add(c222);b2.add(c223);b2.add
31、(c224);b2.add(c225);b2.add(c226);b2.add(c42);b2.add(c58);b2.add(c59);/b2.add(c510);对所有组件采用相同方式的布局,并根据显示结果不断调整参数,得到最终布局如下所示:对面板上的所有组件添加事件监听及处理程序,代码如下:/对c18按钮添加事件监听c18.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)/连接数据库/根据文本框c58中的数据构造嵌套查询SQL语句,查询年销售详单String sql="
32、;select um,cname,sells.dat,prods.pname,num,price from cons,sells,prods,dates where um=um and prods.pnum=sells.pnum and dates.dat=sells.dat and dates.yea='"+c58.getText()+"'"/显示在文本域中c32.setText(s);/设置列标题c220.setText("会员编号");c222.setText("注册名称");c223.setText(
33、"购买日期");c224.setText("商品名称");c225.setText("购买数量");c226.setText("单价"););运行结果如下图所示:/c19按钮构造的SQL语句/根据文本框c58中的数据构造统计嵌套查询SQL语句,查询年销售总额String sql="select dates.yea,sum(sells.price*sells.num)as sum from sells,dates where sells.dat=dates.dat and dates.yea='&q
34、uot;+c58.getText()+"' group by dates.yea"运行结果如下图所示:/c110按钮构造的SQL语句/根据文本框c58和c59中的数据构造条件嵌套查询SQL语句,查询季度销售详单String sql="select um,cname,sells.dat,prods.pname,num,price from cons,sells,prods,dates where um=um and prods.pnum=sells.pnum and dates.dat=sells.dat and dates.yea='"+
35、c58.getText()+"' and dates.sea='"+c59.getText()+"'"运行结果如下图所示:/c111按钮构造的SQL语句/根据文本框c58和c59中的数据构造统计条件嵌套查询SQL语句,查询季度销售额String sql="select dates.sea,sum(sells.price*sells.num)as sum from sells,dates where sells.dat=dates.dat and dates.yea='"+c58.getText()+&q
36、uot;' and dates.sea='"+c59.getText()+"' group by dates.sea"运行结果如下图所示:/c112按钮构造的SQL语句/根据文本框c58中的数据构造统计条件嵌套查询SQL语句,查询全年各商品销量及销售额String sql="select sells.pnum,prods.pname,sum(sells.num)as tnum,sum(sells.num*sells.price)as t from sells,prods,dates where sells.pnum=prods.p
37、num and sells.dat=dates.dat and dates.yea='"+c58.getText()+"' group by prods.pname,sells.pnum order by sells.pnum"运行结果如下图所示:(3) 主框架剩余的代码:/将所有 Panel 加入 TabbedPane dJTabbedPane d=new JTabbedPane();d.addTab("销售信息统计",b2);d.addTab("基本信息管理",b1);/将TabbedPane d加入JF
38、rame,并将框架显示出来setContentPane(d);setVisible(true);/Java主函数public static void main(String args) new Ecm();六、 系统配置1. 系统的代码文件结构源Java代码只有一个Ecm.java,编译后生成1个Ecm.class文件,和12 个带编号的Ecm$*.class文件。与之相关联的数据库文件E_Business.mdb必须放在D驱动器的根目录下,方可读取数据。2. 系统配置运行时需要安装Java虚拟机以jar及Java开发程序包jdk1.6.0_14,并在系统环境变量中加上.jdkbin的路径。3. 访问方法新建一个*.bat文件,编辑内容为java Ecm,保存后于Ecm.class放在同一目
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国无水硫酸钠行业供需态势发展风险分析报告
- 幼儿园卫生保健培训记录表春季幼儿园常见传染病及预防措施
- 幼儿园中班亲子活动总结
- 阳光房门窗安装施工方案
- 商场顾客动态信息收集与分析制度
- 高层建筑应急照明系统整改方案
- 学习深化新时代教育评价改革总体方案心得体会
- 矿山作业高处作业安全管理制度
- 2025部编版二年级下册语文教学工作计划
- 青岛港湾职业技术学院《工业机器人技术》2023-2024学年第一学期期末试卷
- 激光技术在能源、环保、农业等领域的应用
- 国有企业职工代表大会条例实施细则
- 【高分复习笔记】周小普《广播电视概论》笔记和课后习题详解
- MOOC 物理与艺术-南京航空航天大学 中国大学慕课答案
- (正式版)JBT 5300-2024 工业用阀门材料 选用指南
- 【教案】2023年全国高考数学新课标Ⅱ卷第11题说题稿
- 一例压力性损伤的个案护理
- 河南省郑州市2023-2024学年高二上学期期期末生物试题【含答案解析】
- 小学语文“任务驱动”课堂模式探究
- JB T 7588-2010YL系列双值电容单相异步电动机技术条件(机座号80~132)
- 经方论治冠心病九法
评论
0/150
提交评论