数据结构超市商品库存信息管理系统正文终稿.docx

上传人:b****4 文档编号:3836450 上传时间:2022-11-25 格式:DOCX 页数:61 大小:357.14KB
下载 相关 举报
数据结构超市商品库存信息管理系统正文终稿.docx_第1页
第1页 / 共61页
数据结构超市商品库存信息管理系统正文终稿.docx_第2页
第2页 / 共61页
数据结构超市商品库存信息管理系统正文终稿.docx_第3页
第3页 / 共61页
数据结构超市商品库存信息管理系统正文终稿.docx_第4页
第4页 / 共61页
数据结构超市商品库存信息管理系统正文终稿.docx_第5页
第5页 / 共61页
点击查看更多>>
下载资源
资源描述

数据结构超市商品库存信息管理系统正文终稿.docx

《数据结构超市商品库存信息管理系统正文终稿.docx》由会员分享,可在线阅读,更多相关《数据结构超市商品库存信息管理系统正文终稿.docx(61页珍藏版)》请在冰豆网上搜索。

数据结构超市商品库存信息管理系统正文终稿.docx

数据结构超市商品库存信息管理系统正文终稿

东北大学信息科学与工程学院

数据结构课程设计报告

题目超市商品库存信息管理系统

课题组长宋振

课题组成员常玉颖于红爽

专业名称计算机科学与技术

班级计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;//每次都初

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1