数据结构超市商品库存信息管理系统正文终稿.docx
- 文档编号:3836450
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:61
- 大小:357.14KB
数据结构超市商品库存信息管理系统正文终稿.docx
《数据结构超市商品库存信息管理系统正文终稿.docx》由会员分享,可在线阅读,更多相关《数据结构超市商品库存信息管理系统正文终稿.docx(61页珍藏版)》请在冰豆网上搜索。
数据结构超市商品库存信息管理系统正文终稿
东北大学信息科学与工程学院
数据结构课程设计报告
题目超市商品库存信息管理系统
课题组长宋振
课题组成员常玉颖于红爽
专业名称计算机科学与技术
班级计1307
指导教师杨雷
2015年1月
课程设计任务书
题目:
超市商品库存信息管理系统
问题描述:
对一个中小型超市的库存商品信息管理作一个简单的模拟。
设计要求:
设计超市库存商品信息维护管理的模拟程序。
(1)采用顺序表或结构体链表存储结构。
(2)实现超市商品的创建、分类、出库、入库、修改等管理功能。
(3)实现库存商品的各种查询和统计功能。
(4)考虑采用优化的查询和排序算法。
(5)其它完善性功能。
指导教师签字:
年 月 日
1课题概述4
1.1课题任务4
1.2课题原理4
1.3相关知识4
2需求分析5
2.1课题调研5
2.2用户需求分析5
3方案设计5
3.1总体功能设计5
3.2数据结构设计10
3.3函数原型设计11
3.4主算法设计12
3.5用户界面设计14
4方案实现15
4.1开发环境与工具15
4.2程序设计关键技术16
4.3个人设计实现(按组员分工)
4.3.1宋振设计实现17
4.3.2常玉颖设计实现17
4.3.3于红爽设计实现17
5测试与调试23
5.1个人测试(按组员分工)23
5.1.1宋振测试23
5.1.2常玉颖测试23
5.1.3于红爽测试23
5.2组装与系统测试33
5.3系统运行36
6课题总结39
6.1课题评价39
6.2团队协作40
6.3团队协作41
6.4个人设计小结(按组员分工)42
6.4.1宋振设计小结42
6.4.2常玉颖设计小结42
6.4.3于红爽设计小结42
7附录A课题任务分工50
A-1课题程序设计分工50
A-2课题报告分工51
附录B课题设计文档(光盘)52
B-1课程设计报告(电子版)52
B-2源程序代码(*.H,*.CPP)52
B-3工程与可执行文件)52
B-4屏幕演示录像文件(可选)52
附录C用户操作手册(可选)53
C.1运行环境说明53
C.2操作说明54
1课题概述
1.1课题任务
超市商品库存信息管理系统
【问题描述】
对一个中小型超市的库存商品信息管理作一个简单的模拟。
【设计要求】
设计超市库存商品信息维护管理的模拟程序。
(1)采用顺序表或结构体链表存储结构。
(2)实现超市商品的创建、分类、出库、入库、修改等管理功能。
(3)实现库存商品的各种查询和统计功能。
(4)考虑采用优化的查询和排序算法。
(5)其它完善性功能。
1.2课题原理
本程序采用邻接表的结构,将用户信息存在邻接表的顺序表中,将入库出库的商品信息存储在链表中。
程序运行前,将文件中的信息读入一个三维数组中,然后把三维数组读入邻接表中。
程序运行结束后,将邻接表的信息存储到三维数组中,再将三维数组的信息转存到文件中,实现了信息的长久存储。
总而言之,本实验的入库出库查询等功能,均是对邻接表的操作,存储是借助了一个三维数组存入到文件中。
1.3相关知识
数据结构:
邻接表、邻接表的遍历,排序、查找、文件、顺序表。
2需求分析
2.1课题调研
本实验开始之前,询问了几家中小型超市,了解了他们商品库存运营的模式。
每一件商品都经历了入库、在库、出库三个过程。
入库需要的商品信息比较多,包括商品名称,入库时间,入库价格,入库数量,计量单位,经手人等相关信息。
而出库,在需要出售价格,出售数量,出手日期,经手人即可。
2.2用户需求分析
现代中小型超市基本都要走向实现商品信息智能化管理的道路,而商品库存管理系统能够有效的帮助他们记录每天的进账,出账,库存和交易记录。
此系统有效地解决了传统记账的繁琐,账本数据易丢失,账本信息不安全等问题,是未来包括超市在内的商店运营必备的产品。
3方案设计
3.1总体功能设计
该程序主要分为以下几大功能,包括入库,出库,以及对库存的操作。
对库存的操作又包括分类,查询等功能。
而查询又包括按商品名称查询,按商品交易记录查询等子功能。
而这些均建立在对邻接表的操作基础上实现的。
3.2数据结构设计
程序的数据结构包括邻接表、顺序表。
顺序表用来存储从客户端输入的商品入库出库信息,然后读入邻接表中,邻接表的顺序表存储用户信息,链表存储商品信息。
structcommodity//商品信息的结构体
{
charname[20];
charbrand[20];
floatpurprice;//商品进价
floatselprice;//售价
intcount;//数量
charpurtime[20];//进货时间
charseltime[20];//出货时间
charunit[20];//计量单位
charbrokerage[20];//经手人
charabstract[20];//摘要
structcommodity*next;
intlin_len;//链表有多少节点
intsign;//做相同累加运算时的标记位
}Lnode,*Linklist,list[20][5][20];
structuser{//用户信息的结构体
characcount[20];//账户
charcode[20];//密码
charname[20];
charquestion[40];
charanswer[20];//提示问题的答案
intrec_len;//验证密码是否正确
structcommodityrec[5];//个人信息中增加的买卖记录,max1代表一个人最多可以存多少条记录
intlist_len;
}u[max1];
3.3函数原型设计
voidbackgroundset();//背景颜色设置函数
voidoutsert_com(structuseru[],intq);
voidinsert_com(structuseru[],intq);
intjm(structuseru[]);//加密解密函数
intgetcode(structuseru[]);//找回密码函数
intregist(structuseru[]);//注册函数
voidsave(structuseru[]);//存入文件函数
voidload();//读出函数
voidsave2();
intlookup_accounts(structuseru[],characc[]);//匹配账号函数
structusercheck_code(structuseru[],characc[],charc[]);//匹配密码函数
intfind_acc(characcou[]);//查找账户是第几个用户
voidprint_message(structuser*p);//显示用户信息
voidout_print(structuseru[],intq,introw);
structcommodity*InitLnode(structcommodity*p);
voidremain(structcommoditylist[20][5][20],intq,introw);
voidsearch(structuseru[],intq);
voidcom_remain(structuseru[],intq);
voidload2();
3.4主算法设计
voidinsert_com(structuseru[],intq)//商品入库
{
inti;
structcommodity*a;
printf("请输入您要添加的种类\n1.食品\n2.家电\n3.运动器材\n4.衣服\n请输入1-4:
");
intx2;
scanf("%d",&x2);
a=&u[q].rec[x2];
for(i=0;i { a=a->next; } a=InitLnode(a); printf("商品名称: "); scanf("%s",&a->name); printf("\n"); printf("商品品牌: "); scanf("%s",&a->brand); printf("\n"); printf("商品进价: "); scanf("%f",&a->purprice); printf("\n"); printf("商品售价: "); scanf("%f",&a->selprice); printf("\n"); printf("商品数量: "); scanf("%d",&a->count); printf("\n"); printf("商品进货时间: "); scanf("%s",&a->purtime); printf("\n"); printf("商品经手人: "); scanf("%s",&a->brokerage); printf("\n"); printf("商品摘要: "); scanf("%s",&a->abstract); printf("\n"); printf("计量单位: "); scanf("%s",&a->unit); list[q][x2][0].lin_len++;//正确已验证,但是关闭程序再重启便没有,则说明save2或者load2有问题 jm(u); save2(); jm(u); } /**********************************************************/ voidoutsert_com(structuseru[],intq) {//商品出库 inti; structcommodity*a; printf("请输入您要添加的种类\n1.食品\n2.家电\n3.运动器材\n4.衣服\n请输入1-4: "); intx2; scanf("%d",&x2); a=&u[q].rec[x2]; for(i=0;i { a=a->next; } a=InitLnode(a); printf("商品名称: "); scanf("%s",&a->name); printf("\n"); printf("商品数量: "); scanf("%d",&a->count); for(i=1;i<(list[q][x2][0].lin_len+1);i++) { if(strcmp(a->name,list[q][x2][i].name)==0) { strcpy(a->purtime,list[q][x2][i].purtime); strcpy(a->seltime,list[q][x2][i].seltime); strcpy(a->unit,list[q][x2][i].unit); strcpy(a->abstract,list[q][x2][i].abstract); a->purprice=list[q][x2][i].purprice; break; } } list[q][x2][0].lin_len++;//正确已验证,但是关闭程序再重启便没有,则说明save2或者load2有问题 jm(u); save2(); jm(u); } /***********************************************************/ voidremain(structcommoditylist[20][5][20],intq,introw) {//商品库存信息 inti,j,k,m; for(i=0;i<20;i++) { list[q][row][i].sign=0; } structcommoditya[20]; for(i=0;i<20;i++) { a[i].count=0; } for(i=0;i<20;i++) { strcpy(a[i].name,"0"); } for(k=1;k<19;k++) { once=0; for(m=k+1;m<20;m++) { if(list[q][row][k].sign==0) { strcpy(a[k].name,list[q][row][k].name); if(once==0) { a[k].count=list[q][row][k].count; once++; } if(strcmp(list[q][row][k].name,list[q][row][m].name)==0) { a[k].count=a[k].count+list[q][row][m].count; list[q][row][m].sign++; } } } } if(list[q][row][k].sign==0) { strcpy(a[k].name,list[q][row][k].name); } for(i=0;i<20;i++) { printf("%s: ",a[i].name); printf("剩余库存: %d",a[i].count); printf("\n"); } } /*************************************************************/ voidsearch(structuseru[],intq) {//按商品名称输出交易记录 intxo; inti,j; chartime[20],name[20]; printf(".按商品名称查询"); printf("请输入某类产品: \n"); printf("请输入您要查询的种类\n1.食品\n2.家电\n3.运动器材\n4.衣服\n请输入1-4: "); scanf("%d",&xo); switch(xo) { case1: printf("请输入您要查询的商品名称: "); scanf("%s",&name); for(j=1;j<(list[q][xo][0].lin_len+1);j++) { if(strcmp(list[q][xo][j].name,name)==0) { printf("%s: \n",list[q][xo][j].name); printf("数量: %d\n",list[q][xo][j].count); } }break; case2: printf("请输入您要查询的商品名称: "); scanf("%s",&name); for(j=1;j<(list[q][xo][0].lin_len+1);j++) { if(strcmp(list[q][xo][j].name,name)==0) { printf("%s: \n",list[q][xo][j].name); printf("数量: %d\n",list[q][xo][j].count); } }break; case3: printf("请输入您要查询的商品名称: "); scanf("%s",&name); for(j=1;j<(list[q][xo][0].lin_len+1);j++) { if(strcmp(list[q][xo][j].name,name)==0) { printf("%s: \n",list[q][xo][j].name); printf("数量: %d\n",list[q][xo][j].count); } }break; case4: printf("请输入您要查询的商品名称: "); scanf("%s",&name); for(j=1;j<(list[q][xo][0].lin_len+1);j++) { if(strcmp(list[q][xo][j].name,name)==0) { printf("%s: \n",list[q][xo][j].name); printf("数量: %d\n",list[q][xo][j].count); } }break; } } /**********************************************************/ voidcom_remain(structuseru[],intq)//查询某类商品的库存记录 { intx1,i,j; charname[20]; floatcount; structcommoditya; structcommodity*p; a.count=0; printf("输入您要查询的商品种类: "); printf("请输入您要查询的种类\n1.食品\n2.家电\n3.运动器材\n4.衣服\n请输入1-4: "); scanf("%d",&x1); printf("请输入商品名称: "); scanf("%s",&name); for(i=1;i<(list[q][x1][0].lin_len+1);i++) { if(strcmp(list[q][x1][i].name,name)==0) { strcpy(a.name,name); a.count=a.count+list[q][x1][i].count; } } printf("%s: ",a.name); printf("库存: %d",a.count); } 3.5用户界面设计 本实验采用dos界面。 通过输出等函数使界面尽量做的美观。 每一层都有返回上一层和返回主界面的功能。 首先第一个页面是登陆注册找回密码界面,登陆界面进入后到达程序的主界面,也就是主要功能的界面,此界面包括入库,出库,商品库存查询,商品信息查询等功能。 \\第一个界面 \\程序主界面 4方案实现 4.1开发环境与工具 开发环境: Consoleapplication控制平台 开发工具: codeblocks 4.2程序设计关键技术 1.采用邻接表、顺序表的结构存储信息,并将信息从邻接表存储到顺序表然后转存到文件中,程序运行时,将文件中信息读取到顺序表中,进而构造邻接表用来存储信息,最终实现对邻接表的操作。 2.加密功能采用抑或的方式,使得程序安全性提高 3.对邻接表的遍历,输出,查找。 4.3个人设计实现(按组员分工) 4.3.1宋振程序设计实现 /*********结构体的设计**************************/ structcommodity { charname[20]; charbrand[20]; floatpurprice;//商品进价 floatselprice;//售价 intcount;//数量 charpurtime[20];//进货时间 charseltime[20];//出货时间 charunit[20];//计量单位 charbrokerage[20];//经手人 charabstract[20];//摘要 structcommodity*next; intlin_len;//链表有多少节点 intsign;//做相同累加运算时的标记位 }Lnode,*Linklist,list[20][5][20]; structuser{ characcount[20];//账户 charcode[20];//密码 charname[20]; charquestion[40]; charanswer[20];//提示问题的答案 intrec_len;//验证密码是否正确 structcommodityrec[5];//个人信息中增加的买卖记录,max1代表一个人最多可以存多少条记录 intlist_len; }u[max1];//max1代表最多可以存多少个人的信息。 voidbackgroundset();//背景颜色设置函数 /************匹配账号是否正确*************************************/ intlookup_accounts(structuseru[],characc[]) { inti; for(i=0;i { if(strcmp(u[i].account,acc)==0) returnok; } returnnull; } /*******************匹配密码是否正确************************************/ structusercheck_code(structuseru[],characc[],charc[]) { structusera; inti=0; a.rec_len=0; for(i=0;i { if(strcmp(u[i].account,acc)==0) { if(strcmp(u[i].code,c)==0) returnu[i]; else returna; } } } /******************注册功能***********************************************/ intregist(structuseru[])//是将注册的新账号传递给u[i],然后使用save函数保存到文件 { characcount[20]; charcode[20]; charname[20]; charquestion[40]; charanswer[20]; intm; intfh2=0; printf("\n\n\n\n\n\n\n"); do { fh2=0;//每次都初
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 超市 商品 库存 信息管理 系统 正文
![提示](https://static.bdocx.com/images/bang_tan.gif)