c语言大作业物流配送系统程序文件Word格式.docx
- 文档编号:722222
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:14
- 大小:16.67KB
c语言大作业物流配送系统程序文件Word格式.docx
《c语言大作业物流配送系统程序文件Word格式.docx》由会员分享,可在线阅读,更多相关《c语言大作业物流配送系统程序文件Word格式.docx(14页珍藏版)》请在冰点文库上搜索。
structarticle*next;
//指向上一次添加的订单
structarticle*head;
//存储订单信息
intRecordcount;
//订单数量
//添加订单
voidadd()
{
system("
cls"
);
//清屏
structarticle*p=NULL;
//新建一个定单节点
p=(structarticle*)malloc(sizeof(structarticle));
//为新建的订单节点分配内存空间
printf("
请输入配送年份:
"
while(0==scanf("
%d"
&
p->
deliver.year))//输入年份的规范性检查
{
while('
\n'
!
=getchar()){}
输入无效,请重新输入年份:
}
请输入配送月份:
deliver.month)||(p->
deliver.month<
1)||p->
deliver.month>
12)//输入月份的规范性检查
输入无效,请重新输入月份:
请输入配送日期:
scanf("
deliver.day);
请输入物品名称:
%s"
p->
name);
请输入物品编号:
num1);
请输入物品出厂地:
produce);
请输入物品配送地:
dest);
请输入配送方式:
mode);
请输入配送个数:
num2);
请输入配送金额:
%f"
money);
p->
next=head;
//将新建的订单加入订单链表
head=p;
//链表头指向新添加的定单节点
Recordcount++;
//订单数量加一
PAUSE"
}
//显示指定订单的详细信息
voidmyPrint(structarticle*p)
%s\t"
%d\t"
%.2f\t"
%d-%d-%d\n"
deliver.year,p->
deliver.month,p->
//显示所有的订单信息
voidshow()
//遍历订单链表
****************************************************************************\n"
名称\t编号\t产地\t目的地\t模式\t数量\t金额\t日期\n"
for(p=head;
p!
=NULL;
p=p->
next)
myPrint(p);
//查找订单
voidsearch()
charnamesea[30];
//名称
inttype;
//编号
intchoice;
1按姓名查找\n2按编号查找\n"
请输入你的选择:
//scanf("
choice);
choice)||(choice!
=1&
&
choice!
=2))//输入选择的规范性检查
输入无效,请重新选择:
if(choice==1)//按物品名称查找订单
printf("
请输入物品名称:
scanf("
namesea);
for(p=head;
if(strcmp(p->
name,namesea)==0)//找到订单,输出其详细信息
{
printf("
myPrint(p);
}
else//按物品编号查找订单
请输入物品编号\n"
type);
if(p->
num1==type)//找到订单,输出其详细信息
//根据物品名称修改对应订单信息
voidchange()
charname[30];
请输入要更改物品的名称:
\n"
name);
//遍历订单链表,找到对应的订单
if(strcmp(p->
name,name)==0)//找到对应的订单,重新输入其信息
{
printf("
while(0==scanf("
while('
scanf("
}
pause"
//根据物品名称和配送金额删除对应订单信息
voiddelete_rec()
charname[20];
structarticle*p=NULL,*q=NULL;
p=head;
q=head;
请输入要删除的物品名称:
请输入金额:
for(;
q!
q=q->
if((head->
money==money)&
(strcmp(head->
name,name)==0))//要删除的订单为订单列表中的第一个订单
myPrint(q);
确认删除?
\n1是\n2否\n"
//scanf("
while('
if(choice==1)//删除
head=q->
next;
Recordcount--;
elsebreak;
//取消删除
else//要删除的订单不是订单列表中的第一个订单
if((q->
(strcmp(q->
name,name)==0))//找到对应的订单进行删除
myPrint(q);
//scanf("
while(0==scanf("
{
while('
printf("
}
if(choice==1)//删除
p->
next=q->
Recordcount--;
elsebreak;
//存储订单链表到文件
voidlogistic()
charch;
charfile_head[]="
****************************************************************************\n名称\t编号\t产地\t目的地\t模式\t数量\t金额\t日期\n"
;
charfile_tail[]="
FILE*fp;
if((fp=fopen("
.\\record.txt"
/*filename*/,"
w"
))==NULL)
无法打开文件\n"
exit(0);
fputs(file_head,fp);
//写入文件头
next)//遍历订单链表,将各个订单信息逐次写入文件
fputs(p->
name,fp);
fprintf(fp,"
\t%d\t"
produce,fp);
\t"
"
dest,fp);
mode,fp);
fputs(file_tail,fp);
rewind(fp);
fclose(fp);
所有订单信息已经存入ecord.txt文件中!
//打印主菜单
voidmenu()
************************************\n"
欢迎使用物流配送管理系统\n"
1:
添加记录\n"
2:
显示记录\n"
3:
存储记录\n"
4:
查询记录\n"
5:
更改记录\n"
6:
删除记录\n"
7:
退出\n"
voidmain()
{intn,b=1,s;
structarticle*head=NULL;
voidadd();
voidshow();
voidlogistic();
voidsearch();
voidchange();
voiddelete_rec();
voidmenu();
while(b==1)
menu();
请输入您的选择:
while(0==scanf("
n))
输入无效,请重新输入!
switch(n)//系统功能调用
case1:
add();
break;
case2:
show();
case3:
logistic();
case4:
search();
case5:
change();
case6:
delete_rec();
case7:
default:
printf("
error\n"
是否返回主菜单?
0是1否\n"
s)||(s!
=0&
s!
=1))
输入无效!
b=b+s;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 作业 物流配送 系统 程序 文件