数据结构课程设计-仓库管理系统统
- 格式:doc
- 大小:202.50 KB
- 文档页数:22
一、概述仓库管理系统是管理仓储物品的重要工具,通过合理的数据结构设计,能够高效地管理仓库中的物品进出、库存等情况。
本文旨在设计一个基于C语言的仓库管理系统数据结构,以实现对仓库的有效管理和操作。
二、需求分析1. 仓库管理系统需要能够实现对仓库中不同类型物品的管理,包括物品的入库、出库、库存查询等功能。
2. 系统需要能够对不同的物品进行分类管理,包括对物品的编号、名称、规格、数量等信息的记录和管理。
3. 系统需要具备对物品进行盘点的功能,能够及时更新库存信息。
4. 系统需要实现对仓库内物品的结构化管理,确保物品的存储和检索的高效性和准确性。
三、数据结构设计1. 仓库管理系统主要涉及的数据结构包括:仓库、物品、库存等。
2. 仓库:仓库可以使用链表进行组织,每个节点存储一个仓库的信息,包括仓库的编号、名称、位置区域等。
3. 物品:物品可以使用结构体进行定义,包括物品的编号、名称、规格、数量等信息。
4. 库存:库存可以通过哈希表进行管理,将物品的编号作为关键字,实现对库存的快速查询和插入操作。
四、系统模块设计1. 入库模块:用于向仓库中添加物品,并更新库存信息。
2. 出库模块:用于从仓库中移除物品,并更新库存信息。
3. 查询模块:用于对仓库中的物品和库存信息进行查询。
4. 盘点模块:用于对仓库进行物品的盘点和库存的更新。
五、算法设计1. 入库算法:当向仓库中添加新物品时,需要判断物品是否已存在,若存在则更新数量,若不存在则添加新物品。
2. 出库算法:当从仓库中移除物品时,需要判断库存是否充足,若充足则更新数量,若不足则提示库存不足。
3. 查询算法:通过哈希表和链表进行查询,实现高效的物品和库存信息查询。
4. 盘点算法:遍历仓库中的物品,对库存信息进行更新。
六、系统实现1. 使用C语言编写主程序,包括对仓库的管理和操作。
2. 根据数据结构设计和算法设计,实现对仓库的物品和库存的管理。
3. 使用文件存储来实现对仓库信息的持久化,确保系统重启后数据不丢失。
库存物品信息管理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. 学生能理解仓库系统的基本概念和功能,掌握相关术语。
2. 学生能掌握仓库管理系统的数据录入、查询、更新和删除等基本操作。
3. 学生能了解仓库管理系统在企业管理中的作用和价值。
技能目标:1. 学生能够运用所学知识,独立完成仓库管理系统的基本操作。
2. 学生能够通过小组合作,分析并解决仓库管理中的实际问题。
3. 学生能够利用信息技术工具,对仓库数据进行整理、分析和呈现。
情感态度价值观目标:1. 培养学生对仓库管理系统工作的兴趣,激发学习热情。
2. 培养学生认真负责的工作态度,养成良好的数据管理和操作习惯。
3. 培养学生团队协作意识,学会尊重和倾听他人意见,共同解决问题。
课程性质:本课程为信息技术与学科实践相结合的课程,注重理论与实践相结合,培养学生的实际操作能力和解决问题的能力。
学生特点:学生具备一定的计算机操作基础,对新鲜事物充满好奇,喜欢动手实践,但需加强团队协作和问题分析能力的培养。
教学要求:教师应结合学生特点和课程性质,采用任务驱动、案例分析、小组合作等教学方法,引导学生主动参与,确保课程目标的实现。
同时,注重课程目标的分解和评估,及时了解学生学习成果,调整教学策略,提高教学质量。
二、教学内容1. 仓库系统概述- 了解仓库系统的定义、作用和发展历程。
- 熟悉仓库系统的基本构成和功能模块。
2. 仓库管理系统功能模块- 学习入库管理、出库管理、库存管理、报表统计等模块的功能和使用方法。
- 掌握系统中的数据流转和处理过程。
3. 数据管理操作- 学习数据录入、查询、更新和删除等基本操作。
- 掌握数据筛选、排序和导出等功能,提高数据处理效率。
4. 仓库管理系统应用案例- 分析实际企业仓库管理案例,了解系统在实际工作中的应用。
- 学习利用系统优化库存管理,提高企业运营效率。
5. 信息技术工具应用- 学习使用Excel、Access等软件进行数据整理、分析和呈现。
学号数据结构课程设计设计说明书库存管理系统起止日期: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、退出。
数据结构课程设计报告:库存管理系统1. 引言库存管理是企业运营中至关重要的一环,它涉及到对产品或物资的存储、配送和销售等方面的管理。
为了提高库存管理的效率和准确性,本报告设计了一个基于数据结构的库存管理系统。
本报告将详细介绍系统的设计思路、功能模块以及数据结构的选择和实现。
2. 系统设计思路2.1 系统目标库存管理系统的主要目标是提供一个方便易用的界面,让用户能够方便地实现库存的管理。
系统需要支持以下功能:•添加新的产品到库存中;•删除库存中的产品;•修改库存中产品的信息;•查询库存中的产品;•统计库存中的产品数量等。
2.2 功能模块根据系统目标,我们将系统划分为以下几个功能模块:1.登录模块:实现用户登录和认证功能,确保只有授权用户可以使用系统;2.库存管理模块:实现库存的增加、删除、修改和查询功能;3.产品分类模块:实现对产品进行分类管理的功能;4.统计模块:实现对库存中产品数量和金额的统计功能。
2.3 数据结构选择为了实现库存管理系统的各个功能模块,我们需要选择适当的数据结构来存储和管理数据。
在本系统中,我们选择了以下几种数据结构:1.数组:数组适用于存储固定大小的数据集合,可以用来存储产品信息和用户信息等;2.链表:链表适用于存储动态大小的数据集合,可以用来存储产品分类信息和产品的记录;3.栈:栈适用于实现后进先出(LIFO)的数据操作,可以用来实现用户登录功能;4.队列:队列适用于实现先进先出(FIFO)的数据操作,可以用来实现产品的进销存管理。
3. 功能模块实现3.1 登录模块实现登录模块需要实现用户登录和认证功能。
我们可以使用栈这种数据结构来管理用户登录信息。
当用户登录时,将用户名和密码入栈,并将栈顶元素与数据库中的用户信息进行验证。
如果验证通过,用户可以继续使用系统;否则,系统将提示用户重新输入。
3.2 库存管理模块实现库存管理模块需要实现库存的增加、删除、修改和查询功能。
我们可以使用数组来存储产品的信息,使用链表来存储产品的记录。
仓库管理系统目录1.概述.......................................................................................... 错误!未指定书签。
2.课程设计任务的需求分析...................................................... 错误!未指定书签。
2.1设计任务........................................................................ 错误!未指定书签。
2.2设计要求........................................................................ 错误!未指定书签。
2.3需求描述的规范文档(可选).................................... 错误!未指定书签。
3.概念结构设计.......................................................................... 错误!未指定书签。
3.1概念结构设计工具(模型)........................................ 错误!未指定书签。
3.2管理员信息子系统(局部)........................................ 错误!未指定书签。
3.3零件信息子系统............................................................ 错误!未指定书签。
3. 4库房信息子系统.......................................................... 错误!未指定书签。
3.5总体图............................................................................ 错误!未指定书签。
仓库管理系统1.问题描述建立一个仓库管理程序,可以按货物编号和货物名称查询仓库存储情况,也可以增加或删除货物。
2.功能需求要求完成以下功能:(1)创建仓库管理系统。
(2) 向仓库中存入货物,包括编号、货物名、数量。
(3) 查询某样货物的信息,可以选择按编号查询或按货物名称查询。
(4)从仓库中取出货物,包括该货物数量,可以选择按编号查询或按货物名称查询。
(5) 查询仓库中的所有货物,以表格形式列出,包括编号、货物名、数量。
(6) 退出该仓库管理系统3.实现要点(1)采用单链表建立仓库管理系统,即建立一个带有头结点的空链表。
(2)用户可以插入一条新的货物信息,向链表中插入一个新结点。
也可以添加仓库中已有的货物,修改该货物的结点的货物数量。
(3)用户查询货物信息,通过遍历单链表,找到与之匹配的货物编号或货物名称。
(4)用户可以删除货物信息,通过遍历单链表,找到与之匹配的货物编号或货物名称。
(5)用户可以查询仓库里的存货情况,通过遍历单链表,将每个结点的信息输出。
4.类定义为单链表建立类Link,其类定义如下:#include<iostream>using namespace std;typedef struct{char no[10];char name[30];int count;}DataType;struct Node{DataType data;Node *next;};class Link{public:Link(); //构造函数,建立单链表int Insert(); //插入节点,即添加货物Node * Search(); //查找某个节点void Delete(); //删除节点或更改节点的数据void show(); //遍历单链表,依次输出节点数据char Yn(); //输入(y/n)函数char * No(); //输入货物编号函数void Fprintf(); //将单链表数据写到文件中void Fscanf(); //读取文件中的数据private:Node *first,*real,*p,*q;};在Link类中,提供了如下成员函数:(1)函数声明Link();完成的功能建立一个带有头结点的空链表。
#include〈iostream〉using namespace std;typedef struct{char no[10];char name[30];int count;}DataType;struct Node{DataType data;Node *next;};class Link{public:Link();//构造函数,建立单链表int Insert(); //插入节点,即添加货物Node * Search(); //查找某个节点void Delete();//删除节点或更改节点的数据void show();//输出节点信息char Yn();//输入(y/n)函数char *No();//输入货物编号函数void Fprintf(); //将单链表数据写到文件中void Fscanf();//读取文件中的数据private:Node *first,*real,*p,*q;};int main(){int t=1,flag=1,f=1;char n;Node *p;Link Ku;while(t){printf(”\n\n\n\n\n”);printf(”\n\t\t\t**********************************”);printf(”\n\t\t\t*XXX仓库管理系统*");printf(”\n\t\t\t*1--—存储货物*");printf(”\n\t\t\t*2-——查询货物信息*");printf(”\n\t\t\t* 3———取出货物*");printf(”\n\t\t\t*4———显示仓库内所有货物信息*");printf(”\n\t\t\t* 0—-—退出仓库管理系统*”);printf("\n\t\t\t**********************************”);printf("\n\t\t\t请选择菜单号(0——4):”);f=1;while(f==1){cin〉>n;if(n<’0'||n>’4'){printf(”输入有误,请重新输入(0—-4):");f=1;}elsef=0;}printf(”\n\n”);switch(n){case ’1’:{printf(”**********************************\n”); printf(”*存储货物*\n");printf(”**********************************\n”); //printf(”货物编号货物名称货物数量\n”);//printf(”**********************************\n”);int a=1;while(a==1){a=Ku。
课程设计之仓库管理系统一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握仓库管理系统的相关概念、原理和操作流程;技能目标要求学生能够运用仓库管理系统进行实际操作,提高工作效率;情感态度价值观目标要求学生培养团队合作意识,增强对仓库管理工作的重视程度。
通过分析课程性质、学生特点和教学要求,我们将目标分解为具体的学习成果。
首先,学生需要理解仓库管理的基本概念,如仓库、库存、仓储设备等;其次,学生需要掌握仓库管理系统的操作流程,包括货物入库、库存查询、货物出库等;最后,学生需要能够在实际工作中运用仓库管理系统,提高工作效率。
二、教学内容根据课程目标,我们选择和了以下教学内容。
首先,介绍仓库管理的基本概念,包括仓库、库存、仓储设备等;其次,讲解仓库管理系统的操作流程,如货物入库、库存查询、货物出库等;然后,通过案例分析,让学生了解仓库管理系统在实际工作中的应用;最后,进行实验操作,让学生亲身体验仓库管理系统的使用。
三、教学方法为了激发学生的学习兴趣和主动性,我们选择了多种教学方法。
首先,采用讲授法,向学生讲解仓库管理的基本概念和操作流程;其次,通过讨论法,让学生分组讨论案例,深入理解仓库管理系统的应用;然后,运用案例分析法,让学生分析实际工作中的仓库管理问题;最后,进行实验法,让学生亲自动手操作仓库管理系统。
四、教学资源我们选择了适当的教学资源,以支持教学内容和教学方法的实施。
教材方面,选用《仓库管理系统》教材,为学生提供理论知识的指导;参考书方面,推荐《现代仓库管理》等书籍,拓展学生的知识视野;多媒体资料方面,制作了仓库管理系统的操作视频,让学生更直观地了解实际操作;实验设备方面,准备了仓库管理系统软件和相应的硬件设备,为学生提供实践操作的机会。
五、教学评估为了全面反映学生的学习成果,我们设计了以下评估方式。
平时表现方面,通过观察学生的课堂表现、参与度等,给予客观评价;作业方面,布置与课程内容相关的练习题,检验学生对知识的掌握程度;考试方面,设置期中考试和期末考试,全面测试学生的知识水平和应用能力。
课程设计任务书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<<" 条新商品的添加纪录。
C语言仓库管理系统-数据结构-课程设计C语言仓库管理系统-数据结构课程设计一、程序设计目标1. 问题描述2. 问题分析二、概要设计1. 方案确定2. 程序设计模块连接图3. 模块功能说明三、详细设计1. 数据设计2. 流程框图四、C源程序清单五、调试分析和测试结果六、软件使用说明书七、附录程序设计书题目:仓库货品管理系统一、程序设计目标1.问题描述一个库存货品信息管理系统软件,要求能实现库存货品信息的输入、插入、删除、查找等功能,并能建立和更新的库存信息保存于文件供输出或打印。
对于查找、删除等功能要求能按货品名、货品号分别进行。
每个货品的相关信息包括:货品号、货品名、货品库存量、进货日期、货品生产厂家及供应商等。
2.问题分析实际上要完成的是一个简单数据库管理信息系统的设计,同时要掌握数据结构方面的知识。
二、概要设计1.方案确定库存货品信息管理系统要求实现许多功能,可遵循结构化程序设计思想来进行本系统的设计——自顶向下,逐步细化,也就是将软件设计任务划分成许多容易解决的小的子任务,即分解出许多子功能模块进行设计。
本程序经过分析可划分出6个子任务:输入、输出、插入、删除、查找和保存。
2.程序设计模块连接图库存货品信息管理系统的模块连接结构如下图:3.模块功能说明对本系统的功能进行分析后可作如下的模块化设计:输入模块实现功能:按顺序将货物编号、货物名称、货物数量依次输入,并建立链表将其连接。
当输入的货品编号为0时,输入结束。
插入模块实现功能:向已经存盘的文件中再输入货品的信息,包括货品编号、货品名称、货品数量等等。
删除模块实现功能:在已经存储的文件中删除指定的货品信息,并释放内存空间。
删除可以按照货品编号和货品名称两中方法进行。
查找模块实现功能:在已经存储的文件中查找指定的货品信息。
可以按照查找货品编号和货品名称两种方法进行。
输出模块实现功能:在输入特定的文件名之后,输出该文件中所包含的全部货品信息。
数据结构课程设计题目:仓库管理系统班级:计12本2姓名:***学号:**********完成日期:2013-11-12目录一:程序设计题目 (2)二:程序设计目标 (2)三:问题描述 (2)四:.需求分析 (2)五:概要设计 (2)六:详细设计 (3)1.初始化表 (4)2.仓库管理系统和仓库链表的建立 (4)3.插入数据 (4)4.仓库链表的查询 (5)5.删除数据 (6)6.仓库链表的输出 (6)7.测试分析 (6)8.使用说明 (6)9.数据测试 (6)七:程序源代码 (10)八:课程设计总结 (18)一.程序设计题目:仓库管理系统二.程序设计目标:帮助学生熟练掌握线性表的基本操作在俩种存储结构上的实现,其中以双向链表链表的操作和应用为重点内容。
三.问题描述:建立一个仓库管理程序,可以按顺序和货物名称查询仓库存储情况,也可以增加或删除货物以及建立新的仓库存储系统。
四 .需求分析:1.创建双向链表,设计仓库管理系统。
2.向链表中插入数据,输入数据3.删除链表中的数据4.查找链表中的内容5.销毁双向链表,释放内存空间;6.输出表格五.概要设计:;可以采用双向链表的存储结构,如可定义如下的存储结构:typedef struct dnode /*定义双向链表结构体*/{int number; /*商品编号*/char name[max]; /*商品名称*/int counter; /*商品数量*/struct dnode *prior,*next; /*定义两指针,分别指向其前驱和后继*/}dlnode;六.详细设计:总体操作步骤:(1)分配存储空间,初始化表;(2) 对表进行插入、删除操作;(3)完成操作。
1.初始化表(1)申请内存(2)数据置空(3)置表头,完成操作2.仓库管理系统和仓库里链表的建立3. 插入数据(1)申请内存(2)置数据(3)将结点插入,完成操作4.数据查询(仓库链表的查询)5. 删除数据(1)判断相应结点是否存在(2)从链中取出该结点(3)将结点释放,完成操作6.新的仓库管理系统,仓库链表的输出:7.测试分析白盒:查看代码完整性黑盒:测试是否可以正确的创建,删除,插入,打印,查找等操作8.使用说明插入删除语句:删除1条内容插入语句:插入一条信息自动打印:打印内容9.测试数据:七:程序源代码#include<stdio.h>#include "string.h"#include "stdlib.h"typedef struct { //仓库管理结点类型char NO[10]; //商品编号char name[30]; //商品名称char count[5]; //商品数量} DataType;typedef struct node { //结点类型定义DataType data; //结点数据域struct node *next; //结点指针域} ListNode;typedef ListNode *LinkList;LinkList head;ListNode *p;LinkList CreateList(void);void InsertNode(LinkList head,ListNode *p);ListNode *ListFind(LinkList head);void DelNode(LinkList head);void PrintList(LinkList head);/*******尾插法建立带头结点的仓库管理链表算法*******/ LinkList CreateList(void){LinkList head=(ListNode *)malloc(sizeof(ListNode)); //申请头结点ListNode *p,*rear;char flag='y'; //int flag=0; //结束标志置0rear=head; //尾指针初始指向头结点while (flag=='y'){p=(ListNode *)malloc(sizeof(ListNode)); //申新结点printf(" 商品编号(10) 商品名称(30) 商品数量(5) \n");printf("-----------------------------------------------\n");printf("\n添加商品编号:\n");cin>>p->data.NO;printf("\n添加商品名称:\n");cin>>p->;printf("\n添加商品数量:\n");cin>>p->data.count;rear->next=p; //新结点连接到尾结点之后rear=p; //尾指针指向新结点printf("继续添加记录?(y/n):");cin>>flag;}rear->next=NULL; //终端结点指针置空return head; //返回链表头指针}/*********在仓库管理链表head中插入结点************/void InsertNode(LinkList head,ListNode *p){ListNode *p1,*p2;p1=head;p2=p1->next;while(p2!=NULL && strcmp(p2->data.NO,p->data.NO)<0) {p1=p2; //p1指向刚访问过的结点p2=p2->next; //p2指向表的下一个结点}p1->next=p; //插入p所指向的结点p->next=p2; //连接表中剩余的结点}/**********有序仓库管理链表的查找****************/ ListNode *ListFind(LinkList head){ListNode *p;char num[10];char name[9];char pp;printf("==================\n");printf(" a. 按商品编号查询\n");printf(" b. 按商品名称查询\n");printf("==================\n");printf(" 请选择:");p=head->next;cin>>pp;getchar();if (pp=='a'||pp=='A'){printf("请输入要查找的商品编号:");cin>>num;while (p&&strcmp(p->data.NO,num)<0) p=p->next;if ((p==NULL)||strcmp(p->data.NO,num)>0) p=NULL; //没有查到要查找的通讯信息}elseif (pp=='b'||pp=='B'){printf(" 请输入要查找的商品名称:");cin>>name;while(p&&strcmp(p->,name)!=0) p=p->next;}return p;}/********仓库管理链表上的结点删除*****************/ void DelNode(LinkList head){char jx;ListNode *p,*q;p=ListFind(head); //调用查找函数if (p==NULL){printf("没有查到要删除的商品信息!\n");return;}if(p!=NULL) printf("真的要删除该商品吗?(y/n):");cin>>jx;if (jx=='y'||jx=='Y'){q=head;while ((q!=NULL)&&(q->next!=p)) q=q->next;q->next=p->next; //删除结点free(p); //释放被删结点空间printf("删除成功!\n");}}/********仓库管理链表的输出函数**********/void PrintList(LinkList head){ListNode *p;p=head->next;printf(" 商品编号商品名称商品数量\n");printf("--------------------------------------------------------------------------------\n");while (p!=NULL){printf("%15s%20s%23s\n",p->data.NO,p->,p->data.count);printf("---------------------------------------------------------------------------------\n");p=p->next; //后移一个结点}}void main(){int choice,j=1;char Choice;while(j){printf("\n\n\n\n\n");printf("\t\t\t\t仓库管理系统\n");printf("\n\t\t\t******************************");printf("\n\t\t\t* 1--- 仓库管理链表建立*");printf("\n\t\t\t* 2--- 仓库管理链表插入*");printf("\n\t\t\t* 3--- 仓库管理链表查询*");printf("\n\t\t\t* 4--- 仓库管理链表删除*");printf("\n\t\t\t* 5--- 仓库管理链表输出*");printf("\n\t\t\t* 0--- 退出仓库管理系统*");printf("\n\t\t\t******************************");printf("\n\t\t\t请选择菜单号(0--5):");cin>>choice;getchar();switch(choice){case 1:{printf("**********************************\n");printf("* 仓库管理链表建立*\n");printf("**********************************\n");head=CreateList( );flag1=1;system("cls");break;}case 2:{if(flag1!=1) {printf("请先建立表!"); Sleep(1500);}printf("**********************************\n");printf("* 仓库管理链表插入*\n");printf("**********************************\n");printf("商品编号(10) 商品名称(30) 商品数量\n");printf("************************************* \n");p=(ListNode *)malloc(sizeof(ListNode)); //申请新结点printf("\n添加商品编号:\n");cin>>p->data.NO;printf("\n添加商品名称:\n");cin>>p->;printf("\n添加商品数量:\n");cin>>p->data.count;InsertNode(head,p);system("cls");break;}case 3:{if(flag1!=1) {printf("请先建立表!"); Sleep(1500);}else{printf("***********************************\n");printf("* 仓库管理链表查询*\n");printf("***********************************\n");p=ListFind(head);if (p!=NULL){printf("商品编号商品名称商品数量\n");printf("--------------------------------------------------\n");printf("%s,%s,%s\n",p->data.NO,p->,p->data.count);printf("---------------------------------------------------\n");}else printf("没有查到要查询的商品信息!\n");}break;}case 4:{if(flag1!=1) {printf("请先建立表!"); Sleep(1500);}else{printf("***********************************\n");printf("* 仓库管理链表删除*\n");printf("***********************************\n");DelNode(head); //删除结点}break;}case 5:{if(flag1!=1) {printf("请先建立表!"); Sleep(1500);}else{printf("************************************\n");printf("* 仓库管理链表输出*\n");printf("************************************\n");PrintList(head);}break;}case 0:j=0;system("cls");break;default:printf("\t\t\n 输入有错,请重新输入!\n");Sleep(1500);system("cls");break;}}}八.课程设计总结:通过该课程设计,熟练掌握了单向链表的基本操作。
重庆科技学院《数据结构》课程设计报告学院:_电气与信息工程学院_ 专业班级:计算计科学学生姓名: XXX 学号: 2010******设计地点(单位)__ _ 计算机基础自主学习中心 __ _ _设计题目:__服装仓库管理管理系统的设计______ _______________ ____ _完成日期:2012年 1 月 13 日指导教师评语: ______________________ __________________________________________________________________________________________________________________________________________________________________________________________________________________________ __________ _成绩(五级记分制):______ __________指导教师(签字):________ ________重庆科技学院课程设计任务书摘要随着计算机技术的迅猛发展,人们对管理方式有了新的要求,传统手写记录的方式已经满足不了现代服装库存管理的需求,根据社会的需求,特制作了该服装库存管理软件。
通过该软件能方便的实现对服装库存的管理,该软件管理对象包括服装的品牌、分类、型号、大小、颜色、价格、数量、生产日期、生产厂家名称等;通过对以上信息的封装,再使用单链表实现了产品的出库、入库、数据录入、数据读取、统计等功能;通过这些功能的实现,操作员能对产品信息实现动态的管理。
减少企业的生产成本。
关键字:服装库存封装动态管理链表目录第一章设计内容和要求 (1)1.1 设计内容 (1)1.2 设计要求 (1)第二章需求分析 (2)2.1 数据录入功能 (2)2.2 数据删除功能 (2)2.3 数据的修改 (2)2.4 数据查询 (2)2.5 信息统计 (2)第三章系统设计 (3)3.1 总体功能图 (3)3.2 总体流程图 (4)第四章主要功能设计流程 (5)4.1 录入功能流程图 (5)4.2 入库功能流程图 (5)4.3 修改信息流程图 (6)4.4 出库函数流程图 (7)4.5 统计函数流程图 (7)第五章代码实现 (9)5.1 录入函数代码实现 (9)5.2 出库函数的代码实现 (9)5.3 文件读取的代码实现 (10)5.4 信息查找代码的实现 (11)5.5 文件保存代码的实现 (12)第六章系统测试及使用说明 (13)总结 (14)参考文献 (15)致谢 (16)第一章设计内容和要求1.1 设计内容内容:服装仓库管理系统至少具有:入库、出库、查询、统计等功能。