数据结构毕业课程设计报告仓库管理系统通讯录管理系统.docx

上传人:b****6 文档编号:8472784 上传时间:2023-01-31 格式:DOCX 页数:23 大小:297.67KB
下载 相关 举报
数据结构毕业课程设计报告仓库管理系统通讯录管理系统.docx_第1页
第1页 / 共23页
数据结构毕业课程设计报告仓库管理系统通讯录管理系统.docx_第2页
第2页 / 共23页
数据结构毕业课程设计报告仓库管理系统通讯录管理系统.docx_第3页
第3页 / 共23页
数据结构毕业课程设计报告仓库管理系统通讯录管理系统.docx_第4页
第4页 / 共23页
数据结构毕业课程设计报告仓库管理系统通讯录管理系统.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

数据结构毕业课程设计报告仓库管理系统通讯录管理系统.docx

《数据结构毕业课程设计报告仓库管理系统通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构毕业课程设计报告仓库管理系统通讯录管理系统.docx(23页珍藏版)》请在冰豆网上搜索。

数据结构毕业课程设计报告仓库管理系统通讯录管理系统.docx

数据结构毕业课程设计报告仓库管理系统通讯录管理系统

(此文档为word格式,下载后您可任意编辑修改!

数据结构课程设计报告

目录

第一章设计目的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

四、二叉树运算226

1.题目要求26

2.应用程序功能26

3.输入数据类型、格式和内容限制26

4.主要算法模块描述26

5.源程序代码28

第一章设计目的

一、培养学生运用算法与数据结构的基本知识解决实际编程中的数据结构设计和算法设计问题。

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

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

第二章设计任务及要求

一、基本要求

学生必须仔细阅读《数据结构》课程设计指导书,认真主动完成课设的要求。

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

学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时的向教师汇报。

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

根据设计报告要求编写设计报告,主要内容包括目的、意义、原理和实现方法简介、过程分析及说明、实验结果情况说明、结论。

每个人必须有可运行的程序,学生能对自己的程序面对教师提问并能熟练地解释清楚,学生回答的问题和程序运行的结果作为评分的主要衡量标准。

二、内容

本次课程设计完成如下模块:

仓库管理系统、通讯录管理系统、猴子选大王及二叉树运算2。

第三章题目分析与解答

一、仓库管理系统

1.题目要求

设计一个仓库管理系统,可以按照顺序和货物名称查询仓库的存储情也可以增加或删除货物。

structnode

{

charNO;商品编号

charname[max];商品名称

charcount;商品数量

};

2.应用程序功能

开始运行时界面如下:

仓库管理链表建立界面如下:

仓库管理链表插入界面如下:

仓库管理链表查询界面如下:

按商品编号查询界面如下:

按商品名称查询界面如下:

仓库管理链表删除界面如下:

仓库管理链表输出界面如下:

3.输入数据类型、格式和内容限制

输入数据类型为字符型,但在输入过程中不可出现空格,如在输入商品名称时不可出现空格。

4.主要模块的算法描述

流程图:

5.源程序代码

#include

printf("\n");

printf("\n添加商品编号:

\n");

cin>>p->data.NO;

printf("\n添加商品名称:

\n");

cin>>p->data.name;

printf("\n添加商品数量:

\n");

cin>>p->data.count;

rear->next=p;新结点连接到尾结点之后

rear=p;尾指针指向新结点

printf("继续添加记录?

(yn):

");

cin>>flag;

}

rear->next=NULL;终端结点指针置空

return");

printf("a.按商品编号查询\n");

printf("b.按商品名称查询\n");

printf("==================\n");

printf("请选择:

");

p=>>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;没有查到要查找的通讯信息

}

else

if(pp=='b'||pp=='B')

{

printf("请输入要查找的商品名称:

");

cin>>name;

while(p&&strcmp(p->data.name,name)!

=0)p=p->next;

}

returnp;

}

********仓库管理链表上的结点删除*****************

voidDelNode(LinkList");

return;

}

if(p!

=NULL)printf("真的要删除该商品吗?

(yn):

");

cin>>jx;

if(jx=='y'||jx=='Y')

{

q=");

}

}

********仓库管理链表的输出函数**********

voidPrintList(LinkList");

printf("\n");

while(p!

=NULL)

{

printf("%15s%20s%23s\n",p->data.NO,p->data.name,p->data.count);

printf("\n");

p=p->next;后移一个结点

}

}

voidmain()

{

intchoice,j=1;

charChoice;

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)

{

case1:

{

printf("**********************************\n");

printf("*仓库管理链表建立*\n");

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->data.name;

printf("\n添加商品数量:

\n");

cin>>p->data.count;

InsertNode(");

printf("*仓库管理链表查询*\n");

printf("***********************************\n");

p=ListFind(");

printf("--\n");

printf("%s,%s,%s\n",p->data.NO,p->data.name,p->data.count);

printf("---\n");

}

elseprintf("没有查到要查询的商品信息!

\n");

}

break;

}

case4:

{

if(flag1!

=1){printf("请先建立表!

");Sleep(1500);}

else

{

printf("***********************************\n");

printf("*仓库管理链表删除*\n");

printf("***********************************\n");

DelNode(");

printf("*仓库管理链表输出*\n");

printf("************************************\n");

PrintList(输入有错,请重新输入!

\n");Sleep(1500);system("cls");break;

}

}

}

二、通讯录管理系统

1.题目要求

通讯录一般包括通讯者的编号、姓名、性别、电话及地址等信息,设计一个通讯录要求实现通讯者的插入、查询、删除、更新、排序操作。

structnode

{

charnum[5];编号

charname[8];姓名

charsex;性别

chartel[8];电话

charaddress[100];地址

};

2.应用程序功能

开始运行时界面如下:

通讯录链表建立界面如下:

通讯录链表插入界面如下:

通讯录链表查询界面如下:

按编号查询界面如下:

按姓名查询编号如下:

通讯录链表删除界面如下:

通讯录链表输出界面如下:

3.输入数据类型、格式和内容限制

输入数据类型为字符型,但在输入过程中不可包含空格,如输入地址过程中不可出现空格!

4.主要算法模块描述

流程图:

5.源程序代码

#include

printf("\n");

printf("\n添加的编号:

\n");

cin>>p->data.num;

printf("\n添加的姓名:

\n");

cin>>p->data.name;

printf("\n性别:

\n");

cin>>p->data.sex;

printf("\n电话:

\n");

cin>>p->data.phone;

printf("\n地址:

\n");

cin>>p->data.addr;

rear->next=p;新结点连接到尾结点之后

rear=p;尾指针指向新结点

printf("继续建表?

(yn):

");

cin>>flag;

}

rear->next=NULL;终端结点指针置空

return");

printf("a.按编号查询\n");

printf("b.按姓名查询\n");

printf("==================\n");

printf("请选择:

");

p=>>pp;

if(pp=='a'||pp=='A')

{

printf("请输入要查找者的编号:

");

cin>>num;

while(p&&strcmp(p->data.num,num)<0)p=p->next;

if((p==NULL)||strcmp(p->data.num,num)>0)p=NULL;没有查到要查找的通讯信息

}

else

if(pp=='b'||pp=='B')

{

printf("请输入要查找者的姓名:

");

cin>>name;

while(p&&strcmp(p->data.name,name)!

=0)p=p->next;

}

returnp;

}

********通讯录链表上的结点删除*****************

voidDelNode(LinkList");

return;

}

elseif(p!

=NULL)

{

printf("真的要删除该结点吗?

(yn)");

cin>>cho;

if(cho=='y'||cho=='Y')

{

q=");

}

}

}

********通讯录链表的输出函数**********

voidPrintList(LinkList");

printf("\n");

while(p!

=NULL)

{

printf("%s,%s,%s,%s,%s\n",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);

printf("\n");

p=p->next;后移一个结点

}

}

voidmain()

{

intchoice,j=1;

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)

{

case1:

{

printf("**********************************\n");

printf("*通讯录链表的建立*\n");

printf("**********************************\n");

");

printf("*通讯者信息的添加*\n");

printf("**********************************\n");

printf("编号(4)姓名(8)性别(3)电话(11)地址(31)\n");

printf("*************************************\n");

p=(ListNode*)malloc(sizeof(ListNode));申请新结点

printf("\n添加的编号:

\n");

cin>>p->data.num;

printf("\n添加的姓名:

\n");

cin>>p->data.name;

printf("\n性别:

\n");

cin>>p->data.sex;

printf("\n电话:

\n");

cin>>p->data.phone;

printf("\n地址:

\n");

cin>>p->data.addr;

InsertNode(");

printf("*通讯录信息的查询*\n");

printf("***********************************\n");

p=ListFind(");

printf("--\n");

printf("%s,%s,%s,%s,%s\n",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);

printf("---\n");

}

elseprintf("没有查到要查询的通讯者!

\n");

}

break;

}

case4:

{

if(flag1!

=1){printf("请先建立表!

");Sleep(1500);}

else

{

printf("***********************************\n");

printf("*通讯录信息的删除*\n");

printf("***********************************\n");

DelNode(");

printf("*通讯录链表的输出*\n");

printf("************************************\n");

PrintList(输入有错,请重新输入!

\n");Sleep(1500);system("cls");break;

}

}

}

三、猴子选大王

1.题目要求:

任务:

一堆猴子都有编号,编号是1,2,3...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。

要求:

输入数据:

输入m,nm,n为整数,n

输出形式:

中文提示按照m个猴子,数n个数的方法,输出为大王的猴子是几号,建立一个函数来实现此功能。

2.应用程序功能

程序运行结果如下:

3.输入数据类型、格式和内容限制

输入数据为整型,切勿输入整形以外数据类型,否则程序将报错。

4.主要算法模块描述

流程图:

5.源程序代码

#include"iostream"

#include"stdlib.)

{

inti;

p=;i++)

{将猴子顺序编号

q=(ListNode*)malloc(sizeof(ListNode));

q->data=i;

p->next=q;

p=q;

p->next=NULL;

}

return,inti)

{

intj,k;

ListNode*pp,*t;*删除节点前驱*

p=i;

while(i!

=1)

{

for(j=0;j

{数到第n个猴子

pp=p;

p=p->next;

if(!

p)p=k;返回最后一只猴子编号

}

voidmain()

{

inti,c,k,flag=0;

cout<<"请输入猴子数量"<

cin>>i;

cout<<"--将猴子顺序编号--"<

printlist(Create(i));调用将猴子顺序编号的函数

cout<

while(!

flag)

{

cout<<"第几个猴子离开?

"<

cin>>c;

if(c>i)cout<<"输入数量大于猴子数量,请重新输入"<

if(c

}

k=King(");

return;

}

elseif(xdata)

p=p->lchild;

else

p=p->rchild;

}

if(xdata)

q->lchild=s;

else

q->rchild=s;

}

*=============将二叉树叶子结点利用指针rchild生成单链表=====================*

voidPreOrderTraverse(liuyu*root)

{

liuyu*n;

n=root;

if(!

n)return;

if(n->lchild==NULL&&n->rchild==NULL)

{判断叶子结点并利用指针rchild生成单链表

;

;

return;

}

if(n->lchild)PreOrderTraverse(n->lchild);

if(n->rchild)PreOrderTraverse(n->rchild);

return;

}

************查找二叉树第最左边第一个叶子结点********

liuyuFinFLea(liuyu*root)

{

liuyu*n;

n=root;

if(n->lchild==NULL&&n->rchild==NULL)

{查找最左边第一个叶子结点,在链表输出时调用

first=n;

}

if(n->lchild){n=n->lchild;FinFLea(n);}

elseif(n->rchild){n=n->rchild;FinFLea(n);}

return*first;

}

******************递归输出二叉树*****************

voidprinttree(liuyu*root)

{

if(root)cout<data<<"";

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1