数据结构毕业课程设计报告仓库管理系统通讯录管理系统Word文档下载推荐.docx
- 文档编号:21609024
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:23
- 大小:297.67KB
数据结构毕业课程设计报告仓库管理系统通讯录管理系统Word文档下载推荐.docx
《数据结构毕业课程设计报告仓库管理系统通讯录管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构毕业课程设计报告仓库管理系统通讯录管理系统Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
一、基本要求
学生必须仔细阅读《数据结构》课程设计指导书,认真主动完成课设的要求。
有问题及时主动通过各种方式与教师联系沟通。
学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时的向教师汇报。
课程设计按照教学要求需要一周时间完成,一周中每天(按每周5天)至少要上3-4小时的机来调试C语言设计的程序,总共至少要上机调试程序15小时。
根据设计报告要求编写设计报告,主要内容包括目的、意义、原理和实现方法简介、过程分析及说明、实验结果情况说明、结论。
每个人必须有可运行的程序,学生能对自己的程序面对教师提问并能熟练地解释清楚,学生回答的问题和程序运行的结果作为评分的主要衡量标准。
二、内容
本次课程设计完成如下模块:
仓库管理系统、通讯录管理系统、猴子选大王及二叉树运算2。
第三章题目分析与解答
一、仓库管理系统
1.题目要求
设计一个仓库管理系统,可以按照顺序和货物名称查询仓库的存储情也可以增加或删除货物。
structnode
{
charNO;
商品编号
charname[max];
商品名称
charcount;
商品数量
};
2.应用程序功能
开始运行时界面如下:
仓库管理链表建立界面如下:
仓库管理链表插入界面如下:
仓库管理链表查询界面如下:
按商品编号查询界面如下:
按商品名称查询界面如下:
仓库管理链表删除界面如下:
仓库管理链表输出界面如下:
3.输入数据类型、格式和内容限制
输入数据类型为字符型,但在输入过程中不可出现空格,如在输入商品名称时不可出现空格。
4.主要模块的算法描述
流程图:
5.源程序代码
#include<
stdio."
);
printf("
\n"
\n添加商品编号:
cin>
>
p->
data.NO;
\n添加商品名称:
data.name;
\n添加商品数量:
data.count;
rear->
next=p;
新结点连接到尾结点之后
rear=p;
尾指针指向新结点
继续添加记录?
(yn):
"
flag;
}
rear->
next=NULL;
终端结点指针置空
return"
printf("
a.按商品编号查询\n"
b.按商品名称查询\n"
==================\n"
请选择:
"
p=>
pp;
getchar();
if(pp=='
a'
||pp=='
A'
)
{
请输入要查找的商品编号:
num;
while(p&
&
strcmp(p->
data.NO,num)<
0)p=p->
next;
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(LinkList"
return;
}
if(p!
=NULL)printf("
真的要删除该商品吗?
cin>
jx;
if(jx=='
y'
||jx=='
Y'
q="
********仓库管理链表的输出函数**********
voidPrintList(LinkList"
while(p!
=NULL)
{
%15s%20s%23s\n"
p->
data.NO,p->
data.name,p->
data.count);
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"
"
*仓库管理链表插入*\n"
商品编号(10)商品名称(30)商品数量\n"
*************************************\n"
p=(ListNode*)malloc(sizeof(ListNode));
申请新结点
cin>
InsertNode("
printf("
*仓库管理链表查询*\n"
***********************************\n"
p=ListFind("
printf("
--\n"
%s,%s,%s\n"
---\n"
}
elseprintf("
没有查到要查询的商品信息!
}
break;
}
case4:
{
if(flag1!
=1){printf("
请先建立表!
Sleep(1500);
else
{
*仓库管理链表删除*\n"
DelNode("
*仓库管理链表输出*\n"
************************************\n"
PrintList(输入有错,请重新输入!
Sleep(1500);
system("
cls"
break;
}
二、通讯录管理系统
通讯录一般包括通讯者的编号、姓名、性别、电话及地址等信息,设计一个通讯录要求实现通讯者的插入、查询、删除、更新、排序操作。
structnode
charnum[5];
编号
charname[8];
姓名
charsex;
性别
chartel[8];
电话
charaddress[100];
地址
通讯录链表建立界面如下:
通讯录链表插入界面如下:
通讯录链表查询界面如下:
按编号查询界面如下:
按姓名查询编号如下:
通讯录链表删除界面如下:
通讯录链表输出界面如下:
输入数据类型为字符型,但在输入过程中不可包含空格,如输入地址过程中不可出现空格!
4.主要算法模块描述
\n添加的编号:
data.num;
\n添加的姓名:
\n性别:
data.sex;
\n电话:
data.phone;
\n地址:
data.addr;
继续建表?
a.按编号查询\n"
b.按姓名查询\n"
请输入要查找者的编号:
data.num,num)<
data.num,num)>
请输入要查找者的姓名:
********通讯录链表上的结点删除*****************
elseif(p!
真的要删除该结点吗?
(yn)"
cho;
if(cho=='
||cho=='
q="
********通讯录链表的输出函数**********
%s,%s,%s,%s,%s\n"
data.num,p->
data.sex,p->
data.phone,p->
data.addr);
\t\t\t\t通信录链表\n"
\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"
*通讯者信息的添加*\n"
编号(4)姓名(8)性别(3)电话(11)地址(31)\n"
*通讯录信息的查询*\n"
没有查到要查询的通讯者!
*通讯录信息的删除*\n"
*通讯录链表的输出*\n"
三、猴子选大王
任务:
一堆猴子都有编号,编号是1,2,3...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
要求:
输入数据:
输入m,nm,n为整数,n<
m
输出形式:
中文提示按照m个猴子,数n个数的方法,输出为大王的猴子是几号,建立一个函数来实现此功能。
程序运行结果如下:
输入数据为整型,切勿输入整形以外数据类型,否则程序将报错。
#include"
iostream"
stdlib.)
inti;
p=;
i++)
{将猴子顺序编号
q=(ListNode*)malloc(sizeof(ListNode));
q->
data=i;
p->
next=q;
p=q;
return,inti)
intj,k;
ListNode*pp,*t;
*删除节点前驱*
p=i;
while(i!
=1)
for(j=0;
j<
n;
j++)
{数到第n个猴子
pp=p;
p=p->
if(!
p)p=k;
返回最后一只猴子编号
inti,c,k,flag=0;
cout<
<
请输入猴子数量"
endl;
i;
--将猴子顺序编号--"
printlist(Create(i));
调用将猴子顺序编号的函数
endl<
-----编号结束-----"
while(!
flag)
cout<
第几个猴子离开?
c;
if(c>
i)cout<
输入数量大于猴子数量,请重新输入"
if(c<
i||c==i)flag=1;
k=King("
return;
elseif(x<
data)
lchild;
else
rchild;
if(x<
q->
lchild=s;
else
rchild=s;
*=============将二叉树叶子结点利用指针rchild生成单链表=====================*
voidPreOrderTraverse(liuyu*root)
liuyu*n;
n=root;
if(!
n)return;
if(n->
lchild==NULL&
n->
rchild==NULL)
{判断叶子结点并利用指针rchild生成单链表
;
lchild)PreOrderTraverse(n->
lchild);
rchild)PreOrderTraverse(n->
rchild);
return;
************查找二叉树第最左边第一个叶子结点********
liuyuFinFLea(liuyu*root)
rchild==NULL)
{查找最左边第一个叶子结点,在链表输出时调用
first=n;
lchild){n=n->
FinFLea(n);
elseif(n->
rchild){n=n->
return*first;
******************递归输出二叉树*****************
voidprinttree(liuyu*root)
if(root)cout<
root->
data<
;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 毕业 课程设计 报告 仓库 管理 系统 通讯录