河南科技大学
课 程 设 计 说 明 书
课程名称 数据库课程设计
题 目 超市管理系统
院 系 电子信息工程学院
班 级 计科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
技术的提升和管理的升级是超市业的竞争核心。零售领域目前呈多元发展趋势多 种业态:超市、仓储店、便利店、特许加盟店、专卖店、货仓等相互并存。如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市营业者努力追求的目标 提高超市的运作效率。
通过全面的信息采集和处理,辅助提高超市的决策水平;
使用本系统,可以迅速提升超市的管理水平,为降低经营成本,提高效益,超市扩张力, 提供有效的技术保障。
Windows7 SQLServer 2008 C++Builder 6.0
本文详细介绍了数据库开发的过程,包括超市前台开发系统的背景、业务需求分析、功能需求分析、系统开发、系统编译及系统发行过程等步骤。
超市管理系统系统的说就是一个买卖西的系统:
超市管理是一个工作量非常大,而且非常繁杂的工作,包括进货,销售,月结等等;而进货又涉及供应商选择(涉及商品价格,商品质量和商品的受欢迎程度,缺少的商品等等),销售又包括导购,促销,售货,退货等;月结包括营业额,税收,商品统计和评估,营业员综合评估,打印报表。同时又涉及多个对象,营业员,经理,消费者,每层都要把握好。我们会用三个既分开有联系的系统,消费者导购系统,管理人员管理系统(包括经理),营业员销售系统;
本系统中共有消费者、营业员、管理人员、采购员
<1>消费者:在超市中购物,可以通过导购,查看特色商品、打折商品、根据自己的会员等级的特色和打折商品,查看商品的各种属性,如:证书,出厂日期,保质期等等等等,实现各种方法的商品查找,并能对商品进行打分,对营业员进行打分,并保存到后台数据库,以供管理人员和导购员分析查询;向营业员申请成为会员。
<2>营业员:负责每天的销售工作,包括卖货和退货,并能够为消费者申请会员,提交每天的销售额,和销售信息,可以支持多种付款方式;
<3>采购员:查看商品的每天的销售状况,比如那种商品销售的比较快,哪种比较慢,查看对商品的打分、评价,查看商品的保质期,出厂日期;查看供应商的资料,商品价格,选择最优的供应商;提交订单,有总经理审核后由采购员实施采购工作;
<4>管理人员
区块负责人:
负责一块(几个货架的正常工作),商品的上架,查看商品的销售状况
总经理:
负责整个超市的运营状况,增加删除营业员,区块负责人,采购员;查看营业员的业绩,打分,评价,销售状况,查看所有的;查看商品的销售状况,销售记录;审核采购员提交的订单;对对自己的操作产生记录,更新商品打折情况;
图2.1 软件结构图
消费管理
图 2.2消费者功能图
营业员管理
图 2.3 营业员功能图
采购员功能
图 2.4采购员功能图
区块负责人功能
图2.5区块负责人功能图
总体功能
图2.6总体功能图
对于此超市前台销售系统,不同的角色实现不同的功能,
经理能完全对该系统功能模块的操作,而员工只能对销售管理模块进行操作。
保证了系统的安全性
此数据库设计的概念结构采用自顶向下的方法如下:
图 3.1 整体E-R图
系统E-R图说明:
一位供应商可供应不同的商品
一件商品可有不同的供应商供应
一位业务员可负责不同的商品
一件商品可由不同的业务员负责
一件商品能被不同的顾客购买
一位顾客可购买不同的商品
管理人员(包括售货员):
职能表(职能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.1供货商表
表3.2管理人员表
表3.3会员表
表3.4商品表
图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主页面
本页面可以选择登录入口类型,来进行不同的操作代码设计如下
消费者入口代码
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 管理人员管理界面
此界面为点击人员管理后的进入界面。点击管理人员入口,进入管理员管理界面,实现对管理人员的增加、停职、搜索和修改等功能。同时对管理人员进行区块划分。
新增、修改代码
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();
}
使用本系统,能提高超市的运作效率,辅助提高超市的决策水平,管理水平,为降低经营成本, 提高效益,减少差错,节省人力,减少顾客购物时间,增加客流量,提高顾客满意度,增强超市扩张能力, 提供有效的技术保障。
由于我们能力有限,加上时间仓促,本系统难免会出现一些不足之处,例如: 本系统只适合小型超市使用,不能适合中大型超市使用;超市管理系统涉及范围宽,要解决的问题多,功能复杂,实现困难,由于限于时间,只能做出其中的一部分功能;对于以上出现的问题,我们深表歉意,如发现还有其它问题,希望老师批评指正。
通过本次课程设计的学习,让我认识到数据库设计与开发与我们生活联系的紧密性。更让我懂得数据库的重要性。
在本次的课程设计完成过程中,我主要负责该系统的管理人员管理页面的一些制作。
在本次的设计过程中,我们对一个一个模块进行讨论、修改、市场调查。克服一个又一个的困难,让我深深懂得了团队合作的重要性。
感谢赵海霞老师对我们的严格要求,指出我们设计和开发中的不足及模块功能实现的缺陷,敦促着我课后把那些功能和模块完成,这使我能在以后的学习和工作中更加的严格要求自己。
[1] 王珊、萨师煊 数据库系统概论(第四版) 高等教育出版社 2006;
[2] 何玉洁、黄婷儿等译 数据库设计教程 机械工业出版社 2003;
[3] 卢卫忠、刘文亮等译 C++builder程序设计教程 科学出版社 2005
[4]零点工作室 C++builder6.0 基础教程 北京:机械工业出版社 20##-9
[5]郑阿奇 等 SQL 使用教程 (第二版) 北京: 电子工业出版社 2005
数据库课程设计指导教师评分表
超市管理信息系统系统分析报告课程名称管理信息系统项目名称超市管理信息系统报告名称超市管理信息系统分析报告指导老师专业班级商学院12…
XXX超市管理系统分析与设计报告XXX超市管理系统第一部分:系统分析....3一、系统介绍...3(一)系统背景...3(二)功能…
超市管理系统测试分析报告1引言11编写目的这份测试分析报告书时为了测试本系统是否可行当输入商品的信息时测试其信息能不能被完整地保存…
小型超市订货管理系统设计报告1系统开发的背景从超市发展规模上看近几年我国超市经营规模日趋扩大连锁化过程日益提高起销售额和门店数量大…
信息与电气工程学院信息系统二级项目设计说明书20xx20xx学年第一学期课程名称信息系统二级项目设计题目小型超市管理系统专业班级电…
基于Java的超市管理系统姓名学号课程名称JavaCS架构超市管理系统综合实训指导老师CS摘要超市的日常管理工作往往是很复杂很繁琐…
目录1需求分析111开发背景112系统可行性分析2111管理可行性分析2112经济可行性分析2113运行上的可行性2114社会可行…
目录摘要2第1章概述311超市管理系统实现的目标312超市管理系统实现方案3第2章系统设计421系统功能模块设计4第3章数据库设计…
石家庄信息职业学院课程设计(实训)报告系部_信息工程系__专业_____________班级____________学号_____…
好文文档站更多资源下载可行性研究报告1引言超市管理系统它包括订购管理仓库管理销售管理等仓库管理是其中重要的一个环节不容忽视的一个环…