精华内容
下载资源
问答
  • 系统为中小型超市销售管理系统,因此系统需求分析阶段主要采取实地采访、调查学校周边超市,网上查找相关资料,请教老师等多种方式,尤其是仔细思考、分析超市购物发票。这一阶段大概了解了目前超市销售管理的现状...
  • 本次课程设计的题目是超市管理系统, 该超市公司的业务管理规则如下: (1)该超市公司有若干仓库,若干连锁商店,供应若干商品。 (2)每个商店有一个经理和若干收银员,每个收银员只在一个商店工作。 (3)每个...
  • 数据库课程设计报告的题目是大型超市信息管理系统,其主要目的是调研大型超市业务流程,设计一个用于超市工作人员信息管理、商品采购管理、商品销售管理的信息系统超市信息管理系统充分运用计算机管理信息技术...
  • 主要是基于C#做的一个超市管理系统,有收银员登录,收钱、结账、VIP、进货、出货、交易明细等。主要是基于C#做的一个超市管理系统,有收银员登录,收钱、结账、VIP、进货、出货、交易明细等。
  • 超市管理系统是C/S结构,实现了好几个模块:会员管理、收银、员工管理等等。。数据库是SQL Server。本系统是用MFC做的,提供给初学者参考,虽有点简陋,但不影响使用。
  • 超市销售系统——数据库系统设计

    千次阅读 多人点赞 2020-06-24 13:28:03
    【需求描述】: (1)超市业务按部门开展,目前该超市有采购部、销售部、运营部等,每个员工只能在一个...商品编码自行设计编码规则,系统自动生成商品编码。当前库存数量、库存下限数量均要大于等于0。商品营运部每

    【需求描述】:

    (1)超市业务按部门开展,目前该超市有采购部、销售部、运营部等,每个员工只能在一个部门;员工在入职时需要登记员工姓名、性别、出生日期、身份证、联系电话等信息。
    (2)超市销售的商品由超市运营部门决定,运营部门在确定销售的商品后,录入商品的详细信息,包含:商品编码、商品名称、条形码、产地、生产厂家、规格型号、商品进价、商品销售价、当前库存数量、库存下限数量等信息。其中,规格型号直接用文本表示;商品编码自行设计编码规则,系统自动生成商品编码。当前库存数量、库存下限数量均要大于等于0。商品营运部每天结束后需要统计商品的库存情况,若商品的当前库存数量小于等于库存下限时,这些商品不再放入货架进行销售,当补充了货源后再行销售。
    (3)销售部的收银员通过商场POS机完成销售,收银员通过扫描商品完成销售并记录销售流水相关信息,包含销售时间、销售商品、销售商品单价、销售商品数量、销售商品金额、销售总金额、收银员等信息。在收银员完成销售收款后,根据销售的商品数量更新销售商品的库存数量,更新算法为:该商品的当前库存数量 – 销售数量;更新后若该商品的当前库存数量小于等于该商品的库存下限数量,系统自动生成需要采购的商品信息,包含商品编码、当前库存量、生成时间等。
    (4)采购部门的采购员每天统计销售后生成的采购商品信息并进行货源组织,完成商品的采购;当采购商品到货后,采购员根据到货情况完成商品的入库,在入库时需要录入商品的进货数量,更新商品的当前库存数量,更新算法为:该商品的当前库存数量 + 进货数量。

    数据模型设计

    1 根据需求描述,设计该系统的概念数据模型,可以用E-R图,也可以用PowerDesigner工具;(10分)
    在这里插入图片描述
    2 将设计的概念数据模型转换为关系数据库的逻辑数据模型(即转换成关系数据库的关系)。(10分)
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    完整性设计

    在这里插入图片描述
    在这里插入图片描述

    数据定义操作

    1 采用SQL语言完成部门、员工和商品的关系模式定义,并完成相关的完整性定义;(5分)
    CREATE TABLE dept(
    did INT NOT NULL  PRIMARY KEY AUTO_INCREMENT,/*部门id 不空且自增长*/
    dname varchar(10) UNIQUE /*部门名 唯一*/
    );
    CREATE TABLE emp(
    eid INT NOT NULL  PRIMARY KEY AUTO_INCREMENT,/*员工id 不空且自增长*/
    ename varchar(10),
    sex varchar(2),
    birthday DATE,
    sfz varchar(20) UNIQUE,/*身份证 唯一*/
    phone varchar(15), 
    did int,
    FOREIGN KEY(did) REFERENCES dept(did)
    );
    
    )
    CREATE TABLE goods(
    gid int NOT NULL  PRIMARY KEY AUTO_INCREMENT, /*商品id 不空且自增长*/
    gname varchar(10),/*商品名称*/
    txm varchar(10),/*条形码*/
    cd varchar(30),/*产地*/
    sccj varchar(20),/*生产厂家*/
    ggxh varchar(5),/*规格型号*/
    cpjj double,/*商品进价*/
    cpssj double,/*商品销售价*/
    curnum int,/*当前存库数量*/
    xynum int/*存库下限数量*/
    )
    
    插入的时候要求随机生成编码的sql
    insert into goods VALUES(uuid(),””,””...);
    
    /*销售流水*/
    CREATE TABLE xsls(
    gid int, /*商品id*/
    FOREIGN KEY(gid) REFERENCES goods(gid),/*商品外键*/
    xssj DATE,/*销售时间*/
    xsspdj double,/*销售商品单价*/
    xsspsl int,/*销售商品数量*/
    xsspje double,/*销售商品金额*/
    xsspzje double,/*销售商品总金额*/
    xszje double,/*销售总金额*/
    xsyid int,/*销售员编号*/
    FOREIGN KEY(xsyid) REFERENCES emp(eid)/*销售员外键*/
    )
    2 因销售流水数据量很大,现需要根据销售商品查询商品的销售流水,请叙述如何提高按商品查询销售流水的速度,并根据你设计的数据模型,使用SQL语言完成定义;(3分)
    方法一通过商品的编号创建存储过程,下次直接调用存储过程
    方法二给销售流水表建立索引,可以提升查询速度
    方法三关联了太多的表,要实现ssql优化
    
    CREATE PROCEDURE findsslsbygid(IN in_gid int)
    BEGIN
    SELECT * from xsls where gid = in_gid
    END$$
    3 收银员在收银时只关心商品的销售价格,不能让销售员看到商品的进价信息,请叙述如何限制收银员查看数据的范围,并根据你设计的数据模型,试用SQL语句完成定义。(4分)
    定义一个给收银员看的视图(商品编号,商品名称,商品销售价)。
    CREATE VIEW 收银员
    AS
    SELECT gid 商品编号,gname 商品名称, cpssj 商品销售价
    FROM goods
    

    数据操作

    根据设计的数据模型,采用关系代数完成以下要求

    (1)查询个部门的员工信息,包含部门名称、姓名、性别、出生日期;(2分)
    (2)查询姓名为“董庆”的收银员的所有销售明细,包含:姓名、商品名称、销售数量、销售时间,销售金额;(3分)
    (3)查询在‘2020-1-1 00:00:00’到‘2020-5-10 23:59:59’期间各种商品销售的总金额;(3分)
    (4)查询销售过所有商品的收银员的姓名。(4分)
    在这里插入图片描述

    根据设计的数据模型,采用SQL语言完成以下要求

    1)查询个部门的员工信息,包含部门名称、姓名、性别、出生日期;(2分)
    SELECT eid,ename,sex,birthday from emp,dept where emp.did=dept.did
    (2)查询姓名为“董庆”的收银员的所有销售明细,包含:姓名、商品名称、销售数量、销售时间,销售金额;(3分)
    select gname 商品名称,xsspsl 销售数量,xssj 销售时间,xszje 销售总金额 from xsls,goods where xsyid =(select eid from emp where ename='董庆') and xsls.gid=goods.gid
    (3)查询在‘2020-1-1 00:00:00’到‘2020-5-10 23:59:59’期间各种商品销售的总金额;(3分)
    select xszje 销售总金额 from xsls where xssj BETWEEN 2020-1-1 00:00:00 and 2020-5-10 23:59:594)查询销售过所有商品的收银员的姓名;(4分)
    select ename from xsls,emp where xsls.gid 
    in(select gid from goods) and xsls.eid=emp.eid
    (5)为了提高当前数据库的查询速度,在数据备份的基础上需要将离职人员的销售记录删除。现需将离职人员“张丽丽”及她所有的销售记录删除,请使用SQL语句完成删除操作。(3分)
    delete from xsls where xsyid=(select eid from emp where name='张丽丽')
    

    某同学根据需求描述,设计了商品销售关系模式如下:

    商品销售(商品编码,商品名称,条形码,产地,生产厂家,销售时间、销售数量,销售价,收银员)
    对关系“商品销售”,请回答以下问题:
    1 给出该关系模式的函数依赖集;(4分)
    (商品编码,收银员)->(销售时间,销售数量,销售价)
    (商品编码)->(商品名称,条形码,产地,生产厂家)
    2 给出该关系模式的候选码;(2分)
    候选码:商品编码 + 收银员
    3 该关系模式存在哪些问题?(3分)
    关系模式存在部分依赖,如条形码只依赖于商品编码,而不依赖于该关系模式的候选码
    4 判断该关系模式是否达到了3NF,说明理由。若没有达到3NF,请分解使其达到3NF。(4分)
    没有到达第三范式,因为关系模式含有部分依赖属于1NF,如条形码只依赖于商品编码,而不依赖于该关系模式的候选码。
    R1(商品编码,收银员,销售时间,销售数量,销售价)
    R2(商品编码,商品名称,条形码,产地,生产厂家)

    根据自己设计的数据模型完成以下要求

    1 在收银员完成收银操作写入销售明细更新商品库存时,要检查该商品的当前库存数量,若当前库存数量小于或等于该商品的库存下限数量,系统自动生成需要采购的商品信息,包含商品编码、当前库存量、生成时间等。请使用SQL语言实现触发器完成采购信息的自动生成。(8分)
    CREATE TRIGGER sccg 
    AFTER UPDATE
    ON goods FOR EACH ROW
    BEGIN
        SELECT gid,curnum,NOW() from goods where curnum < xynum;
    END
    2 根据你设计的数据模型,请分析收银员在完成一笔销售的收银事务工作时要实现哪些数据更新操作?为了保证数据的一致性,请使用事务的方法写出数据更新的过程(可以采用伪代码)。(6分)
    BEGIN TRANSACTION
    UPDATE SET curnum=curnum-购买数量 
    from goods 
    where gid=购买商品的id
    COMMIT
    还可以给该事务加锁,利用三级分锁协议,XS锁在事务中全程加锁,保证不丢失,不读脏数据,可重复读
    

    3 假设有两位顾客同时购买同一条码的商品(顾客甲买了2件,顾客乙买了3件),收银员在收银结算事务修改该商品的库存数量(记为数据项X)部分的调度如下表所示。
    在这里插入图片描述
    X的值是97,属于最终不一致性
    (2) 引入独占锁指令Xlock()和解锁指令Unlock(),请重写上述调度,要求满足两段锁协议。
    在这里插入图片描述

    展开全文
  • 数据库课程设计 超市零售信息管理系统(Python实现)SQLServer 文章目录数据库课程设计前言(一)设计目的(二)设计内容一、需求分析(一)设计概念...学生根据所学的数据库系统原理与程序设计的知识,能够针对一个

    数据库课程设计

    超市零售信息管理系统(Python实现)SQLServer


    前言

    (一)设计目的

    学生根据所学的数据库系统原理与程序设计的知识,能够针对一个数据库管理信息系统,进行系统的需求分析,系统设计,数据库设计,编码,测试等,完成题目要求的功能,从而达到掌握开发一个小型数据库管理信息系统的目的。

    (二)设计内容

    题目可根据自己熟悉的事物填充和适当变更,例如:校园招聘系统、学生科技成果统计系统等,但不建议图书管理信息系统、学生信息管理系统、酒店管理系统、药品进销存系统,也可以是基于Web的网站或基于移动平台的手机APP、游戏软件等,鼓励创新!要求实现数据的录入、删除、修改、查询等基本功能,提供实体完整性、参照完整性、用户定义完整性等检查,可根据自己对不同事物主要的管理需求进行扩充,例如增加登录、报表等相应功能。

    一、需求分析

    (一)设计概念

    该超市零售管理信息系统旨在为超市的会员管理工作提供一个比较系统的零售管理平台,它帮助超市存储及管理进货、销售、库存以及人员信息,是一套管理工具、极大提高超市管理的效率。很大程度上帮助了超市管理者对超市的掌握与管理。

    (二)功能说明

    1. 进货管理

    根据销售情况及库存情况,自动制定进货计划(亦可手工制定修改),可以避免盲目进货造成商品积压。 按计划单有选择性地进行自动入库登记。 综合查询打印计划进货与入库记录及金额。

    2. 销售管理

    商品正常销售、促销与限量、限期及禁止销售控制。 综合查询各种销售明细记录、各地收银员收银记录以及交结帐情况等。 按多种方式统计生成销售排行榜,灵活察看和打印商品销售日、月、年报表。

    3. 库存管理

    综合查询库存明细记录。 库存状态自动告警提示。如库存过剩、少货、缺货等。软件为您预警,避免库存商品积压损失和缺货。

    4.人员管理

    员工、会员、供货商、厂商等基本信息登记管理。 员工操作权限管理。 客户销售权限管理。

    (三)功能模块图

    在这里插入图片描述

    二、概念结构设计

    在这里插入图片描述

    三、逻辑结构设计

    1.员工(员工编号,员工姓名,员工性别,员工年龄,工龄,电话,身份证号,所属部门,工资);
    2.商品(商品编号,商品名称,商品类别,商品单价,商品成本,供货商);
    3.会员(会员卡卡号,会员姓名,电话,注册日期,累计金额,当前余额);
    4.供货商(供货商编号,供货商名称,供货商电话,供货商地址);
    5.仓库(仓库编号,仓库名称,仓库地址);
    6.退货信息(交易流水号,商品编号,退货数量,退款金额,退货日期);
    7.销售(员工编号,商品编号,销售日期,销售数量);
    8.购买(会员卡卡号,商品编号,购买日期,购买数量);
    9.供货(供货商编号,商品编号,供货日期,供货数量);
    10.库存(仓库编号,商品编号,库存量);
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    四、代码实现

    (一)实现Python 连接 SQL Severe 数据库

    import pymssql  #引入pymssql模块
    
    def conn():
        connect = pymssql.connect(host = "127.0.0.1:1433",database = "Manager",charset="utf8")  
        if connect:
            print("连接成功!")
        return connect
    
    if __name__ == '__main__':
        conn = conn()
    

    假如与数据库连接成功,则以上代码块运行会出现如下结果:
    在这里插入图片描述
    这里简单介绍下pymssal模块:
    pymssql是python用来连接Microsoft SQL Server的一个工具库(package)。
    和数据库登录一样,分为用户验证登录和windows身份认证登陆,而以上代码中,我采用的是后者,因此不需要账号密码,其核心代码为:

    conn = pymssql.connect(host='host',database='db_name',user='user',password='pwd',charset='utf8')
    #host为数据库的IP地址,,通过自己电脑进行查询
    #database为数据库的名称
    #charset表示在此程序中,字符编码采用“utf8编码”模式
    

    (二)创建数据库表

    数据库中表的创建可以直接在SQLServer中手动建表,也可以通过Python程序进行建表,其语法规则和SQL一样,代码如下:

    import pymssql
    
    connect = pymssql.connect(host = "127.0.0.1:1433",database = "Manager",charset="utf8")  # 建立连接
    if connect:
        print("连接成功!")
    
    cursor = connect.cursor()   # 创建一个游标对象,python里的sql语句都要通过cursor来执行
    cursor.execute("create table Staff(Snum  varchar(10) primary key,Sname varchar(20) not null,Ssex varchar(5) check(Ssex in('男','女')),Sage int not null check(Sage>=18),Sstand int not null check(Sstand>=0),Sphone varchar(20) not null,Sid varchar(25) not null,Spart varchar(10) not null,Ssalary money check(Ssalary>=0))")
    cursor.execute("create table Vendor(Vnum varchar(10) primary key,Vname varchar(10) not null,Vphone varchar(20) not null,Vpalce varchar(10) not null)")
    cursor.execute("create table Goods(Gnum varchar(10) primary key,Gname varchar(10) not null,Gtype varchar(10) not null,Gprice money check(Gprice>=0),Gbid money check(Gbid>=0),Gstock int check(Gstock>=0),Galarm int check(Galarm>=0), Gplan int check(Gplan>=0),Vnum varchar(10) not null,foreign key(Vnum) references Vendor(Vnum))")
    cursor.execute("create table Menber(Mnum varchar(10) primary key,Mname varchar(10) not null,Mphone varchar(20) not null,Mdate datetime,Mtotal money check(Mtotal>=0),Mbalance money check(Mbalance>=0),Mcip varchar(25) not null)")
    cursor.execute("create table Ware(Wnum varchar(10) primary key,Wname varchar(10) not null,Wplace varchar(10) not null)")
    cursor.execute("create table Trade(Tnum varchar(10) primary key,Tdate datetime  not null,Snum varchar(10) not null,Gnum varchar(10) not null,Tamount int check(Tamount>=0),Tmoney money check(Tmoney>=0),Mnum varchar(10) not null,foreign key(Snum) references Staff(Snum),foreign key(Gnum) references Goods(Gnum),foreign key(Mnum) references Menber(Mnum))")
    cursor.execute("create table Infor(Tnum varchar(10) not null,Gnum varchar(10) not null,Iamount int check(Iamount>=0),Imoney money check(Imoney>=0),Idate datetime not null,foreign key(Tnum) references Trade(Tnum),foreign key(Gnum) references Goods(Gnum))")
    cursor.execute("create table Entry(Enum varchar(10) primary key,Gnum varchar(10) not null,Eamount int check(Eamount>=0),Emoney money check(Emoney>=0),Vnum varchar(10) not null,Edate datetime not null,Snum varchar(10) not null,foreign key(Snum) references Staff(Snum),foreign key(Gnum) references Goods(Gnum),foreign key(Vnum) references Vendor(Vnum))")
    cursor.execute("create table Exits(Xnum varchar(10) primary key,Gnum varchar(10) not null,Xamount int check(Xamount>=0),Xmoney money check(Xmoney>=0),Xdate datetime not null,Snum varchar(10) not null,foreign key(Snum) references Staff(Snum),foreign key(Gnum) references Goods(Gnum))")
    connect.commit()  #提交
    cursor.close()  # 关闭游标
    connect.close()  # 关闭连接
    

    (三)插入数据

    在Goods表中批量插入数据:

    import pymssql
    
    connect = pymssql.connect(host = "127.0.0.1:1433",database = "Manager",charset="utf8")
    if connect:
        print("连接成功!")
    
    cursor = connect.cursor()  # 创建一个游标对象,python里的sql语句都要通过cursor来执行
    sql = "insert into Goods(Gnum,Gname,Gtype,Gprice,Gbid,Gstock,Galarm,Gplan,Vnum) values ('200001','薯片','零食',8,5,500,100,600,'100002')"
    sql = "insert into Goods(Gnum,Gname,Gtype,Gprice,Gbid,Gstock,Galarm,Gplan,Vnum) values ('200002','可乐','饮料',4,2,1000,200,1500,'100001')"
    sql = "insert into Goods(Gnum,Gname,Gtype,Gprice,Gbid,Gstock,Galarm,Gplan,Vnum) values ('200003','猪肉','肉类',32,20,400,50,500,'100003')"
    cursor.execute(sql)
    connect.commit()  # 提交
    cursor.close()
    connect.close()
    

    在Vendor表中批量插入数据:

    import pymssql
    
    connect = pymssql.connect(host = "127.0.0.1:1433",database = "Manager",charset="utf8")
    if connect:
        print("连接成功!")
    
    cursor = connect.cursor()  # 创建一个游标对象,python里的sql语句都要通过cursor来执行
    sql = "insert into Vendor(Vnum,Vname,Vphone,Vpalce) values ('100001','number1','12698577456','浙江')"
    sql = "insert into Vendor(Vnum,Vname,Vphone,Vpalce) values ('100002','number2','72798567498','湖北')"
    sql = "insert into Vendor(Vnum,Vname,Vphone,Vpalce) values ('100003','number3','69795867463','广州')"
    cursor.execute(sql)
    connect.commit()  # 提交
    cursor.close()
    connect.close()
    

    (四)创建界面按钮,并实现数据库的“增删改查”

    import pymssql
    import tkinter as tk
    import tkinter.messagebox
    
    #数据库添加操作
    def add():
        # 连接数据库
        connect = pymssql.connect(host = "127.0.0.1:1433",database = "Manager",charset="utf8")
        # 创建光标
        cursor = connect.cursor()
        # 编写SQL语句
        sql = "insert into Goods(Gnum,Gname,Gtype,Gprice,Gbid,Gstock,Galarm,Gplan,Vnum) values('%s','%s','%s','%s','%s','%s','%s','%s',%s)" % (v1.get(), v2.get(), v3.get(), v4.get(), v5.get(), v6.get(), v7.get(), v8.get(), v9.get())
        # 执行SQL语句,并且输出完成提示信息,否则回滚
        try:
            cursor.execute(sql)
            connect.commit()
            tkinter.messagebox.showinfo("提示", "数据添加成功")
        except:
            connect.rollback()
        # 关闭数据库连接,防止泄露
        connect.close()
    
    #数据库删除操作
    def delete():
        connect = pymssql.connect(host = "127.0.0.1:1433",database = "Manager",charset="utf8")
        cursor=connect.cursor()
        sql = "delete from Goods where Gnum='%s'" % (v10.get())
        try:
            cursor.execute(sql)
            connect.commit()
            tkinter.messagebox.showinfo("提示","数据删除成功")
        except:
            connect.rollback()
        connect.close()
    
    #数据库更新操作
    def update():
        connect = pymssql.connect(host = "127.0.0.1:1433",database = "Manager",charset="utf8")
        cursor = connect.cursor()
        sql="update Goods set Gstock='%s' where Gnum='%s'"%(v11.get(),v12.get())
        try:
            cursor.execute(sql)
            connect.commit()
            tkinter.messagebox.showinfo("提示","数据更新成功!")
        except:
            connect.rollback()
        connect.close()
    
    #数据库模糊条件查询
    def select():
        connect = pymssql.connect(host = "127.0.0.1:1433",database = "Manager",charset="utf8")
        cursor = connect.cursor()
        sql = "select Vname from Vendor,Goods where Goods.Vnum=Vendor.Vnum and Goods.Gnum like'%s'"%('%'+v13.get()+'%')
        try:
            cursor.execute(sql)
            results = cursor.fetchall()
            for row in results:
                Vname = row[0]
                tkinter.messagebox.showinfo("提示","Vname=%s" % (Vname))
        except:
            return
    
    #添加商品界面
    def Staff_add():
        #构建全集变量,方便上面的函数调用
        global window_function
        global v1,v2,v3,v4,v5,v6,v7,v8,v9
        #生成窗口
        window_function=tk.Tk()
        #窗口标题
        window_function.title("超市零售信息管理系统")
        #窗口大小
        window_function.geometry('400x700')
        #生成标签
        tk.Label(window_function, text="添加新商品", font=("黑体", 20)).grid(row=0,column=1,pady=10)
        tk.Label(window_function, text="请输入商品编号:").grid(row=1, column=0, padx=20, pady=20)
        tk.Label(window_function,text="请输入商品名称:").grid(row = 2,column =0,padx=20,pady=20)
        tk.Label(window_function,text="请输入商品类别:").grid(row = 3,column =0,padx=20,pady=20)
        tk.Label(window_function,text="请输入商品售价:").grid(row = 4,column =0,padx=20,pady=20)
        tk.Label(window_function, text="请输入商品成本:").grid(row=5, column=0, padx=20, pady=20)
        tk.Label(window_function, text="请输入库存量:").grid(row=6, column=0, padx=20, pady=20)
        tk.Label(window_function, text="请输入告警量:").grid(row=7, column=0, padx=20, pady=20)
        tk.Label(window_function, text="请输入计划库存量:").grid(row=8, column=0, padx=20, pady=20)
        tk.Label(window_function, text="请输入供货商编号:").grid(row=9, column=0, padx=20, pady=20)
        #定义变量记录输入信息
        v1 = tk.StringVar()
        v2 = tk.StringVar()
        v3 = tk.StringVar()
        v4 = tk.StringVar()
        v5 = tk.StringVar()
        v6 = tk.StringVar()
        v7 = tk.StringVar()
        v8 = tk.StringVar()
        v9 = tk.StringVar()
        #生成输入框
        entry1 = tk.Entry(window_function,show=None,textvariable=v1).grid(row = 1,column =1)
        entry2 = tk.Entry(window_function,show=None,textvariable=v2).grid(row = 2,column =1)
        entry3 = tk.Entry(window_function,show=None,textvariable=v3).grid(row = 3,column =1)
        entry4 = tk.Entry(window_function, show=None, textvariable=v4).grid(row=4, column=1)
        entry5 = tk.Entry(window_function, show=None, textvariable=v5).grid(row=5, column=1)
        entry6 = tk.Entry(window_function, show=None, textvariable=v6).grid(row=6, column=1)
        entry7 = tk.Entry(window_function, show=None, textvariable=v7).grid(row=7, column=1)
        entry8 = tk.Entry(window_function, show=None, textvariable=v8).grid(row=8, column=1)
        entry9 = tk.Entry(window_function, show=None, textvariable=v9).grid(row=9, column=1)
        #生成按钮
        button = tk.Button(window_function, text="添加", command=add).place(relx=0.3,rely=0.9)
    
        button2 = tk.Button(window_function, text="返回", command=chaneg_main).place(relx=0.5,rely=0.9)
        #显示窗口
        window_function.mainloop()
    
    #删除商品界面
    def Staff_delete():
        global window_function
        global v10
        window_function=tk.Tk()
        window_function.title("超市零售信息管理系统")
        window_function.geometry('500x400')
        tk.Label(window_function, text="删除商品", font=("黑体", 20)).grid(row=0,column=1,pady=20)
        tk.Label(window_function,text="请输入商品编号:").grid(row = 1,column =0,padx=20)
        v10 =tk.StringVar()
        entry1=tk.Entry(window_function,show=None,textvariable=v10).grid(row = 1,column =1,pady=40)
        button = tk.Button(window_function, text="删除", command=delete,anchor = 's').place(relx=0.2,rely=0.5)
        button2 = tk.Button(window_function, text="返回", command=chaneg_main).place(relx=0.4,rely=0.5)
        window_function.mainloop()
    
    #更新商品信息界面
    def Staff_update():
        global window_function
        global v11,v12
        window_function=tk.Tk()
        window_function.title("超市零售信息管理系统")
        window_function.geometry('500x400')
        tk.Label(window_function, text="更新商品信息", font=("黑体", 20)).grid(row=0,column=1,pady=20)
        tk.Label(window_function,text="请输入商品库存:").grid(row = 1,column =0,padx=20,pady=20)
        tk.Label(window_function,text="请输入商品编号:").grid(row = 2,column =0,padx=20,pady=20)
        v11=tk.StringVar()
        v12=tk.StringVar()
        entry1=tk.Entry(window_function,show=None,textvariable=v11).grid(row = 1,column =1)
        entry2=tk.Entry(window_function,show=None,textvariable=v12).grid(row = 2,column =1)
        button = tk.Button(window_function, text="更新", command=update).place(relx=0.3,rely=0.5)
        button2 = tk.Button(window_function, text="返回", command=chaneg_main).place(relx=0.5,rely=0.5)
        window_function.mainloop()
    
    #条件查找商品界面
    def Staff_select():
        global window_function
        global v13
        window_function=tk.Tk()
        window_function.title("超市零售信息管理系统")
        window_function.geometry('500x400')
        tk.Label(window_function, text="查找商品的供货商名称", font=("黑体", 20)).grid(row=0,column=1,pady=20)
        tk.Label(window_function,text="请输入商品编号:").grid(row = 1,column =0,padx=20)
        v13 =tk.StringVar()
        entry1=tk.Entry(window_function,show=None,textvariable=v13).grid(row = 1,column =1,pady=40)
        button = tk.Button(window_function, text="查找", command=select).place(relx=0.3,rely=0.5)
        button2 = tk.Button(window_function, text="返回", command=chaneg_main).place(relx=0.5,rely=0.5)
        window_function.mainloop()
    
    #添加商品界面跳转
    def change_add():
        #销毁画布
        window.destroy()
        #生成新界面
        Staff_add()
    
    #删除商品界面跳转
    def change_delete():
        window.destroy()
        Staff_delete()
    
    #更新商品界面跳转
    def change_update():
        window.destroy()
        Staff_update()
    
    #条件查询商品界面跳转
    def change_select():
        window.destroy()
        Staff_select()
    
    #主界面跳转
    def chaneg_main():
        window_function.destroy()
        mainpage()
    
    #主界面
    def mainpage():
        global window
        window = tk.Tk()
        window.title("超市零售信息管理系统")
        window.geometry('500x400')
        #生成画布,销毁后生成新的画布实现跳转
        page = tk.Frame(window)
        page.pack()
        tk.Label(window, text="欢迎使用超市零售信息管理系统", font=("黑体", 20)).pack(pady=10)
        button1 = tk.Button(window, text="添加商品信息", command=change_add).pack(pady=10)
        button2 = tk.Button(window, text="删除商品信息", command=change_delete).pack(pady=10)
        button3 = tk.Button(window, text="修改商品信息", command=change_update).pack(pady=10)
        button4 = tk.Button(window, text="查找商品供货商名称", command=change_select).pack(pady=10)
        window.mainloop()
    
    #主函数生成主界面
    if __name__ == '__main__':
        mainpage()
    

    五、总结

    对于数据库课程设计其实本身难度并不大,这里作者总结了一下在操作过程中的几个难点:
    1.需求分析。很多同学确定了自己要做一个什么数据库后很兴奋,觉得自己找到属于自己的题目了,但却发现自己很难走出第一步,因为我们没有进行数据库的需求分析,并不了解自己的数据库具体要实现什么样的功能。这里的需求分析可以通过画功能模块图来实现,当然也可以文字叙述,但远不如画图来的直观。
    2.数据库的逻辑结构设计。因为每一个数据中需要建立许多表,大家很容易混乱各个表之间的逻辑关系,因此可以把概念结构设计放在逻辑结构设计之前进行。
    3.数据库与程序设计语言的建立和界面的创建。选择一门合适的高级语言来进行课设是非常重要的,各程序之间没有太大的优劣之分,只能说各有特点,作者在这里选择了Python语言,原因是代码简洁直观,并通过Python的第三方库可以非常方便快速的连接数据库和制作界面。

    PS:如果同学们想要完整的课程设计报告可以私聊笔者免费获取。

    展开全文
  • 通过使用本系统进行会员积分管理工作,使得该业务可操作性、直观性大大加强,具有方便、快捷、可靠等优点,在很大程度上降低了超市的运营成本,提升了超市市场竞争力。 一个好的超市需要更好的会员制度才能大幅度...
  • 数据库《小型超市管理系统

    热门讨论 2011-01-21 13:17:36
    超市管理系统市场上最流行的超市上常用的系统之一,它主要包含以下几个模块:系统权限的设定、原始数据录入、数据的汇总及查询等。从而,实现对进货、销售及员工信息等实现全面、动态、及时的管理。 2.1 功能及...
  • 超市业务信息采集分析系统采用B/S结构,使用JAVA开发语言,以MySQL作为后台数据库。该系统共包含两种角色:员工和管理员。 系统的主要功能模块如下: 1.系统管理 系统登陆、系统退出、修改密码 2.员工信息管理 ...
  • 调研大型超市业务流程,设计一个用于超市工作人员信息管理、商品采购管理、商品销售管理的信息系统。支持会员卡业务。顾客可以从总服务台上查询本超市有无指定的商品、查询自己的积分情况。 1.基本信息管理:包括...
  • 超市管理系统+论文(一)_计算机专业毕业论文范文 小结 和传统管理模式相比较,使用本系统,毫无疑问会大大提高超市的运作效率,辅助提高超市的决策水平,管理水平,为降低经营成本, 提高效益,减少差错,节省人力,...
  • 详细设计主要包括系统数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对系统进行功能测试,并对测试结果进行分析总结。 包括程序毕设程序源代码一份,数据库一份,完美运行。配置环境里面有...
  • 数据库课程设计报告--小型超市管理系统,通过此次数据库的课程设计,真正达到了学与用的结合,增强了对数据库方面应用的理解,对自己今后参与开发数据库系统积累了不少经验,在实验过程中,从建立数据开始,对数据库...
  • 本文档为北大青鸟ACCP软件工程师培训无锡培训中心 SI50B 班学员,第一学期毕业设计项目(《销售管理系统》)的数据库设计说明书,具体描述《销售管理系统》的数据库设计,用于指导该系统数据库存储各方面的内容...
  • 全面的数据库设计文档 从系统分析 业务逻辑 业务流程图 数据流图 ER图 到实施
  • 超市进销存系统 数据库设计报告

    万次阅读 多人点赞 2017-02-25 18:20:53
    超市进销存系统数据库设计报告 注意:本设计报告省略了需求分析部分、实体说明、联系说明、索引说明等,重点是数据库的实现过程以及sql语言的编写以及其他一些我认为的重点展示 另外:本系统前期主要使用了软件...

    超市进销存系统 数据库设计报告

    注意:本设计报告省略了需求分析部分、实体说明、联系说明、索引说明等,重点是数据库的实现过程以及sql语言的编写以及其他一些我认为的重点展示
    另外:本系统前期主要使用了软件PowerDesigner,从需求分析到模型设计、约束条件、视图、业务规则等,都是用的该软件。

    产品简介

    超市进销存系统主要为商品的进货上架、销售收银、仓库存储提供线上管理的功能。

    目标客户:中小型超市

    客户的业务需求:

    1. 改变传统的人工管理,实现日常管理信息化;

    2. 通过对库存和销售信息的快速查询和处理,提高商品的采购的速度和科学性;

    3. 提升超市管理水平,降低经营成本,提高工作效率。

    本系统的总体框架
    这里写图片描述


    数据模型

    BPM模型
    这里写图片描述
    CDM 模型
    这里写图片描述
    PDM模型
    这里写图片描述

    部分存储器、触发器、函数的设计

    本人负责的是关于存货模块的存储器、触发器、函数设计,这里举了几个例子:

    • 存储器设计1、
    /*具有“采购员”职称的员工加薪15%,“理货员”加薪10%,“收银员”加薪5%,“经理”加薪20%*/
    create procedure proc_raise
    as
    declare cur cursor for select workerNum,job from t_user
    declare @increment decimal(2,1)
    declare @num int
    declare @tjob varchar(50)
    open cur
    fetch next from cur into @num,@tjob
    while(@@fetch_status=0)
    begin
    if @tjob='采购员' set @increment=0.15
    else if @tjob='理货员'set @increment=0.1
    else if @tjob='收银员' set @increment=0.05
    else if @tjob='经理' set @increment=0.2
    update t_user
    set salary=salary*(1+@increment)
    where workerNum=@num
    fetch next from cur into @num,@tjob
    end
    close cur
    deallocate cur
    go

    测试结果:
    未执行存储器之前的员工表:
    这里写图片描述

    执行加薪功能的的存储器之后:

    execute proc_raise

    这里写图片描述

    • 存储器设计2、
    /*清空库存信息表:t_inventory钟库存量为0的商品信息*/
    create procedure proc_amount0
    as
    declare cur cursor for select goodsNum,amount from t_inventory
    declare @gnum int
    declare @gamount int
    open cur
    fetch next from cur into @gnum,@gamount
    while(@@fetch_status=0)
    begin
    if @gamount=0
    delete from t_inventory
    where goodsNum=@gnum
    fetch next from cur into @gnum,@gamount
    end
    close cur
    deallocate cur

    测试结果:
    未执行存储器之前的t_inventory:
    这里写图片描述

    执行存储器:

    execute proc_amount0

    这里写图片描述

    • 用户自定义函数设计1、
    /*输入商品编号,在t_goodsOn表上将该商品标注为' 促销-买一送一'*/
    
    create function dbo.func_num_cuxiao(@gnum int)
    returns varchar(50)
    as
    begin
    declare @gname varchar(50);
    declare @gprice int;
    select @gname=goodsName from t_goodsOn where t_goodsOn.goodsNum=@gnum;
    select @gprice=price from t_goodsOn where t_goodsOn.goodsNum=@gnum;
    set @gname=@gname+'促销-买一送一';
    return @gname
    end
    
    declare @t varchar(50)
    execute @t= dbo.func_num_cuxiao "01";
    update t_goodsOn
    set goodsName=@t where goodsNum=01 ;
    select *from t_goodsOn
    

    测试结果:
    这里写图片描述

    • 用户自定义函数设计2、
    /*对于库存量小于10的商品,备注remark里面添加“库存紧张!!!”的字段*/
    create function dbo.func_less(@gnum int)
    returns varchar(50)
    as 
    begin
    declare @mark varchar(50)
    set @mark='库存紧张!!!'+(select remark from t_inventory where goodsNum=@gnum)
    return @mark
    end
    
    create procedure proc_tmp
    as
    declare cur cursor for select goodsNum from t_inventory
    declare @gnum int
    declare @ta int 
    declare @t varchar(50)
    open cur
    fetch next from cur into @gnum
    while(@@fetch_status=0)
    begin
    select @ta=amount from t_inventory where goodsNum=@gnum
    if @ta<10
    begin
    execute @t= dbo.func_less @gnum ;
    update t_inventory
    set remark=@t where goodsNum=@gnum ;
    end
    fetch next from cur into @gnum
    end
    close cur
    deallocate cur
    

    结果测试:
    原来的库存信息表t_inventory:
    这里写图片描述

    execute proc_tmp

    执行之后:
    这里写图片描述

    • 触发器设计1、
    /*触发器:t_goodsBuy商品进价变,t_incentory的同商品的进价也变,售价+(现进价-原进价),t_goodsSale商品售价也变*/
    create trigger tri_alter_cost
    on dbo.t_goodsBuy
    after insert
    as
    begin 
    declare @num int;
    declare cur cursor for select goodsNum from inserted;
    open cur;
    fetch from cur into @num;
    while @@FETCH_STATUS=0
    begin
    update t_inventory
    set cost=(select cost from inserted where goodsNum=@num)
    where goodsNum=@num;
    update t_inventory
    set price=price+(select cost from inserted where goodsNum=@num)-(select cost from t_inventory where goodsNum=@num)
    where goodsNum=@num;
    update t_goodsSale
    set price=price+(select cost from inserted where goodsNum=@num)-(select cost from t_inventory where goodsNum=@num)
    where goodsNum=@num;
    fetch next from cur into @num;
    end
    close cur;
    end
    

    结果测试:
    测试结果:
    原来的库存表t_inventory:
    这里写图片描述
    原来的销售表t_goodsSale:
    这里写图片描述

    /*在采购员进货,增加t_goodsBuy之后:*/
    insert into t_goodsBuy
    values('01','口香糖','03','10','150','盒','绿箭公司','2016/8/23'),
          ('02','方便面','01','10','10','箱','康师傅公司','2016/8/23'),
          ('03','可乐','02','15','12','箱','可口可乐公司','2016/8/23'),
          ('04','饼干','04','11','15','箱','乐事公司','2016/8/23');
    

    t_inventory库存表:
    这里写图片描述
    t_goodsSale销售表:
    这里写图片描述

    执行成功的SQL源码:

    1. 建表、创建索引
    
    /*==============================================================*/
    /* Table: t_buyer                                               */
    /*==============================================================*/
    create table t_buyer (
       workerNum            int                  not null,
       workerName           varchar(50)          not null,
    )
    go
    
    alter table t_buyer
       add constraint PK_T_BUYER primary key nonclustered (workerNum)
    go
    
    /*==============================================================*/
    /* Index: Index_workerNum                                       */
    /*==============================================================*/
    create index Index_workerNum on t_buyer (
    workerNum ASC
    )
    go
    
    /*==============================================================*/
    /* Index: Index_workerName                                      */
    /*==============================================================*/
    create index Index_workerName on t_buyer (
    workerName  ASC
    )
    go
    
    /*==============================================================*/
    /* Table: t_cashier                                             */
    /*==============================================================*/
    create table t_cashier (
       workerNum            int                  not null,
       workerName           varchar(50)          not null,
       workTime             varchar(5)           not null
    )
    go
    
    alter table t_cashier
       add constraint PK_T_CASHIER primary key nonclustered (workerNum)
    go
    
    /*==============================================================*/
    /* Index: Index_workerNum                                       */
    /*==============================================================*/
    create index Index_workerNum on t_cashier (
    workerNum ASC
    )
    go
    
    /*==============================================================*/
    /* Index: Index_workerTime                                      */
    /*==============================================================*/
    create index Index_workerTime on t_cashier (
    workTime ASC
    )
    go
    
    /*==============================================================*/
    /* Table: t_goodsBuy                                            */
    /*==============================================================*/
    drop  table t_goodsBuy 
    create table t_goodsBuy (
       goodsNum             int                  not null,
       goodsName            varchar(50)          not null,
       workerNum            int                  not null,
       cost                 int                  not null,
       amount               int                  not null,
       units                varchar(50)          not null,
       suppler              varchar(50)          not null,
       date                 varchar(50)          not null
    )
    go
    
    alter table t_goodsBuy
       add constraint PK_T_GOODSBUY primary key nonclustered ()
    go
    
    /*==============================================================*/
    /* Index: Index_goodsName                                       */
    /*==============================================================*/
    create index Index_goodsName on t_goodsBuy (
    goodsName ASC
    )
    go
    
    /*==============================================================*/
    /* Index: Index_date                                            */
    /*==============================================================*/
    create index Index_date on t_goodsBuy (
    date ASC
    )
    go
    
    /*==============================================================*/
    /* Index: Index_wokerNum                                        */
    /*==============================================================*/
    create index Index_wokerNum on t_goodsBuy (
    workerNum ASC
    )
    go
    
    
    
    /*==============================================================*/
    /* Table: t_goodsOn                                             */
    /*==============================================================*/
    create table t_goodsOn (
       goodsNum             int                  not null,
       goodsName            varchar(50)          not null,
       cost                 int                  not null,
       prcie                int                  not null,
       amount               int                  not null,
       units                varchar(50)          not null,
       remark               varchar(300)         null,
       workerNum            int                  not null
    )
    go
    
    alter table t_goodsOn
       add constraint PK_T_GOODSON primary key nonclustered (goodsNum, workerNum)
    go
    
    /*==============================================================*/
    /* Index: Index_amount                                          */
    /*==============================================================*/
    create index Index_amount on t_goodsOn (
    amount ASC
    )
    go
    
    /*==============================================================*/
    /* Table: t_goodsOnOut                                          */
    /*==============================================================*/
    create table t_goodsOnOut (
       workerNum            int                  not null,
       goodsNum             int                  not null,
       goodsName            varchar(50)           not null,
       amount               int                  not null
    )
    go
    
    alter table t_goodsOnOut
       add constraint PK_T_GOODSONOUT primary key nonclustered (workerNum, goodsNum, t_g_workerNum)
    go
    
    /*==============================================================*/
    /* Index: Index_workerNum                                       */
    /*==============================================================*/
    create index Index_workerNum on t_goodsOnOut (
    workerNum ASC
    )
    go
    
    /*==============================================================*/
    /* Index: Index_goodsNum                                        */
    /*==============================================================*/
    create index Index_goodsNum on t_goodsOnOut (
    goodsNum ASC
    )
    go
    
    /*==============================================================*/
    /* Table: t_goodsSale                                           */
    /*==============================================================*/
    drop table t_goodsSale
    create table t_goodsSale (
       workerNum            int                  not null,
       goodsNum             int                  not null,
       goodsName            varchar(50)          not null,
       prcie                int                  not null,
       amount               int                  not null,
       units                varchar(50)          not null
    )
    go
    
    alter table t_goodsSale
       add constraint PK_T_GOODSSALE primary key nonclustered (goodsNum)
    go
    
    /*==============================================================*/
    /* Index: Index_workerNum                                       */
    /*==============================================================*/
    create index Index_workerNum on t_goodsSale (
    workerNum ASC
    )
    go
    
    /*==============================================================*/
    /* Index: Index_profit                                          */
    /*==============================================================*/
    --create index Index_profit on t_goodsSale (
    --profit ASC
    --)
    --go
    
    /*==============================================================*/
    /* Index: Index_amount                                          */
    /*==============================================================*/
    create index Index_amount on t_goodsSale (
    amount ASC
    )
    go
    
    /*==============================================================*/
    /* Table: t_goosClass                                           */
    /*==============================================================*/
    drop table t_goodsClass
    create table t_goodsClass (
       classNum             int                  not null,
       className            varchar(50)          not null,
       goodsNum             int                  not null,
        goodsName            varchar(50)          not null,
       workerNum            int                  not null
    
    )
    go
    
    alter table t_goodsClass
       add constraint PK_T_GOOSCLASS primary key nonclustered (goodsNum)
    go
    
    /*==============================================================*/
    /* Index: Index_goodsName                                       */
    /*==============================================================*/
    create index Index_goodsName on t_goodsClass (
    goodsName ASC
    )
    go
    
    /*==============================================================*/
    /* Index: Index_className                                       */
    /*==============================================================*/
    create index Index_className on t_goodsClass (
    className ASC
    )
    go
    
    /*==============================================================*/
    /* Table: t_inventory                                           */
    /*==============================================================*/
    create table t_inventory (
       goodsNum             int                  not null,
       goodsName            varchar(50)          not null,
       className            varchar(10)             not null,
       amount               int                  not null,
       cost                 int                  not null,
       prcie                int                  not null,
       units                varchar(50)          not null,
       remark               varchar(300)         null,
    )
    go
    
    alter table t_inventory
       add constraint PK_T_INVENTORY primary key nonclustered (goodsNum, workerNum)
    go
    
    /*==============================================================*/
    /* Index: Index_className                                     */
    /*==============================================================*/
    create index Index_className on t_inventory (
    className ASC
    )
    go
    
    /*==============================================================*/
    /* Index: Index_amount                                          */
    /*==============================================================*/
    create index Index_amount on t_inventory (
    amount ASC
    )
    go
    
    /*==============================================================*/
    /* Table: t_manager                                             */
    /*==============================================================*/
    create table t_manager (
       workerNum            int                  not null,
       workerName           varchar(50)          not null
    )
    go
    
    alter table t_manager
       add constraint PK_T_MANAGER primary key nonclustered (workerNum)
    go
    
    /*==============================================================*/
    /* Index: Index_workerNum                                       */
    /*==============================================================*/
    create index Index_workerNum on t_manager (
    workerNum ASC
    )
    go
    
    /*==============================================================*/
    /* Index: Index_workerName                                      */
    /*==============================================================*/
    create index Index_workerName on t_manager (
    workerName ASC
    )
    go
    
    /*==============================================================*/
    /* Table: t_tallyClerk                                          */
    /*==============================================================*/
    create table t_tallyClerk (
       workerNum            int                  not null,
       workerName           varchar(50)          not null
    )
    go
    
    alter table t_tallyClerk
       add constraint PK_T_TALLYCLERK primary key nonclustered (workerNum)
    go
    
    /*==============================================================*/
    /* Index: Index_workerNum                                       */
    /*==============================================================*/
    create index Index_workerNum on t_tallyClerk (
    workerNum ASC
    )
    go
    
    /*==============================================================*/
    /* Index: Index_workerName                                      */
    /*==============================================================*/
    create index Index_workerName on t_tallyClerk (
    workerName  ASC
    )
    go
    
    /*==============================================================*/
    /* Table: t_user                                                */
    /*==============================================================*/
    drop table t_user
    create table t_user (
       workerNum            int                  not null,
       workerName           varchar(50)          not null,
       workerSex            varchar(5) check(workerSex in('男','女'))  not null,
       workerAge            int check(workerAge>=18 and workerAge<=60) not null,
       workTime             varchar(5)           not null,
       job                  varchar(50) check(job in('采购员','收银员','理货员','经理')) not null,
       salary               int                  not null
    )
    go
    
    alter table t_user
       add constraint PK_T_USER primary key nonclustered (workerNum)
    go
    
    /*==============================================================*/
    /* Index: Index_workerNum                                       */
    /*==============================================================*/
    create index Index_workerNum on t_user (
    workerNum ASC
    )
    go
    
    /*==============================================================*/
    /* Index: Index_workerName                                      */
    /*==============================================================*/
    create index Index_salary on t_user (
    salary DESC
    )
    go
    
    1. 创建视图

    说明:视图的作用包括能够简化数据的操作、提供数据库的安全性等等,所以因为需要适时查看上架商品数量、库存数量,以及时补足,同时,查看销售量靠前的商品,优化销售方案等原因,设计了以下三个视图。

    /*==============================================================*/
    /* View: View_goodsOnAmount 查询上架商品数量视图                */
    /*==============================================================*/
    create view lihuoyuan.View_goodsOnAmount as
    select
    goodsNum,
    goodsName,
    amount
    from
    t_goodsOn
    with check option
    go
    
    /*==============================================================*/
    /* View: View_goodsSale  查询商品销售数量视图                   */
    /*==============================================================*/
    create view View_goodsSale as
    select
    goodsNum,
    goodsName,
    amount
    from
    t_goodsSale
    go
    
    /*==============================================================*/
    /* View: View_inventoryAmount  查询商品库存量视图               */
    /*==============================================================*/
    create view caigouyuan.View_inventoryAmount as
    select
    goodsNum,
    goodsName,
    amount
    from
    t_inventory
    with check option
    go
    
    
    
    展开全文
  • 包括readmen文件(介绍如何安装数据库及使用本系统),课程设计报告,建立数据库的sql文件以及源代码。用VC++写的,功能很完善,界面友好。由于完全是自己写的,所以资源分多一些。。。
  • 钦 州 学 院 数据库课程设计报告 题目超市管理系统 院 系 专 业 班 级 学 号 姓 名 指 导 老 师 2011 年 1 月 目录 TOC \o "1-3" \h \z \u 1 引言 4 1.1 选题背景 4 1.1.1 现行业务简介 4 1.1.2 系统开发背景 4 ...
  • 一般的资源都不包含具体的功能设计图标及数据库文件,对下载的用户作用不大。这里上次的资料是本人及队友一起研究出来的结果,里面详细分析了整个项目的设计流程和功能设计。附加的数据库文件供大家参考。如果想增加...
  • 土特产网上销售系统设计与开发 一、 系统需求分析 (一) 需求概述 随着计算机技术在各行各业的应用日益广泛深入,网络购物早已盛行。 电子商务在各行各业的发展战略中占有重要地位,已成为各大企业的必经之路。商品...

    《数据库系统》课程设计

    土特产网上销售系统设计与开发

    一、 系统需求分析

    (一) 需求概述
    随着计算机技术在各行各业的应用日益广泛深入,网络购物早已盛行。
    电子商务在各行各业的发展战略中占有重要地位,已成为各大企业的必经之路。商品流通不局限于传统渠道。网络平台已成为企业展示自我、提升形象的舞台。企业通过建立网站,将产品、资源等方面的信息展示在互联网上。计算机和互联网技术本身具有信息透明、信息传播速度快、管理速度快的特点,不仅可以改善原有的商业模式和效率,还可以为企业带来更高的收益。因此,拥有自己的购物网站对于企业来说是非常重要的。 与传统零售业相比,网络购物具有许多无法比拟的优势。首先,以店铺销售或商场销售为代表的零售行业,由于地域限制,局限在小范围内。借助互联网,消费者可以通过网上商城浏览和获取世界各地商家的商品信息;其次,通过网络购物渠道,消费者可以在家购物;第三,同样是商品信息和统计的管理,传统零售行业需要花费大量的人力才能完成,而很多销售网站信息可以轻松实现自动化管理,大大降低企业的管理成本;最后,建立自己的网上购物系统,有利于提升企业和商家的企业形象,提高服务质量,展示企业信息化水平。
    我设计的网购系统的数据库开发和存储,可以存储卖家需要销售的本地商品的所有信息,以及用户的所有信息。方便用户根据自己的喜好浏览自己喜欢的东西。如果他想买土特产,可以去网上买,登录后就可以去购物了。 店内各种土特产都分类详细,很容易找到当地的土特产品。同时,搜索系统可以轻松找到相关的本地产品。同时,买了喜欢的东西后,就可以结账了。通过填写您自己的信息,您可以下订单并完成购物流程。
    现在我们要建立一个本地产品的在线销售系统。我们应该管理卖家的本地产品、用户信息、用户的购买记录等基本信息。确保足够的安全。使网上购物系统得以推广,让更多的卖家和购物者认为网上购物系统非常实惠和方便。这是一个非常有用的购物系统

    功能模块设计:

    表1:功能模块设计图

    面向不同用户实现不同功能:

    1. 面向顾客时,顾客可以浏览全部的商品信息,因为对商品进行了分类,所以顾客选择的商品种类更加细化,在完成购物后可以查看订单信息状态。
    2. 面向管理员时:管理员需要对各类商品,用户和订单信息进维护和修改,但是不能修改管理员自己的信息,在用户,商品信息出现差错时及时改正。
    3. 面向供货商时,供货商应只对商品负责,所以可以对商品增添减少,供应量取决于订单量,所以可以查看订单信息。包括自己的信息也可以查看。

    (二) 业务流分析

    用户界面:
    表2:用户流程图

    在这里插入图片描述

    普通用户:

    1. 浏览商品、按类别查询商品,查看商品的详细信息
    2. 查看购买商品之后的订单信息
    3. 注册成为用户

    管理员界面:
    表3:管理员流程图
    在这里插入图片描述

    管理员:

    1. 查看商品信息,判断是否需要补充商品,如果需要补充则通知供应商增删商品
    2. 查看订单信息,判断订单信息和商品库存是否一一对应,如果有误需要修改订单信息
    3. 可根据供应商供给需求修改供应商信息
    4. 修改用户信息

    供应商界面:
    表4:供应商流程图
    在这里插入图片描述

    供应商:

    1. 查看商品信息,根据商品数量决定是否供应
    2. 查看订单信息,以核对商品数量

    **

    (三) 数据流分析

    **
    表5:数据流图
    在这里插入图片描述

    (四) 数据字典

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    二、 数据库概念结构设计

    (一) 实体分析
    经需求分析,本次课程设计中包含五个实体,他们分别是:用户实体、订单实体、管理员实体、商品实体、商品组实体、供应商实体。

    (二) 属性分析
    用户实体属性:用户编号,姓名,电话,密码,地址
    表6:用户实体属性图
    在这里插入图片描述

    土特产商品实体属性:土特产商品编号,名称,价格,土特产商品组编号
    表7:土特产商品实体属性图
    在这里插入图片描述

    订单实体属性:订单编号,订单日期,价格,用户编号,土特产商品编号
    表8:订单实体属性图
    在这里插入图片描述

    土特产商品组实体属性:土特产商品组编号,土特产商品组名称,管理员编号,供应商编号
    表9:土特产商品组实体属性图
    在这里插入图片描述

    管理员实体属性:管理员编号,管理员姓名,电话,密码,地址
    表9:管理员实体属性图
    在这里插入图片描述

    供应商实体属性:供应商编号,密码,电话,地址,土特产商品组编号,订单编号
    表10:供应商实体属性图
    在这里插入图片描述

    (三) 联系分析
    多个供应商可以供应多种商品组,多个用户也可以购买多种商品,多种商品的集合是一个商品组,但是一种商品对应一个订单,用户购买商品产生唯一订单对应唯一的商品。多个管理员管理所有商品组和所有订单和供应商,所以是多对多的关系。
    (四) 概念模型设计(CDM图)
    表11:CDM图
    在这里插入图片描述

    三、数据库物理结构设计

    (一)概念模型转化为物理模型

    1. 一对一关系的转化
      用户只能查看一项订单,所以用户和订单是一对一关系
      一个商品产生一个订单,所以是一对一关系。
    2. 一对多关系的转化
      一个商品组由多个商品组成,商品组和商品关系是一对多
    3. 多对多关系的转化
      多个管理员管理多种信息
      一个用户可以购买多个商品,一个商品也可以被多个用户购买
      多个供应商供应多种商品组,也可以查看多个订单
      (二)物理逻辑模型设计(PDM图)
      表12:PDM图
      在这里插入图片描述

    四、数据库物理实现

    (一) 表设计
    用户信息表:
    字段名称 数据类型 长度 取值范围 备注
    用户编号 char 10 0001-9999 主键,非空
    姓名 vchar 20 非空
    电话 Char 10
    密码 Char 10 非空
    地址 vchar 20

    土特产商品信息表:
    字段名称 数据类型 长度 取值范围 备注
    土特产商品编号 char 10 0001-9999 主键,非空
    土特产商品组编号 char 10 0001-9999 外键,非空
    名称 Vchar 20 非空
    价格 Float 非空

    订单信息表:
    字段名称 数据类型 长度 取值范围 备注
    订单编号 Char 10 0001-9999 主键,非空
    订单日期 Data 非空
    价格 Float 非空
    用户编号 char 10 0001-9999 外键,非空
    土特产商品编号 char 10 0001-9999 外键,非空

    土特产商品组信息表
    字段名称 数据类型 长度 取值范围 备注
    土特产商品组编号 char 10 0001-9999 主键,非空
    土特产商品组名称 vchar 20 非空
    供应商编号 char 10 0001-9999 外键,非空
    管理员编号 char 10 0001-9999 外键,非空

    管理员信息表:
    字段名称 数据类型 长度 取值范围 备注
    管理员编号 char 10 0001-9999 主键,非空
    管理员姓名 vchar 20 非空
    密码 Char 10 非空
    电话 Char 10 非空
    地址 vchar 20

    供应商信息表:
    字段名称 数据类型 长度 取值范围 备注
    供应商编号 char 10 0001-9999 主键,非空
    密码 Char 10 非空
    电话 Char 10 非空
    地址 vchar 20
    土特产商品组编号 char 10 0001-9999 外键,非空
    订单编号 Char 10 0001-9999 外键,非空

    (二) 创建表和完整性约束代码设计
    1. 创建用户信息表及完整性约束:
    create table 用户信息表(
    用户编号 char(10) not null primary key,
    姓名 varchar(20) not null,
    密码 char(20) not null,
    电话 char(10) null,
    地址 varchar(20) null,
    )
    2. 创建土特产商品信息表及完整性约束:
    create table 土特产商品信息表(
    土特产商品编号 char(10) not null primary key,
    土特产商品组编号 char(10) not null,
    名称 varchar(20) not null,
    价格 float not null,
    )
    alter table 土特产商品信息表
    add constraint FK_土特产商品信息表_REFRENCE_土特产商品组信息表 foreign key (土特产商品组编号)
    references 土特产商品组信息表(土特产商品组编号)

    3. 创建订单信息表及完整性约束:
    create table 订单信息表(
    订单编号 char (10) not null primary key,
    用户编号 char (10) not null,
    土特产商品编号 char (10) not null,
    订单日期 datetime not null,
    价格 float not null,
    )
    alter table 订单信息表
    add constraint FK_订单信息表_REFRENCE_用户信息表 foreign key (用户编号)
    references 用户信息表(用户编号)

    alter table 订单信息表
    add constraint FK_订单信息表_REFRENCE_土特产商品信息表 foreign key (土特产商品编号)
    references 土特产商品信息表(土特产商品编号)

    4. 创建土特产商品组信息表及完整性约束:
    create table 土特产商品组信息表(
    土特产商品组编号 char(10) not null primary key,
    土特产商品组名称 varchar(20) not null,
    管理员编号 char(10) not null,
    供应商编号 char(10) not null
    )
    alter table 土特产商品组信息表
    add constraint FK_土特产商品组信息表_REFRENCE_管理员信息表 foreign key (管理员编号)
    references 管理员信息表(管理员编号)

    alter table 土特产商品组信息表
    add constraint FK_土特产商品组信息表_REFRENCE_供应商信息表 foreign key (供应商编号)
    references 供应商信息表(供应商编号)
    5. 创建管理员信息表及完整性约束:
    create table 管理员信息表(
    管理员编号 char(10) not null primary key,
    管理员姓名 varchar(20) not null,
    密码 char(20) not null,
    电话 char(10) not null,
    地址 varchar(20) null,
    )
    6. 创建供应商信息表及完整性约束:
    create table 供应商信息表(
    供应商编号 char(10) not null primary key,
    密码 char(20) not null,
    电话 char(10) not null,
    地址 varchar(20) null,
    土特产商品组编号 char (10) not null,
    订单编号 char (10) not null
    )
    alter table 供应商信息表
    add constraint FK_供应商信息表_REFRENCE_土特产商品组信息表 foreign key (土特产商品组编号)
    references 土特产商品组信息表(土特产商品组编号)

    alter table 供应商信息表
    add constraint FK_供应商信息表_REFRENCE_订单信息表 foreign key (订单编号)
    references 订单信息表(订单编号)
    (三) 创建索引、视图和触发器
    1. 索引
    对管理员编号和供应商编号和用户编号创建唯一非聚集索引
    CREATE UNIQUE INDEX NUM on 管理员信息表(管理员编号);

    CREATE UNIQUE INDEX NUM2 on 供应商信息表(供应商编号);

    CREATE UNIQUE INDEX NUM3 on 用户信息表(用户编号);

    2. 视图
    1.对土特产商品创建视图
    CREATE VIEW 土特产商品_view
    AS SELECT *
    FROM 土特产商品信息表

    1. 对土特产商品组创建视图
      CREATE VIEW 土特产商品组_view
      AS SELECT *
      FROM 土特产商品组信息表

    2. 对订单信息创建视图
      CREATE VIEW 订单_view
      AS SELECT *
      FROM 订单信息表

    3. 触发器
    1.在新用户注册成功后,显示欢迎光临
    CREATE TRIGGER trigger_Emp
    ON 用户信息表
    AFTER INSERT
    AS
    PRINT’欢迎光临’

    2.管理员不可删除管理员成员
    CREATE TRIGGER DELETE_ID
    ON 管理员信息表
    instead of DELETE
    AS
    begin
    print’禁止删除’
    ROLLBACK TRANSACTION
    Endd

    3.在成功增加商品组后显示供应成功
    CREATE TRIGGER trigger_Emp1
    ON 土特产商品组信息表
    AFTER INSERT
    AS
    PRINT’供货成功’

    五、数据库功能调试

    (一) 用户模块

    1. 用户注册

    在这里插入图片描述

    1. 查询土特产商品
      在这里插入图片描述

    2. 查看订单信息
      在这里插入图片描述

    (二) 供应商模块

    1. 供应商品

    在这里插入图片描述

    1. 退还商品
      在这里插入图片描述

    2. 查看订单
      在这里插入图片描述

    (三) 管理员模块

    1. 修改用户信息
      在这里插入图片描述

    2. 修改商品信息
      在这里插入图片描述

    3. 修改供应商信息

    在这里插入图片描述

    1. 修改订单信息
      在这里插入图片描述

    2. 修改商品组信息
      在这里插入图片描述

    六、设计总结
    在本次课程设计中,遇到了许多的困难,在技术方面有非常多的困难。比如在powerdesigner的使用上,由于大部分仍是英文,需要学习的东西非常多。在设计cdm时,表与表之间的关系一点要搞清楚,所以在一开始的时候,一点要最全局有个清楚的构思,我在写到后面时,不停的推翻前面的方案,导致图需要修改的很多,这就导致花费了许多的时间。
    在用pdm转成数据库时,连接不上数据库,在网上找了许多的方法,仍是不行,可能是缺失某个程序,但是可以转换成sql语句,但是cmd在转换成pdm时会把关系转换成表,原本我以后可以直接使用pdm转换的sql代码,但是会多出许多表,并且没有外键,只有索引,并且索引非常多,是因为太多的表造成的,所以最后我自己创建表设立主外键。
    在插入数据时,因为如果没有主键内容,插入外键信息会报错,只能将外键删除再重新插入,
    在功能实现上仍有不足,所有的主键信息都无法修改,也不能置空,所以在修改别的信息时如果牵扯到主键的修改就无法修改。
    总体说来,在这次一个学期的课程设计中,我学到了很多在课堂内学不到的知识。整个开发的过程对我来说是一次能力真正提高的过程;是将以前所学知识充分利用的过程;是一次将理论应用于实践的过程。我觉得这次课程设计是一次很有收获的实践.

    展开全文
  • 医药销售管理系统 数据库课程设计

    热门讨论 2009-07-05 18:26:53
    开发工作量:本系统开发经过一周左右的时间,进行了建立数据库的必要性和可行性的分析,需求分析,数据库的概念设计、逻辑设计、物理设计数据库的实现、运行、维护以及相应的前台的主要功能模块的开发。...
  • 3 系统的需求分析与设计 7 3.1可行性分析 7 3.2需求分析 7 3.2.1系统总体概述 8 3.2.2功能性需求 8 3.2.3非功能性需求 9 3.2.4流程图设计 9 3.2.5系统ER图设计 10 3.3 数据库设计 11 3.3.1数据库设计的原则 11 3.3.3...
  • 目录 1 绪论 4 1.1 项目开发背景 4 1.2 项目开发意义 4 ...3 系统的需求分析与设计 8 3.1可行性分析 8 3.2需求分析 9 3.2.1系统总体概述 9 3.2.2功能性需求 10 3.2.3非功能性需求 11 3.2.4流程图设计 11 3.2.5系统
  • 系统是根据人们在日常生活中的实际需求而开发的,完全能够实现管理者对超市的智能化管理,通过本系统可以达到以下目标: 一、  系统最大限度地实现了易安装性、易维护性和易操作性。 二、  系统运行稳定,安全...
  • 接上基于python的超市系统V3.0--数据库实现(1)--数据表构建,数据库表建立好了后,就可以在python中进行数据库连接,从而进行相关的增删改查等操作。 建立 dataConnect.py文件,将连接数据库连接操作放在这里,...
  • 目录 1 绪论 4 1.1 课题研究的意义和现状 4 1.2 系统实现的内容和目标 4 1.3 开发工具的选择及相关技术介绍 4 1.3.1相关技术介绍 4 1.3.2系统环境开发工具 5 2 系统的需求总体分析 6 ...4系统详细设计与实
  • 经过市面上彩票系统的分析,用Spring Boot框架进行系统搭建,设计一个基于Java语言,Web技术的B/S结构彩票投注模拟系统,使用MySQL作为后台系统数据库并用Mybatis对其管理,vue.js框架对其布局。 系统建成后,将可以...
  • 主要为大家详细介绍了python实现超市管理系统,增加后台管理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 程 设 计 报 告 课程名称 数据库课程设计 设计题目 超市信息管理系统 专 业 班 级 学 号 姓 名 完成日期 2013/01/ 课 程 设 计 任 务 书 设计题目 超市信息管理系统 设计内容与要求 设计内容 调研大型超市业务流程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,820
精华内容 4,728
关键字:

数据库超市的业务系统设计