数据结构课程设计Word文件下载.docx
《数据结构课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计Word文件下载.docx(24页珍藏版)》请在冰点文库上搜索。
string.h>
malloc.h>
#definemax32
intifempty=0;
//标志,判断链表是无否为空
typedefstructdnode//定义双向链表结构体
{
intnumber;
//货物编号
charname[max];
//货物名称
intcounter;
//货物数量
intprice;
//货物的价格
intt_price;
//总价
structdnode*prior,*next;
//定义两指针,分别指向其前驱和后继
}dlnode;
//函数源头说明
dlnode*create(dlnode*L);
dlnode*input(dlnode*L);
dlnode*output(dlnode*L);
dlnode*outnum(dlnode*L);
dlnode*outname(dlnode*L);
dlnode*current(dlnode*L);
dlnode*modify(dlnode*S);
voidquit(dlnode*S);
voidsearch(dlnode*L);
voidprint(dlnode*L);
voidsearchnum(dlnode*L);
voidsearchname(dlnode*L);
voiddisplay(dlnode*L);
voidxianshi(dlnode*L,dlnode*S);
voidmain()
intx;
dlnode*L,*S,*Q;
if(!
(L=(dlnode*)malloc(sizeof(dlnode))))//分配空间
{
printf("
\n"
);
exit
(1);
}
create(L);
///调用函数,创建头节点
(S=(dlnode*)malloc(sizeof(dlnode))))//分配空间
create(S);
while
(1)
{////////////////////////主菜单///////////////////////////
*****************************\n"
1.货物出库和入库\n"
2.查找货物表\n"
printf("
3.修改货物表\n"
4.缺货登记\n"
5.货物信息显示\n"
0.退出\n"
选择0--5:
"
scanf("
%d"
&
x);
switch(x)
case2:
search(L);
break;
//调用查找函数
case1:
current(L);
//调用入库出库函数
case3:
quit(L);
//调用修改函数
case4:
Q=modify(S);
//调用修改函数
case5:
xianshi(L,Q);
//调用函数
case7:
print(L);
//调用打印函数
case0:
printf("
\n谢谢使用!
exit(0);
//退出程序
default:
\n请输入0—4选择!
getchar();
getchar();
}
voidxianshi(dlnode*L,dlnode*Q)
{
inta;
=====================\n"
1.显示库内货物信息\n"
2.显示缺货信息\n"
====================\n"
a);
if(a==1)
display(L);
else
display(Q);
dlnode*create(dlnode*L)//创建链表头节点
欢迎使用我的仓库管理系统\n"
ifempty=0;
///////初始化头节点的值////////
L->
next=NULL;
L->
prior=NULL;
number=L->
counter=0;
strcpy(L->
name,"
"
returnL;
voidquit(dlnode*L)///查找的主要菜单
intnum,flag=0;
//flag为是否找到的标志
dlnode*head=L;
if(ifempty==0)
没有货物被输入\n"
return;
输入你要修改的货物编号:
num);
while((L=L->
next)!
=head)
if(L->
number==num)
{flag=1;
//flag为1时表示找到
找到指定编号货物\n"
\n编号:
%d\n"
L->
number);
名称:
%s\n"
name);
数量:
counter);
printf("
价格:
price);
总价:
%d\n\n"
t_price);
输入新货物信息:
\n\n"
编号:
scanf("
%s"
name);
}
print(head);
if(flag==0)//flag为0时表示没有找到
没有找到指定编号货物,请查看是否还有货物。
voidsearch(dlnode*L)///查找的主要菜单
inty;
没有输入货物!
1.按编号查询\n"
2.按货物名称查询\n"
0.返回上一层\n"
选择0--2:
y);
switch(y)
searchnum(L);
//调用按编号查找的函数
searchname(L);
//调用按名称查找的函数
return;
//返回
输入有错!
请从0--2中选择!
voidsearchnum(dlnode*L)//按编号查找的函数
//flag为是否找到的标志
输入你要查找的货物编号:
voidsearchname(dlnode*L)//按名称查找的函数
intflag=0;
charna[32];
输入你要查找的货物名称\n"
na);
if(strcmp(L->
name,na)==0)
找到指定名称货物\n"
dlnode*modify(dlnode*S)
{inty;
========================\n"
1.添加缺货信息\n"
选择0--1:
input(S);
//调用入库函数
return(S);
//返回上一层
输入错误!
请从0--1中选择!
dlnode*current(dlnode*L)//货物出库入库函数
1.货物入库\n"
2.货物出库\n"
input(L);
output(L);
//调用出库函数
return(L);
dlnode*input(dlnode*L)//定义入库函数
dlnode*in,*head;
head=in=(dlnode*)malloc(sizeof(dlnode));
//分配空间
head=L;
\n请输入货物数据:
in->
next==NULL)//如果只有头节点,
{//把刚输入的in节点
next=in;
//跟在头节点后面
prior=in;
in->
next=L;
prior=L;
ifempty++;
//ifempty加1
{//如果当前L的下一个节点不是头节点
{//如果输入的数大于L->
number,则插到L的前面
number<
number)
prior=L->
prior;
prior->
return(head);
//输入的编号比其它编号都小,则插到最后个节点,并首尾相连
head->
prior=head->
next=head;
returnhead;
dlnode*output(dlnode*L)//出库的函数
if(ifempty==0)//检测是否有货物输入
没有货物输入系统\n"
=============\n"
1.按编号出库\n"
2.按名称出库\n"
==============\n"
outnum(L);
//调用按编号出库函数
outname(L);
//调用按名称出库函数
entererror!
Pleaseinput0--2!
}
dlnode*outnum(dlnode*L)//按编号出库函数
intnum;
请输入出库货物的编号:
{//如果找到就删除节点
next=L->
next;
next->
ifempty--;
//ifempty减1
编号为%d的货物成功出库"
num);
print(head);
没有此编号的货物,请查看是否还有货物。
return(head);
dlnode*outname(dlnode*L)//按名称出库函数
请输入出库货物的名称:
名称为%s的货物成功出库"
na);
没有此名称的货物,请查看是否还有货物。
voiddisplay(dlnode*L)//显示货物清单
没有货物可显示\n"
L=L->
do
{
}while((L=L->
=head);
voidprint(dlnode*L)//把信息输入文件
charfilename[max]="
d:
\\information.txt"
;
FILE*out;
没有货物可输出\n"
if((out=fopen(filename,"
w"
))==NULL)
打开文件失败!
do{
fprintf(out,"
编号:
%d\n名称:
%s\n数量:
%d\n价格:
%d\n总价:
number,L->
name,L->
counter,L->
price,L->
信息以输入到文件中!
fclose(out);
【调试分析】:
主菜单页面
1、选择1的货物出库和入库选项页面:
(1)选择1:
货物入库选项(操作时添加了多个,选取部分插入)
(2)选择2:
货物出库选项
按编号出库
a.输入库内没有的商品编号:
b.输入库内有的商品编号:
选择2的按名称出库选项:
(3)选择0:
退出选项
2.选择2的查询选项
(1)选择1:
按编号查询
(2)选择2:
按商品名查询选项
3.选择3的修改商品信息选项
4.选择添4的缺货登记选项
选择添加缺货信息:
5.选择5:
显示库内信息
选择1的显示库内信息:
选择2的现实缺货信息:
5.选择0:
【实验总结】
经过这次对数据结构的课程设计,收获最大的就是我能熟悉掌握了对链表这一数据结构的使用,能准确的对其进行插入、删除和修改等功能;
其次是重新复习了文件的使用方法,将输入的信息成功的保存在文档文件中。
在刚开始这个课程设计的时候,由于对文件的使用还不太熟悉,所以导致信息不能正确的保存,再有就是对链表的操作,起初是比较笨拙的,就是不能自如的使用。
在调式的过程中要反复的进行修改,因为有些地方并不能如愿的显示自己想要的结果,再有就是页面不是很整齐也要反复的对程序进行修改,是页面更整齐好看。
总之经过的课程设计,我更了解到了数据结构的功能非常的强大,不仅仅是自己做出来的东西让我这么认为,因为在做的过程中少不了和同学交流,在交流的过程中看到其他同学用数据结构