下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、朱俐楠:农资店信息管理系统中原工学院级课题任务书2011年 6月13日学生姓名朱俐楠学号201007132211专业软件技术班级编码 J102课题名称农资店信息管理系统课题来源二级实训模拟课题指导教师郭彦宾 专业 计算机科学与技术 职称 集成项目经理课题说明:农资店信息主要有农资货物的各种信息,如:货物的名字、类型、 单价、生产日期、保质期等;其次是客户的各种信息,如:客户的名字、地址、电话、 购得货物种类、数量及时间、备注等。本系统主要实现上述信息的增删改查功能,对 特殊信息的汇总等其他功能。额承担的任务:1数据库设计2实现客户信息管理的 SWING 界面并实现监听器的添加中原工学院级课题任
2、务书工作进度安排:2011年 6月 14日时间轴2011-6-13至2011-6-2(8 除周日)任务名称负责人1 2 3 4 5 6 7 8 9 10 11 12 孙军超总体进度整理资料编写代码代码测试整理文档30%62% 8% 范金梅范金梅 孙军超 朱俐楠 朱俐楠6实训单位意见学院意见指导教师签字:2011 年 6 月 28 日签章:年月日签章:年月日中原工学院级课题评审表学号201007132211姓名朱俐楠专业软件技术班级编码 J102题目农资店信息管理系统指 导 教 师 评 语成绩(百分制): 指导教师签名:2011 年 6 月 日软件学院二级课题实训报告课题名称: 农资店信息管理系
3、统 专业:软件技术班级:编码 J102学号:201007132211学生姓名: 朱俐楠指导教师: 郭彦宾2011 年 6 月 28 日摘 要 6第 1 章 项目分析 71.1 问题描述 71.2 技术分析 71.3 工程进度计划 7第 2 章 系统分析与设计 82.1 系统分析 82.1.1 参与者 82.1.2 需求分析 82.1.3 可行性分析 82.2 系统设计 92.2.1 系统规划 92.2.2 类图 92.2.3 E-R 图 102.3 数据库设计 102.3.1 表结构设计 102.3.2 系统功能结构图 11第 3 章 实现与测试 123.1 部分功能模块展示 123.1.1
4、界面 123.1.2 代码 12第 4 章 结束语 17附录:主要源代码 187朱俐楠:农资店信息管理系统摘要随着计算机的普及和计算机科学技术的飞速发展, 人们开始越来越多地利用 计算机来解决实际问题。 现在连街头的小商店有些都有自己信息管理系统, 帮助 店主有条理的管理自己的货物。 同样跟生活杂物商店功能及性质差不多的农资商 店的货物种类以及各种账目数量一点也不亚于其他种类的商店, 为了解决这个问 题,我们小组经过协商之后决定利用这次做课题的机会, 做一套方便农资店主管 理货物和账目的小型软件。首先实现整个登陆界面及菜单界面、根据所要实现的功能实现各种 SWING 界面并添加相应的监听器,
5、再根据提前规划的功能实现 DAO层中的各种方法, 再 实现监听器方法体中的具体代码。整个系统从操作简便、界面友好、灵活、实用、安全的要求出发,完成对进 货登记、销售查询、账目管理,包括对系统数据的维护,信息的添加、删除、查 询等。计算机信息化管理以其存储信息量大、 速度快、 便于管理等优点将会受到 更多用户的青睐。关键词:监听器、数据库连接、 DAO、 SWING26第 1 章 项目分析1.1 问题描述实现各种 SWING 界面及监听器,统一编写 DAO 层中实现各种功能的方法, 完善监听器方法体中的内容。1.2 技术分析SWING 界面的容器采用 JFrame编写,底层数据库采用 MYSQ,
6、L 实现功能时连接数据库采用 使用某个功能前,连接一次数据库,使用完毕后,立即关闭数据库的模式。添加监听器时,统一使用一个监听器内部类,监 听器方法采用判断名字进行区分各个 BUTTON之间的不同。汇总各种信息使 用 JTABLE组件,所有监听器方法统一写在一个 DAO包中进行封装。客户、 货物、用户信息使用 JAVABEAN封装,使用其 GET、SET方法进行信息在数 据库和 SWING界面之间的流通。欢迎、菜单界面友好、易懂,便于用户使 用,并且有友好的提示界面。数据库是一项技术,主要包括数据的管理和 处理两部分; 在数据库的设计中, 重点在数据库的需求分析中, 构化出来, 把用户所需的要
7、求统统分析出来,再进一步的进行设计;完成相应的需求 分析后,就是对数据库结构的设计,数据库结构设计主要分为数据库结构 设计和数据库行为设计,数据库结构设计是在需求分析的基础上逐步形成 对数据库概念,逻辑,物理结构的描述了、概念结构要有丰富的语义表达 能力,表达用户的各种需求;概念设计的策略主要有三种:自上向下,自 顶向外,自里向外和混合策略;逻辑结构设计主要是把在概念设计中设计 的基本 E-R 模型转换为具体数据库管理系统支持的组织层数据模型;一般 包括将概念结构转换为组织层数据模型;对组织层数据模型进行优化;物 理结构设计是利用数据库管理系统提供的方法,对已确定数据库逻辑结构 进行优化存储结
8、构,数据存取路径,合理的位置以及存储分配等;从而设 计出一个高效,可实现的无理数据结构。1.3 工程进度计划6月13日到 6月17日:需求分析6月17日到 6月19日:结构设计(概念、逻辑、物理结构设计)6月19日到 6月22日:行为设计(功能设计、事务设计、程序设计)6月22日到 6月25日:代码实现6月25日到 6月27日:代码测试6月27日到 6月28日:整理文档第 2 章 系统分析与设计2.1 系统分析2.1.1 参与者系统分析指导:老师 数据库设计者:范金梅、朱俐楠 需求分析与可行性分析者:孙军超2.1.2 需求分析经过对几个农资店铺的日常工作的调查研究及管理流程的分析, 要求本系统
9、 具有以下功能:农资信息查询功能,方便店员销售货物时掌握价格的尺度。 农资信息的删除、修改、增加功能,确保信息的准确性和完整性。 客户信息的增删改查功能,利用备注信息掌握客户的各种信息。 账目总结功能,防止漏帐,错帐的状况发生。统一、友好的操作界面,以保证系统的易用性。2.1.3 可行性分析根据调查得知,现在大多数小型农资商店采取手工方式对农资信息进行管 理。将不好记住的价格弄个标签贴在货物架上, 当进价调整时再统一换一遍, 工 作量大,也不免出现差错。对客户信息也是采用纯手工操作,既费时又费力,一 旦账本等用作记录的本子丢失,将死无对证。基于这一系列的问题, 实在是有必要建立一个农资信息管理
10、系统, 使农资店 的日常生活管理工作规范化、系统化、程序化、避免管理的随意性,提高信息处 理的速度和准确性,能够及时、有效准确地完成每天的销售、账目管理任务,为 广大农资店主提供方便。2.2 系统设计先在 Jpane添加设计好的 Jlabel 和 Jbutton,建好界面,再给按钮添加监听器,使 其实现相应的功能,实现功能的同时连接数据库,比如说查询,按下查询按钮, 监听器进行监听,连接数据库,执行查询语句,调出数据库中的数据实现查询, 更新,删除,清空,实现其功能时,与查询雷同。2.2.1 系统规划本系统由货物管理、 客户管理、账目管理三个功能模块组成, 以后也可扩充, 具体内容如下:货物管
11、理货物管理主要实现货物的增删改查功能。客户管理客户管理主要实现客户的增删改查功能。账目管理账目管理主要实现账目的添加和总结功能。2.2.2 类图AgriculturalDAO-conn: Connection+getConnection():Connection+closeConnection(ResultSet r,PreparedStatement p,Connection conn)o:iVd +add(AgriculturallInformationDO a):int +add(ClienteleInformationDO a):int+add(UserInformationDO a)
12、:int +delete(AgriculturallInformationDO a):int +delete(ClienteleInformationDO a):int +delete(UserInformationDO a):int +update(AgriculturallInformationDO a):int +update(ClienteleInformationDO a):int2.2.3 E-R 图Number2.3 数据库设计2.3.1 表结构设计Load 表结构字段名数据类型是否为空是否主键默认值USERIdInt(11)NO是0USERVarchar(255)YES是NUL
13、LPWDVarchar(255)YES否NULLAgricultural Information 表结构字段名数据类型是否为空是否主键默认值AgriculturalIdInt(11)NO是0NameVarchar(20)YES否NULLTypeVarchar(255)YES否NULLPriceVarchar(255)YES否NULLDateVarchar(255)YES否NULLBeizhuVarchar(255)YES否NULLClientele Information 表结构字段名数据类型是否为空是否主键默认值ClienteleIdInt(11)NO是0KeHuNameVarchar(20
14、)YES否NULLTelVarchar(20)YES否NULLPayVarchar(255)YES否NULLAddressVarchar(255)YES否NULLBeizhuVarchar(255)YES否NULLSale Information 表结构字段名数据类型是否为空是否主键默认值ClienteleIdInt(11)NO是0AgriculturalIdInt(11)NO是0NumberVarchar(255)YES否NULLBeizhuVarchar(255)YES否NULL2.3.2 系统功能结构图第 3 章 实现与测试3.1 部分功能模块展示3.1.1 界面3.1.2 代码impo
15、rt java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.SQLException;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextArea;import javax.s
16、wing.JTextField;import DO.ClienteleInformationDO;import dao.AgriculturalDAO;public class SelectKeHuSwing extends JFrameprivate JTextField jtf = new JTextField3;private AgriculturalDAO dao = new AgriculturalDAO();private JTextArea jta = new JTextArea();private JTextArea jta1 = new JTextArea();String
17、tablename = "ClienteleInformation" ;public SelectKeHuSwing()for(int i = 0;i < 3;i+)jtf i = new JTextField(8);JPanel pane=new JPanel();JPanel pane2=new JPanel();pane.add(new JLabel("请输入客户名字进行查询 ");JPanel pane1=new JPanel(); pane1.setLayout(new GridLayout(5,2,5,5); pane1.add(new
18、 JLabel("客户名 :"); pane1.addj(tf 0);pane1.add(new JLabel("客户电话 :");pane1.addj(tf 1);pane1.add(new JLabel("客户住址 :");pane1.addj(tf 2);pane1.add(new JLabel("消费额 :");pane1.addj(ta);pane1.add(new JLabel("备注:" );pane1.addj(ta1);JButton d1=new JButton("
19、查询 ");pane2.add(d1);JButton d2=new JButton("清空 ");pane2.add(d2);JButton d4=new JButton("更新 ");pane2.add(d4);JButton d3=new JButton("删除 ");pane2.add(d3);add(pane1,BorderLayoutC. ENTER); add(pane,BorderLayoutN. ORTH);add(pane2,BorderLayoutS. OUTH);setTitle(" 查询客
20、户信息 ");setLocationRelativeTo(null); setDefaultCloseOperation(JFrameE. XIT_ON_CLOSE); setSize(300,200);setVisible(true);d1.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) for(int i = 0; i < 4;i+) try jtf i.setText( dao.select(tablename,jtf 0.getText().getStrin
21、g(i+1); catch (SQLException e1) / TODO Auto-generated catch block e1.printStackTrace(); try jta.setText(dao.select(tablename, jtf 0.getText().getString(4); jta1.setText(dao.select(tablename, jtf 0.getText().getString(5); catch (SQLException e1) / TODO Auto-generated catch block e1.printStackTrace();
22、 ); d2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) for(int i = 0;i < 3;i+) jtf i.setText( "" ); jta.setText("" ); jta1.setText("" );); d3.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) dao.delet
23、e(keHuDO();); d4.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) dao.update(keHuDO();); public ClienteleInformationDO keHuDO() ClienteleInformationDO a = new ClienteleInformationDO(); a.setNamej(tf 0.getText(); a.setTel(jtf 1.getText(); a.setPayj(tf 2.getText();a.se
24、tAddressj(ta.getText();a.setBeizhu(jta1.getText();return a;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextArea;import ja
25、vax.swing.JTextField;import DO.AgriculturalInformationDO;import DO.ClienteleInformationDO;import dao.AgriculturalDAO;public class AddKeHuSwing extends JFrameprivate JTextField jtf= new JTextField3;private AgriculturalDAO dao = new AgriculturalDAO();private JTextArea jta = new JTextArea();private JTe
26、xtArea jta1 = new JTextArea();public ClienteleInformationDO keHuDO()ClienteleInformationDO a = new ClienteleInformationDO(); a.setNamej(tf 0.getText();a.setTel(jtf 1.getText();a.setPayj(tf 2.getText();a.setAddressj(ta.getText();a.setBeizhu(jta1.getText();return a;public AddKeHuSwing()for(int i = 0;i
27、 < 3;i+)jtf i = new JTextField(8);JPanel pane1=new JPanel(); pane1.setLayout(new GridLayout(6,2,5,5); pane1.add(new JLabel("客户名 :");pane1.addj(tf 0);pane1.add(new JLabel("客户电话 :"); pane1.addj(tf 1);pane1.add(new JLabel("客户地址 :"); pane1.addj(ta);pane1.add(new JLabel(&
28、quot;消费额 :");pane1.addj(tf 2);pane1.add(new JLabel("备注:" );pane1.addj(ta1);JButton d1=new JButton("添加 ");pane1.add(d1);JButton d2=new JButton("清空 ");pane1.add(d2);add(pane1);setTitle(" 添加客户信息 ");setLocationRelativeTo(null); setDefaultCloseOperation(JFrame
29、E. XIT_ON_CLOSE); setSize(300,200);setVisible(true);d1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) dao.add(keHuDO(););d2.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)for(int i = 0;i < 3;i+)jtf i.setText( "" );jta.s
30、etText("" ); jta1.setText("" ););第 4 章 结束语在这次系统开发的过程中,我们这组遇到了许多难题,也许是由于基础 知识的不足,也或许是因为第一次开发软件的问题, 刚下手的时候明显有些吃力, 不过经过组里人员的认真探讨和专注编程, 最终度过重重难关, 完成了这次课题, 虽然仍有许多不足之处, 但里面包含着组里人员这段时间的汗水和努力, 心中还 是挺高兴的, 这次课题不仅让我巩固了基础知识, 还让我从组员那里学到了更深 一层的知识, 让我明白了软件开发不仅需要的是技术, 更多的还有团队精神和团 队合作,也让我体会到了编码的深
31、奥之处, 让我对编码有了重新的认识, 在做课 题之前我对连接数据库这部分知识非常迷茫, 恰好我们这组开发的系统能用到这 些知识,组里给我分配的任务是建表, 建表相对其他组成员的任务比较容易, 所 以我很快就完了任务, 完成任务不是目的, 最重要的是要从别的成员那里学到自 己不会的知识, 我们组长很精通数据库这部分知识, 经过他的耐心教导, 让我学 会了关于数据库的这部分知识, 也让我明白了知识是自己主动去学的, 要主动把 握住每次可以学到知识的机会。这次课题让我体会到了组成员之间的友谊,这次我们的合作非常成功, 如果以后有类似的课题我们会继续合作,创作出更加完美的系统。参考文献:1 何玉洁 等
32、编著的数据库原理与应用教程 机械工业出版社 2010 年 9 月2 万波 郑海红 李娜 等译的 JAVA 语言程序设计基础篇及进阶篇 机械工业出版社3 王国辉,王毅,王殊宇等编著的 JAVA web开发典型模块大全人民邮政出版社。附录:主要源代码package dao;import java.sql.*;import java.util.Vector;import javax.swing.table.DefaultTableModel;import DO.*;public class AgriculturalDAO private static Connection conn = null;p
33、ublic Connection getConnection() try Class.forName("com.mysql.jdbc.Driver" );conn = DriverManager.getConnection("jdbc:mysql:/localhost:3306/agricultural?useUnicode =true&characterEncoding=GB2312", "root" , "root" ); catch (ClassNotFoundException e) e.print
34、StackTrace(); catch (SQLException e) e.printStackTrace();return conn;public void closeConnection(ResultSet rs,PreparedStatement pstmt,Connection conn)try rs.close(); pstmt.close(); conn.close(); catch (SQLException e) / TODO 自动生成 catch 块 e.printStackTrace();public void closeConnection(PreparedStatem
35、ent pstmt,Connection conn) try pstmt.close();conn.close(); catch (SQLException e) e.printStackTrace();private ResultSet executeQuery(String sql) try if(conn=null)getConnection();returnconn.createStatement(ResultSeTt.YPE_SCROLL_SENSITIVE,ResultSet.CONCUR_U PDATABLE).executeQuery(sql); catch (SQLExcep
36、tion e) e.printStackTrace();return null; finally private int executeUpdate(String sql) try if(conn=null) getConnection();return conn.createStatement().executeUpdate(sql); catch (SQLException e) System.out.println(e.getMessage();return -1; finally public ResultSet select(String tablename,String str)S
37、tring sql = "select * from " + tablename + "where name = ?" ;ResultSet result = null;try Connection conn = getConnection();PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, str);result = executeQuery(sql); closeConnection(result,pstmt,conn); catch (SQLExcep
38、tion e) e.printStackTrace();return result;public DefaultTableModel showTable(String tablename) DefaultTableModel tableModel = new DefaultTableModel(); Vector row = new Vector(); Vector column = new Vector();String sql = "select * from " + tablename ;int i = 0;try Connection conn = getConne
39、ction();PreparedStatement pstmt = conn.prepareStatement(sql);ResultSet result = executeQuery(sql);i = result.getMetaData().getColumnCount();System.out.println( "影响结果条数: " + i);while(result.next()Vector single = new Vector();for(int j = 0; j < i;j+) single.addElement(result.getObject(j +
40、 1); row.addElement(single);for(int k = 1;k <= i;k+) column.addElement(result.getMetaData().getColumnName(k);tableModel.setDataVector(row, column); closeConnection(result,pstmt,conn); catch (SQLException e) / TODO 自动生成 catch 块 e.printStackTrace();return tableModel;public int isload(UserInformatio
41、nDO u)int flag = 0;String sql = "select * from where user = '" + u.getUser() + "'"try Connection conn = getConnection();PreparedStatement pstmt = conn.prepareStatement(sql);ResultSet resultset = pstmt.executeQuery();if(resultset.next() if(u.getPwd().equals(resultset.getSt
42、ring"(pwd" ) flag = 1;resultset.last();int rowSum = resultset.getRow();resultset.first();if(rowSum != 1)flag = 0;elseflag = 0; elseflag = 0;closeConnection(pstmt,conn); catch (SQLException e) / TODO 自动生成 catch 块 flag = 0;return flag;public int add(AgriculturalInformationDO a)String sql = &
43、quot;insert into AgriculturalInformation (name,type,price,date,beizhu)values(?,?,?,?,?;) "int i = 0;try Connection conn = getConnection();PreparedStatement pstmt = conn.prepareStatement(sql); /设置各个占位符的实际参数pstmt.setString(1, a.getName();pstmt.setString(2, a.getType();pstmt.setString(3, a.getPric
44、e();pstmt.setString(4, a.getDate();pstmt.setString(5, a.getBeizhu();/执行 sqli = pstmt.executeUpdate();System.out.println( "影响结果条数: " + i); closeConnection(pstmt,conn); catch (SQLException e) e.printStackTrace();return i;public int add(ClienteleInformationDO a)String sql = "insert into
45、ClienteleInformation (name,tel,pay,address,beizhu)values(?,?,?,?,?; )"int i = 0;try Connection conn = getConnection();PreparedStatement pstmt = conn.prepareStatement(sql); /设置各个占位符的实际参数pstmt.setString(1, a.getName();pstmt.setString(2, a.getTel();pstmt.setString(3, a.getPay();pstmt.setString(4,
46、a.getAddress();pstmt.setString(5, a.getBeizhu();/执行 sqli = pstmt.executeUpdate();System.out.println( "影响结果条数: " + i); closeConnection(pstmt,conn); catch (SQLException e) / TODO 自动生成 catch 块 e.printStackTrace();return i;public int add(UserInformationDO a) String sql = "insert into load
47、 (user,pwd)values(?,?)"int i = 0;try Connection conn = getConnection();PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setString(1, a.getUser();pstmt.setString(2, a.getPwd();i = pstmt.executeUpdate();System.out.println( "影响结果条数: " + i);closeConnection(pstmt,conn); catch (SQLException e) e.printStackTrace();return i;public int del
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026二手车交易市场深度分析及平台运营与消费者信任报告
- 2026年抚顺市东洲区幼儿园教师招聘笔试备考题库及答案解析
- 2025年苏州市虎丘区幼儿园教师招聘考试试题及答案解析
- 2026年南充市高坪区幼儿园教师招聘笔试备考题库及答案解析
- 基于YOLO的古建筑巡检机器人火灾检测方法研究
- 2026年莆田市城厢区幼儿园教师招聘笔试备考题库及答案解析
- 2025年山西省幼儿园教师招聘考试试题及答案解析
- 膝痛康干预TNF-MAPK-Fas信号通路抑制KOA模型大鼠膝关节软骨细胞凋亡的实验研究
- 《幸福的编程》(节选)翻译实践报告
- 山新杨PdbCML48基因的功能初步分析
- 16.2 《六国论》课件(内嵌视频)2025-2026学年统编版高一语文必修下册
- 2026年社区护理概述及国外进展-社区护理学课件
- 2026年7下语文试卷及答案
- 2025年青岛市教师公开招聘真题及答案
- 2025年公安机关基本级执法资格考试真题试卷(含答案)
- 电气控制与PLC应用技术 (S7-1200)-教案 模块3 S7-1200 PLC的基本指令及其应用
- 2026合肥源创新人才发展有限公司社会招聘5人备考题库及参考答案详解(考试直接用)
- 2026年入团考试试卷真题及答案
- 广东省韶关市仁化县2024-2025学年八年级下学期历史期中检测题(无答案)
- 通信设备制造项目厂房与配套设施建筑工程施工设计方案
- 2026年云南事业单位招聘面试题目及答案
评论
0/150
提交评论