《数据结构》课程设计报告--商品货架管理系统

合集下载

数据结构课程设计---商品管理软件

数据结构课程设计---商品管理软件

数据结构课程设计一.程设计课题:商品管理软件1.要求:以有序链表结构表示某家电商场的库存模型。

提/进货时,需对链表进行维护。

每个工作日结束后,应将该链表以文件形式保存;每日营业前,应从文件中恢复该有序链表结构。

2.设计基础:①.基于c++语言的控制台应用程序;(本文略)②.基于C# .net的带友好界面的实用软件(V1.0);③.基于链表结构的内部数据结构;3.初步构思:①程序实现以下功能a.将库存以文件的形式保存在硬盘,每日打开文件时读取b.允许操作员进行商品入库出库等操作;c.将每日的操作内容记录并以文本形式保存,方便以后查询;d.以各种关键词检索库存商品;e.显示当前所有库存。

②程序的功能模块:i.读文件的类ReadFile,封装好接口供程序调用,单独成文件Readfile.cs;ii.存文件的类SavetoFile,封装好接口供程序调用,单独成文件SavetoFile.cs;iii.商品类Good,记录单个商品的信息,单独成文件Good.cs;iv.商品链表类GoodList,记录整个库存的信息,并封装好排序等操作,单独成文件GoodList;二.算法思想描述:程序执行流程图:程序具体描述:①程序读入文件-338332457(“Goodfile”的散列值),若不存在,系统自动创建一个空文件;②用户选择适当的操作,比如出库,用户只需要输入相应货物的名称或者编号,出库数量,系统会自动计算好金额;入库时,系统会自动添加商品编号(当前最大编号加1),用户输入各方面信息,商品可以入库;商品查询时,用户选择检索方法,并输入相应关键字,可以找到该商品的目前库存信息;日操作记录即系统会记录每天的入库和出库情况,并将每日记录分开记载(文件名为日期名的散列值),若该日不存在记录,系统自动创建一空文件;显示所有库存即显示当前库存中的所有商品文件;③系统有一个显示当前时间的小功能,该程序和操作系统时间同步;关键算法如下:ReadFile类(writefile类似):class ReadFile{StreamReader sr;public StreamReader SR{get{return sr;}}public ReadFile(string x){string FileInfo = x.GetHashCode().ToString();try{sr = new StreamReader(FileInfo, Encoding.GetEncoding("GB2312"));}catch(FileNotFoundException){MessageBox.Show("未检测到记载文件,系统将创建");StreamWriter sw = new StreamWriter(FileInfo);sw.Write("");sw.Flush();sw.Close();sr = new StreamReader(FileInfo, Encoding.GetEncoding("GB2312")); }}public void Close(){sr.Close();}}商品入库的主要代码(出库类似):Good thisgood = new Good(thisname, thisno, thisprice, thisnumber);//string NewGoodString;MessageBox.Show("商品入库成功", "成功");TodayWork += DateTime.Now.ToShortTimeString()+"商品入库成功!";TodayWork += " 商品名称:" + thisname.ToString() + " 商品编号:" + thisno.ToString() + " 商品价格:" + thisprice.ToString() + " 商品数量:" + thisnumber.ToString() + "\r\n" + "\r\n";ThisList.AddtoLine(thisgood);SavetoFile TodayInfo = new SavetoFile(DateTime.Now.ToLongDateString()); //附加TodayInfo.Save(TodayWork);File.Delete("GoodInfo".GetHashCode().ToString()); //删除原来的SavetoFile Storage = new SavetoFile("GoodInfo"); //重写Storage.Save(ThisList.WholeInfo);TodayWork = "";三.程序结构:本程序中所有遇到的类为:其中第一排四个为系统生成,第二排的由自己写。

数据结构课程设计_仓库库存管理系统

数据结构课程设计_仓库库存管理系统

库存物品信息管理1、设计目的:利用《数据结构》课程的相关知识完成一个具有一定难度的综合设计题目,利用C/C++语言进行程序设计,并规范地完成课程设计报告。

通过课程设计,巩固和加深对线性表、栈、队列、字符串、树、图、查找、排序等理论知识的理解;掌握现实复杂问题的分析建模和解决方法(包括问题描述、系统分析、设计建模、代码实现、结果分析等);提高利用计算机分析解决综合性实际问题的基本能力。

2、设计内容和要求:①、要求物品出库、入库信息管理,浏览、修改物品信息;②、物品信息按名称和代码存放,在程序出错时自动返回主页面③、可以按物品名称物品代码来查询物品信息,即在主菜单中增加查询功能选项,输入代码或名称即可显示;④、可以修改、删除某库存物品信息。

二、运行环境(软、硬件环境)软件环境:Vc6.0编程软件运行平台: Win32硬件:普通个人PC机三、算法设计的思想1、输入物品信息函数:Add(Link l)基本思想: 根据物品代码(code)来输入物品信息,如果代码已存在,则按ENTER键返回主页面;如果代码不存在,则继续输入物品名称、物品数量、物品等级;若继续输入,就直接输入代码等信息,若返回上一级,就按“0”键,调用main(),返回主界面。

2、物品出库函数:Del(Link l)基本思想: 根据输入的代码或名称,如果不存在该物品,就输出“不存在该物品”;然后输出是用代码出库或者名称出库,在选择操作后,输出该物品对应的信息,若输入“0”,则调用main(),返回主界面。

3、查看库存物品信息函数:Qur(Link l)基本思想:根据输入的信息判断有无该商品信息,如果没有该信息,则输出“你输入的信息有误”,有该物品,则输出该物品对饮的代码、名称、数量等信息,按enter键返回主界面。

4、删除物品信息函数:Del(Link l)基本思想:根据用户键入的选择,如果没有该物品信息,则输出没有改物品;调用该函数Del(Link l),如果存在该物品,则输出该物品及信息已成功修改,然后用户键入任意键返回主界面。

商品仓库管理系统(数据库设计)

商品仓库管理系统(数据库设计)

数据库原理课程设计仓库管理系统第一章绪论1.1课题背景介绍1.1.1课题开发背景商品库存管理系统是一个企业不可缺少的部分,它的内容对于企业的决策者和管理者来说都至关重要,所以商品库存管理系统应该能够为用户提供充足的信息和快捷的查询手段。

但一直以来人们使用传统人工的方式管理仓库中的各种物资设备,这种管理方式存在着许多缺点,如:效率低、另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。

作为计算机应用的一部分,使用计算机对物资信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高人事劳资管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。

因此,开发这样一套商品库存管理软件成为很有必要的事情。

1.1.2课题开发意义大多数库存管理理论认为,库存是物理上和逻辑上库房库位的所有有形和无形物料极其价值的总和,具体包括成品、原材料、在制品、在途品、生产前物料、备品备件等。

虽然持有一些库存是必要的,过量的库存却非但没有用处而且占用了资金。

占用的资金对于公司发展、新产品开发等都是非常需要的;减少资金占用还可以大大减少来自银行贷款的利息和风险。

对那些采购量特别大、采购件市场价格有波动的物料库存,加强库存管理效果更为明显。

因此,平衡公司库存投资与其它资金需求至关重要。

随着我国经济的飞速发展,各种类型规模的公司企业迅速崛起,许多从事生产和经营管理的企业都有自己生产和销售的产品,而这些产品都需要储存在仓库中,对于每个企业来说,随着企业规模的不断扩大,产品数量的急剧增加,所生产产品的种类也会不断地更新与发展,有关产品的各种信息量也会成倍增长。

面对庞大的产品信息量,如何有效地管理库存产品,对这些企业来说是非常重要的,库存管理的重点是销售信息能否及时反馈,从而确保企业运行效益。

【最新精选】《数据结构》课程设计报告_商品货架管理系统

【最新精选】《数据结构》课程设计报告_商品货架管理系统

【最新精选】《数据结构》课程设计报告_商品货架管理系统05级普本《数据结构课程设计》――《交通咨询系统》设计报告湖北第二师范学院课程设计报告课程名称:数据结构课程设计设计题目: 商品货架管理系统系别: 计算机科学系专业: 软件工程组别: 蔡桥利,阳乐,邱东明,郝耀峰学生姓名: -- 学号: --起止日期: 2013年 12 月 7 日~2013年 12月21日指导教师: 宋婉娟教研室主任:第 1 页共 30 页05级普本《数据结构课程设计》――《交通咨询系统》设计报告目录一、课程设计目的...................................................................... ............................... 3 二、问题描述...................................................................... ...................................... 3 三、需求分析...................................................................... ...................................... 3 四、概要设计............................................................................................................ 3 五、详细设计...................................................................... .. (4)六、测试分析...................................................................... ...................................... 7 七、使用说明...................................................................... ...................................... 9 八、测试数据...................................................................... (10)九、源程序清单 ..................................................................... ................................. 10 十、模块说明...................................................................... (19)第 2 页共 30 页05级普本《数据结构课程设计》――《交通咨询系统》设计报告一(课程设计目的通过实习,了解并初步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。

数据结构 课程设计 库存管理系统

数据结构 课程设计 库存管理系统

学号数据结构课程设计设计说明书库存管理系统起止日期:2011年1月10 日至2011 年1月15日学生姓名班级成绩指导教师(签字)电子与信息工程系2011年1 月15日天津城市建设学院课程设计任务书2010—2011学年第1学期电子与信息工程系软件工程专业班级课程设计名称:数据结构课程设计设计题目:库存管理系统完成期限:自2011 年12 月12 日至2011 年12 月16 日共 1 周设计依据:c++程序设计要求:熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。

主要内容:1)问题描述试设计一库存管理系统,产品信息包括产品编号、名称、价格、数量等(产品编号不重复)。

2) 基本要求该系统应具有以下功能:1、产品信息录入功能(产品信息用文件保存)--输入?2、产品信息浏览功能--输出?3、产品入库4、产品出库5、查询和排序功能:1)按价格从大到小排序2)按名称查询6、产品信息删除、修改功能。

目录一、设计目的 (4)二、设计要求 (4)三、设计内容 (4)(1)需求分析 (4)(2)问题求解 (4)(3)总体设计 (5)(4)详细设计 (6)(5)关键源程序清单 (7)(6)执行结果: (12)四、参考文献 (15)一、设计目的熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。

二、设计要求(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。

凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩;(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;(4)认真编写课程设计报告。

三、设计内容(1)需求分析程序的功能、输入输出的要求1、从文件中加载数据;2、增加一个产品的信息;3、保存数据;4、显示所有产品的信息;5、删除某个产品的信息;6、用名称查找某个产品的信息;7、用编号查找某个产品的信息;8、退出。

数据结构课内实验报告模板-商品货架问题

数据结构课内实验报告模板-商品货架问题

*******数据结构课内实验报告题目:商品货架管理院系名称:计算机学院专业名称:软件工程专业班级:0901班学生姓名:*****学号(8位):*********一.需求分析程序设计的任务:商品货架可以看成是一个栈,栈顶产品的生产日期最早,栈底商品的生产日期最近。

上货时,需要倒货架,以保证生产日期较近的商品在较下的位置。

用队列和栈作为周转,实现上述管理过程。

(1)输入的形式和输入值的范围;输入的形式:请输入商品货物名称:请输入商品上架时间:是否继续输入(Y/N):请输入新增商品货物名称:请输入新增商品上架时间:是否继续输入(Y/N):输入值的范围:名称:字符串日期:整数(2)输出的形式;倒货架后商品的信息为:商品名称生产日期(3) 程序所能达到的功能;将商品信息顺序的放在一个栈中,新增商品放入另一个栈中,然后通过队列来进行一个倒货架的一个过程。

(3)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。

二. 概要设计本题采用了栈和队列数据结构,共采用二个栈和一个队列,实现了倒货架。

栈:先进后出队列:先进先出功能模块图以及各个模块的功能描述:重要函数:1.int add_goods(stack *add); 初始化新栈2.int push(stack *top); 入栈3.void Initstack(stack *top); 初始化一个带头结点的栈4.queue* enterqueue(stack *add,stack *top); // 将栈中元素入队列5.int Initqueue(queue *Q); 初始化队列6.void destroy(stack *add); 销毁栈,释放空间7.void enterstack(queue *newlinkqueue,stack * start,stack *top); // 将队列元素入栈8.void printgoods(stack *top); 打印栈中元素9.stack * printqueue(queue *Q); 打印队列中的元素,并将队列的队头指针,然后传参三.详细设计栈和队列的数据类型定义:#define N sizeof(stack)typedef struct goods_stack { //构造堆栈结构体long int date;char goods[80];struct goods_stack *next;}stack;typedef struct //队列{stack * front;stack * rear;}queue;核心算法:// 将栈中元素入队列queue * enterqueue(stack *add,stack *top){queue * new1;stack *temp;new1 = (queue *)malloc(sizeof(queue));Initqueue(new1);add = add->next;while(add)// 将add 中所有元素入队列queue 中去{temp = (stack *)malloc(N);strcpy(temp->goods,add->goods);temp->date = add->date;add = add->next;new1->rear->next =temp;new1->rear = temp;}destroy(&add); //销毁add栈中元素add =(stack *)malloc(N);Initstack(add);top = top->next;while(top)//将top栈中元素全部入栈到add 栈{temp = (stack *)malloc(N);strcpy(temp->goods,top ->goods);temp->date = top->date;top = top->next;temp ->next = add->next;//头插法入栈add ->next = temp;}add = add->next;while(add)//再次将add 中所有元素入队列queue 中去{temp = (stack *)malloc(N);strcpy(temp->goods,add->goods);temp->date = add->date;add = add->next;new1->rear->next =temp;new1->rear = temp;}// destroy(&top);//销毁top栈中元素;// destroy(&add);//销毁add栈中元素return new1;}// 将队列元素入栈void enterstack(queue *new1,stack * start,stack *top) {stack *temp;temp=(stack *)malloc(N);while(start!= new1->rear){strcpy(temp->goods,start->next->goods);temp->date=start->next->date;temp->next = top->next;//头插法入栈top->next = temp;start = start->next;temp=(stack *)malloc(N);}}四.时间复杂度分析本程序的时间复杂度:O(n)五.测试数据及运行结果1、正确的输入及其输出结果:以下是各商品的信息:倒货架后商品的信息为:2、错误的输入及其输出结果:输入时间时必须是数字,否则出错;输出数据时,必须按栈的顺序,否则结果混乱~~~六.调试情况,设计技巧及体会1.对自己的设计进行评价,指出合理和不足之处,提出改进方案;本设计达到了题目的要求,用了2个栈,1个队列,倒货到了好多次,实现了倒货架的过程。

商品货架管理—数据结构课程设计报告

商品货架管理—数据结构课程设计报告

商品货架管理—数据结构课程设计报告商品货架管理 1、需求分析:设计一个算法,每一次上货后始终保持生产日期越近的商品越靠近栈底。

求货架上剩余货物M、每天销售件数N、员工每天上货工作时间T,三者之间有何关系及T的最小值。

2、源程序:#include<iostream.h> #include"string.h"#include"stdio.h"const int maxsize=100; const int k=10;#define elemtype char typedef struct{int Month;int Day;int Year;}DATE;typedef struct{int num;DATE date;} Node;class seqstack{public:Node stack[maxsize]; int top;void inistack(){top=0;}void push(int x,int day,int month,int year) {if(top==maxsize)cout<<"货架已满"<<endl;else{top++;stack[top].num=x; stack[top].date.Day=day; stack[top].date.Month=month;stack[top].date.Year=year;}}void pop(){if(top==0)cout<<"货架已空"<<endl; elsetop--;}elemtype gettop() {if(top==0)cout<<"货架已空"<<endl; elsereturn top;}bool empty(){return top==0; }};void main(){seqstack c[k+1]; //存放k种商品的数组,用c[0]来做中介货架int Txq[k+1]; //第i种取货用的时间 int Txs[k+1]; //第i种上货用的时间 int Nx[k+1]; //第i种每天的销售数量 int N=0; //每天销售总量int Tx[k+1]; //第i种每天上货的总时间 int T=0; //每天上货用的总时间char yn='Y';for(int i=1;i<=k;i++){cout<<" ******************************"<<endl;cout<<" 商品货架管理系统"<<endl;cout<<" ******************************"<<endl;Node store[20];char year,month;int count; //货架上第i种商品的数目int x,d,m,y; //x为第i种商品的序号cout<<"请输入货架上第"<<i<<"种货物的详细信息:"<<endl; cout<<"(序号,生产日期(年、月、日如2006.2.13),现在货架上的存货数目,上货用时和取货用时)"<<endl;cin>>x>>y>>year>>m>>month>>d>>count>>Txs[i]>>Txq[i];Nx[i]=maxsize-count;cout<<"货架上还需上"<<i<<"货物"<<Nx[i]<<"件"<<endl;Tx[k]=Txs[i]*(maxsize+count)+2*Txq[i]*count;cout<<"该货架满货需要用时"<<Tx[k]<<endl;cout<<"是否要上货?(Y/N)"<<endl;cin>>yn;if(yn=='Y'||yn=='y'){int numbers,nian,yue,ri;cout<<"请输入要上货物的数目及生产日期(年、月、日)"<<endl; //上的是同一日期生产的货物cin>>numbers>>nian>>yue>>ri;if(numbers>maxsize-count){cout<<"要上的货物数目超出了货架的最大容量,请重新输入"<<endl; cin>>numbers>>nian>>yue>>ri;}for(int j=1;j<=numbers;j++){}}N+=Nx[i];T+=Tx[i];}cout<<"每天销售总量为:"<<N<<endl; cout<<"每天上货用的总时间为:"<<T<<endl; }3、测试结果:谢谢品读~。

商品货架管理--C++数据结构

商品货架管理--C++数据结构

商品货架管理--C++数据结构商品货架管理--C++数据结构一、介绍商品货架管理系统是用于管理商店货架上商品的一套软件系统。

本文档将介绍该系统的设计和实现,以及使用C++数据结构来实现该系统的方法。

主要包括以下几个方面内容。

二、需求分析在设计商品货架管理系统前,首先需要进行需求分析,明确系统的功能和目标。

需求分析包括以下几个方面:1.管理商品信息:包括商品的名称、价格、库存等信息。

2.管理货架信息:包括货架的编号、位置以及关联的商品。

3.添加和删除商品:能够通过系统添加新的商品,并且能够删除不再销售的商品。

4.购买和库存管理:用户能够购买商品,系统能够自动更新库存信息。

三、系统设计基于需求分析的结果,我们设计了如下的系统结构和数据结构。

1.商品类(Item):包含商品的名称、价格、库存等属性。

2.货架类(Shelf):包含货架的编号、位置等属性,以及关联的商品信息。

3.商品管理类(ItemManager):负责管理商品的增删查改等操作。

4.货架管理类(ShelfManager):负责管理货架的增删查改等操作。

5.库存管理类(InventoryManager):负责管理商品库存的增减等操作。

6.用户交互界面类(UserInterface):提供用户交互界面,接收用户的输入并调用相应的管理类。

四、系统实现根据系统设计,我们使用C++语言来实现商品货架管理系统。

以下是具体的实现步骤:1.定义商品类(Item):定义商品的属性和方法,包括名称、价格、库存等。

可以使用C++的类来实现。

2.定义货架类(Shelf):定义货架的属性和方法,包括编号、位置等。

可以使用C++的类来实现。

3.定义商品管理类(ItemManager):定义对商品进行增删查改等操作的方法。

可以使用C++的类来实现。

4.定义货架管理类(ShelfManager):定义对货架进行增删查改等操作的方法。

可以使用C++的类来实现。

5.定义库存管理类(InventoryManager):定义对商品库存进行增减等操作的方法。

数据结构课程设计 商品货架管理系统

数据结构课程设计 商品货架管理系统

#include"stdio.h"#include"stdlib.h"#include"string.h"struct goods { long int num; char name[20];char category[20]; long int count;float price; }goods[200];void menu(); void input();void save(int m); int load();void scan(); void search();void purchase(); void sell();void add(); void edit();void dele(); void correct();void sort_num();void sort_name();void sort_category();void save();int m;int main() /*主函数*/{ menu();int n,flag;char a;do{printf("请选择你需要操作的步骤(1--7):");scanf("%d",&n);if(n>=0&&n<=7){ flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!");}}while(flag==0);while(flag==1){switch(n){case 1:printf(" \n◆◆◆输入商品信息◆◆◆\n"); printf("\n");input();break;case 2:printf(" \n◆◆◆浏览商品信息◆◆◆\n");printf("\n");scan();break;case 3:printf(" \n◆◆◆查询商品信息◆◆◆\n");printf("\n");search();break;case 4:printf(" \n◆◆◆添加或删除商品◆◆◆\n");printf("\n");edit();break;case 5:printf(" \n◆◆◆修改商品信息◆◆◆\n");printf("\n");correct();break;case 6:printf(" \n◆◆◆进货管理◆◆◆\n");printf("\n");purchase();break;case 7:printf(" \n◆◆◆售货管理◆◆◆\n");printf("\n");sell();break;case 0:exit(0);break;default :break;}printf("\n");printf("是否继续进行(y or n):\n");scanf("%c",&a);if(a=='y'){flag=1;system("cls"); /*清屏*/menu(); /*调用菜单函数*/printf("请再次选择你需要操作的步骤(1--7):\n");scanf("%d",&n);printf("\n");}else exit(0);}}void menu() /*菜单函数*/{printf("\n\t************欢迎进入商品销售管理系统**********\n");printf("\n\t\t1.录入商品信息");printf("\t\t2.浏览商品信息\n");printf("\t\t3.查询商品信息");printf("\t\t4.添加或删除商品\n");printf("\t\t5.修改商品信息");printf("\t\t6.进货管理\n");printf("\t\t7.售货管理\n");printf("\t\t0.退出\n");printf("\n");printf("\n"); }void input() /*输入商品信息并保存*/{int i;printf ("\n 请输入需要建立新库存的商品种类数量:");scanf ("%d",&m);for (i=0; i<m; i++) /*用循环实现输入m 个商品*/{printf ("\n\t 请输入商品的编号:");scanf("%ld",&goods[i].num);printf ("\n\t 请输入商品的名称:");scanf("%s",goods[i].name);printf ("\n\t 请输入商品的种类:");scanf ("%s",goods[i].category);printf ("\n\t 请输入商品的数量:");scanf("%d",&goods[i].count);printf ("\n\t 请输入商品的单价:");scanf ("%f",&goods[i].price);printf("\n"); }save(m);return; /*返回主界面*/}void display(){int i;printf ("商品编号\t 商品名称\t 商品类别\t 商品数量\t 商品价格\n") ;/*输出商品信息*/ for(i=0;i<m;i++)printf("%ld\t\t%s\t\t%s\t\t%1d%\t\t%.2f\n",goods[i]. num,goods[i].name, goods[i].category, goods[i]. count, goods[i]. price);}void scan() /*浏览商品信息*/{int k;m=load();printf ("按商品编号浏览,请按l\t按商品名称浏览,请按2\t按商品类别浏览,请按3\n"); printf ("请选择浏览方式:");scanf ("%d",&k);switch (k) /*方式的选择*/{ case 1:sort_num();break;case 2:sort_name();break;case 3:sort_category();break;}return; /*返回主界面*/}void sort_num() /*⑴:按编号排序*/{long temp;char p1[30], p2[30];for (int k=0; k<m-1; k++)for (int i=0; i<m-k-1; i++) /* 用起泡法排序*/if (goods [i].num>goods[i+1]. num) /*按编号由小到大排序*/{temp=goods[i].num;goods[i].num=goods[i+1].num;goods[i+1].num=temp;strcpy (p1,goods[i].name);strcpy (goods[i].name, goods[i+1]. name);strcpy (goods[i+1].name, p1);strcpy (p2,goods[i].category);strcpy (goods[i].category, goods[i+1].category);strcpy (goods[i+1].category, p2);}display();return; /*返回主界面*/}void sort_name() /*(2):按商品名称排序*/{long temp;char p1[30], p2[30];for (int k=0;k<m-1;k++)for(int i=0;i<m-k-1;i++)if(strcmp(goods[i].name, goods[i+1].name)>0){strcpy(p1, goods[i].name);strcpy(goods[i].name, goods[i+1].name);strcpy(goods[i+1].name, p1);temp=goods[i].num;goods[i].num=goods[i+1].num;goods[i+1].num=temp;strcpy (p2,goods[i].category);strcpy (goods[i].category, goods[i+1].category);strcpy (goods[i+1].category, p2);}display();return; /*返回主界面*/}void sort_category() /*(3):按商品类别排序*/{long temp;char p1[30], p2[30];for (int k=0; k<m-1; k++)for (int i=0; i<m-k-1; i++) /* 用起泡法排序*/if(strcmp(goods[i].category, goods[i+1].category)>0){strcpy (p2, goods[i].category);strcpy(goods[i].category, goods[i+1].category);strcpy (goods[i+1].category, p2);temp=goods[i].num;goods[i].num=goods[i+1].num;goods[i+1].num=temp;strcpy (p1,goods[i].name);strcpy (goods[i].name, goods[i+1].name);strcpy (goods[i+1].name, p1);}display();return; /*返回主界面*/}void search_num ()/*(1):按商品编号查找*/{int long temp,i;printf ("\n 请输入要查询的商品编号:");scanf ("%ld",&temp);for(i=0;i<m;i++){if(temp==goods[i].num){printf ("\n 商品编号\t 商品名称\t 商品类别\t 商品数量\t 商品价格\n");printf("%1d\t\t%s\t\t%s\t\t%1d\t\t%.2f\n",goods[i].num, goods[i]. name, goods[i].category, goods[i]. count, goods[i]. price);}}}void search_name ()/*(2):按商品名称查找*/{int i;char temp[20];printf ("\n\n 请输入要查询的商品名称:");scanf("%s",temp);for (i=0;i<m;i++){if (strcmp (temp, goods[i].name)==0){printf ("商品编号\t 商品名称\t 商品类别\t 商品数量\t 商品价格\n");printf("\t\t%1d\t\t%s\t\t%s\t\t%1d\t\t%.2f\n",goods[i].num, goods[i]. name, goods[i].category, goods[i]. count, goods[i]. price);}}if(i>m)printf("无此商品");return ;}void search_category ()/*(3):按商品类别查找*/{int i;char temp[20];printf ("\n\n 请输入要查询的商品类别:");scanf("%s",temp);printf ("\t 商品编号\t 商品名称商品类别\t 商品数量\t 商品价格");for(i=0;i<m;i++){if(strcmp(temp, goods[i].category)==0)printf("\t\t%1d\t\t%s\t\t%s\t\t%1d\t\t%.2f",goods[i].num, goods[i]. name, goods[i].category, goods[i]. count, goods[i].price);}}void search () /*查询商品信息*/{int k; /*定义局部变量*/m=load();printf ("\n 按商品编号查询3 请按l,\t 按商品名称查询请按2,\t 按商品类别查询请按3\n");printf ("\n\请输入查询方式:");scanf ("%d",&k);switch (k) /*查询方式的选择*/{case 1:search_num();break;/*按商品编号查询*/case 2:search_name();break;/*按商品名称查询*/case 3:search_category();break;/*按商品类别查询*/ }printf("\nPress any key to enter menu.....");getchar ();return; /*返回主界面*/}void purchase() /*进货商品信息*/{long temp; /*定义临时变量表示刚进货的商品编号*/int j;m=load();printf ("\n\t 请输入刚进货的商品编号:");scanf("%ld",&temp);printf ("\n\t 请输入刚进货的商品数量:");scanf("%d",&j);printf ("\n\t 输出进货后的商品信息:\n");for (int i=0;i<m;i++) /*循环,寻找与进货相同的商品信息*/if(temp==goods[i]. num) goods[i].count=goods[i].count+j; /* 自动更改商品数量*/display();save(m);printf("\n\n\t\tPress any key to enter menu.....");getchar() ;/*返回功能选择界面*/return;}void sell() /*销售商品信息*/{long temp; /*定义临时变量temp 表示刚销售的商品编号*/int j;m=load();printf ("\n 请输入刚销售的商品编号:");scanf("%ld",&temp);printf ("\n 请输入刚销售的商品数量:");scanf("%d",&j);for(int i=0;i<m;i++) /*循环,找到刚销售的商品信息*/{if(temp==goods[i].num){for(;j>goods[i].count;) /*如果销售额大于库存量,则出现错误提示*/{printf ("\t 售出数量大于商品原有数量,出现错误,请重新输入:");scanf("%d",&j);}goods [i].count=goods[i].count-j; /*完成自动更改商品数量的功能*/ }}display();printf ("\n\tpress any key to contiue.....");getchar();return; /*返回功能选择界面*/}void edit() /*添加或删除商品信息*/{int k;void add (); /*声明子函数*/void dele();printf ("\n\t1.添加商品信息;2.删除商品信息;\n");printf ("\n 请输入1 或2 继续:");scanf ("%d",&k);switch (k) /*用switch 语句实现功能选择*/{case 1: add();break;case 2: dele();break;}printf ("\n\tpress any key to contiue......");getchar ();return; /*返回主菜单*/}void add () /*添加商品*/{FILE *fp;int count,i;if ((fp=fopen("goods_list","ab"))==NULL){printf ("cannot open file\n");exit(0);}printf("\n 请输入增加的商品数目:");scanf("%d",&count);for(i=0;i<count;i++){printf ("\n 请输入所添加商品的商品编号:");scanf("%ld",&goods[i]. num);printf ("\n 请输入所添加商品的名称:");scanf("%s",goods[i]. name);printf ("\n 请输入所添加商品的类别:");scanf("%s",goods[i].category);printf ("\n 请输入所添加商品的数量:");scanf("%d",&goods[i].count);printf ("\n 请输入所添加商品的价格:");scanf("%f",&goods[i].price);}for (i=0;i<count;i++) /*将新增的商品信息输出到磁盘文件中去*/ if (fwrite(&goods[i],sizeof(struct goods),1,fp)!=1)printf("file write error\n");printf("\n 添加完毕!\n");fclose(fp);printf("\n");}void dele() /*删除商品信息*/{int temp;m=load();display();printf ("\n 请输入要删除的商品编号:");scanf("%ld", &temp);printf ("\n");for(int i=0;i<m;i++){if(temp==goods[i].num){for(int j=i;j<m;j++){goods[j].num=goods[j+1].num;strcpy(goods[j].name, goods[j+1].name);strcpy (goods[j].category, goods[j+1].category);goods[j].count=goods[j+1].count;goods[j].price=goods[j+1].price;}}}m=m-1; /*商品总库存量减少*/save(m);display();printf ("Please press any key to continue.....");getchar();return; /*返回主界面*/}void correct() /*修改商品信息*/{long temp; /*定义局部变量*/m=load();display();printf ("\n\t 请输入要修改的商品的编号:");scanf ("%ld",&temp) ; /*输入新的商品信息*/for (int i=0; i<m; i++) /*保存新的商品信息*/{if(temp==goods[i].num){printf ("\n\t 请输入新的商品的名称:");scanf("%s",goods[i].name);printf("\n\t 请输入新的商品的类别:");scanf("%s",goods[i].category);printf("\n\t 请输入新的商品价格:");scanf("%f",&goods[i].price);printf("\n");}}save(m);display();printf ("Please press any key to continue......") ; /* 返回功能选择界面*/ getchar(); return; /*返回主菜单*/ }int load() /*导入函数*/{FILE*fp;int n=0;if((fp=fopen("goods_list","rb"))==NULL){printf ("cannot open file\n");exit(0);}else{do{fread(&goods[n],sizeof(struct goods),1,fp);n++;}while(feof(fp)==0);}fclose(fp);return(n-1);}void save(int m) /*保存文件函数*/{int i;FILE*fp;if ((fp=fopen("goods_list","wb"))==NULL){printf ("cannot open file\n");exit(0);}for (i=0;i<m;i++) /*将内存中的商品信息输出到磁盘文件中去*/ if (fwrite(&goods[i],sizeof(struct goods),1,fp)!=1)printf("file write error\n");fclose(fp);}。

商品货架管理数据结构课程设计

商品货架管理数据结构课程设计

【问题描述】商品货架可以看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近。

上货时,需要倒货架,以保证生产日期较近的商品在较下的位置。

【基本要求】针对一种特定商品,实现上述管理过程。

【测试数据】小四宋体,行间距单倍行距,每段缩进两个字符【算法思想】第一:先定义数据日期的结构体——里面包括年、月、日第二:写进栈、出栈函数第三:写倒货函数基本思想就是借助三个一维数组分别装载年(a[])、月(b[])、日(c[]),然后出栈并将所有元素放到这三个数组中,一个生产日期的年、月、日数组的下标必须必须相同否则就乱了。

再将数组中元素按生产日期较近进行排序,最后一步将数组中的元素压到原来的栈中即可。

第四:函数输出,输出只是单纯的输出,不要求出战,故需要另写一个函数第五:主函数因为可以循环使用,故用switch—case 语句即可实现【模块划分】进栈、出栈、倒货、输出和主函数【数据结构】栈:程序中使用的是链栈,链栈的好处是只要还有存储空间就会存储,结构体的next域指向下一个数据域,它的存储空间是随意的,可以连续,也可以不连续。

数组:数组的存储方式是连续的物理空间,下标即为存储位置,可以高效的运行【测试情况】小四宋体,行间距单倍行距重点内容,每个功能抓图并且给予文字解释【心得】通过此次的课程设计让我深刻的了解到了数据结构是很难的,刚开始的写的时候,结构体定义就出错了,以至于后边的函数功能都出错了,就连输入都有错误,我刚开始以为是我的函数写错了呐!把进栈、出栈函数照着教材上的又重新写了一会,结果发现还是不行,后来请教班里学的比较还好的同学,发现我结构体定义的有问题,我年份用的是int类型,月、日用的是char类型,char类型只能接收一个字符,第二个就不能接收不了,所我的输入总有问题,后来我改成int类型的就没有这种情况了。

后来又想边比较边压栈,弄了一段时间,后来由于时间关系就没实现,就借助数组实现的。

也是一种遗憾。

数据结构课程设计报告-超市商品管理

数据结构课程设计报告-超市商品管理

1.需求分析在某个大型生活服务区内,有三个超市,每个超市中的商品包括:商品号,商品名称,商品价格,库存数量,每种商品总数,生产日期等基本信息,假设三个超市的商品信息分别是用单链L1,L2, L3取存储的,请写一个程序实现下列任务要求:知识点:线性表操作【任务要求】1.当超市有新的商品购入是能添加到单链表中;2.能查找出三个超市中具有相同商品名称的商品信息;3.在超市商品信息L1中删除那些与其他两个超市都有的商品信息;4.能修改各超市商品基本信息,如价格等。

5.能查找比较超市中相同商品的销售情况,能统计每个超市中每种商品的销售量及销售额。

6.能输出每个超市的所有商品信息;【测试数据】自行设定,注意测试将活区删空等特殊情况。

2.概要设计2.1必要算法1.当超市有新的商品购入是添加到单链表中算法概要:运用单链表的基本操作——插入一个新结点,即分配一个新的储存空间,然后依次输入结点所含的数据,再插入到原结点的尾部即可。

此算法时间复杂度为O(1)。

2.查找出三个超市中具有相同商品名称的商品信息算法概要:1.寻找相同商品名称算法:先比较前两个链表(超市)l1,l2,运用比较字符串的strcmp()方法找出两个链表中含有相同的商品名称,然后将两个链表中具有相同商品名称的商品信息存储到新建链表fs中,再比较链表fs和l3,重复上述步骤,找出链表l1,l2,l3中都具有相同商品名称的商品,将其商品信息存储在链表fs中。

此算法时间复杂度为O(n)。

2.输出相同商品的商品信息:访问fs中每个结点中的商品名称,根据商品名称分别遍历原链表l1,l2,l3的商品信息找出原结点,然后将其信息输出。

此算法时间复杂度为O(n)。

3.在超市商品信息L1中删除那些与其他两个超市都有的商品信息算法概要:首先运用上述的寻找相同商品名称算法,找出l1中那些与其他两个超市都有的商品名称,再根据其名称遍历链表l1,找出其结点删除并释放——单链表的基本操作。

数据结构课程设计基于栈的商品货架管理的设计

数据结构课程设计基于栈的商品货架管理的设计

2014-2015学年第一学期《数据结构》课程设计报告题目:基于栈的商品货架管理的设计专业:计算机科学与技术班级:姓名:学号:指导教师:成绩:计算机与信息工程系2014年11 月22日目录1设计分析 (2)1.1设计内容 (2)1.2 设计任务及具体要求 (2)2概要设计 ........................................ 错误!未定义书签。

2.1系统的功能简介 (2)2.2 总体程序框图 (3)3设计过程和程序代码............................. 错误!未定义书签。

3.1数据结构的设计 (3)3.1.1商品信息 (3)3.1.2商品货架(栈) (3)3.1.3商品种类 (4)3.2算法设计 (4)3.2.1初始化空栈 (4)3.2.2上货的算法设计 (4)3.2.3出货(即当天的销售)的算法设计 (4)3.2.4补货的算法设计 (4)3.2.5倒货 (4)3.2.6将货架上摆放的货物打印出来 (5)3.2.7模块结构及功能 (5)3.2.8主要模块算法描述 (5)4运行结果 (9)5小结 (10)参考文献 (11)附录:源程序 (12)1设计分析1.1设计内容商店货架以栈的方式摆放商品。

商品货架可以看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近。

生产日期越接近的越靠栈底,出货时从栈顶取货。

一天营业结束,如果货架不满,则需上货。

入货直接将商品摆放到货架上,则会使生产日期越近的商品越靠近栈顶。

这样就需要倒货架,使生产日期越近的越靠近栈底。

请编写程序模拟商品销售,上架倒货架等操作。

(设有5种商品,每种商品至少有商品名和生产日期两个属性)1.2设计任务及具体要求设计任务:一天营业的开始,首先店主要把各个商品货架(栈)上满货物。

商店内总共有5种商品,商品名为:a,b,c,d,e。

补货时,店主输入第一种需要补货的商品的商品名和今天销售出去的数量。

商品货架管理问题课程设计

商品货架管理问题课程设计

商品货架管理问题课程设计一、课程目标知识目标:1. 学生能理解并掌握商品货架管理的概念,了解其在零售业中的重要性。

2. 学生能够运用基本的数学运算和数据分析方法,解决商品货架管理中的实际问题。

3. 学生能够掌握并运用商品分类、库存管理等基本知识,提高货架管理水平。

技能目标:1. 学生能够运用所学知识,设计合理的商品货架布局方案,提升商品展示效果。

2. 学生能够通过数据分析,评估商品货架管理的效率,并提出改进措施。

3. 学生能够运用团队合作的方式,解决商品货架管理中的问题,提高沟通与协作能力。

情感态度价值观目标:1. 学生能够认识到商品货架管理在零售业中的重要作用,激发对商业领域的兴趣。

2. 学生通过解决实际问题,培养勇于探究、积极思考的学习态度。

3. 学生在团队协作中,学会尊重他人意见,培养合作精神和社会责任感。

课程性质分析:本课程属于实用性较强的数学应用课程,结合了数学、数据分析、商业管理等学科知识,旨在培养学生解决实际问题的能力。

学生特点分析:考虑到学生所在年级的特点,他们在数学基础、逻辑思维和分析能力方面具备一定的基础,但可能缺乏实际应用经验。

教学要求:1. 注重理论与实践相结合,让学生在实际问题中感受所学知识的应用。

2. 激发学生主动参与、积极思考,培养解决问题的能力。

3. 强化团队合作,提高学生的沟通与协作能力。

二、教学内容1. 商品货架管理基本概念:介绍商品货架管理的定义、作用和重要性,结合课本相关章节,让学生对商品货架管理形成初步认识。

2. 商品分类与货架布局:讲解商品分类的方法,以及如何根据商品特点进行货架布局,提高商品展示效果。

参考课本相关案例,让学生动手设计货架布局方案。

3. 库存管理与数据分析:教授库存管理的基本原理,运用数据分析方法评估货架管理效果。

结合课本中的数学模型和实例,让学生学会运用数据分析解决实际问题。

4. 商品货架管理优化策略:介绍商品货架管理中的优化策略,如调整商品摆放、优化库存结构等。

数据库课程设计报告商品销售管理系统

数据库课程设计报告商品销售管理系统

数据库课程设计报告题目名称:商品销售管理系统姓名:专业:计算机科学与技术班级:090453学号:090453同组人员:指导老师:在科学技术日新月异的今天,计算机已逐步渗入各个领域,无论是学习,工作,还是娱乐都普及了计算机的使用,而随着网络的开通、并与Internet连接更让我们社会成为信息化的时代,人们不再需要浪费太多的时间去手工的获得信息,只要做在家中轻点几下鼠标不但能轻松获得各种信息,而且能够购买到自己需要的商品,既摆脱了时间和空间的限制又节约了大量的时间,因此熟练使用计算机及网络,已成为人们进入现代社会的必备技能。

商品销售管理系统正是在这种情况下诞生并逐渐发展起来的,它已成为我们进行商品交易中不可缺少的部分。

商品信息管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及应用程序的开发两个方面。

对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库,而对于后者则要求应用程序功能完备,操作简单等。

本系统是在分析了现行商品管理中存在的问题的基础上,结合信息管理系统开发的概念、结构及系统开发的基本原理和方法,开发的一套商品信息管理系统。

根据实际情况,由目前各功能需求和公司里的情况而设计的这套系统。

全文共分为课题研究的意义、开发环境、系统的实现、性能测试与分析以及结束语等章节,详细地阐述了本系统开发的目的。

关键字:商品销售,数据库第一章系统概述 (4)1.1 系统开发背景与意义 (4)1.1.1 系统开发背景 (4)1.1.2 系统开发意义 (4)第二章需求分析 (5)2.1系统功能要求 (5)2.2数据流图 (5)2.2.1 0层数据流图 (5)2.2.1 1层数据流图 (6)2.3数据字典 (8)数据流 (9)数据存储 (10)处理过程 (10)第三章概念结构设计 (11)3.1商品库存子系统 (11)3.2商品采购子系统 (12)3.3商品销售子系统 (13)3.4 E-R图 (14)第四章逻辑结构设计阶段 (15)4.1关系模式 (15)第五章、系统功能设计 (16)5.1功能结构图 (16)5.2触发器 (16)结束语 (18)参考文献 (19)第一章系统概述1.1 系统开发背景与意义1.1.1 系统开发背景在信息技术的催化之下,世界经济的变革已经进入了加速状态。

《数据结构》课程设计报告--商品货架管理系统

《数据结构》课程设计报告--商品货架管理系统

课程设计报告课程名称:数据结构课程设计设计题目:商品货架管理系统系别:计算机科学系专业:软件工程组别:学生姓名: -- 学号: --起止日期: 2013年 12 月 7 日~2013年 12月21日指导教师:教研室主任:目录一、课程设计目的 (3)二、问题描述 (3)三、需求分析 (3)四、概要设计 (3)五、详细设计 (4)六、测试分析 (7)七、使用说明 (9)八、测试数据 (10)九、源程序清单 (10)十、模块说明 (19)一.课程设计目的通过实习,了解并初步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。

二.问题描述设计、实现一个商品货架管理系统,实现商品出售,增加,查询(按商品代号,商品名字,生产日期),修改,输出过期商品,输出小于多少数量的商品。

三.需求分析printf("\t\t ******************************************\n");printf("\t\t ----------- 1.建立目前商品信息--------\n");printf("\t\t ----------- 2.添加商品--------\n");printf("\t\t ----------- 3.出售商品--------\n");printf("\t\t ----------- 4.查询商品--------\n");printf("\t\t ----------- 5.修改商品--------\n");printf("\t\t ----------- 6.显示所有商品信息--------\n");printf("\t\t ----------- 0.退出系统--------\n");printf("\t\t ******************************************\n\n");按序号依次实现功能。

商品货架管理--C++数据结构

商品货架管理--C++数据结构

商品货架管理--C++数据结构商品货架管理C++数据结构在现代商业运营中,商品货架管理是一个至关重要的环节。

高效的货架管理不仅能够提升顾客的购物体验,还能优化库存管理,提高销售效率。

而在实现商品货架管理的系统中,C++数据结构发挥着关键作用。

首先,让我们来了解一下什么是商品货架管理。

简单来说,它涉及到对商品在货架上的摆放、库存的监控、商品的分类以及销售数据的分析等多个方面。

一个好的商品货架管理系统应该能够快速准确地回答诸如“某种商品在哪个货架上”“某个货架上还有多少库存”“哪些商品需要补货”等问题。

在实现商品货架管理系统时,C++提供了多种数据结构可供选择。

其中,链表(Linked List)就是一种常见的数据结构。

链表可以方便地进行插入和删除操作,这对于商品的上架和下架处理非常有用。

比如,当新商品到货需要上架时,可以在链表中快速找到合适的位置插入;当商品销售完需要下架时,也能轻松地将其从链表中删除。

另外,栈(Stack)和队列(Queue)也有其应用场景。

栈遵循“后进先出”的原则,在处理商品的临时存储或退货等操作时很有用。

例如,退货的商品可以先暂存在栈中,等待后续处理。

队列则遵循“先进先出”的原则,适合模拟顾客挑选商品的顺序或者商品的补货顺序。

对于商品的分类管理,树(Tree)结构是一个不错的选择。

比如二叉搜索树(Binary Search Tree),可以根据商品的类别、价格等属性进行快速的查找和排序。

通过构建合适的二叉搜索树,可以快速确定某个类别商品的位置或者查找价格范围内的商品。

在处理库存数据时,数组(Array)可能是一个直观的选择。

可以用一个数组来记录每个货架上每种商品的库存数量。

但需要注意的是,数组的大小在初始化时就需要确定,并且插入和删除操作相对较复杂。

如果库存数量的变化比较频繁,动态数组(Dynamic Array)或者向量(Vector)可能更为合适,它们可以根据需要自动调整大小。

商品货架管理实验报告

商品货架管理实验报告

商品货架管理实验报告篇一:商品货架管理实验报告西安郵電學院数据结构课内实验报告题目:商品货架管理院系名称:计算机学院专业名称:软件工程专业班级:学生姓名:学号(8位):一. 需求分析商品货架管理:把商品货架看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近,上货时,需要倒货价,以保证生产日期较近的商品在较下的位置。

(1) 输入的形式和输入值的范围:输入商品名称和日期如:aa XX0505 (2) 输出的形式:商品名称和生产日期如:bb XX0606(3)程序所能达到的功能:商品上货时,需要倒货价,以保证生产日期较近的商品在较下的位置。

(4)测试数据:(5)输入:aaXX0808 bb XX0707 cc XX0505 输出:cc XX0505 bb XX0707 aaXX0808二. 概要设计数据类型的定义:struct information /*定义商品信息*/ {char name[10]; /*名称*/long date; /*生产日期*/};typedef struct/*定义顺序栈*/ {struct information sp[size];int top;}seqstack;(1)int push(seqstack *s1):进栈s1栈从栈顶top=0开始,按商品日期从近到晚输入,如先输入XX0808再输入XX0707然后输入XX0606,再输出结果;流程图:(2)int cmp(seqstack *s1,seqstack *s2,int TOP) 插入新商品,输入新商品名字和日期,1)旧:0707,0808,新0909,比较新旧商品的生产日期,当s1不为空栈和新商品的日期大于s1栈顶的日期如:XX0909-XX0707>0时,把s1栈顶的内容出栈,并进栈道s2,依次进行比较,比较结束后,把新产品的数据进栈s1,然后把s2的数据依次从栈顶进展到s2,。

如图:新商品0909 s12)旧0707,0808,新0606,因为0606-0707>0,直接将新商品进入s1栈;3)旧0606,0909.新0707,流程图:s1s1(3) void pop(seqstack *s1,int TOP)输出插入新商品后的货架商品顺序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告课程名称:数据结构课程设计设计题目:商品货架管理系统系别:计算机科学系专业:软件工程组别:学生姓名: -- 学号: --起止日期: 2013年 12 月 7 日~2013年 12月21日指导教师:教研室主任:目录一、课程设计目的 (3)二、问题描述 (3)三、需求分析 (3)四、概要设计 (3)五、详细设计 (4)六、测试分析 (7)七、使用说明 (9)八、测试数据 (10)九、源程序清单 (10)十、模块说明 (19)一.课程设计目的通过实习,了解并初步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。

二.问题描述设计、实现一个商品货架管理系统,实现商品出售,增加,查询(按商品代号,商品名字,生产日期),修改,输出过期商品,输出小于多少数量的商品。

三.需求分析printf("\t\t ******************************************\n");printf("\t\t ----------- 1.建立目前商品信息--------\n");printf("\t\t ----------- 2.添加商品--------\n");printf("\t\t ----------- 3.出售商品--------\n");printf("\t\t ----------- 4.查询商品--------\n");printf("\t\t ----------- 5.修改商品--------\n");printf("\t\t ----------- 6.显示所有商品信息--------\n");printf("\t\t ----------- 0.退出系统--------\n");printf("\t\t ******************************************\n\n");按序号依次实现功能。

四.概要设计• 4.1 系统用到的抽象数据类型定义:1、//定义结构体typedef struct node{int n; //商品代号char name[20]; //商品名称int date; //生产日期int validity; //保质期(天)int num; //商品数量struct node *next;}LiStack,*sqstack;基本操作:五、详细设计//输出所有商品p的名字、生产日期、保质期。

void print(sqstack p){sqstack L=(LiStack *)malloc(sizeof(LiStack));L=p->next;ifelse}//增加商品sqstack push(LiStack *top){}//创建一个存放商品信息的栈sqstack creat(){}//出售商品sqstack pop(LiStack *top){}//按序号查找商品void SequenceNumberF(LiStack *top){}//按商品名字查询商品void NameF(LiStack *top){}//按商品生产日期查找商品void ProductionDateF(LiStack *top){}//按商品数量查找商品,查找小于该数量的商品void NumberF(LiStack *top){}//date加validity,并返回date,到期时间。

int DateF(int date,int validity){}//查询过期商品信息void OverdueF(LiStack *top){}//查询商品void find(LiStack *top){}//修改商品sqstack update(LiStack *top){}void main(){LiStack *top;char i,j;top=(LiStack *)malloc(sizeof(LiStack));top->next=NULL;printf("\n\n\t\t------------欢迎使用商品货架管理系统------------\n"); while(1){printf("\t\t ******************************************\n");printf("\t\t ----------- 1.建立目前商品信息--------\n");printf("\t\t ----------- 2.添加商品--------\n");printf("\t\t ----------- 3.出售商品--------\n");printf("\t\t ----------- 4.查询商品--------\n");printf("\t\t ----------- 5.修改商品--------\n");printf("\t\t ----------- 6.显示所有商品信息--------\n");printf("\t\t ----------- 0.退出系统--------\n");printf("\t\t ******************************************\n\n");printf("\t\t\t请输入您的操作:");scanf("%s",&i);scanf("%c",&j);printf("\n\n");if(i == '0'){printf("\t\t\t退出成功,欢迎下次使用!\n");break;} else {switch(i){case '1':top=creat();break;case '2':top=push(top);break;case '3':top=pop(top);break;case '4':find(top);break;case '5':top=update(top);break;case '6':print(top);break;default:printf("\t\t\t输入错误,请选择正确的功能\n");}}}}六.测试分析按照附录中的测试数据,得出如下测试、分析结果:1、新建商品信息。

a/b/c/d2、增加商品。

f。

3、出售商品代号3,商品名称c,50个。

4、出售商品代号2,商品名称b,200个。

5、查询,按序号查询,输入1.6、查询,按商品名称查询,输入b。

7、查询,按生产日期查询,输入20131010.8、查询,输入小于数量200的商品。

9、查询,输出20131226时过期的商品。

10、修改商品。

修改商品代号为4的商品。

11、输出货架上的所有商品。

12、退出系统。

七.使用说明1、建立目前商品信息。

输入1,‘-1’表示结束。

按照提示依次输入商品代号、商品名称、生产日期、保质期、数量。

2、添加商品。

输入2,依次输入商品代号、商品名称、生产日期、保质期、数量。

3、出售商品。

输入3,显示所有商品,选择要出售的商品代号、数量,如果出售的数量小于等于该商品有的数量则显示出售成功。

否则显示出售失败。

4、查询商品。

输入4,选择1、2、3则按商品代号、名称、生产日期查询商品,选择4、5,则分别输出小于该数值的商品,输出过期商品。

5、修改商品信息。

输入5,输入修改商品代号,按照提示输入商品名称、生产日期,保质期,数量。

6、输入所有商品信息。

输入6,显示所有商品信息。

7、退出系统。

输入0,退出系统。

八.测试数据如,测分析六九.源程序清单#include<stdio.h>#include<stdlib.h>#include<string.h>//定义结构体typedef struct node{int n; //商品代号char name[20]; //商品名称int date; //生产日期int validity; //保质期(天)int num; //商品数量struct node *next;}LiStack,*sqstack;//输出所有商品p的名字、生产日期、保质期。

void print(sqstack p){sqstack L=(LiStack *)malloc(sizeof(LiStack));L=p->next;if(L==NULL)printf("货架为空。

\n");else{printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n");while(L!=NULL){printf("%d",L->n);printf("\t%s \t\t",L->name);printf("%d \t\t",L->date);printf("%d \t\t",L->validity);printf("%d \t\t\n",L->num);p=L;L=p->next;}printf("\t***************************************\n");}}//增加商品sqstack push(LiStack *top){int validity,num,n;int date;char name[20];LiStack *temp=(LiStack *)malloc(sizeof(LiStack));printf("\t\t\t-----欢迎进入商品添加界面!-----\n");temp=(LiStack *)malloc(sizeof(LiStack));printf("\t增加商品的代号是:");scanf("%d",&n);printf("\t增加的商品名称是:");scanf("%s",name);printf("\t生产日期(年月日,如:20131215:)是:");scanf("%d",&date);printf("\t保质期(天)是:");scanf("%d",&validity);printf("\t数量(个):");scanf("%d",&num);temp->date=date;strcpy(temp->name,name);temp->num=num;temp->validity=validity;temp->n=n;if(top->next==NULL){temp->next=NULL;top->next=temp;}else{temp->next=top->next;top->next=temp;}printf("\t商品添加成功!\n");return (top);}//创建一个存放商品信息的栈sqstack creat(){int n,validity,num;char name[20];int date;LiStack *p;LiStack *top=(LiStack *)malloc(sizeof(LiStack));top->next=NULL;while(1){printf("\t请输入商品代号(int),代号为'-1'表示输入结束:");scanf("%d",&n);if(n<0) break;else{printf("\t请输入%d号——商品名称:",n);scanf("%s",name);printf("\t请输入%d号——生产日期(年月日,如20131215):",n);scanf("%d",&date);printf("\t请输入%d号——保质期(天):",n);scanf("%d",&validity);printf("\t请输入%d号——数量(个):",n);scanf("%d",&num);p=(LiStack *)malloc(sizeof(LiStack));p->date=date;p->validity=validity;strcpy(p->name,name);p->num=num;p->n=n;if(top->next==NULL){p->next=NULL;top->next=p;}else{p->next=top->next;top->next=p;}}}return(top);}//出售商品sqstack pop(LiStack *top){int n,num;LiStack *p,*L;p=(LiStack *)malloc(sizeof(LiStack));L=(LiStack *)malloc(sizeof(LiStack));printf("\t\t\t-----欢迎进入商品出售界面!-----\n");printf("\t----目前商品有:\n");print(top);printf("出售的商品代号是:");scanf("%d",&n);printf("出售的商品数量(个):");scanf("%d",&num);p=top->next;if(top->next==NULL){printf("货架为空,请先添加货物! \n");}else{while(p->next!=NULL){if(p->next->n==n){if(p->next->num<num){printf("出售商品数量小于原有数量,出售商品失败。

相关文档
最新文档