小型超市管理系统
超市管理系统(参考案例)

软件工程课程设计题目:超市前台POS销售系统及后台管理系统专业:班级:学号:姓名:指导老师:目录:一、问题定义 (3)1.系统开发目的 (3)2.背景说明 (3)3.项目确立 (3)4.应用范围 (3)5.名词定义 (3)二、可行性研究 (4)1.管理可行性分析 (4)2.经济可行性分析 (4)3.技术可行性分析 (4)4. 系统初步ER图 (5)5.可行性研究结论 (5)三、需求分析 (5)1. 用户需求分析 (5)2. 系统功能分析 (6)3. 系统结构 (7)4. 流程图 (7)5. 系统ER图 (9)四、设计 (1)1.系统模型: (1)2.模块子系统结构: (3)五、测试 (5)1. 测试过程分析: (5)2 .测试方案: (6)4. 测试结果 (9)5. 评估和建议 (9)六、实现 (10)七、维护 (10)八、总结 (10)一、问题定义1.系统开发目的1.大大提高超市的运作效率;2.通过全面的信息采集和处理,辅助提高超市的决策水平;3.使用本系统,可以迅速提升超市的管理水平,为降低经营成本,提高效益,增强超市扩张力,提供有效的技术保障。
2.背景说明21世纪,超市的竞争也进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。
技术的提升和管理的升级是超市业的竞争核心。
零售领域目前呈多元发展趋势,多种业态:超市、仓储店、便利店、特许加盟店、专卖店、货仓等相互并存。
如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市营业者努力追求的目标。
3.项目确立针对超市的特点,为了帮助超市解决现在面临的问题,提高小型超市的竞争力,我们将开发以下系统:前台POS销售系统、后台管理系统,其中这两个子系统又包含其它一些子功能。
4.应用范围本系统适应于各种超市。
5.名词定义①商品条形码:每种商品具有唯一的条形码,对于某些价格一样的商品,可以使用自定义条形码。
②交易清单:包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号。
超市管理系统完整+源代码

有一个小型超市,出售N(N>=10)种商品,设计并实现一个系统,完成下列功能:1.保存及输出。
超市中的各种商品信息保存在指定文件中,可以把它们输出显示。
2.计算并排序。
计算每类商品的总价值(sum,单精度)及平均价(aver,单精度,输出一位小数),将每类商品按平均价从大到小的顺序排序打印出来。
3.统计。
统计输出库存量低于100的货号及类别。
统计输出有两种以上(含两种)商品库存量低于100的商品类别。
1.2总体结构本程序主要分为八个模块:主模块、信息输出修改模块、新建信息模块、排序模块、计算模块、统计模块1、统计模块2、打印模块。
1)主模块:通过调用各分模块实现功能;2)信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删除商品信息,修改商品信息;3)新建商品信息模块:建立一个新结构体,为链表存信息用,并且将信息保存在指定的文件中;4)排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排序,放到链表里存储;5)计算模块:将所有商品的价格与库存量进行累加求和;6)打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出来;7)统计模块1:统计库存量低于100的货名及类别;8)统计模块2:统计商品库存量有2种以上(含2种)低于100的商品类别。
附录(程序清单)#include "stdio.h" /*输入,输出头文件*/#include "stdlib.h" /*申请空间头文件*/#include "string.h" /*对字符串加工头文件*/#include "conio.h" /*清屏头文件*/FILE *fp;int n=0; /*定义文件指针类型*/int i,j,a[4],m; /*定义整数类型*/float aver[4],sum[4],g[4],h; /*定义浮点类型*/char c[5]="elec"; /*定义字符数组类型*/char d[5]="comm"; /*定义字符数组类型*/char e[5]="food"; /*定义字符数组类型*/char f[5]="offi"; /*定义字符数组类型*/struct good /*定义结构体*/{int num; /*商品编号*/char name[20]; /*商品名称*/char kind[40]; /*商品类型*/float price; /*商品价格*/char unit[10]; /*商品单位*/int quantity; /*商品数量*/struct good *next; /*定义结构体指针类型*/}*head,*p1,*p2;struct good *createlist() /*创建链表函数*/ {struct good *head1,*p1,*p2; /*定义结构体指针类型*/if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/ {printf("can not open the file");exit(0); /*结束程序*/}head1=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/ p1=head1;p2=head1;printf("*********************************************\n");printf("请输入信息:编号,名称,类型,价格,单位,数目\n");printf(" (以输入“-1”表示结束输入)\n");printf("*********************************************\n");printf("____________________\n");scanf("%d %s %s %f %s %d",&p1->num,p1->name,p1->kind,&p1->price,p1-> unit,&p1->quantity); /*输入商品信息*/printf("____________________\n");p1->next=NULL;fprintf(fp,"%d %s %s %f %s %d",p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity);/*将商品信息写入文件*/while(1){p1=(struct good *)malloc(sizeof(struct good)); /*申请新空间*/ printf("*********************************************\n");printf("请输入信息:编号,名称,类型,价格,单位,数目\n");printf(" (以输入“-1”表示结束输入)\n");printf("*********************************************\n");printf("____________________\n");scanf("%d",&p1->num);if(p1->num==-1) /*申请空间结束条件*/{printf("____________________\n\n");fprintf(fp,"%d",-1);fclose(fp);return head1; /*返回头指针*/}scanf("%s %s %f %s %d",p1->name,p1->kind,&p1->price,p1->unit,&p1->quan tity); /*输入商品信息*/printf("________________\n");fprintf(fp,"%d %s %s %f %s %d",p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity);/*将商品信息写入文件*/p1->next=NULL;p2->next=p1;p2=p1;}}struct good *paixu(struct good*head2) /*链表排序函数*/{struct good *p6,*p7,*r,*s; /*定义结构体指针类型*/for(i=0;i<=3;i++) /*赋初值值*/{a[i]=0;sum[i]=0;aver[i]=0;}p6=(struct good *)malloc(sizeof(struct good)); /*申请新空间*/ p6->next=head2;head2=p6;while(p6->next!=NULL) /*判断循环结束条件*/{p7=p6->next;r=p6;while(p7->next!=NULL) /*判断循环结束条件*/{if((p7->next->price)>(r->next->price)) /*判断是否调换*/r=p7;p7=p7->next;}if(p6!=r) /*判断循环结束条件*/{s=r->next; /*指针调换*/r->next=s->next;s->next=p6->next;p6->next=s;}p6=p6->next;}p6=head2;head2=head2->next;free(p6); /*释放第一个无效空间*/return head2;}void jisuan(){p1=head;do{if(strcmp(p1->kind,c)==0) /*判断是否为电器类型*/{sum[0]=sum[0]+(p1->price)*(p1->quantity); /*求电器总价*/a[0]=a[0]+p1->quantity; /*求电器总件数*/}if(strcmp(p1->kind,d)==0) /*判断是否为日用品类型*/{sum[1]=sum[1]+(p1->price)*(p1->quantity); /*求日用品总价*/ a[1]=a[1]+p1->quantity; /*求日用品总件数*/}if(strcmp(p1->kind,e)==0) /*判断是否为办公用品类型*/{sum[2]=sum[2]+(p1->price)*(p1->quantity); /*求办公用品总价*/ a[2]=a[2]+p1->quantity; /*求办公用品总件数*/}if(strcmp(p1->kind,f)==0) /*判断是否为食品类型*/{sum[3]=sum[3]+(p1->price)*(p1->quantity); /*求食品总价*/a[3]=a[3]+p1->quantity; /*求食品总件数*/}p1=p1->next;}while (p1!=NULL); /*遍历链表结束条件*/for(i=0;i<4;i++)aver[i]=sum[i]/a[i]; /*求每类商品平均价*/printf("****************************************************\n");printf("商品类型\t 平均价\t 总库存量\n");printf("****************************************************\n");printf("____________________________________________________\n");printf("电器总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[0],aver[0],a[0]); printf("____________________________________________________\n");printf("日用品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[1],aver[1],a[1]);printf("____________________________________________________\n"); printf("食品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[2],aver[2],a[2]); printf("____________________________________________________\n");printf("办公用品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[3],aver[3],a[3]);printf("____________________________________________________\n"); }void shuchu() /*输出商品信息函数*/{do{struct good *p3,*p4,*p5; /*定义结构体指针类型*/int n=0,p=0,q=0,r=0;printf("所有商品信息:\n");printf("编号,名称,类型,价格,单位,数目\n");printf("**********************************\n");if((fp=fopen("goods message.txt","rb+"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}head=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/p3=head;fscanf(fp,"%d %s %s %f %s %d",&p3->num,p3->name,p3->kind,&p3->price,p3->unit,&p3->quantity);/*从文件中写到链表*/while(1){p4=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/fscanf(fp,"%d ",&p4->num);if(p4->num!=-1) /*判断循环结束条件*/{fscanf(fp,"%s %s %f %s %d",p4->name,p4->kind,&p4->price,p4->unit,&p4->quantity); /*从文件中写到链表*/p4->next=NULL;p3->next=p4;p3=p4;}else{p3->next=NULL;break;}}fclose(fp); /*关闭文件*/p3=head;while(p3!=NULL){printf(" %d %s %s %0.1f %s %d\n\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);printf("__________________________________\n");p3=p3->next;}printf("**********************************\n");printf("//////////////////////////////////\n");while(n!=4){p3=head;printf("**********************************\n");printf("1 添加商品信息\n");printf("2 删除某商品信息\n");printf("3 修改某商品信息\n");printf("4 返回(当你完成了对某一商品的添加、删除或者修改后请按4返回)\n");printf("**********************************\n");scanf("%d",&n);if(n==1) /*添加商品信息*/{printf("请输入商品编号名称类型价格单位数目\n");printf("**********************************\n");p4=(struct good *)malloc(sizeof(struct good)); /*申请空间*/scanf("%d %s %s %f %s %d",&p4->num,p4->name,p4->kind,&p4->price,p4-> unit,&p4->quantity); /*输入商品信息*/p4->next=NULL;while(p3->next!=NULL) /*判断循环结束条件*/{p3=p3->next;}p3->next=p4;p3=head;if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}while(p3!=NULL){fprintf(fp,"%d %s %s %f %s %d",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity)/*将商品信息写入文件*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp); /*关闭文件*/printf("**********************************\n");printf("__________________________________\n");printf("------------请按4返回-------------\n");printf("__________________________________\n");printf("**********************************\n");}if(n==2) /*删除商品*/{printf("**********************************\n");printf("请输入需要删除的商品编号\n");printf("**********************************\n");scanf("%d",&p);printf("**********\n");printf("1 确认删除\n2 取消删除\n");printf("**********\n");scanf("%d",&r);if(r==1){if((head->num)==p){head=head->next;free(p3); /*释放空间*/}else{p4=head;p3=p4->next;while(p3!=NULL) /*判断循环结束条件*/{if((p3->num)==p){p5=p3->next;free(p3); /*释放空间*/p4->next=p5;break;}p3=p3->next;p4=p4->next;}}if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}p3=head;while(p3!=NULL) /*判断循环结束条件*/{fprintf(fp,"%d %s %s %f %s %d",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*将商品信息写入文件*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp); /*关闭文件*/}if(r==2)continue; /*继续循环*/printf("**********************************\n");printf("__________________________________\n");printf("------------请按4返回-------------\n");printf("__________________________________\n");printf("**********************************\n");}if(n==3) /*修改某商品信息*/{printf("请输入需要修改的商品编号\n");scanf("%d",&q);while(p3!=NULL) /*判断循环结束条件*/{if((p3->num)==q) /*判断是否为所需要修改的商品*/{printf("请输入商品单价与库存量(如果单价不变请输入原来的单价)\n");scanf("%f %d",&p3->price,&p3->quantity); /*输入商品价格与库存量*/}p3=p3->next;}if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}p3=head;while(p3!=NULL) /*判断循环结束条件*/{fprintf(fp,"%d %s %s %f %s %d",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/*将商品信息写入文件*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp); /*关闭文件*/printf("**********************************\n");printf("__________________________________\n");printf("------------请按4返回-------------\n");printf("__________________________________\n");printf("**********************************\n");}if(n==4) /*退出*/break;}printf("**********\n");printf("1 继续修改\n---------\n2 返回\n");printf("**********\n");scanf("%d",&p);if(p==1)continue; /*继续循环*/if(p==2)break; /*跳出循环*/}while(n!=2);fclose(fp); /*关闭文件*/}void printf0(struct good *p) /*遍历链表并打印电器类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,c)==0) /*判断商品类型是否为电器类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price, p3->unit,p3->quantity); /*输出电器类商品信息*/ printf("________________________________________________\n");}p3=p3->next;}return;void printf1(struct good *p) /*遍历链表并打印日用品类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,d)==0) /*判断商品类型是否为日用品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price, p3->unit,p3->quantity); /*输出日用品类商品信息*/ printf("________________________________________________\n");}p3=p3->next;}return;}void printf2(struct good *p) /*遍历链表并打印办公用品类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,e)==0) /*判断商品类型是否为办公用品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price, p3->unit,p3->quantity); /*输出办公用品类商品信息*/ printf("________________________________________________\n");}p3=p3->next;}return;}void printf3(struct good *p) /*遍历链表并打印食品类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,f)==0) /*判断商品类型是否为食品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price, p3->unit,p3->quantity); /*输出食品类商品信息*/ printf("________________________________________________\n");}p3=p3->next;}return;}void shunxudayin(){for(i=0;i<4;i++)g[i]=aver[i]; /*将平均价赋给新数组*/for(j=0;j<3;j++) /*将新数组用冒泡排序法排序*/for(i=j+1;i<4;i++){if(g[j]<g[i]){h=g[j];g[j]=g[i];g[i]=h;}}printf("\n****************************\n");printf("商品平均价格排序表(从高到低)\n");printf("****************************\n");printf("________________________________________________\n"); printf("编号\t名称\t类别\t单价\t单位\t数量\n");printf("________________________________________________\n"); for(j=0;j<4;j++)for(i=0;i<4;i++){if (aver[i]==g[j]) /*判断每类商品平均价格的先后顺序*/switch(i){case 0:printf0(head); /*调用遍历链表并打印电器类商品函数*/break;case 1:printf1(head); /*调用遍历链表并打印日用品类商品函数*/break;case 2:printf2(head);/*调用遍历链表并打印办公用品类商品函数*/break;case 3:printf3(head); /*调用遍历链表并打印食品类商品函数*/break;}}}void tongji1(){p1=head;printf("\n************************\n");printf("库存量低于100的货名及类别\n");printf("************************\n");printf("________________________\n");printf("商品名称\t商品类型\n");printf("________________________\n");while(p1!=NULL) /*判断遍历链表循环结束条件*/{if(p1->quantity<100) /*判断库存量是否小于100*/{printf("%s\t%s\n",p1->name,p1->kind); /*输出商品名称及类别*/ printf("________________________\n");}p1=p1->next;}}void tongji2(){printf("\n**********************************************\n");printf("商品库存量有2种以上(含2种)低于100的商品类别:\n");printf("**********************************************\n");printf("________\n");if((a[0]<100)&&(a[0]>=2)) /*判断电器类库存量是否为2种以上(含2种)低于100*/{printf("电器\n");printf("________\n");}if((a[1]<100)&&(a[1]>=2)) /*判断日用品类库存量是否为2种以上(含2种)低于100*/{printf("日用品\n");printf("________\n");}if((a[2]<100)&&(a[2]>=2)) /*判断食品类库存量是否为2种以上(含2种)低于100*/{printf("食品\n");printf("________\n");}if((a[3]<100)&&(a[3]>=2)) /*判断办公用品类库存量是否为2种以上(含2种)低于100*/{printf("办公用品\n");printf("________\n");}}int main(int argc, char* argv[]){struct good *p1,*p2; /*定义结构体指针类型*/while(1){printf("***********************************************\n");printf("1 ----------输出查看或者修改已存信息-----------\n");printf("-----------------------------------------------\n");printf("2 -----重新输入新信息(并且删除原有信息)------\n"); printf("-----------------------------------------------\n");printf("3 统计商品信息(如果您还没有查看过信息请先按1)\n"); printf("-----------------------------------------------\n");printf("4 -------------------退出---------------------\n");printf("***********************************************\n");scanf("%d",&m);if(m==1)shuchu(); /*调用输出信息函数*/if(m==2){system("cls");head=createlist(); /*调用建立链表函数*/}if(m==3){printf("统计结果如下\n");head=paixu(head); /*调用链表排序函数*/ jisuan(); /*调用计算函数*/shunxudayin(); /*调用顺序打印函数*/tongji1(); /*调用统计1函数*/tongji2(); /*调用统计2函数*/}if(m==4){p1=head;while(p1!=NULL) /*判断遍历链表结束条件*/ {p2=p1->next;free(p1); /*释放空间*/p1=p2;}break;}}return 0; /*结束程序*/}。
小型超市商品管理系统数据库实验报告

⼩型超市商品管理系统数据库实验报告数据库系统设计实验报告1.实验⽬的掌握数据库设计的基本⽅法和步骤,熟悉数据库设计各个阶段所要完成的任务和实施⽅法。
通过该实验更加清楚地了解数据库设计的过程。
2.实验原理和步骤利⽤数据库设计的4个阶段:需求分析(分析⽤户要求)、概念设计(信息分析和定义)、逻辑设计(设计实现)和物理设计(物理数据库设计)。
需求分析采⽤⾃顶向下,概念模型设计时采⽤⾃底向上的⽅法,即⾃顶向下地进⾏需求分析,然后再⾃底向上地设计概念结构,和⾃底向上的设计⽅法。
3.实验内容根据周围的实际情况,⾃选⼀个⼩型的数据库应⽤项⽬,并深⼊到应⽤项⽬中调研,进⾏分析和设计。
例如可选择⼈事管理系统、⼯资管理系统、教材管理系统和⼩型超市商品管理系统和图书管理系统等。
要求写出数据库设计报告。
在数据库设计报告中包括以下内容:(1)系统需求分析报告(2)概念模型的设计(E-R图)(3)关系数据模型的设计(4)对关系表的主键、外键及被参照表进⾏说明,对关系中数据的约束条件进⾏说明。
(5)⽤SQL语⾔建⽴该数据库。
(包括数据库、数据表的创建以及数据完整性的实施)(选作)实验指导1. ⼩型超市商品管理系统数据库的设计我们这边就以⼩型超市商品管理系统为例,介绍数据库的设计。
对于⼩型超市商品管理系统,要求:能对⼩型超市商场的商品进货、销售、库存等环节进⾏管理。
主要有:(1)能记录每⼀笔进货,查询商品的进货记录。
(2)能记录每⼀笔售货,查询商品的销售情况和销售记录。
(3)能记录顾客的购买信息。
(4)能查询某个⼚商或供应商的信息。
E-R图如下:转换为关系模式:供应商(供应商编号,供应商名称,供应商地址,电话,联系⼈)商品(商品号,供应商编号,名称,库存,进价,售价)顾客(顾客号,购货时间)售货(商品号,顾客号,销售数量,销售总价)2. 图书馆⽇常事务管理系统数据库的设计(1)图书馆⽇常事务管理系统功能简析图书信息维护:主要完成图书信息登记、修改、删除等操作。
小型超市进销存管理系统需求规格说明书演示教学

编号 003版本 V1.0 需求规格说明书项目名称:小型超市进销存管理系统项目负责人严鑫编写王若松校对刘盈审核严鑫单位:070622班第7小组2009年12月6日目录1引言 (1)1.1编写目的 (1)1.2背景 (1)1.3定义 (1)1.4参考资料 (1)2任务概述 (1)2.1目标 (1)2.2用户的特点 (2)2.3假定和约束 (2)3业务分析 (2)3.1组织机构分析 (2)3.2组织职能分析 (3)3.3确定业务 (3)3.4业务与机构 (4)3.5业务与实体 (4)3.6主要业务流程图 (5)4需求分析 (5)4.1系统功能需求 (5)4.1.1系统目标分析 (5)4.1.2系统需求结构图 (6)4.1.3系统功能描述 (6)4.1.4功能用例图 (7)4.2系统性能需求 (10)4.3输入输出要求 (10)4.4系统界面需求 (10)4.5故障处理要求 (10)5运行环境规定 (11)5.1硬件平台 (11)5.2软件环境 (11)5.3接口 (11)6 风险分析 (11)6.1系统面临的主要风险 (11)6.2风险的处理策略 (11)7遗留问题 (12)1引言1.1编写目的本文档主要是对获取的用户需求,综合考虑组织目标、现状、技术条件、投资能力等因素,从系统目标、结构、功能、性能、风险等方面对小型超市进销存管理进行深入细致地分析,剔除相互矛盾、不一致、有歧义或者不必要的需求,最终确定出合理、正确、可行的系统需求,尽可能地满足用户要求,避免开发人员和用户之间的误解。
本文档将详细、准确地反映最终确定的系统需求内容,简要地反映需求分析的过程以及相关问题;既是对需求分析工作的总结,又将作为后续开发阶段系统分析、设计、实现和测试的工作纲领。
1.2背景A.待开发的软件系统的名称:小型超市进销存管理系统B.项目的任务提出者:XX超市C.项目开发者:哈尔滨工程大学软件工程专业070622班第7小组D.本文档的读者范围包括:a.需求提供方具体责任人b.开发方项目负责人、系统分析设计人员1.3定义A.非营业开支:除采购款、销售款外,超市维持正常运营所需开支B.报损:库存损坏商品上报C.报溢:库存非正常(顾客遗失等原因)增加商品上报1.4参考资料A.《系统设计与分析》哈尔滨工程大学邢薇主编B.《软件设计文档国家标准-需求规格说明书(GB856T——88)》C.《JSP网络开发实例》人民邮电出版社2任务概述2.1目标超市进销存管理系统将覆盖超市日常经营管理的全过程,包括采购、销售、库存、管理决策支持等各个环节。
UML课程设计__小型超市商品信息管理系统

获取商品信息
售货员
销售商品 <<extend>>
<<include>> 更新销售信息
顾客
打印购物清单
<<include>>
计算价格
创建系统用例模型
3.库存管理员用例图
库存管理员能够通过该系统 进行如下活动:
(1)处理盘点。超市库存管理员 每天需要对超市商品信息进 行盘点。
(2)处理报销。超市库存管理员 对超市损坏商品进行报销处 理。
未入库商品
商品入库
入库商品
商品库存管理
合格
商品被销售
不合格
商品报损
创建系统动态模型
6.员工验证登录活动图
在利用系统的活动图来描述在超市信 息管理系统中的参与者如何协同工作 时,我们还可以建立相关参与者的活 动图进行说明。以下我们以员工验证 密码为例进行说明。
我们可以通过以下的方式描述员工验 证登录的活动:
特征将商品类实例化并请求该类商品 信息。 (4)商品类实例化对象加载商品信息,并 提供给管理商品界面。 (5)查询商品信息界面显示该类商品信息。 (6)统计分析员请求查询商品信息界面制 定出该类商品报表。 (7)查询商品信息界面制定该类商品报表。 (8)查询商品信息界面将该类商品报表显 示给统计分析员。
(1)超市信息管理系统能够支持售货员日常售货功能。每一个售货员通过自己的用 户名称和密码登录到售货系统中,为顾客提供服务。在售货员为顾客提供售货服 务时,售货员接收顾客购买商品,根据系统的定价计算出商品的总价,顾客付款 并接受售货员打印的货物清单,系统自动保存顾客购买商品记录。
(2)超市信息管理系统能够为超市的管理者提供管理功能。超市的管理包括库存管 理、订货管理、报表管理和售货人员管理和系统维护等。库存管理员负责超市的 库存管理;订货员负责超市的订货管理;统计分析员负责超市的统计分析管理; 系统管理员负责超市的售货人员管理和系统维护。每种管理者都通过自己的用户 名称和密码登录到各自的管理系统中。
中小型超市管理信息系统规划、分析及设计

名目1绪论随着现代科学技术的迅猛开发,计算机技术差不多渗透到各个领域,成为各行业必不可少的工具。
我国超市形成在20世纪90年代初期,现在差不多成为我国零售业的一种重要形态,为国民经济的开发发扬了重要的作用。
随着超市高速的开发,其经营治理也变得愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售也的开发,如此就迫切地需要引进新的治理技术。
国内市场的一些中小型超市,它们在信息化过程中的步伐要落后于大中型超市,而关于这些企业的资源治理,信息的存储和处理也显得迫切需要,要习惯市场竞争,就需要有高效的处理方式和治理方法,因此加快超市的信息化进程是必可少的超市形态具有种种优点,但在目前状况下,它仍存在零售业企业所共有的落后的一面,如:不能有效地治理每种商品,收款结算速度慢,轻易出现营业过错,不宜进行商品调价,盘点效率低等,而且在超市日常治理中,商品的进、销、存等决策以经验为主,缺乏实时分析功能,治理人员对及时传递资料的要求始终得不到满足。
为此,依靠现代化的计算机信息处理技术来治理超市,能节约大量的人力、物力,改善了职员的工作条件,减轻了劳动强度,同时能够快速反映出商品的进、销、存等状况和各种给予信息分析,使治理人员快速对市场的变化做出相应的决策,加快超市经营治理效率。
2系统2.1系统目标该系统得要紧目标是协助超市治理层高效的治理超市的日常工作,提供一些决策必要的信息。
系统涉及到整个超市的业务,包括商品进场洽谈及采购、库存治理、销售治理、人事治理等。
该系统建成后应该能做到实事检测超市的所有动态,高层治理者通过一个进口,就能对超市的当前经营现状一目了然,并提供某些咨询题的参考解决方案。
2.2系统方法的选择信息系统 (InformationSystemsPlanning)是将组织目标、支持组织目标所需要的信息、提供这些必需信息的信息系统,以及这些信息系统的实施等诸要素集成的信息系统方案,是面向组织中信息系统开发远景的系统开发谋划。
小型超市零售管理系统数据库设计

引言概述:小型超市零售管理系统是为了方便管理者对超市进行全面管理的工具。
其数据库设计是这个系统实现的基础,好的数据库设计能够提高系统的性能、可靠性和安全性。
本文将详细介绍小型超市零售管理系统数据库设计,包括系统的需求、实体关系模型设计、数据库表设计、索引和视图的创建等内容。
正文内容:1. 系统需求1.1 系统功能需求小型超市零售管理系统需要满足的主要功能包括商品管理、库存管理、销售管理等。
在商品管理方面,需要记录商品信息、价格、供应商信息等。
库存管理主要管理库存数量和预警,以确保及时补货。
销售管理则是记录每次的销售详情,包括销售时间、销售员、支付方式等。
1.2 数据要求为了保证系统的高效性和可扩展性,需要对数据进行持久化存储。
数据库应具备高性能、高可靠性、高安全性的特点。
同时,需要支持多用户并发访问和快速查询。
2. 实体关系模型设计2.1 实体识别与关系确定根据系统需求,可以确定的实体包括商品实体、供应商实体、销售员实体、订单实体等。
这些实体之间存在多种关系,如供应商与商品的供应关系、销售员与销售订单的关系等。
2.2 实体关系模型设计在确定实体和关系之后,可以绘制实体关系图,展示实体之间的关系。
通过实体关系图,可以清晰地了解各个实体之间的联系,为数据库表的设计提供基础。
3. 数据库表设计3.1 表结构设计根据实体关系图,可以开始设计数据库表结构。
每个实体对应一个表,其中包含该实体的属性作为列,同时为每个表添加主键和外键约束,以确保数据的完整性。
在设计表结构时,需要考虑属性的数据类型、长度、约束等因素。
3.2 表之间的关系在小型超市零售管理系统中,不同表之间存在着多对一、一对多等关系。
通过外键约束可以实现表之间的关系,确保数据的一致性和完整性。
比如商品表和供应商表之间的关系,通过将供应商的主键作为商品表的外键,实现了供应商与商品的关联。
4. 索引和视图的创建4.1 索引设计为了加快数据库查询效率,可以通过创建索引来优化数据库性能。
小型超市管理系统需求分析

一、开发背景21世纪,小型超市的竞争也进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。
技术的提升和管理的升级是商场的竞争核心。
零售领域目前呈多元发展趋势,多种业态:超市、仓储店、便利店、特许加盟店、专卖店、货仓等相互并存。
如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为商场营业者努力追求的目标。
为了提高物资管理的水平和工作效率,尽可能杜绝商品流通中各环节中可能出现的资金流失不明现象,商品进销存领域迫切需要引入信息系统来加以管理。
而商品进销管理系统是当前应用于超市或者公司管理系统的典型代表。
主要完成的功能有:系统设置、商品供应商信息管理、员工档案管理、商品信息管理、商品入库管理、销售管理、销售数据查询,以及这一系列过程中涉及商品的数据修改与查询统计等多种操作。
该小型超市管理系统能具体化,合理化的管理商场中的商品信息,进出信息,用结构化的思维方法了解商场的基本运作原理和后台程序设计。
该系统的开发意图:大大提高商场的运作效率、通过全面的信息采集和处理,辅助提高商场的决策水平、使用本系统,可以迅速提升超市的管理水平,为降低经营成本,提高效益,增强商场扩张力,提供有效的技术保障。
二、功能需求1、功能划分本系统有以下功能模块:1)系统设置。
2)商品供应商信息管理。
3)员工信息管理。
4)商品信息管理。
5)商品入库管理。
6)销售管理。
7)销售数据查询。
图1 系统功能图2、功能描述下面详细描述一下各个功能模块:2.1系统设置(1) 添加删除用户:只限于管理员操作。
管理员可以向里面添加和删除用户信息,也可进行系统初始化。
管理者图2 添加删除用户(2)退出登入:返回到登录界面,重新登录。
图3 退出登入2.2商品供应商信息管理(1)供应商信息的录入(2)供应商信息的修改(3)供应商信息的删除(4)供应商信息的查询商品供应商信息管理供应商信息录入供应商信息修改供应商信息查询供应商信息删除图4商品供应商信息管理;2.3员工信息管理实现员工档案的添加、逻辑删除、修改、查询的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
小型超市管理系统设计说明书系、部:计算机与信息科学系学生姓名:周海军指导教师:胡荣专业:信息与计算科学班级:信本0801班同组成员:尹成目录第一章引言 (1)1.1编写目的 (1)1.2背景 (1)1.2.1开发目标 (1)1.2.2开发现状 (1)1.2.3 运行环境 (1)第二章需求分析 (2)2.1功能需求 (2)2.2性能需求 (3)2.2.1易用性 (3)2.2.2安全性 (3)第三章数据库设计 (4)3.1数据流图 (4)3.2数据字典 (4)3.3概念设计 (7)3.3.1实体集 (7)3.3.2关系模型 (7)3.3.3 E-R图 (8)3.4数据库实现 (8)第四章总体设计 (11)4.1 模块 (11)4.1.1 模块划分 (11)4.1.2实现功能 (11)4.2系统结构 (12)4.3 出错信息处理 (13)第五章详细设计 (14)5.1系统用例图 (14)5.2子系统用例图 (15)5.3商品销售时序图 (16)第六章软件测试 (17)6.1测试概要 (17)6.1.1子功能分解 (17)6.1.2测试内容 (17)6.2 测试用例 (18)6.2.1功能测试 (18)6.2.2数据库安全测试 (18)第七章使用说明 (19)7.1系统总结 (19)7.2操作说明 (19)参考文献 (21)致谢 (22)附录1 系统实现部分代码 (23)附录2 部分系统界面 (29)牡丹花好空入目,枣花虽小结实成。
第一章引言1.1编写目的本文档作为用户需求说明书,编写的目的是为了定义所要开发的小型超市管理系统开发项目(以下简称项目)的开发目标,包括对功能的规定和性能的要求,指出预期的系统用户、系统的运行环境以及对用户操作的约定,为软件设计和开发提供依据,作为软件功能追溯的基础和软件开发工作量确定的标本。
本文档可以作为本项目开发的软件项目管理者、软件设计和开发人员以及本软件使用人员参考之用。
1.2背景1.2.1开发目标软件名称:小型超市管理系统为方便超市管理员对进货信息、销售信息、库存信息的管理以及方便快捷的查询相关信息,提高超市管理的效率。
方便销售人员对所销售商品信息的记录、商品单价的查询和销售总额计算以及显示顾客购买商品的清单和统计销售总额以及自动显示需要找还顾客的零钱。
1.2.2开发现状每种商品都有各自的条形编码和相应的生产序列号,可以通过条形编码的不同来区别各种商品以及显示其售价以便销售人员售货,从而提高超市营业人员的工作效率。
1.2.3 运行环境界面制作主要用VB实现,后台数据处理采用SQL实现。
第二章需求分析2.1功能需求通过与超市管理员及销售人员的交谈、团队的分析、市场需求调查等方式,获得了小型超市管理系统的功能需求如下:·允许多个用户使用该系统,但为保证数据库的安全,对每个用户登录前都需通过身份认证(通过输入用户名和密码验证),验证通过后方能进入该系统。
当用户输入的用户名和密码累计错误达到三次时,将自动退出登录界面,禁止其进入此系统,访问其数据库。
·一个超市有多种商品,且每种商品的价格不一定相同。
·每种商品由于进货时进价的不同,以致售价的相应改变,出售商品时以最新的售价为准。
·在销售过程中,可以随时改变售价及销售小计,收银时自动显示当前客户所购商品的清单、总计和找零。
·在添加进货信息时,自动更新相应的库存信息。
·在销售商品时,自动保存销售信息并自动更新利润信息。
·可以方便快捷的查询进货信息、库存信息、销售信息、用户信息。
·可以方便的修改进货信息、库存信息、销售信息及用户信息。
·售货时,当输入相应的商品编号回车后,可自动显示相应的商品名、售价和销售时间;当输入销售数量回车后,自动计算并显示销售总额;当输入有误时,给出相应的错误信息。
·当操作成功时有操作成功的提示信息,当操作失败时有操作失败原因的提示信息。
·访问利润表时需要通过独立密码验证用户身份。
·当商品库存量低于10件时,有相应的进货提示信息。
·能实现对销售表销售额的统计和对销售表的清空。
·当商品低于一定存储时,系统自动生成进货表单。
2.2性能需求2.2.1易用性系统设计应具有良好的易用性、操作简便,符合常规Windows操作环境下的用户使用习惯。
同时,尽量减少用户的记忆工作量,如在信息录入时尽可能充分利用数据字典进行选择录入,以提高用户工作效率。
在系统查询功能设计时,应提供多种查询条件的复合查询,让用户可以快速、精确地得到相关信息。
同时,系统设计应具有良好的健壮性,如对各种用户各种错误输入应能及时识别并给出相应提示。
2.2.2安全性系统中所有涉及敏感信息如登录口令、利润查询等均需进行加密处理,服务器端应设置严格安全访问控制策略。
同时,系统应具有完整的日志管理功能,对用户的数据敏感操作应能够完全追踪,可以通过日志反查其操作时间、操作内容、操作人员帐号等相关信息,从而保证系统安全性和操作责任的可追溯性。
本系统提供两种登录身份,管理员身份和销售员身份。
销售员身份登录本系统时,只能进行商品销售和收银操作。
使用管理员身份登录时,除可以进行商品的销售外,还可以浏览、查询、修改、新增进货信息、销售信息、库存信息、用户信息以及通过口令浏览利润信息表。
第三章数据库设计3.1数据流图图3.1 小型超市管理系统数据流图3.2数据字典表3.2.1小型超市管理系统表清单表3.2.3库存信息表表3.2.4销售信息表表3.2.5利润信息表表3.2.6临时信息表表3.2.7用户信息表3.3概念设计3.3.1实体集本数据库E-R图设计中包含5个实体,其中4个实体都是强实体集。
实体的具体属性可见下表。
表3.9 实体信息表3.3.2关系模型根据关系模式转换规则,关系模式如下所示(有实下划线的为主码):·商品信息=(商品编号,商品名,进货日期,进货时间,进价,售价)·库存信息=(商品编号,商品名,库存量,进价,售价)·用户信息=(用户编号,用户名,性别,出生年月,联系方式,密码) ·销售信息=(商品编号,商品名,销售日期,销售时间,销售量,售价,小计)·利润信息=(商品编号,商品名,销售日期,销售时间,销售量,利润) ·临时信息=(商品编号,商品名,销售量,售价,小计)·进货单信息=(商品编号,商品名)3.3.3 E-R图图3.2 小型超市管理系统数据库E-R图3.4数据库实现1.进货信息表CREATE TABLE 进货表(商品编号 CHAR(10),商品名 CHAR(20),进货量 INT(4) NOT NULL,进货日期 CHAR(20),进货时间 CHAR(20),进价FLOAT(8) NOT NULL,售价FLOAT(8) NOT NULL,PRIMARY KEY(商品编号,进货日期,进货时间));2.销售信息表CREATE TABLE 销售表(商品编号 CHAR(10),商品名 CHAR(20),销售量 INT(4) NOT NULL,售价 FLOAT(8) NOT NULL,销售日期 CHAR(20) ,销售时间 CHAR(20) ,PRIMARY KEY(商品编号,销售日期,销售时间));3.用户信息表CREATE TABLE 用户表(用户编号CHAR(10) PRIMARY KEY ,用户名 CHAR(20),性别 CHAR(2),出生年月 CHAR(20),联系方式CHAR(20),密码 CHAR(20));4.库存信息表CREATE TABLE 库存表(商品编号CHAR(10) PRIMARY KEY ,商品名 CHAR(20),库存量 FLOAT(8),进价 FLOAT(8),售价 FLOAT(8));5.临时信息表CREATE TABLE 临时表(商品编号CHAR(10) PRIMARY KEY ,商品名 CHAR(20),销售量 CHAR(2),售价 CHAR(20),小计CHAR(20));6.进货单信息表CREATE TABLE 进货单(商品编号CHAR(10) PRIMARY KEY ,商品名 CHAR(20));7.利润信息表CREATE TABLE 利润表(商品编号CHAR(10),商品名 CHAR(20),销售日期 FLOAT(8),销售时间 FLOAT(8),销售量 FLOAT(8),利润 FLOAT(8),PRIMARY KEY(商品编号,销售日期,销售时间) );第四章总体设计4.1 模块4.1.1 模块划分本系统划分为5个功能模块,分别为销售模块、查询信息模块、修改信息模块、新增信息模块和返回与退出模块。
销售模块:用于实现超市商店的销售,通过验证的超市销售人员和管理人员有此权限。
查询模块:通过验证的管理人员可通过该模块查询进货信息、销售信息、库存信息、用户信息和利润信息。
修改模块:通过验证的管理人员可通过该模块修改进货信息、销售信息、库存信息和用户信息。
新增信息模块:通过验证的管理人员可通过该模块新增进货信息、销售信息、用户信息。
返回和退出模块:用来实现返回上级界面或退出本系统。
4.1.2实现功能销售功能:当销售人员输入所销售商品的编号后,系统将自动显示对应的商品名、零售价和销售日期,并且光标自动弹至销售数量信息输入栏。
信息输入完成后回车,自动显示销售总额,并且光标自动弹至收款信息输入处。
信息录入完毕后回车,自动清空界面信息,方便下次信息的录入,并自动完成相应库存信息的更改,即销售商品库存量的相应减少和销售信息的更新,即自动将销售信息添加到销售表中。
当销售数量栏为空时,系统会自动给出“请输入销售数量”的提示信息,方便用户操作。
收银功能:当前所销售的商品信息全部输入完成后,点击界面上的结账按钮,系统自动显示当前出售的全部商品的信息,并自动计算所售商品的总额。
当收银员输入收款金额后,自动显示需找还给客户的零钱。
信息查询功能:实现了查询指定日期的销售信息和进货信息以及进货信息。
实现了查询指定用户编号的用户信息和查询指定商品编号的库存信息。
信息修改功能:实现了快速的批量修改进货信息、销售信息、库存信息和用户信息。
新增信息功能:实现了方便快捷的增加进货信息和用户信息。
新增进货信息时,系统会自动更新所添加商品的库存信息,如:所进商品的库存量将自动增加相应的进货量以及对所引入的新商品信息自动添加到库存信息表中,以便于销售。
统计功能:实现了对销售表中销售金额的统计和对销售表信息的清空。
返回和退出功能:实现了返回上级页面或退出系统时,自动保存或清除有关的界面信息,以保证数据库信息的安全。