超市管理系统报告

河南科技大学

课 程 设 计 说 明 书

      

课程名称      数据库课程设计    

题    目      超市管理系统        

院    系       电子信息工程学院       

班    级        计科102              

学生姓名         何萍                

指导教师       赵海霞  王志强  刘中华 

日    期       20##-06-11            

课程设计任务书

目录

第一章:绪论... 2

1.1 开发背景... 2

1.2 开发环境及开发工具的选择... 2

1.3本文主要内容... 2

第二章:需求分析... 2

2.1总体需求分析... 2

2.2各个模块需求分析... 2

2.2 总体设计... 3

2.2.1:绘制系统的软件结构图;... 3

2.2.2设计完成的功能流程图:... 4

2.3安全设计:... 5

第三章: 数据库设计... 6

3.1概念结构设计... 6

3.2逻辑结构设计... 7

3.3物理结构设计... 8

第四章:详细设计... 10

4.1.超市前台销售系统  主界面及其代码:... 10

4.2 登录选择页面... 13

4.3 管理人员页面... 14

第五章 总结... 18

5.1结论... 18

5.2学习体会... 19

5.3致谢... 19

5.4参考文献... 19

第一章:绪论

1.1 开发背景

技术的提升和管理的升级是超市业的竞争核心。零售领域目前呈多元发展趋势多   种业态:超市、仓储店、便利店、特许加盟店、专卖店、货仓等相互并存。如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市营业者努力追求的目标 提高超市的运作效率。

通过全面的信息采集和处理,辅助提高超市的决策水平;

使用本系统,可以迅速提升超市的管理水平,为降低经营成本,提高效益,超市扩张力, 提供有效的技术保障。

1.2 开发环境及开发工具的选择

 Windows7                SQLServer 2008          C++Builder 6.0

1.3本文主要内容

    本文详细介绍了数据库开发的过程,包括超市前台开发系统的背景、业务需求分析、功能需求分析、系统开发、系统编译及系统发行过程等步骤。

第二章:需求分析

2.1总体需求分析

超市管理系统系统的说就是一个买卖西的系统:

超市管理是一个工作量非常大,而且非常繁杂的工作,包括进货,销售,月结等等;而进货又涉及供应商选择(涉及商品价格,商品质量和商品的受欢迎程度,缺少的商品等等),销售又包括导购,促销,售货,退货等;月结包括营业额,税收,商品统计和评估,营业员综合评估,打印报表。同时又涉及多个对象,营业员,经理,消费者,每层都要把握好。我们会用三个既分开有联系的系统,消费者导购系统,管理人员管理系统(包括经理),营业员销售系统;

2.2各个模块需求分析

本系统中共有消费者、营业员、管理人员、采购员

  <1>消费者:在超市中购物,可以通过导购,查看特色商品、打折商品、根据自己的会员等级的特色和打折商品,查看商品的各种属性,如:证书,出厂日期,保质期等等等等,实现各种方法的商品查找,并能对商品进行打分,对营业员进行打分,并保存到后台数据库,以供管理人员和导购员分析查询;向营业员申请成为会员。

  <2>营业员:负责每天的销售工作,包括卖货和退货,并能够为消费者申请会员,提交每天的销售额,和销售信息,可以支持多种付款方式;

  <3>采购员:查看商品的每天的销售状况,比如那种商品销售的比较快,哪种比较慢,查看对商品的打分、评价,查看商品的保质期,出厂日期;查看供应商的资料,商品价格,选择最优的供应商;提交订单,有总经理审核后由采购员实施采购工作;

  <4>管理人员

区块负责人:
   负责一块(几个货架的正常工作),商品的上架,查看商品的销售状况

总经理:

   负责整个超市的运营状况,增加删除营业员,区块负责人,采购员;查看营业员的业绩,打分,评价,销售状况,查看所有的;查看商品的销售状况,销售记录;审核采购员提交的订单;对对自己的操作产生记录,更新商品打折情况;

2.2 总体设计

2.2.1:绘制系统的软件结构图;

图2.1 软件结构图

2.2.2设计完成的功能流程图:

消费管理

图 2.2消费者功能图

营业员管理

图 2.3 营业员功能图

采购员功能

图 2.4采购员功能图

区块负责人功能

图2.5区块负责人功能图

总体功能

图2.6总体功能图

2.3安全设计:

对于此超市前台销售系统,不同的角色实现不同的功能,

经理能完全对该系统功能模块的操作,而员工只能对销售管理模块进行操作。

保证了系统的安全性

第三章: 数据库设计

3.1概念结构设计

此数据库设计的概念结构采用自顶向下的方法如下:

图 3.1 整体E-R图

系统E-R图说明:

一位供应商可供应不同的商品

一件商品可有不同的供应商供应

一位业务员可负责不同的商品

一件商品可由不同的业务员负责

一件商品能被不同的顾客购买

一位顾客可购买不同的商品

3.2逻辑结构设计

管理人员(包括售货员):

职能表(职能ID,名字,note)

Functions(functionID(int),name(varchar(50)),note(varchar(MAX)));

权限职能表(职能ID,权限ID)

FunctionPower(functionID,powerID)

权限表(权限ID,权限名,描述);
Power(powerID(int),pname(varchar(20)),note(varchar(MAX))) ;

管理人员表(管理人员ID,姓名,电话,性别,地址,销售业绩(销售额),用户评分,描述,状态,密码,权限ID);
Admin(adminID(int),password(varchar(20)),name(varchar(20)),telephone(varchar(12)),sex(varchar(6)),addre(varchar(50)),achievement(money),grade(int),note(varchar(MAX)),stat(bit),powerID(int));

销售日志ID,商品ID,数量,价格,优惠价,规格);

SalesLog(ID(int),goodID(int),number(int),price(float),discountprice(float),standards(varchar(50)));

售货员日志(ID,时间,收取,找零,会员ID,打折,营业员ID,售出退货,备注,销售额)

SaleOfAdmin(ID(int),time(datetime),getin(money),getout(money),memberID(int),discount(float),adminID(int),salesorreturn(bit),note(varchar(100)),get(money))

订单(ID,提交者ID,提交时间,阅读时间,阅读属性(读么读bit),批准否,批注,采购员ID,通过与否);

Orders(orderID(int),writerID(int),readtime(ddatetime),writetime(datetime),readed(bit),approve(bit),comment(varchar(MAX)),readID(int),getornot(bit));

供货(订单ID,供应商ID,商品ID,规格,数量,价格)

Supply(orderID(int),supplierID(int),goodID(int),standards(varchar(50)),number(init),price(money))

公告(公告ID,发布者ID,成功与否,内容,时间)

Anounce(ID(int),writeID(int),can(bit),contents(varchar(MAX)),time(datetime))

消费者:

会员(会员ID,密码,会员类型ID,会员名,性别,积分,联系电话,办理时间,介绍人ID);

Member(memberID(int),password(varchar(20)),typeID(int),name(varchar(20)),sex(varchar(20)),integral(int),telephone(varchar(50)),begintime(date),adminID(int));

会员类型(类型ID,会员类型名,时间段,打折,价格)

MemberType(typeID(int),name(varchar(10)),time(int),discount(float),price(money))

为售货员打分(ID,售货员ID,分值,评价,时间);

GradeForAdmin(ID(int),adminID(int),grade(int),note(varchar(MAX)),time(datetime));

为商品打分(ID,商品ID,分值,评价,时间);

GradeForGoods(ID(int),goodID(int),grade(int),note(varchar(MAX)),time(datetime));

商品:

商品(商品ID,类型ID,名字,颜色,产地,品牌,欢迎度,价格,描述,打折生产厂商);

Goods(goodID(int),type(int),name(varchar(50)),color(varchar(10)),area(varchar(50)),brand(varchar(50)),likegrade(int),price(money),note(varchar(MAX)),discountfloat),producer(varchar(50)));

商品类型(type,名字,note)

GoodType(type(int),name(varchar(50)),note(varchar(MAX)))

仓库(仓库ID,名字,描述);

Storage(storageID(int),name(varchar(20)),note(varchar(MAX)));

仓库—商品(仓库ID,商品ID,规格,数量,出厂日期,保质期,);

StorageGoods(storageID(int),goodID(int),standards(varchar(50)));

供货商(供货商ID,地址,描述,姓名,电话);

Supplier(supplierID(int),adder(varchar(20)),note(varchar(MAX)),name(varchar(20)),telephone(varchar(20)));

供货商主营商品(商品ID,供应商ID,规格,价格);

SupplierGoods(goodID(int),supplierID(int),standards(varchar(50)),price(money));

货架(货架ID,货架名(或位置),货架描述,管理员ID);

Shelfs(shelfID(int),name(varchar(20)),note(varchar(MAX)),adminID(int));

货架商品表(货架ID,商品ID,出厂日期,保质期,规格,数量);

GoodShelf(shelfID(int),goodID(int),borntime(date),ensuretime(date),standards(varchar(50)),number(int));

仓库供应货架商品(商品ID,货架ID,仓库ID,时间,数量,规格)

GoodsFromStorageToShelf(goodID(int),shelfID(int),storageID(int),time(datetime),number(int),standards(varchar(50)))

3.3物理结构设计

进一步将逻辑结构转化为物理结构,并进行必要的物理结构的设计

表3.1供货商表

表3.2管理人员表

表3.3会员表

表3.4商品表

                            

第四章:详细设计

4.1.超市前台销售系统  主界面及其代码:

图4.1登陆页面

本页面是个登陆页面,本页面可以实现登陆到系统内部的功能。

代码如下

if(Edit1->Text==""&&Edit2->Text=="")
        {
            Label3->Caption="用户名和密码不能为空";
        }
        else if(Edit1->Text=="")
        {
            Label3->Caption="用户名不能为空";
        }
        else if(Edit2->Text=="")
        {
            Label3->Caption="密码不能为空";
        }
        else
        {

    //数据连接
    TADOQuery *select1=new TADOQuery(this);
    //数据过滤
    select1->Connection=ADOConnection1;

    if(RadioButton1->Checked==true)
    {
        select1->SQL->Add("select password,adminID from Admins,Power where Admins.powerID=Power.powerID and Power.name='营业员' and adminID="+Edit1->Text);
        select1->Open();
        if(select1->Eof)
        {
            Label3->Caption="不存在此用户名";
            FormActivate(Sender);
        }
        else
        {
            if(Edit2->Text==select1->FieldByName("password")->AsString)
            {
                AdminID=select1->FieldByName("adminID")->AsString.ToInt();
                if(NameSale->Visible==false)
                    NameSale->Visible=true;
                else
                    NameSale->Show();
                Assistant->Visible=false;
            }
            else
            {
                Label3->Caption="密码错误";
                FormActivate(Sender);
            }

        }
    }
    else
    {
        select1->SQL->Add("select password,adminID from Admins,Power where Admins.powerID=Power.powerID and adminID="+Edit1->Text);
        select1->Open();
        if(select1->Eof)
        {
            Label3->Caption="不存在此用户名";
            FormActivate(Sender);
        }
        else
        {
            if(Edit2->Text==select1->FieldByName("password")->AsString)
            {
                Admin->adminID=select1->FieldByName("adminID")->AsString.ToInt();
                if(Admin->Visible==false)
                    Admin->Visible=true;
                else
                    Admin->Show();
                Assistant->Visible=false;
            }
            else
            {
                Label3->Caption="密码错误";
                FormActivate(Sender);
            }
        }
    }

 4.2 登录选择页面

图4.2主页面

本页面可以选择登录入口类型,来进行不同的操作代码设计如下

消费者入口代码

if(Member->Visible==false)

        Member->Visible=true;

else

        Member->Show();

        Index->Visible=false;

营业员入口代码

sale=1;
    if(Assistant->Visible==false)
    Assistant->Visible=true;
else
    Assistant->Show();

Index->Visible=false

管理员入口代码

sale=0;

Index->Visible=false;

if(Assistant->Visible==false)

     Assistant->Visible=true;

else

     Assistant->Show();

4.3 管理人员页面

图4.3 管理人员管理界面

此界面为点击人员管理后的进入界面。点击管理人员入口,进入管理员管理界面,实现对管理人员的增加、停职、搜索和修改等功能。同时对管理人员进行区块划分。

新增、修改代码

if(ComboBox1->Text=="")
    {
        ShowMessage("请选择身份");
        return;
    }
    if(Edit4->Text=="")
    {
        ShowMessage("请输入电话");
        return;
    }
    if(Edit5->Text=="")
    {
        ShowMessage("请输入地址");
        return;
    }
    if(Edit2->Text=="")
    {
       ShowMessage("请输入姓名");
       return;
    }
    int powerID=-1;
    AnsiString  sex;
    AnsiString zaizhi;
    if(RadioButton1->Checked==true)
    {
        sex="男";
    }
    else
    {
        sex="女";
    }
    if(CheckBox1->Checked==true)
    {
        zaizhi="True";
    }
    else
    {
        zaizhi="False";
    }
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("select powerID from Power where name='"+ComboBox1->Text+"'");
    ADOQuery1->Open();
    if(!ADOQuery1->Eof)
    {
        powerID=ADOQuery1->Fields->Fields[0]->AsInteger;
    }

    if(MemageAdmin->xiugai==0)
    {
        ADOQuery1->SQL->Add("insert into Admins(adminID,name,telephone,sex,addre,achievement,grade,note,stat,powerID,password) values("+Edit1->Text+",'"+Edit2->Text+"','"+Edit4->Text+"','"+sex+"','"+Edit5->Text+"',0,0,'"+Memo1->Text+"','"+zaizhi+"',"+IntToStr(powerID)+",'123456')");

        ADOQuery1->ExecSQL();
        ShowMessage("提交成功");
    }
    else
    {
        ADOQuery1->SQL->Add("update Admins set name='"+Edit2->Text+"' where adminID="+Edit1->Text);
        ADOQuery1->SQL->Add("update Admins set telephone='"+Edit4->Text+"' where adminID="+Edit1->Text);
        ADOQuery1->SQL->Add("update Admins set addre='"+Edit5->Text+"' where adminID="+Edit1->Text);
        ADOQuery1->SQL->Add("update Admins set sex='"+sex+"' where adminID="+Edit1->Text);
        ADOQuery1->SQL->Add("update Admins set note='"+Memo1->Text+"' where adminID="+Edit1->Text);
        ADOQuery1->SQL->Add("update Admins set stat='"+zaizhi+"' where adminID="+Edit1->Text);
        ADOQuery1->SQL->Add("update Admins set powerID="+IntToStr(powerID)+" where adminID="+Edit1->Text);
        ADOQuery1->ExecSQL();
        ShowMessage("修改成功");
    }

搜索代码

 int i=1;
    StringGrid1->RowCount=2;
    StringGrid1->Cells[0][1]="";
    StringGrid1->Cells[1][1]="";
    StringGrid1->Cells[2][1]="";
    StringGrid1->Cells[3][1]="";
    StringGrid1->Cells[4][1]="";
    StringGrid1->Cells[5][1]="";
    StringGrid1->Cells[6][1]="";
    StringGrid1->Cells[7][1]="";

    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("select adminID 编号,Admins.name 姓名,Power.name 职位,telephone 电话,sex 性别,stat 状态,addre 地址,achievement 销售额,password 密码 from Admins,Power where Power.powerID=Admins.powerID");
    ADOQuery1->Open();

    while(!ADOQuery1->Eof)
    {
        if(ComboBox3->Text!="")
        {
            if(ComboBox3->Text != ADOQuery1->FieldByName("编号")->AsString)
            {
                ADOQuery1->Next();
                continue;
            }
        }
        if(ComboBox4->Text!="")
        {
            if(ComboBox4->Text!=ADOQuery1->FieldByName("姓名")->AsString)
            {
                ADOQuery1->Next();
                continue;
            }
        }
        if(ComboBox5->Text!="")
        {
            if(ComboBox5->Text!=ADOQuery1->FieldByName("职位")->AsString)
            {
                ADOQuery1->Next();
                continue;
            }
        }
        if(CheckBox2->Checked==true)
        {
            if(ADOQuery1->FieldByName("状态")->AsString!="True")
            {
                ADOQuery1->Next();
                continue;
            }
        }
        else
        {
            if(ADOQuery1->FieldByName("状态")->AsString != "False")
            {
                ADOQuery1->Next();
                continue;
            }
        }
        try
        {
        if(Edit6->Text!="")
        {
            Edit6->Text.ToDouble();
            if(ADOQuery1->FieldByName("销售额")->AsString.ToDouble()< Edit6->Text.ToDouble())
            {
                 ADOQuery1->Next();
                 continue;
            }
        }
        if(Edit7->Text!="")
        {
            Edit7->Text.ToDouble();
            if(ADOQuery1->FieldByName("销售额")->AsString.ToDouble() > Edit7->Text.ToDouble())
            {
                ADOQuery1->Next();
                continue;
            }
        }
        }
        catch(EConvertError &e)
        {
            ShowMessage("请输入数字");
            return;
        }
        if(i>=StringGrid1->RowCount)
            StringGrid1->RowCount++;
        StringGrid1->Cells[0][i]=ADOQuery1->FieldByName("编号")->AsString;
        StringGrid1->Cells[1][i]=ADOQuery1->FieldByName("姓名")->AsString;
        StringGrid1->Cells[2][i]=ADOQuery1->FieldByName("职位")->AsString;
        StringGrid1->Cells[3][i]=ADOQuery1->FieldByName("电话")->AsString;
        StringGrid1->Cells[4][i]=ADOQuery1->FieldByName("性别")->AsString;
        StringGrid1->Cells[5][i]=ADOQuery1->FieldByName("地址")->AsString;
        StringGrid1->Cells[6][i]=ADOQuery1->FieldByName("销售额")->AsString;
        StringGrid1->Cells[7][i]=ADOQuery1->FieldByName("密码")->AsString;
        i++;
        ADOQuery1->Next();
    }

第五章 总结

5.1结论

使用本系统,能提高超市的运作效率,辅助提高超市的决策水平,管理水平,为降低经营成本, 提高效益,减少差错,节省人力,减少顾客购物时间,增加客流量,提高顾客满意度,增强超市扩张能力, 提供有效的技术保障。

     由于我们能力有限,加上时间仓促,本系统难免会出现一些不足之处,例如: 本系统只适合小型超市使用,不能适合中大型超市使用;超市管理系统涉及范围宽,要解决的问题多,功能复杂,实现困难,由于限于时间,只能做出其中的一部分功能;对于以上出现的问题,我们深表歉意,如发现还有其它问题,希望老师批评指正。

5.2学习体会

通过本次课程设计的学习,让我认识到数据库设计与开发与我们生活联系的紧密性。更让我懂得数据库的重要性。

在本次的课程设计完成过程中,我主要负责该系统的管理人员管理页面的一些制作。

在本次的设计过程中,我们对一个一个模块进行讨论、修改、市场调查。克服一个又一个的困难,让我深深懂得了团队合作的重要性。

5.3致谢

感谢赵海霞老师对我们的严格要求,指出我们设计和开发中的不足及模块功能实现的缺陷,敦促着我课后把那些功能和模块完成,这使我能在以后的学习和工作中更加的严格要求自己。

5.4参考文献

[1] 王珊、萨师煊 数据库系统概论(第四版) 高等教育出版社 2006;

[2] 何玉洁、黄婷儿等译 数据库设计教程 机械工业出版社 2003;

[3] 卢卫忠、刘文亮等译 C++builder程序设计教程 科学出版社 2005

[4]零点工作室 C++builder6.0 基础教程  北京:机械工业出版社 20##-9

[5]郑阿奇 等 SQL 使用教程 (第二版) 北京: 电子工业出版社  2005

数据库课程设计指导教师评分表

相关推荐