免费预览已结束,剩余32页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1需求分析随着近年来我国经济的发展,国民生活水平的提高,国内的轿车产业开始迅猛发展,人民群众对于轿车的需求也是日益增多,也因此产生了很多轿车销售公司。在这些轿车销售公司里,由于业务繁忙,往往需要处理各种品牌型号轿车的销售查询工作,销售员的管理工作等等。这些工作如果光靠人工来实现,工作量就很大,而且容易出现错误,造成管理上的混乱。因此,制作一套轿车销售管理系统对于公司管理能够提高轿车销售公司的管理水平、工作效率、服务质量、降低销售成本,最终提高公司的市场竞争力。1.1 编写目的轿车销售管理系统可以有效的管理轿车信息、员工信息和客户信息。它主要进行轿车销售公司的管理工作。本系统以MY SQL 为后台数据库,利用MY SQL对数据库进行管理和操作。本系统将以轿车销售公司的管理为背景,介绍如何以JAVA为前台开发工具,MY SQL为后台数据库管理系工具开发数据库应用系统。本系统具有很强的使用性,用户只要根据实际的使用情况稍加修改,就可以把它应用到实际工作中。 1.1.1数据库应用系统的开发涉及如下内容:l 系统功能设计;l 数据库设计;l 界面设计l 程序代码设计 1.1.2项目内容:开发一个轿车销售管理系统对于该项目,主要注意以下两个方面:l 轿车销售公司的销售员管理、轿车信息管理和客户信息管理l 轿车销售系统中涉及那些数据对象,各对象之间以及对象内部的关系如何?如何保存个数据对象的相关数据,以便轿车销售管理系统进行数据处理。1.2 分析 1.2.1轿车销售系统的主要功能有:(1) 系统用户管理功能。用户根据姓名和密码登录系统。登录用户分为两个等级:普通用户和管理员用户。普通用户只查看轿车信息、客户信息、员工信息等功能;管理员用户(admin)除了以上功能外,同时还有添加用户、修改用户密码和删除用户的功能。(2) 轿车信息管理功能。录入所销售的轿车编号、型号、品牌、价格、保修期等信息,同时支持对轿车信息的添加、修改、删除和查询功能。(3) 客户信息管理功能。录入购买轿车的客户姓名、性别、年龄、联系方式、所购车型号、购车价格等信息,同时还支持亏客户信息的添加、修改、删除和查询功能。(4) 员工信息管理功能。录入员工的员工号、姓名、性别等信息,同时支持对员工信息的添加、修改、删除和查询功能。 1.2.2数据库信息经过实际的需求分析,确定需要包含以下数据库信息:【轿车库存信息:】轿车编号(标识列),轿车型号,轿车名称,轿车品牌,轿车销量【员工信息:】员工编号,姓名,性别,年龄,电话,业绩【客户信息:】客户编号,客户姓名,客户性别,客户年龄,客户电话【轿车销售信息:】序号(标识列),轿车型号,销售员编号,客户编号,销售日期2总体设计2.1系统流程图根据系统的功能要求,采用模块化的方法,设计图书借阅系统的控制流程图如图: 登录修改用户密码查询用户密码系统用户删除系统用户管理功能轿车信息管理功能客户信息管理功能员工信息管理功能轿车信息查询轿车信息添加轿车信息修改轿车信息删除客户信息查询客户信息添加客户信息修改客户信息删除员工信息查询员工信息添加员工信息修改员工信息删除系统用户添加 2.2 E-R模型用E-R模型描述系统中的实体集与实体集之间的关系,目的是以E-R图为工具,设计关系型的数据库,即确定应用系统所使用的数据库应包含哪些表,每个表的结构是怎么样的。 系统用户员工信息客户信息轿车信息管理用户名密 码用户等级类型描述用户级别轿车型号轿车编号轿车品牌轿车价格轿车保修期轿车具体描述客户编号客户年龄客户职业身份证号客户电话客户住址购车价格购车型号客户性别客户姓名员工编号员工性别员工姓名员工电话员工职务员工生日员工地址进入公司时间所在部门 2.3 关系描述的设计 根据以上各E-R图,经过转换,可以导出各个关系。这些实体涉及的数据项有: 系统用户:(用户名,密码,用户等级) 管理:(用户等级,类型描述) 轿车信息:(轿车编号,轿车型号,轿车品牌,轿车销量) 客户信息:(客户编号,客户姓名,客户性别,客户年龄,客户电话) 员工信息:(员工编号,员工姓名,员工性别,员工年龄,员工电话,员工业绩) 轿车销售信息:(销售记录编号,轿车型号,销售员编号,客户编号,销售日期) 2.4数据库物理设计 2.4.1创建数据库 在创建数据库表之前,首先要创建一个数据库,本系统以MY SQL 为后台数据库。用户可以在企业管理器中创建数据库,也可以在MY SQL执行SQL语句。需要注意的是,在设计数据库结构时,通常需要考虑主文件,从文件和日志文件的存储位置和大小。文件大小可以根据数据库的用途,用户数量和存储数据等因素综合考虑。一般初始大小不宜设置过大,以免浪费存储空间。而文件最大尺寸需要设置大些,以保证有足够的存储空间。日志文件则不需要太多的空间。 2.4.2轿车销售管理系统库表结构设计 该系统设计了五个数据库表:用户信息表Users、用户类型表UserType、轿车信息表Car、客户信息表Customer、员工信息表Staff。 具体结构如下图所示:Users表字段名称标识名称数据类型空否字段说明User_name用户名Varchar(10)N主键User_pwd密码Varchar(20)NUser_type用户等级smallintN限制用户权限UserType表字段名称标识名称数据类型空否字段说明User_type用户等级SmallintN限制用户权限Type_discription类型描述Varchar(50)NCar表字段名称标识名称数据类型空否字段说明Car_ip轿车编号IntN自增,主键Car_name轿车型号Varchar(20)NCar_brand轿车品牌Varchar(10)NCar_cout轿车销量Int NCustomer表字段名称标识名称数据类型空否字段说明Customer_id客户编号IntN自增,主键Customer_name客户姓名Varchar(10)NCustomer_sex客户性别Varchar(2)NCustomer_age客户年龄IntYCustomer_tel客户电话Varchar(10)YStaff表字段名称标识名称数据类型空否字段说明Staff_id员工编号IntN自增,主键Staff_name员工姓名Varchar(10)NStaff_sex员工性别Varchar(2)NStaff_tel员工电话Varchar(10)YStaff_age员工年龄IntY2.4.3 用SQL建立各个表(1)建立Users表:CREATE TABLE dbo.Users( User_name VARCHAR(10) Primary Key User_pwd VARCHAR(20) NOT NULL User_type SMALLINT NOT NULL)(2) 建立UserType表CREATE TABLE dbo.UserType( User_type SMALLINT Primary Key Type_discription VARCHAR(100) NOT NULL)(3)建立Car表CREATE TABLE dbo.Car(Car_id INT Primary Key Car_name VARCHAR(20) NOT NULL Car_brand VARVHAR(20) NOT NULL Car_cout INT )(4) 建立Customer表CREATE TABLE dbo.Customer(Customer_id INT Primary KeyCustomer_name VARCHAR(10) NOT NULLCustomer_sex VARCHAR(2) NULLCustomer_age INT NULLCustomer_tel VARCHAR(10) NULL)(5) 建立Staff表CREATE TABLE dbo.staff( Staff_id INT Primary KeyStaff_name VARCHAR(10) NOT NULLStaff_sex VARCHAR(2) NOT NULL Staff_age INT NULLStaff_tel VARCHAR(10) NULL)3 详细设计3.1销售界面的设计及功能描述(1)轿车管理系统启动时的界面点击运行按钮,出现如图所示的启动界面,进行轿车销售处理(2)车辆信息 员工信息 客户信息 销售记录查询界面点击界面的车辆信息、员工信息、客户信息、销售记录查看按钮,运行出对应数据库中已存的车辆、员工、客户以及销售记录信息(3)新建车辆界面点击界面的新建车辆按钮,填写车辆的有关信息,并对应的存储到相应的数据库中(4)新建员工界面点击界面的新建员工按钮,填写员工的有关信息,并对应的存储到相应的数据库中(5)新建客户界面点击界面的新建客户按钮,填写客户的有关信息,并对应的存储到相应的数据库中(6)新建销售记录界面点击界面的新建销售记录按钮,填写销售记录的有关信息,并对应的存储到相应的数据库中(7)删除信息界面点击界面的删除信息按钮,填写车辆、客户、员工、销售记录表的数据编号,以及对应的表名,删除表中对应的信息(8)清空界面点击界面的晴空控制台按钮,清除在界面中显示的所有销售信息3.2 源代码(1) Car.javaimport java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.SQLException;import java.sql.Statement;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JTextField;class Car extends JDialog implements ActionListener/* * */private static final long serialVersionUID = -2567952878290133643L;Container context;JTextField id;JTextField brand;JTextField type;JButton ok,cancle;JLabel lbrand,ltype,lid;Car()context=this.getContentPane();context.setLayout(new FlowLayout();this.setSize(500, 90);lid=new JLabel(ID:);lbrand=new JLabel(品牌:);ltype=new JLabel(型号:);id=new JTextField(10);brand=new JTextField(10);type=new JTextField(10);lid.setLabelFor(id);lbrand.setLabelFor(brand);ltype.setLabelFor(type);ok=new JButton(确定);cancle=new JButton(取消);context.add(lid);context.add(id);context.add(lbrand);context.add(brand);context.add(ltype);context.add(type);context.add(ok);context.add(cancle);ok.addActionListener(this);cancle.addActionListener(this);this.pack();this.setVisible(true);public void actionPerformed(ActionEvent e) Object s=e.getSource();if(s=ok)try String _id = id.getText();String _type = type.getText();String _brand = brand.getText();Connection c = new Connections().connect();Statement stmt = c.createStatement();String sql = insert into cars(id,brand,type) value(+_id+,+_brand+,+_type+);System.out.print(sql);stmt.execute(sql); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace();/需要在此添加过滤代码过滤非法输入/manage.insertclass(Integer.parseInt(id.getText(), name.getText();this.setVisible(false);else if(s=cancle)this.setVisible(false);/public static void main(String args) /new Car();/(2) Client.javaimport java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.SQLException;import java.sql.Statement;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JTextField;class Client extends JDialog implements ActionListener/* * */private static final long serialVersionUID = -6547959361972952105L;Container context;JTextField id;JTextField name;JTextField sex;JTextField age;JTextField cell;JButton ok,cancle;JLabel lid,lname,lsex,lage,lcell;Client()context=this.getContentPane();context.setLayout(new FlowLayout();this.setSize(500, 90);lid=new JLabel(ID:);lname=new JLabel(名称:);lsex=new JLabel(性别:);lage=new JLabel(年龄:);lcell=new JLabel(电话:);id=new JTextField(10);name=new JTextField(10);sex=new JTextField(2);age=new JTextField(3);cell=new JTextField(10);lid.setLabelFor(id);lname.setLabelFor(name);lsex.setLabelFor(sex);lage.setLabelFor(age);lcell.setLabelFor(cell);ok=new JButton(确定);cancle=new JButton(取消);context.add(lid);context.add(id);context.add(lname);context.add(name);context.add(lsex);context.add(sex);context.add(lage);context.add(age);context.add(lcell);context.add(cell);context.add(ok);context.add(cancle);ok.addActionListener(this);cancle.addActionListener(this);this.pack();this.setVisible(true);public void actionPerformed(ActionEvent e) Object s=e.getSource();if(s=ok)try String _id = id.getText();String _name = name.getText();String _sex = sex.getText();String _age = age.getText();Connection c = new Connections().connect();Statement stmt = c.createStatement();String sql = insert into clinet(id,name,sex,age) value(+_id+,+_name+,+_sex+,+_age+);System.out.print(sql);stmt.execute(sql); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace();this.setVisible(false);/(Integer.parseInt(id.getText(), name.getText();else if(s=cancle)this.setVisible(false);/public static void main(String args) /new Client();/(3) Connections.javaimport java.sql.Connection;import java.sql.DriverManager;public class Connections public Connection connect()Connection connection = null;try Class.forName(com.mysql.jdbc.Driver);String url = jdbc:mysql:/localhost:3306/car;String user = root;String password = root;connection = DriverManager.getConnection(url, user, password); catch (Exception e) e.printStackTrace();/ TODO: handle exceptionreturn connection;(4) Del.javaimport java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JTextField;class del extends JDialog implements ActionListener/* * */private static final long serialVersionUID = 3712830203472566152L;Container context;JTextField id;JTextField target;JButton ok,cancle;JLabel lid,ltarget;del()context=this.getContentPane();context.setLayout(new FlowLayout();this.setSize(500, 90);lid=new JLabel(ID:);ltarget=new JLabel(所在的表:);id=new JTextField(10);target=new JTextField(10);lid.setLabelFor(id);ltarget.setLabelFor(target);ok=new JButton(确定);cancle=new JButton(取消);context.add(lid);context.add(id);context.add(ltarget);context.add(target);context.add(ok);context.add(cancle);ok.addActionListener(this);cancle.addActionListener(this);this.pack();this.setVisible(true);public void actionPerformed(ActionEvent e) Object s=e.getSource();if(s=ok)try Connection c = new Connections().connect();Statement stmt = c.createStatement();String sql = delete from +target.getText()+ where id=+id.getText()+;stmt.execute(sql); catch (SQLException e2) / TODO Auto-generated catch blocke2.printStackTrace();this.setVisible(false);else if(s=cancle)this.setVisible(false);(5) Mainframe.javaimport java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.*;import javax.swing.*;public class Mainframe extends JFrame implements ActionListener /* * */private static final long serialVersionUID = -3254015039949474992L;public static void main(String agrv)new Mainframe();private Container cpanel;JTextArea text;JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b10;Mainframe()cpanel=this.getContentPane();cpanel.setLayout(new FlowLayout();this.setSize(720, 500);text=new JTextArea(控制台输出:+n,20,55);JScrollPane scroll=new JScrollPane(text);/text.add(scroll);b1=new JButton(车辆信息);b2=new JButton(员工信息);b3=new JButton(客户信息);b10=new JButton(销售记录查看);b4=new JButton(新建车辆);b5=new JButton(新建员工);b6=new JButton(新建客户);b9=new JButton(新建销售记录);b7=new JButton(删除信息);b8=new JButton(清空控制台);cpanel.add(b1);cpanel.add(b2);cpanel.add(b3);cpanel.add(b10);cpanel.add(b4);cpanel.add(b5);cpanel.add(b6);cpanel.add(b9);cpanel.add(b7);cpanel.add(b8);cpanel.add(text);this.setVisible(true);b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b10.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);b9.addActionListener(this);b7.addActionListener(this);b8.addActionListener(this);public void actionPerformed(ActionEvent e) Object s=e.getSource();if(s=b1)try Connection c = new Connections().connect();Statement stmt = c.createStatement();String sql = select * from cars;ResultSet r=null;try r= stmt.executeQuery(sql); catch (SQLException e1) e1.printStackTrace();text.append(ID 品牌 型号 销量+n);for(int i = 0; r.next(); i+)text.append(r.getString(1);text.append( );text.append(r.getString(2);text.append( );text.append(r.getString(3);text.append( );text.append(String.valueOf(r.getInt(4);text.append( n); catch (SQLException e2) / TODO Auto-generated catch blocke2.printStackTrace();/打印车辆信息else if(s=b2)try Connection c = new Connections().connect();Statement stmt = c.createStatement();String sql = select * from staff;ResultSet r=null;try r= stmt.executeQuery(sql); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace();text.append(ID 名字 性别 年龄 业绩+n);for(int i = 0; r.next(); i+)text.append(r.getString(1);text.append( );text.append(r.getString(2);text.append( );text.append(r.getString(3);text.append( );text.append(String.valueOf(r.getInt(4);text.append( );text.append(r.getString(3);text.append( n); catch (SQLException e2) / TODO Auto-generated catch blocke2.printStackTrace();/打印员工信息else if(s=b3)try Connection c = new Connections().connect();Statement stmt = c.createStatement();String sql = select * from clinet;ResultSet r=null;try r= stmt.executeQuery(sql); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace();text.append(ID 名字 性别 年龄+n);for(int i = 0; r.next(); i+)text.append(r.getString(1);text.append( );text.append(r.getString(2);text.append( );text.append(r.getString(3);text.append( );text.append(String.valueOf(r.getInt(4);text.append( n); catch (SQLException e2) / TODO Auto-generated catch blocke2.printStackTrace();else if(s=b10)try Connection c = new Connections().connect();Statement stmt = c.createStatement();String sql = select * from orders;ResultSet r=null;try r= stmt.executeQuery(sql); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace();text.append(销售记录ID 汽车ID 销售员ID 客户ID 日期+n);for(int i = 0; r.next(); i+)text.append(String.valueOf(r.getInt(1);text.append( );text.append(String.valueOf(r.getInt(2);text.append( );text.append(String.valueOf(r.getInt(3);text.append( );text.append(String.valueOf(r.getInt(4);text.append( );text.append(String.valueOf(r.getInt(5);text.append( );text.append( n); catch (SQLException e2) / TODO Auto-generated catch blocke2.printStackTrace();/打印客户信息else if(s=b4)new Car();else if(s=b5)new Staff();else if(s=b6)new Client();else if(s=b7)new del();else if(s=b9)new Order();else if(s=b8)text.setText(null);(6) Order.javaimport java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.SQLException;import java.sql.Statement;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JTextField;class Order extends JDialog implements ActionListener/* * */private static final long serialVersionUID = -2567952878290133643L;Container context;JTextField id;JTextField brand;JTextField type;JTextField date;JButton ok,cancle;JLabel lbrand,ltype,lid,ldate;Order()context=this.getContentPane();context.setLayout(new FlowLayout();this.setSize(500, 90);lid=new JLabel(汽车ID:);lbrand=new JLabel(销售人员ID:);ltype=new JLabel(客户ID:);ldate=new JLabel(日期:);id=new JTextField(10);brand=new JTextField(10);type=new JTextField(10);date=new JTextField(10);lid.setLabelFor(id);lbrand.setLabelFor(brand);ltype.setLabelFor(type);ldate.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026 学龄前自闭症自理进阶巩固课件
- 冀教四年级数学教案模板
- 工程部巡视检查管理制度
- 2026届福建省福安市环城区片区中考英语四模试卷含答案
- 2026 学龄前自闭症关键干预感统课件
- 数据分析报告撰写技巧及流程
- React框架应用经验与心得分享
- 2026 学龄前自闭症扣纽扣训练课件
- 孝敬父母的演讲稿(集锦15篇)
- 婚礼婚礼致辞
- 2026年智慧树答案【人工智能原理与技术】智慧树网课章节考前冲刺练习题附参考答案详解(夺分金卷)
- 流行性腮腺炎诊疗指南
- 高考物理押计算大题《力学三大观点的综合应用计算题》含答案
- 2026年兰州大学管理岗招聘考试笔试试题(含答案)
- 肩关节松动术课件
- 2025年福建省高考生物真题卷含答案解析
- 茂名石油行业分析报告
- 10.2《在马克思墓前的讲话》教学课件2025-2026学年统编版高中语文必修下册
- 2025年河北联考音乐真题及答案
- 高技术企业技术创新的组织模式与激励机制
- 道路(普通)货物运输企业安全管理制度
评论
0/150
提交评论