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

合集下载

C语言数据结构课程设计报告库存管理系统

C语言数据结构课程设计报告库存管理系统

XXXXXXX学院XXXXXX 系数据结构课程设计报告书项目名称:家电库存管理系统班级学号:XXXXXXXXXX学生姓名:XXXXX指导老师:XXX完成时间:日X月X 2011年成绩评定:老师签字:25/ 1目录第一章软件设计需求分析..1………………………………………………………………第二章系统分析与设计.................1.................................................................. 2.1 设计分析.. (1)…………………………………………………………………………...1 设计理念2.1.1…………………………………………………………………………...1 设计框架2.1.22.2 详细设计 (2)………………………………………………………………………...2 主要流程图2.2.1………………………………………………………………………2 数据存储结构 2.2.2………………………………………………………………………2 主函数的设计2.2.3………………………………………………………………........3 录入函数的设计2.2.4 …………………………………………………………………....4 查询函数的设计2.2.5…………………………………………………………………....6 删除函数的设计2.2.6 (7)更改函数的设计2.2.7第三章软件测试....8....................................................................................3.1 .......................................................................8函数模块的设计.. (8)添加记录函数的测试 3.1.1……………………………………………………………………8 查询函数的测试3.1.2 (10)删除函数的测试3.1.33.2 文件模块的测试 (10)…………………………………………………………………..10 文件读取的测试3.2.1 (11)文件写入的测试3.2.2第四章软件使用说明书 (13)第五章软件设计总结 (13)第六章参考文献 (13)第七章附录…................................................................. (1425)/ 2第一章软件需求分析说明家电已成为每家每户的必需品,家里的家电种类越来越多。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

商品货架管理实验报告

商品货架管理实验报告

商品货架管理实验报告篇一:商品货架管理实验报告西安郵電學院数据结构课内实验报告题目:商品货架管理院系名称:计算机学院专业名称:软件工程专业班级:学生姓名:学号(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)输出插入新商品后的货架商品顺序。

数据结构课程设计--产品进销存储管理系统精选全文

数据结构课程设计--产品进销存储管理系统精选全文

可编辑修改精选全文完整版课程设计报告课程名称数据结构课程设计设计题目产品进销存储管理系统(java) 专业、班级软件工程1004一、引言(简要说明设计题目的目的、意义、内容、主要任务等)一、设计任务及目的――产品进销存管理系统问题描述:针对某一种行业的库房的产品进销存情况进行管理。

基本要求目的:⑴采用一定的存储结构对库房的货品及其数量进行分类管理;⑵可以进行产品类的添加、产品的添加、产品数量的添加;⑶能够查询库房每种产品的总量、进货日期、销出数量、销售时间二、功能需求分析意义系统的功能主要有:管理员操作:进入系统后,管理员就可以对产品的进货,销售,存货等方面的信息有个详细的了解。

并且可以对产品的类,产品,产品的数量,产品销售信息进行管理,可以添加新的产品信息。

同时对库房每种产品的总量、进货日期、销出数量、销售时间等也可以有详细的了解。

三、主要内容及任务通过java实现这个系统,并用界面的方式展示出来,任务是通过java创建界面JFrame;并添加按钮监听,可以对数据的查询,添加等操作;设计算法对数据进行操作;最终为了数据的不丢失把数据序列化到文件中去,这样也方便数据的添加,查询等操作。

二、正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论等。

正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、结构严谨,符合各学科、专业的有关要求。

)1 . 功能算法设计1.1 各功能函数关系图2 . 详细算法设计2 . 1 . java 基本窗口建立;基本的JFrame窗口的建立。

2 . 2 .建立一个集合,用于存储产品信息;为了数据的不丢失我把数据存储到了文件里。

2 .3 . 添加一个方法;用于添加产品数据信息;添加产品的相关信息,如产品类、产品、产品数量、进货日期、销出数量、销售时间等。

2 . 4 . 添加一个方法;用于查询产品数据信息;查询产品的相关信息,如产品类、产品、产品数量、进货日期、销出数量、销售时间等。

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

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

课程设计报告课程名称:数据结构课程设计设计题目:商品货架管理系统系别:计算机科学系专业:软件工程组别:学生姓名: -- 学号: --起止日期: 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");按序号依次实现功能。

数据结构课程设计报告(仓库管理系统、通讯录管理系统、猴子选大王、

数据结构课程设计报告(仓库管理系统、通讯录管理系统、猴子选大王、

数据布局课程设计陈述目录第一章设计目的 (3)第二章设计任务及要求 (3)一、根本要求 (3)二、内容 (3)第三章标题问题阐发与解答 (4)一、仓库办理系统 (4)1.标题问题要求 (4)2.应用程序功能 (4)3.输入数据类型、格式和内容限制 (6)4.主要模块的算法描述 (6)5.源程序代码 (7)二、通讯录办理系统 (13)1.标题问题要求 (13)2.应用程序功能 (13)3.输入数据类型、格式和内容限制 (15)4.主要算法模块描述 (16)5.源程序代码 (16)三、猴子选大王 (22)1.标题问题要求: (22)2.应用程序功能 (22)3.输入数据类型、格式和内容限制 (23)4.主要算法模块描述 (23)5.源程序代码 (23)四、二叉树运算2 (26)1.标题问题要求 (26)2.应用程序功能 (26)3.输入数据类型、格式和内容限制 (26)4.主要算法模块描述 (26)5.源程序代码 (28)第一章设计目的一、培养学生运用算法与数据布局的根本常识解决实际编程中的数据布局设计和算法设计问题。

二、培养学生独立设计程序与解决问题的能力,培养学生团队协作集成程序模块及调试能力。

三、培养学生初步的软件设计及软件测试的能力。

第二章设计任务及要求一、根本要求学生必需仔细阅读《数据布局》课程设计指导书,当真主动完成课设的要求。

有问题及时主动通过各种方式与教师联系沟通。

学生要阐扬自主学习的能力,充实操纵时间,安排好课设的时间方案,并在课设过程中不竭检测本身的方案完成情况,及时的向教师陈述请示。

课程设计按照教学要求需要一周时间完成,一周中每天〔按每周5天〕至少要上3-4小时的机来调试C语言设计的程序,总共至少要上机调试程序15小时。

按照设计陈述要求编写设计陈述,主要内容包罗目的、意义、道理和实现方法简介、过程阐发及说明、尝试成果情况说明、结论。

每个人必需有可运行的程序,学生能对本身的程序面对教师提问并能熟练地解释清楚,学生答复的问题和程序运行的成果作为评分的主要衡量尺度。

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

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

数据结构课程设计报告:库存管理系统1. 引言库存管理是企业运营中至关重要的一环,它涉及到对产品或物资的存储、配送和销售等方面的管理。

为了提高库存管理的效率和准确性,本报告设计了一个基于数据结构的库存管理系统。

本报告将详细介绍系统的设计思路、功能模块以及数据结构的选择和实现。

2. 系统设计思路2.1 系统目标库存管理系统的主要目标是提供一个方便易用的界面,让用户能够方便地实现库存的管理。

系统需要支持以下功能:•添加新的产品到库存中;•删除库存中的产品;•修改库存中产品的信息;•查询库存中的产品;•统计库存中的产品数量等。

2.2 功能模块根据系统目标,我们将系统划分为以下几个功能模块:1.登录模块:实现用户登录和认证功能,确保只有授权用户可以使用系统;2.库存管理模块:实现库存的增加、删除、修改和查询功能;3.产品分类模块:实现对产品进行分类管理的功能;4.统计模块:实现对库存中产品数量和金额的统计功能。

2.3 数据结构选择为了实现库存管理系统的各个功能模块,我们需要选择适当的数据结构来存储和管理数据。

在本系统中,我们选择了以下几种数据结构:1.数组:数组适用于存储固定大小的数据集合,可以用来存储产品信息和用户信息等;2.链表:链表适用于存储动态大小的数据集合,可以用来存储产品分类信息和产品的记录;3.栈:栈适用于实现后进先出(LIFO)的数据操作,可以用来实现用户登录功能;4.队列:队列适用于实现先进先出(FIFO)的数据操作,可以用来实现产品的进销存管理。

3. 功能模块实现3.1 登录模块实现登录模块需要实现用户登录和认证功能。

我们可以使用栈这种数据结构来管理用户登录信息。

当用户登录时,将用户名和密码入栈,并将栈顶元素与数据库中的用户信息进行验证。

如果验证通过,用户可以继续使用系统;否则,系统将提示用户重新输入。

3.2 库存管理模块实现库存管理模块需要实现库存的增加、删除、修改和查询功能。

我们可以使用数组来存储产品的信息,使用链表来存储产品的记录。

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

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

*******数据结构课内实验报告题目:商品货架管理院系名称:计算机学院专业名称:软件工程专业班级: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、测试结果:谢谢品读~。

商品信息管理系统数据结构课程设计

商品信息管理系统数据结构课程设计

商品信息管理系统数据结构课程设计简介商品信息管理系统是一种用于管理商品信息的软件系统。

通过该系统,商家可以方便地录入、查询、修改和删除商品信息,从而更好地管理自己的商品库存和销售情况。

在设计商品信息管理系统时,合理的数据结构是至关重要的。

本文将深入探讨商品信息管理系统的数据结构设计,并提供一些实用的建议。

为什么需要数据结构在设计商品信息管理系统时,合理的数据结构可以提高系统的运行效率和用户体验。

数据结构是计算机科学的基础,它定义了数据的组织方式和操作规则,可以有效地组织和管理大量的数据。

通过合理选择和设计数据结构,可以使系统更加高效、稳定和易于维护。

商品信息管理系统的数据结构设计1. 商品信息的数据结构商品信息是商品管理系统的核心数据,它包括商品的名称、价格、库存量、销售量等信息。

为了高效地管理商品信息,可以使用以下数据结构:•数组:可以使用数组来存储商品信息,数组的每个元素对应一个商品。

数组的优点是访问速度快,缺点是插入和删除操作比较慢。

•链表:可以使用链表来存储商品信息,链表的每个节点包含一个商品。

链表的优点是插入和删除操作快,缺点是访问速度比较慢。

•哈希表:可以使用哈希表来存储商品信息,哈希表通过将商品名称映射到数组的索引来实现快速的插入、删除和查找操作。

•二叉搜索树:可以使用二叉搜索树来存储商品信息,二叉搜索树的每个节点包含一个商品,左子树的值小于节点的值,右子树的值大于节点的值。

二叉搜索树的优点是插入、删除和查找操作都很快,缺点是树的平衡性可能受到影响。

根据实际需求和系统的规模,选择合适的数据结构来存储商品信息。

2. 商品分类的数据结构商品分类是对商品进行分类管理的重要功能。

为了高效地管理商品分类,可以使用以下数据结构:•树:可以使用树来表示商品分类的层次结构,树的每个节点表示一个商品分类,节点之间通过父子关系连接。

树的优点是插入、删除和查找操作都很快,缺点是树的平衡性可能受到影响。

•图:可以使用图来表示商品分类的关系,图的节点表示商品分类,边表示分类之间的关系。

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

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

#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类型的就没有这种情况了。

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

也是一种遗憾。

数据结构课程设计《商店管理系统》

数据结构课程设计《商店管理系统》

浙江农林大学程序设计综合实习报告设计题目:商店管理系统专业电子信息类班级095姓名陈晓艳学号 2起止时间2010.7.5-2010.7.102009~2010 学年第三学期目录第一章需求分析 (3)第二章概要设计 (3)第三章详细分析 (4)第四章运行结果分析 (11)第五章参考文献 (17)一、需求分析在日常生活中,商店里所存商品成千上万,若没有一个方便快捷的系统来对商品进行有效的管理,我们就会花费很多的人力物力和时间。

《商店管理系统》这一课题,是通过运用数据结构知识中线性表的存储结构和查找,插入,删除等基本运算,来实现对商店的商品简单管理,完成对商品的添加,进货,卖出,查看,删除等基本操作。

同时,通过对这个课题的完成,让大家更好地理解与运用所学知识,提高动手能力,提高编程能力和专业水平,更加增强了同学间的合作组织能力。

二、概要设计1、抽象数据类型定义因程序中有大量的插入、删除,所以用线性表的链表存储结构来实现,ADT List{数据对象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0}数据关系:R1={<ai-1,ai>|ai-1,ai∈D,i=2,…,n}}2、主程序void main(){switch(){Case 1:Case 2:Case 3:……}}3、程序模块:该程序有九个模块:主函数、链表存储结构、添加新商品函数、添加已有商品数量函数、查询商品函数、删除商品函数、卖出商品函数、查看库存函数,页面函数三、详细分析1、存储结构typedef struct{char name[25]; // 商品名称int mount; //商品数量float price; //商品单价long data; //入库日期long num; //商品编码}goods;typedef struct node{goods data;struct node *next;}LNode,*LinkList;2、主函数void main(){int key;LinkList H;H=Creat_LinkList( );strcpy(H->,"computer");H->data.data=20100609;H->data.mount=1000;H->data.num=1;H->data.price=20000;H->next=NULL;LinkList L;L=Creat_LinkList( );strcpy(L->,"car"); L->data.data=20100609; L->data.mount=1000;L->data.num=2;L->data.price=20000;L->next=NULL;H->next=L;while(1){pri();scanf("%d",&key);switch(key){case 0:exit(0);case 1:Insert_LinkList(H);break;case 2:add_LinkList(H);break;case 3:Search(H);break;case 4:H=Del_LinkList(H);break;case 5:Sell(H);break;case 6:Find(H);break;}}}3.、查找函数void Search(LinkList H)//查找商品{int n;LinkList p;long num;char name[25];p=H;printf("请选择:\n");printf("1、按商品名称查询\n");printf("2、按商品编码查询\n");printf("0、退出\n");scanf("%d",&n);switch(n){case 0:exit(0);case 1:printf("请输入需要查找的商品名称:\n");scanf("%s",name);while(p){if(!strcmp(p->,name)){printf("查找成功!\n");printf("商品名称%s\n商品数量%d\n商品单价%f\n入库日期%ld\n商品编码%ld\n",p->,p->data.mount,p->data.price,p->data.dat a,p->data.num);break;}else}if(!p){printf("查找失败,库中不存在此商品!\n");}break;case 2:printf("请输入需要查找的商品编码:\n");scanf("%ld",&num);while(p){if(p->data.num==num){printf("查找成功!\n");printf("商品名称%s\n商品数量%d\n商品单价%f\n入库日期%ld\n商品编码%ld\n",p->,p->data.mount,p->data.price,p->data.dat a,p->data.num);break;}else}if(!p)printf("查找失败,库中不存在此商品!\n");break;}}4、添加商品数量函数void add_LinkList(LinkList H){LinkList p;long num,m;int key;p=H;while(key){printf("请输入商品编码:\n");scanf("%ld",&num);while(p)//在库中查找{if(p->data.num==num)break;elsep=p->next;}if(p)//查到商品{printf("请输入添加的商品数量:\n");scanf("%d",&m);p->data.mount+=m;printf("现在库存此商品%d件\n",p->data.mount);}elseprintf("库中没有该商品!\n");printf("1.继续添加0.退出\n");scanf("%d",&key);}}5、添加新商品函数int Insert_LinkList(LinkList H){LinkList p,q;int key=1,amount;long anum,adata;char aname[25];float aprice;while(key){p=H;q=(LinkList)malloc(sizeof(LNode));if(!q){printf("申请空间失败\n");return 0;}else{printf("输入商品名称:\n");scanf("%s",aname);printf("输入商品数量:\n");scanf("%d",&amount);printf("输入商品单价:\n");scanf("%f",&aprice);printf("输入商品入库日期:\n");scanf("%ld",&adata);printf("输入商品编码:\n");scanf("%ld",&anum);}//把新商品信息赋给新结点strcpy(q->,aname);q->data.data=adata;q->data.mount=amount;q->data.num=anum;q->data.price=aprice;//修改指针q->next=p->next;p->next=q;printf("新商品添加成功!\n");printf("1.继续添加商品0.退出\n");scanf("%d",&key);}return 1;}6、删除商品函数LinkList Del_LinkList(LinkList H){LinkList p,q;int key=1;long num;while(key){printf("请输入需要删除的商品编号:\n");scanf("%ld",&num);p=H;q=p;p=p->next;while(p){if(p->data.num==num){q->next=p->next;free(p);printf("删除成功!\n");break;}else{q=p;p=p->next;}}if(p==NULL)printf("没有你要删除的商品!\n");printf("1.继续删除0.退出\n");scanf("%d",&key);}return H;}7、卖出商品函数void Sell(LinkList H){LinkList p;long num,m;int key;p=H;while(key){printf("请输入商品编码:\n");scanf("%ld",&num);while(p)//在库中查找{if(p->data.num==num)break;elsep=p->next;}if(p)//查到商品{printf("请输入卖出的商品数量:\n");scanf("%d",&m);if(p->data.mount>=m)//库中商品数量够出售{p->data.mount-=m;printf("此商品库中还有%d件\n",p->data.mount);}elseprintf("库中该商品存货不足!\n");}elseprintf("库中没有该商品!\n");printf("1.继续卖出0.退出\n");scanf("%d",&key);}}8、查看库存函数void Find(LinkList H){LinkList p;p=H;printf(" 商品名称商品数量商品价格入库日期商品编码\n");while(p){printf("%20s %10d %10.2f %10ld %10ld\n",p->data.na me,p->data.mount,p->data.price,p->data.data,p->data.num);p=p->next;}}9、页面函数void pri(){printf("===================================\n ");printf("| 商店管理系统|\n");printf("===================================\n ");printf("| 1、添加新商品|\n");printf("| 2、添加已有商品数量|\n");printf("| 3、查询商品信息|\n");printf("| 4、删除商品信息|\n");printf("| 5、卖出商品|\n");printf("| 6、查看库存|\n");printf("| 0、退出|\n");printf("===================================\n ");printf("请输入功能选项:");}四、运行结果分析运行后,进入主界面添加新商品输入1,进入后,按提示输入新商品各项信息后,显示新商品添加成功继续添加按1,退出按0返回主界面添加已有商品输入2,输入需添加的商品编码和数量,添加成功后,会显示该商品现有数量继续添加按1,退出按0返回主界面查询商品信息输入3按商品名称查询输入1,按商品编码查询输入2,退出输入0然后分别按提示输入商品信息,查找成功后,显示出该商品相应的信息返回主界面若所查商品不存在,显示查找失败卖出商品输入5,输入要卖的商品的编码和数量成功后,显示该商品剩余数量按1继续卖出,按0退出若所卖商品库中没有,显示库中没有该商品若卖出的商品数大于库存数,存货全部卖出,并提示存货不足查看库存输入6,屏幕显示出所有商品的各项信息然后返回主界面删除商品信息输入4,输入要删除的商品的编码显示删除成功继续删除按1,退出按0若需要删除的商品库中没有,显示没有要删除的商品退出主界面输入0,系统运行结束五、参考文献1.严蔚敏吴伟民数据结构(C语言版)清华大学出版社2.《数据结构题集》严蔚敏清华大学出版社3.徐孝凯数据结构课程实验清华大学出版社4.《数据结构、算法与应用》Sartaj Sahni 械工业出版社5.杨路明C语言程序设计教程北京邮电大学出版社。

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

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

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,找出其结点删除并释放——单链表的基本操作。

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

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

课程设计任务书2011 —2012学年第1学期电子与信息工程系计算机科学与技术专业 ____________ 班级课程设计名称:数据结构课程设计 ____________________设计题目:______ 库存管理系统 ________________________________完成期限:自2012年1月_2_日至2012 年1 月6日共1 周设计依据、要求及主要内容(可另加附页):一、设计目的熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。

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

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

三、设计内容1)问题描述试设计一库存管理系统,产品信息包括产品编号、名称、价格、数量等(产品编号不重复)2)基本要求该系统应具有以下功能:1、 ------------------------------------------- 产品信息录入功能(产品信息用文件保存)输入2、产品信息浏览功能一一输出3、产品入库4、产品出库5、查询和排序功能:1 )按价格从大到小排序2 )按名称查询6、产品信息删除、修改功能。

四、参考文献[1] 《数据结构》•王红梅•清华大学出版社[2] 《数据结构学习辅导与实验指导》•王红梅•清华大学出版社[3] 《C++程序设计》•钱能•清华大学出版社[4] 《C++程序设计试验指导》•钱能•清华大学出版社⑸《C++程序设计》•谭浩强•清华大学出版社#in clude<iostream> #in clude<stri ng>#include<iomanip>#include<fstream>using namespace std;int count=0;class CData // 定义数据基类{public:CData(){};virtual int Compare(CData &)=0;virtual void Show()=0;virtual ~CData(){};};class CNode // 定义结点基类{private:CData *pData; // 用于指向数据类的指针CNode *pNext; // 用于指向链表的后向指针public:void InputData(CData *pdata){pData=pdata;} // 输入数据void ShowNode(){pData->Show();} // 打印一个节点的数据CData *GetData(){return pData;}friend class CList; // 定义链表类为基类};class CList{CNode *pHead; // 链表头结点指针 public:CList(){pHead=0;};~CList(){DeleteList();}void AddNode(CNode *pnode); //CNode *DeleteNode(CNode *); //CNode *Search(CData &); // 到返回bool IsExist(CData &);void ShowList();// void DeleteList(); // CNode *GetListHead(){return pHead;} //CNode *GetListNextNode(CNode *pnode); // 返回链表指定结点的下一个结点在首部添加结点 删除一个指定的结点,返回该结点的指针 查找一个指定的数据,返回该数据所在的结点在链表的指针,未找 打印整个链表 删除整个链表返回链表首结点};CNode *CList::GetListNextNode(CNode *pnode) // 返回链表指定结点的下一个结点{CNode *p1=pnode;return p1->pNext;};void CList::AddNode(CNode *pnode) // 在首部添加结点{if (pHead==0) // 如果是空链表,插入的结点是唯一的结点{ pHead=pnode;pnode->pNext=0;return;}else // 否则,插入到链表首部{ pnode->pNext=pHead; pHead=pnode;}};CNode *CList::DeleteNode(CNode *pnode) // 删除一个指定的结点,返回该结点的指针{ CNode *p1,*p2;p1=pHead; // 指向首结点while(p1!=pnode&&p1->pNext!=0) // 寻找要删除的结点{p2=p1;p1=p1->pNext; // 结点p2 始终在p1 的后面}if (p1==pHead) // 如果要删除的是首结点{pHead=pHead->pNext; // 将首结点后移return pnode;}p2->pNext=p1->pNext; //p1 指向被删除的结点,将p2 结点与p1 后面的结点连接起来return pnode;}CNode *CList::Search(CData &data) // 查找一个指定的数据,返回指针,若未找到返回0 { CNode *p1=pHead;while(p1) // 从头结点开始查找{if (p1->pData->Compare(data)==0)return p1; // 找到后返回结点指针p1=p1->pNext;}return 0; // 搜索完找不到,返回空指针0}void CList::ShowList() // 打印整个链表{CNode *p1=pHead;while(p1){p1->pData->Show(); p1=p1->pNext;}}void CList::DeleteList() // 删除整个链表结点{CNode *p1,*p2; p1=pHead;while(p1){delete p1->pData;p2=p1;p1=p1->pNext;delete p2;}}class Repository:public CData // 库存为记录,为数据基类的公有派生类{private :char szName[20]; // 库存中数据:商品名、商品数量和入库时间unsigned int szNumber;char szTime[20];char szN;CList ShList;public:Repository(); // 构造函数Repository(char *name,int number,char *time); void SetRecord(char *name, int number,char *time);// int Compare(CData &); // 比较函数,比较商品名void Show();void AddRecord();输入数据函数void Display();void LookUpRecord();void DeleteRecord();void ModifyRecord();void SaveToFile();void Operate(string &strChoice);void ReadFromFile();void Output();};Repository::Repository(){strcpy(szName,"\0");szNumber=0; strcpy(szTime,"\0");}Repository::Repository(char *name,int number,char *time){strcpy(szName,name); szNumber=number; strcpy(szTime,time);szN=name[0];}void Repository::SetRecord(char *name, int number,char *time) // {strcpy(szName,name); szNumber=number; strcpy(szTime,time);szN=name[0];}int Repository::Compare(CData &data) // 比较商品名{输入数据函数return strcmp(szName,temp.szName);}void Repository::Show() // 打印一个结点的数据{cout<<setw(15)<<szName<<setw(15)<<szNumber<<setw(15)<<szTime<<endl;void Repository::AddRecord() // 将记录添加到链表中{CNode *pNode; Repository *pSh;char szName[20],szTime[20]; unsigned int szNumber;cout<<" 请输入新商品名(输入0 退出,并进入系统菜单)cin>>szName;while(strcmp(szName,"0")){cout<<" 请输入新商品入库时间: "; cin>>szTime;cout<<" 请输入新商品数量: "; cin>>szNumber;pSh=new Repository; //pSh->SetRecord(szName,szNumber,szTime); //pNode=new CNode; // pNode->InputData(pSh); //生成新的数据累对象数据类对象赋值生成新的结点结点插入链表ShList.AddNode(pNode);count++;cout<<" 请输入新商品名(输入0 退出,并进入系统菜单)cin>>szName;} cout<<endl<<endl;}void Repository::Display() // 显示全部链表数据{cout<<" 当前操作共有"<<count<<" 条新商品的添加纪录。

商品进销存管理系统(数据库课程设计报告)

商品进销存管理系统(数据库课程设计报告)

商品进销存管理系统(数据库课程设计报告)商品进、销、存系统课程设计报告 11商品编号,销售单价,销售数量。

处于入库信息查询状态时有七个基本属性:入库编号,品种数量,总计金额,入库时间,商品编号,进货单价,数量。

E-R图:管理员 N查询 3 1 1 11 1 1商品信息表销售信息表入库信息表商品信息销售信息入库信息实体属性定义:管理员(因系统简单,不储存管理员信息,因此不定义此实体的属性) 商品信息销售单(销售编号、销售时间、商品编号、销售数量、销售备注) 库存单(商品编号、库存数量)信息修改子系统子系统的功能:A.通过商品编号查找出商品的所有信息B.通过库存编号查找出库存的所有信息商品进、销、存系统课程设计报告 12C.通过销售编号查找出销售的所有信息D.根据查找出来的信息,可以对这些信息进行修改根据需求分析给出的数据流图,参照数据字典中的详细描述,给出商品修改子系统的E-R图:实体属性定义:管理员(因系统简单,不储存管理员信息,因此不定义此实体的属性) 商品销售单(销售编号、销售时间、商品编号、销售数量、销售备注) 库存单(商品编号、库存数量) 信息统计子系统子系统的功能:A.通过商品编号/信息查找出商品的所有信息B.通过商品名称查找出商品的所有信息商品进、销、存系统课程设计报告 13C.对查询所得的数据分类统计,并将统计的结果以视图(View)的形式展现到用户窗口中根据需求分析给出的数据流图,参照数据字典中的详细描述,给出信息统计子系统的E-R图:用户 N N 查看查询 M M N 进销存三级数据表组成 M 统计结果视图实体属性定义:用户(用户名)进销存三级数据表:进货表存货单销售单 (销售编号、销售时间、商品编号、销售数量、销售备注) 统计结果视图(需统计的信息,统计后的信息) 商品销售子系统子系统的功能:A.通过商品编号查找出商品的所有信息B.通过商品名称查找出商品的所有信息C.输入销售数量及备注完成销售交易D.可以随时查看今日销售总额根据需求分析给出的数据流图,参照数据字典中的详细描述,给出商品进、销、存系统课程设计报告 14商品销售子系统的E-R图:客顾 1 库存单 1 对应 1m 对应购买 1 销售单 n 商品对E-R图调整的准则:现实世界中的事物能作为属性对待的尽量作为属性对待;属性和实体的划分:属性中不具有需要描述的信息,即属性是不可分的数据项,不再包含其他信息。

《数据结构》课程设计报告

《数据结构》课程设计报告

《数据结构》课程设计报告《数据结构》课程设计报告如下:一、课程设计分析在学习了数据结构课本理论知识后,为了检验自己所学知识的牢固性巩固大家的理论知识,调动大家的编程兴趣;同时为大家提供一个实践自己,检验自己的平台,以增加大家对将来工作的适应能力;也为了锻炼大家的动手实践能力,遂在学期末进行了本次课程设计。

“数据结构”在计算机科学中是一门综合性的专业基础课。

“数据结构”的研究不仅涉及到计算机硬件的研究范围,而且和计算机软件的研究有着密切的关系,无论是编译程序还是操作系统,都涉及到数据元素在存储器中的分配问题。

在研究信息检索时也必须考虑如何组织数据,以便查找和存取数据元素更为方便。

因此,可以认为“数据结构”是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。

在计算机科学中,“数据结构”不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序和大型应用程序的重要基础。

我们本着自己的兴趣及挑战自己的态度,也为检验我们理论知识的熟练度,锻炼我们动手实践能力,我们选择了小型图书管理系统的编写。

因为我们生活在大学,图书馆是我们学习的天堂,借书和还书又是必不可少的,一个好的图书管理系统对于我们学生和管理人员都会为大家提供很多便利。

本着挑战和创新的思想,我们进行了此次课程设计程序编写及报告撰写。

二、课程设计基本理论运用所学的数据结构相关内容,设计一个小型图书馆管理系统,我们将运用到的原理有:链表的操作,包括插入,删除等;还有数据的排序;文件的操作等;遍历查找,插入排序等原理。

也运用了c语言的基本图形界面,使用户使用界面更加人性化,更加美观。

数据结构的创建是本课程设计的一个重要内容,我们这里使用的是单链表的数据结构,结合c语言语言特点、实际的图书馆管理系统的基本操作实现了一个简单的图书管理系统的正常运行,实现一些简单的功能。

三、课程算法设计通过对图书管理系统内的图书进行添加和删除操作,实现同学借书和还书的记录工作,通过对图书的查找和按指定方式排序,更有利于同学们挑选自己所需要的图书,借阅借书所需时间。

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

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

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

三(需求分析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;基本操作:第 3 页共 30 页05级普本《数据结构课程设计》――《交通咨询系统》设计报告五、详细设计//输出所有商品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) {}第 4 页共 30 页05级普本《数据结构课程设计》――《交通咨询系统》设计报告//按序号查找商品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) {第 5 页共 30 页05级普本《数据结构课程设计》――《交通咨询系统》设计报告}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");}}}}第 6 页共 30 页05级普本《数据结构课程设计》――《交通咨询系统》设计报告六(测试分析按照附录中的测试数据,得出如下测试、分析结果: 1、新建商品信息。

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

f。

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

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

第 7 页共 30 页05级普本《数据结构课程设计》――《交通咨询系统》设计报告 5、查询,按序号查询,输入1.6、查询,按商品名称查询,输入b。

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

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

第 8 页共 30 页05级普本《数据结构课程设计》――《交通咨询系统》设计报告 10、修改商品。

相关文档
最新文档