资源描述
湖 南 文 理 学 院
课程设计题目: 超市管理系统
系 别 计算机科学和技术
班 级 计科12102
学生姓名 罗巍 杨欢 杨沁铠 唐振
学 号 17010223
指导老师 谭文学
课程设计进行地点: 第三试验楼A617
任 务 下 达 时 间: 年 5 月 21 日
起止日期: 年 5 月 21 日起——至 年 6月 21 日止
摘 要
伴随小型超市规模发展不停扩大,商品数量急剧增加,相关商品多种信息量也成倍增加,传统人工记忆方法也慢慢无法适应形势改变。伴随信息技术发展,计算机已被广泛用于社会各个领域,成为推进社会发展技术动力。而在计算机应用中,软件作用十分突出,软件已经发展成为信息技术关键,主导着信息产品开发和信息技术市场深入开拓。软件产业已成为社会信息化进程中一个战略性产业。在软件技术应用中软件开发技术尤其是应用型软件产品开发技术成了重中之重。不停开发适应用户需求、市场需要新型软件产品。伴随社会发展,软件也在不停更新换代。
因为有些超市里对商品进货、售出及商品基础信息等部分繁琐处理全部是经过手工进行记载并进行处理,对商品信息处理工作量尤其大,不仅浪费大量人力物力,而且还很轻易犯错,更关键是为了方便用户,超市需要时时刻刻对商品对多种信息进行统计分析。 一直以来大家使用传统人工方法管理超市各项工作, 这种管理方法存在着很多缺点, 如: 效率低、保密性差, 另外时间一长, 将产生大量冗余文件和数据, 这给查找、统计、更新和维护工作全部带来了很大困难。然而大型超市管理系统功效过于强大而造成操作繁琐降低了小超市工作效率。假如有这么一套完整小型超市管理系统软件,只需点击几下鼠标就可完成所需操作,那样就会大大提升超市职员工作效率和管理水平,并能深入提升超市工作效率并使超市实施规范化管理。鉴于小型超市管理中存在很多问题, 我们在此次课程设计中以小型超市管理系统为研究课题,对此系统进行了全方面设计。
超市管理系统由用户、采购员、销售员、经理管理界面四部分组成。 超市管理系统应该能够为用户提供充足信息和快捷查询手段。
一个完整系统设计,当然就离不开后台环境支持,在此次设计中,我们关键以sqlsever数据库作为基础,实施此系统开发。
目 录
一、系统需求分析 - 1 -
1.1系统名称: - 1 -
1.2系统介绍: - 1 -
1.3开发背景 - 1 -
1.4.系统面向用户群体 - 1 -
1.5开发环境 - 1 -
二、系统总体设计 - 2 -
2.1系统功效结构图 - 2 -
三、系统具体设计 - 2 -
3.1数据库实体E-R图设计 - 2 -
3.2数据库表设计 - 4 -
3.3物理设计文档 - 6 -
3.4具体设计 - 10 -
四、系统总结 - 20 -
五、系统设计心得体会 - 21 -
六、参考文件 - 21 -
一、系统需求分析
1.1系统名称:
小型超市管理系统
1.2系统介绍:
界面设计简练、友好、美观大方
操作简单、快捷方便
数据存放安全、可靠
信息分类清楚、正确
强大查询功效、确保数据查询灵活性
提供销售排行,为管理员提供真实数据信息
提供灵活、方便权限设置功效,使整个系统管理分工明确
对用户输入数据,系统进行严格数据检验,尽可能排人为错误
1.3开发背景
伴随现代科学技术迅猛发展,计算机技术已经渗透到各个领域,成为各行业必不可少工具,尤其是Internet技术推广和信息高速公路建立,使IT产业在市场竞争中越发显示出其独特优势,步入信息化时代,有巨大数据信息等候加工处理和传输,这使得对数据库深入开发和利用显得尤为迫切。
作为中国市场部分中小型超市,它们在信息化过程中步伐要落后于大中型超市,而对于这些企业资源管理,信息存放和处理也显得迫切需要,要适应市场竞争,就需要有高效处理方法和管理方法,所以加紧超市信息化进程是必不可少。
中国超市在20世纪90年代早期形成,现在已经成为中国零售业一个关键形态,为国民经济发展发挥了关键作用。伴随经济快速发展,超市经营管理也变得愈加复杂,早期售货员站柜台形式早已不能满足现有销售业发展,这么就迫切地需要引入新管理技术。
1.4.系统面向用户群体
关键是中小型超市使用者,该消费群体含有以下特征:1超市日常管理人工化居多,工作效率较低;2超市日常交易额较小,货物流通较小,不愿花高价购进大型超市管理系统。所以,该消费群体对产品功效性需求并不高,只需满足前台销售系统、后台货物管理即可。
1.5开发环境
Eclipse+mysql
二、系统总体设计
2.1系统功效结构图
小超市管理系统是一个专门针对小型商店和超市智能化、自动化管理系统。其功效总框图图2-1所表示。
用户注册
登陆界面
采购员登陆
用户登陆
经理登录
销售员登陆
分项查询
增加订单
更改订单
查看销售信息
查看进货信息
购置商品
查看销售员信息
查看全部订单
浏览某种商品
浏览全部商品
图2-1 系统功效总框图
三、系统模块功效介绍
3.1 登录功效介绍
登录功效是进入系统必需经过验证过程,其关键功效是验证使用者身份,确定使用者权限,从而在使用软件过程中能安全地控制系统数据,即不一样工作人员有不一样权限,每个使用人员不得跨越其权限操作软件,能够避免无须要数据丢失事件发生。
登录界面图2-2所表示
登陆成功!!!
3.1.1登陆界面源代码
package uml_supermarket;
import java.awt.*;
import javax.swing.*;
import com.borland.jbcl.layout.*;
import java.awt.event.*;
import com.borland.dx.sql.dataset.*;
import java.sql.*;
import javax.swing.border.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) </p>
* <p>Company: </p>
* @author unascribed
* @version 1.0
*/
public class Logincs extends JDialog implements ActionListener{
//申明在程序中要用到方法
private JPanel panel1 = new JPanel();
private BorderLayout borderLayout1 = new BorderLayout();
private JPanel jPanel1 = new JPanel();
private XYLayout xYLayout1 = new XYLayout();
private JLabel jLabel1 = new JLabel();//添加一个标签控件
private JLabel jLabel2 = new JLabel();
private JTextField jTextField1 = new JTextField();//添加一个文本框
private JButton jButton1 = new JButton();//添加一个按钮控件
private JButton jButton2 = new JButton();
private JPasswordField jPasswordField1 = new JPasswordField();
private Database database1 = new Database();
private JLabel jLabel3 = new JLabel();
private JLabel jLabel4 = new JLabel();
private JLabel jLabel5 = new JLabel();
private TitledBorder titledBorder1;
private TitledBorder titledBorder2;
private JLabel jLabel6 = new JLabel();
public Logincs(Frame frame, String title, boolean modal) {
super(frame, title, modal);
try {
jbInit();
pack();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
public Logincs() {
this(null, "", false);
}
private void jbInit() throws Exception {
titledBorder1 = new TitledBorder("");
titledBorder2 = new TitledBorder("");
panel1.setLayout(borderLayout1);
jPanel1.setLayout(xYLayout1);
jLabel1.setForeground(Color.blue);//标签控件字体颜色
jLabel1.setText("用户名"); //标签标题
jLabel2.setForeground(Color.blue);
jLabel2.setText("密码");
jButton1.setForeground(UIManager.getColor("List.selectionBackground"));//按钮控件字体颜色
jButton1.setBorder(BorderFactory.createRaisedBevelBorder());//按钮外观
jButton1.setText("登录");//按钮标题
jButton1.addActionListener(this);//加入按钮事件
jButton2.setForeground(UIManager.getColor("Menu.selectionBackground"));
jButton2.setBorder(BorderFactory.createRaisedBevelBorder());
jButton2.setToolTipText("");
jButton2.setText("取消");
jButton2.addActionListener(this);
jPanel1.setBorder(BorderFactory.createEtchedBorder());
jPanel1.setMinimumSize(new Dimension(600, 600));//设置面板大小
jPanel1.setPreferredSize(new Dimension(400, 325));
jPasswordField1.setBorder(titledBorder1);
jPasswordField1.setToolTipText("");
database1.setConnection(new com.borland.dx.sql.dataset.ConnectionDescriptor("jdbc:odbc:supermarket", "sa", "123", false, "sun.jdbc.odbc.JdbcOdbcDriver"));
this.setResizable(false);
this.setTitle("登录");
jLabel3.setBackground(Color.yellow);//标签背景颜色
jLabel3.setForeground(Color.black);
jLabel3.setBorder(BorderFactory.createEtchedBorder());
jLabel3.setText(" 小型超市管理系统");
jLabel4.setBorder(BorderFactory.createEtchedBorder());
jLabel4.setText(" ——制作人:L,T,Y,Y");
jLabel5.setBorder(BorderFactory.createEtchedBorder());
jLabel5.setToolTipText("");
jLabel5.setText("——版本号: .5.30");
jTextField1.setBorder(titledBorder2);
jLabel6.setBorder(BorderFactory.createEtchedBorder());
getContentPane().add(panel1);
panel1.add(jPanel1, BorderLayout.WEST);
jPanel1.add(jLabel3, new XYConstraints(-1, 0, 395, 30));
jPanel1.add(jLabel5, new XYConstraints(274, 30, 121, 32));
jPanel1.add(jLabel4, new XYConstraints(127, 32, 143, 30));
jPanel1.add(jPasswordField1, new XYConstraints(143, 196, 132, 24));
jPanel1.add(jTextField1, new XYConstraints(143, 136, 132, 24));
jPanel1.add(jLabel2, new XYConstraints(23, 195, 60, 25));
jPanel1.add(jLabel1, new XYConstraints(23, 134, 60, 25));
jPanel1.add(jLabel6, new XYConstraints(-2, 65, 396, 191));
jPanel1.add(jButton1, new XYConstraints(90, 274, 68, 28));
jPanel1.add(jButton2, new XYConstraints(193, 275, 69, 28));
}
public void actionPerformed(ActionEvent e){
String driverName="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=supermarket";
String userName="sa"; //默认用户名
String userPwd="123"; //密码
Statement stmt=null;
ResultSet rs =null;
Connection dbConn=null;
if(e.getSource() == jButton1) //得到界面单击事件
{
try{
String userAuthority = null ;
// String userName = null ;
String userPassword = null ;
String testName = jTextField1.getText().toString() ;//从jTextField1中得到用户名
String testPassword = String.valueOf(jPasswordField1.getPassword()) ;//从jPassword中得到用户密码
//Statement sql = database1.createStatement() ; //打开Statement对象
try {
Class.forName(driverName).newInstance();
} catch (InstantiationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
dbConn=DriverManager.getConnection(dbURL,userName,userPwd);
stmt = dbConn.createStatement();
rs = stmt.executeQuery("SELECT userName,userPassword , userAuthority FROM T_user WHERE userName = '"+testName+"'") ;
//实施SQL语句,从数据库当中选择用户名,密码,和权限。
while(rs.next()) //
{
userName = rs.getString("userName") ; //从数据库当中得到用户名
userPassword = rs.getString("userPassword") ;//从数据库当中得到密码
userAuthority = rs.getString("userAuthority") ;//从数据库当中得到权限
}
verifyUser(userName,userPassword,testPassword,userAuthority); //调用verifyUser方法
cancel() ;//退出
}
catch(SQLException ex){ex.printStackTrace();}
}
//exit the System
else if(e.getSource() == jButton2){
cancel();
}
}
void cancel()
{
dispose();
}
//验证用户名和密码
void verifyUser(String userName , String userPassword , String testPassword, String userAuthority)
{
if(userName == null) //判定用户名是否为空
{
JOptionPane.showMessageDialog(null,"用户名不存在,请先注册","verify user",JOptionPane.DEFAULT_OPTION);
//抛出对话框
}
else
{
if(userPassword.equals(testPassword) == false) //判定密码是否相等
{
JOptionPane.showMessageDialog(null,"您输入密码不正确,请重试","verify password" , JOptionPane.DEFAULT_OPTION);
//抛出对话框
}
else{
JOptionPane.showMessageDialog(null,"success","",JOptionPane.DEFAULT_OPTION);
//
verifyUserAuthority(userAuthority) ;//进行权限判定
}
}
}
//验证用户权限
void verifyUserAuthority(String userAuthority){
if(userAuthority.equals("admin"))//假如用户为admin,则弹出管理员界面
{
AdminWindow adminWindow = new AdminWindow() ;
//设置对话框
Dimension dlgSize = adminWindow.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
adminWindow.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
adminWindow.setModal(true);
adminWindow.pack();
adminWindow.show();//显示对话框
}
else if (userAuthority.equals("customer"))//假如用户为customer
//弹出用户登录界面
{
CustomerWindow customerWindow =new CustomerWindow() ;
//设置对话框大小
Dimension dlgSize = customerWindow.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
customerWindow.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
customerWindow.setModal(true);
customerWindow.pack();
customerWindow.show();
}
else if (userAuthority.equals("buyer"))
{
BuyerWindow buyerWindow =new BuyerWindow() ;
Dimension dlgSize = buyerWindow.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
buyerWindow.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
buyerWindow.setModal(true);
buyerWindow.pack();
buyerWindow.show();
}
else if (userAuthority.equals("saler")){
SalesWindow salesWindow =new SalesWindow() ;
Dimension dlgSize = salesWindow.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
salesWindow.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
salesWindow.setModal(true);
salesWindow.pack();
salesWindow.show();
}
else if (userAuthority.equals("manager")){
ManagementWindow managementWindow =new ManagementWindow() ;
Dimension dlgSize = managementWindow.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
managementWindow.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
managementWindow.setModal(true);
managementWindow.pack();
managementWindow.show();
}
}
}
3.2 用户注册界面
注册成功!!!!!
3.2.2用户注册源代码
package uml_supermarket;
import java.awt.*;
import javax.swing.*;
import com.borland.jbcl.layout.*;
import java.awt.event.*;
//import com.borland.dx.sql.dataset.*;
import java.sql.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) </p>
* <p>Company: </p>
* @author unascribed
* @version 1.0
*/
public class Registration extends JDialog implements ActionListener {
String driverName="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=supermarket";
String userName="sa"; //默认用户名
String userPwd="123"; //密码
Statement stmt=null;
ResultSet rs =null;
Connection dbConn=null;
private JPanel panel1 = new JPanel();
private BorderLayout borderLayout1 = new BorderLayout();
private JPanel jPanel1 = new JPanel();
private XYLayout xYLayout1 = new XYLayout();
private JLabel jLabel1 = new JLabel();
private JLabel jLabel2 = new JLabel();
private JLabel jLabel3 = new JLabel();
private JLabel jLabel4 = new JLabel();
private JTextField jTextField1 = new JTextField();
private JTextField jTextField2 = new JTextField();
private JTextField jTextField3 = new JTextField();
private JTextField jTextField4 = new JTextField();
private JLabel jLabel5 = new JLabel();
private JLabel jLabel6 = new JLabel();
private JLabel jLabel7 = new JLabel();
private JTextField jTextField5 = new JTextField();
private JPasswordField jTextField6 = new JPasswordField();
private JPasswordField jTextField7 = new JPasswordField();
private JButton jButton1 = new JButton();
private JButton jButton2 = new JButton();
public Registration(Frame frame, String title, boolean modal) {
super(frame, title, modal);
try {
jbInit();
pack();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
public Registration() {
this(null, "", false);
}
private void jbInit() throws Exception {
panel1.setLayout(borderLayout1);
jPanel1.setLayout(xYLayout1);
jLabel1.setText("姓名");
jLabel2.setText("年纪");
jLabel3.setText("性别");
jLabel4.setText("类别");
jLabel5.setText("请输入密码");
jLabel6.setText("请再输一遍");
jLabel7.setText("家庭住址");
jButton1.setText("确定");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
}
});
jButton2.setText("取消");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton2_actionPerformed(e);
}
});
jPanel1.setPreferredSize(new Dimensio
展开阅读全文