《面向对象的程序设计Java课程设计报告.doc》由会员分享,可在线阅读,更多相关《面向对象的程序设计Java课程设计报告.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象的程序设计(Java)课程设计报告题目:网上商店销售管理及统计分析系统专 业 信息管理与信息系统班 级 姓 名 学 号 指导教师 完成日期 年 学期面向对象程序设计(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:
5、(cnum,pnum,onum,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;JB
6、utton c13;JButton 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
7、c53;JTextField 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
8、;JLabel c224;JLabel 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 并采用自由布局JPan
9、el 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.setLocation(10,150);c21=new JLabel();c21.se
10、tSize(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.add(c26);b1.add(c27);b1.add(c28);b
11、1.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按钮添加事件监听c11.addActionListener(new ActionList
12、ener()/事件处理函数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(strurl,);Statement stmt = conn.createStatement();/用SQL语句对数据库
13、进行操作,查询会员信息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(4)+t+rs.getString(5)+t+rs.getString(6)+n;/将查询到的数据显示在文本域里c31.setText(s); /给查询到的列加上列名c21.setText(会员编号);c22.setText(注册名称);c23.setText(性 别);c24.s
14、etText(出生年份);c25.setText(地 址);c26.setText(电子邮箱);/将所查询的表名显示在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.addActionListener(new ActionListener()public
15、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(select * from sends);/对c14按钮添加事件监听c14.addActionL
16、istener(new ActionListener()public void actionPerformed(ActionEvent e)/连接数据库String t=c51.getText(); /从c51文本框中获得输入的内容String s=c29.getText(); /从c29标签中获得需要查询的表名String sql;String s1=,s2=,s3=,s4=,s5=,s6=,s7=;/根据从c29标签中获得的表名选择需要操作的表if(s.equals(cons)/根据从c51文本框中获得的内容构造SQL语句sql=select * from cons where cnum=
17、+t+;ResultSet rs = 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);s6+=rs.getString(6);/将查询得到的结果显示在对应的文本框中c52.setText(s1);c53.setText(s2);c54.setText(s3); c55.setText(s4);c56.setText(s5);c57.setText(s6);else if
18、(s.equals(prods)sql=select * from prods where pnum=+t+;ResultSet rs = 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(
19、);else sql=select * from sends where snum=+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.println(e1);/对c16按钮添
20、加事件监听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.getText();String
21、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 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(+s1+,+s2+,+s3+);/对c15按钮添
22、加事件监听与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 pnum=+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+,
23、add=+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=+t+;else sql=update sends set sname=+s2+,sadd=+s3+ where snum=+t+;以对商品信息表操作为例,其它两个表操作类似。运行及测试结果如下图所示:在“基本信息管理”界面里单击“商品信息”显示如图所示:添加信息:单击确定后,数据写进数据库并立刻显示出来:删除信息的按钮及文本框:输入当前所操作的
24、表中的数据编号,单击删除,数据从数据库中删除;修改时必须先查询,然后在文本框中修改后,单击修改,更新数据库中的数据。(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,
25、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(c224);b2.
26、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=select um,cname
27、,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(购买日期);c224.setText(商品名称);c225.setText(购买数量);c226.setText(单价);运行结果如下
28、图所示:/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=+c58.getText()+ group by dates.yea;运行结果如下图所示:/c110按钮构造的SQL语句/根据文本框c58和c59中的数据构造条件嵌套查询SQL语句,查询季度销售详单String sql=select um,cname,sell
29、s.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()+ and dates.sea=+c59.getText()+;运行结果如下图所示:/c111按钮构造的SQL语句/根据文本框c58和c59中的数据构造统计条件嵌套查询SQL语句,查询季度销售额String sql=select dates.sea,sum(sells.price*sells.num)as
30、sum from sells,dates where sells.dat=dates.dat and dates.yea=+c58.getText()+ 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,pr
31、ods,dates where sells.pnum=prods.pnum 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加入JFrame,并将框架显示出来setC
32、ontentPane(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文件
33、,编辑内容为java Ecm,保存后于Ecm.class放在同一目录下,运行程序时直接双击*.bat文件,即可启动Java程序运行。七、 系统维护与扩展1. 系统中的不足之处由于时间仓促,该系统有许多不足之处,比如:操作错误后没有提示信息、文本框里的内容在使用后不能及时清空、没有设计登陆确认这些都会给用户使用带来不便。2. 改进方案设计管理员登陆确认界面,提高系统的安全性;在代码中加入对话框,提示用户操作,并给出出错反馈;在统计页面中加入图表,使用Java代码生成统计图,使综合数据更为直观;在数据量扩大以后,细化查询方法,提高查询效率。八、 心得体会为期两周的课程设计中,独立完成了网上商店销售
34、管理及统计分析系统的设计,从最基本的建立框架,Swing组件布局,到数据库操作,事件监听与处理,实现了具有可视化界面的Java应用程序的编程。在设计系统的过程中,由于条件限制,没有使用NetBeansIDE开发工具,全部代码使用JCreator编写调试,效率很低,大量时间花费在组件的布局参数调整上。但是对于JAVA语言的特点与面向对象的程序设计的方法却有了更加深入的理解。在实际实验操作过程中却面临着诸多阻碍。一方面由于Java语言知识的匮乏与生疏,许多最基础的知识没有弄懂,造成大量的精力耗费在查找资料的过程中,其次对数据库的操作不熟练,很多时候嵌在代码中的SQL语句发生错误,尤其是在连接查询、
35、分组统计时错误很多,造成程序无法执行。调试通过欣喜之余不由得百感交集,一方面看到自己独立完成的代码正常运行非常高兴,另一方面看到设计如此功能简单的系统都这样费力,可见自己的Java语言水平还非常低,还需要不断地努力去学习。由于时间仓促,设计的系统中有许多不足之处,比如:操作错误后没有提示信息、文本框里的内容在使用后不能及时清空、没有设计登陆确认这些都会给实际使用带来不便。其次系统功能设计过于简单,在统计页面中只是纯粹的数据加和统计,并没有给出任何的分析能力更不用说数据挖掘。作为一个信息管理系统,对数据的综合处理才是判断其好坏的关键。在这一方面自己的理论水平还远远不够。通过本次课程设计,使我更进
36、一步地了解了Java语言编程、系统设计、程序实现的方法。提高自己在实际操作中收集信息、对信息进行价值分析判断、进行信息整理、需求分析、信息加工、程序设计的能力;为以后的学习打下了良好的基础。在本次课程设计中,郭建华、李建勋老师给了我很大的帮助,在此表示衷心的感谢。参考文献1 印旻Java语言与面向对象程序设计清华大学出版社。2 Bruce EckelJava编程思想机械工业出版社。3 王克宏JAVA 语言API类库,清华大学出版社。4 李昌隆 中文版Dreamweaver MX 2004 标准教程 中国电力出版社 2004年5 杨志 Dreamweaver +ASP网络编程 电子工业出版社 2008年6 黄雷,杨志等ASP+Dreamweaver+Access开发动态网站实例荟萃 机械工业出版社 2006年7屈喜龙,朱杰等ASP+SQL Server开发动态网站实例荟萃机械工业出版社 2006年