数据结构课程设计报告仓库管理系统通讯录管理系统猴子选大王Word文档格式.docx
- 文档编号:21119077
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:36
- 大小:400.96KB
数据结构课程设计报告仓库管理系统通讯录管理系统猴子选大王Word文档格式.docx
《数据结构课程设计报告仓库管理系统通讯录管理系统猴子选大王Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告仓库管理系统通讯录管理系统猴子选大王Word文档格式.docx(36页珍藏版)》请在冰豆网上搜索。
按商品编号查询界面如下:
按商品名称查询界面如下:
仓库管理链表删除界面如下:
仓库管理链表输出界面如下:
3.输入数据类型、格式和内容限制
输入数据类型为字符型,但在输入过程中不可出现空格,如在输入商品名称时不可出现空格。
4.主要模块的算法描述
流程图:
5.源程序代码
#include<
stdio.h>
#include"
iostream"
intflag1=0;
#include"
string.h"
stdlib.h"
windows.h"
usingnamespacestd;
typedefstruct{//仓库管理结点类型
charNO[10];
charname[30];
charcount[5];
}DataType;
typedefstructnode{//结点类型定义
DataTypedata;
//结点数据域
structnode*next;
//结点指针域
}ListNode;
typedefListNode*LinkList;
LinkListhead;
ListNode*p;
LinkListCreateList(void);
voidInsertNode(LinkListhead,ListNode*p);
ListNode*ListFind(LinkListhead);
voidDelNode(LinkListhead);
voidPrintList(LinkListhead);
/*******尾插法建立带头结点的仓库管理链表算法*******/
LinkListCreateList(void)
LinkListhead=(ListNode*)malloc(sizeof(ListNode));
//申请头结点
ListNode*p,*rear;
charflag='
y'
;
//intflag=0;
//结束标志置0
rear=head;
//尾指针初始指向头结点
while(flag=='
)
{
p=(ListNode*)malloc(sizeof(ListNode));
//申新结点
printf("
商品编号(10)商品名称(30)商品数量(5)\n"
);
-----------------------------------------------\n"
\n添加商品编号:
\n"
cin>
>
p->
data.NO;
\n添加商品名称:
data.name;
\n添加商品数量:
data.count;
rear->
next=p;
//新结点连接到尾结点之后
rear=p;
//尾指针指向新结点
继续添加记录?
(y/n):
"
flag;
}
rear->
next=NULL;
//终端结点指针置空
returnhead;
//返回链表头指针
}
/*********在仓库管理链表head中插入结点************/
voidInsertNode(LinkListhead,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->
//p2指向表的下一个结点
p1->
//插入p所指向的结点
p->
next=p2;
//连接表中剩余的结点
/**********有序仓库管理链表的查找****************/
ListNode*ListFind(LinkListhead)
ListNode*p;
charnum[10];
charname[9];
charpp;
printf("
==================\n"
a.按商品编号查询\n"
b.按商品名称查询\n"
请选择:
"
p=head->
cin>
pp;
getchar();
if(pp=='
a'
||pp=='
A'
)
请输入要查找的商品编号:
num;
while(p&
strcmp(p->
data.NO,num)<
0)p=p->
if((p==NULL)||strcmp(p->
data.NO,num)>
0)p=NULL;
//没有查到要查找的通讯信息
else
b'
B'
请输入要查找的商品名称:
name;
while(p&
data.name,name)!
=0)p=p->
returnp;
/********仓库管理链表上的结点删除*****************/
voidDelNode(LinkListhead)
charjx;
ListNode*p,*q;
p=ListFind(head);
//调用查找函数
if(p==NULL)
没有查到要删除的商品信息!
return;
}
if(p!
=NULL)printf("
真的要删除该商品吗?
jx;
if(jx=='
||jx=='
Y'
q=head;
while((q!
=NULL)&
(q->
next!
=p))q=q->
q->
next=p->
//删除结点
free(p);
//释放被删结点空间
删除成功!
/********仓库管理链表的输出函数**********/
voidPrintList(LinkListhead)
商品编号商品名称商品数量\n"
--------------------------------------------------------------------------------\n"
while(p!
=NULL)
%15s%20s%23s\n"
p->
data.name,p->
data.count);
---------------------------------------------------------------------------------\n"
p=p->
//后移一个结点
voidmain()
{
intchoice,j=1;
charChoice;
while(j)
\n\n\n\n\n"
\t\t\t\t仓库管理系统\n"
\n\t\t\t******************************"
\n\t\t\t*1---仓库管理链表建立*"
\n\t\t\t*2---仓库管理链表插入*"
\n\t\t\t*3---仓库管理链表查询*"
\n\t\t\t*4---仓库管理链表删除*"
\n\t\t\t*5---仓库管理链表输出*"
\n\t\t\t*0---退出仓库管理系统*"
\n\t\t\t请选择菜单号(0--5):
choice;
getchar();
switch(choice)
{
case1:
{
printf("
**********************************\n"
*仓库管理链表建立*\n"
head=CreateList();
flag1=1;
system("
cls"
break;
}
case2:
if(flag1!
=1){printf("
请先建立表!
Sleep(1500);
*仓库管理链表插入*\n"
商品编号(10)商品名称(30)商品数量\n"
*************************************\n"
p=(ListNode*)malloc(sizeof(ListNode));
//申请新结点
cin>
InsertNode(head,p);
case3:
else
{
printf("
***********************************\n"
*仓库管理链表查询*\n"
p=ListFind(head);
if(p!
=NULL)
{
printf("
商品编号商品名称商品数量\n"
--------------------------------------------------\n"
%s,%s,%s\n"
---------------------------------------------------\n"
}
elseprintf("
没有查到要查询的商品信息!
}
case4:
{
*仓库管理链表删除*\n"
DelNode(head);
case5:
************************************\n"
*仓库管理链表输出*\n"
PrintList(head);
case0:
j=0;
system("
break;
default:
printf("
\t\t\n输入有错,请重新输入!
Sleep(1500);
}
二、通讯录管理系统
通讯录一般包括通讯者的编号、姓名、性别、电话及地址等信息,设计一个通讯录要求实现通讯者的插入、查询、删除、更新、排序操作。
structnode
charnum[5];
//编号
charname[8];
//姓名
charsex;
//性别
chartel[8];
//电话
charaddress[100];
//地址
通讯录链表建立界面如下:
通讯录链表插入界面如下:
通讯录链表查询界面如下:
按编号查询界面如下:
按姓名查询编号如下:
通讯录链表删除界面如下:
通讯录链表输出界面如下:
输入数据类型为字符型,但在输入过程中不可包含空格,如输入地址过程中不可出现空格!
4.主要算法模块描述
typedefstruct{//通讯录结点类型
charsex[3];
charphone[13];
charaddr[31];
/*******尾插法建立带头结点的通讯录链表算法*******/
编号(4)姓名(8)性别电话(11)地址(31)\n"
\n添加的编号:
data.num;
\n添加的姓名:
\n性别:
data.sex;
\n电话:
data.phone;
\n地址:
data.addr;
继续建表?
/*********在通讯录链表head中插入结点************/
data.num,p->
data.num)<
/**********有序通讯录链表的查找****************/
a.按编号查询\n"
b.按姓名查询\n"
请输入要查找者的编号:
data.num,num)<
data.num,num)>
请输入要查找者的姓名:
/********通讯录链表上的结点删除*****************/
charcho;
没有查到要删除的通讯者!
elseif(p!
真的要删除该结点吗?
(y/n)"
cho;
if(cho=='
||cho=='
q=head;
while((q!
q->
free(p);
printf("
/********通讯录链表的输出函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告 仓库 管理 系统 通讯录 猴子 大王