1、c语言大作业物流配送系统程序文件#include#include#include/日期struct date int year; int month; int day;/订单链表struct article char name20;/物品名称 int num1;/物品编号 char produce20;/产地 char dest20;/目的地 char mode20;/配送模式 int num2;/物品数量 float money;/配送金额 struct date deliver;/配送日期 struct article *next;/指向上一次添加的订单;struct article *h
2、ead;/存储订单信息int Recordcount;/订单数量/添加订单void add() system(cls);/清屏 struct article *p=NULL;/新建一个定单节点 p=(struct article*)malloc(sizeof(struct article);/为新建的订单节点分配内存空间 printf(请输入配送年份:); while(0 = scanf(%d,&p-deliver.year)/输入年份的规范性检查 while(n != getchar() printf(输入无效,请重新输入年份:); printf(请输入配送月份:); while(0 = s
3、canf(%d,&p-deliver.month) | (p-deliver.monthdeliver.month12)/输入月份的规范性检查 while(n != getchar() printf(输入无效,请重新输入月份:); printf(请输入配送日期:); scanf(%d,&p-deliver.day); printf(请输入物品名称:); scanf(%s,p-name); printf(请输入物品编号:); scanf(%d,&p-num1); printf(请输入物品出厂地:); scanf(%s,p-produce); printf(请输入物品配送地:); scanf(%s
4、,p-dest); printf(请输入配送方式:); scanf(%s,p-mode); printf(请输入配送个数:); scanf(%d,&p-num2); printf(请输入配送金额:); scanf(%f,&p-money); p-next=head;/将新建的订单加入订单链表 head=p;/链表头指向新添加的定单节点 Recordcount+;/订单数量加一 system(PAUSE);/显示指定订单的详细信息void myPrint(struct article *p) printf(%st,p-name); printf(%dt,p-num1); printf(%st,p
5、-produce); printf(%st,p-dest); printf(%st,p-mode); printf(%dt,p-num2); printf(%.2ft,p-money); printf(%d-%d-%dn,p-deliver.year,p-deliver.month,p-deliver.day);/显示所有的订单信息void show() system(cls); /遍历订单链表 struct article *p=NULL; printf(*n); printf(名称t编号t产地t目的地t模式t数量t金额t日期n); for(p=head;p!=NULL;p=p-next)
6、myPrint(p); printf(*n);/查找订单void search() system(cls); char namesea30;/名称 int type;/编号 int choice; struct article *p=NULL; printf(1按姓名查找n2按编号查找n ); printf(请输入你的选择:); /scanf(%d,&choice); while(0 = scanf(%d,&choice) | (choice!=1 & choice!=2)/输入选择的规范性检查 while(n != getchar() printf(输入无效,请重新选择:); if(choi
7、ce=1)/按物品名称查找订单 printf(请输入物品名称:); scanf(%s,namesea); for(p=head;p!=NULL;p=p-next) if(strcmp(p-name,namesea)=0)/找到订单,输出其详细信息 printf(*n); printf(名称t编号t产地t目的地t模式t数量t金额t日期n); myPrint(p); printf(*n); else/按物品编号查找订单 printf(请输入物品编号n ); scanf(%d,&type); for(p=head;p!=NULL;p=p-next) if(p-num1=type)/找到订单,输出其详
8、细信息 printf(*n); printf(名称t编号t产地t目的地t模式t数量t金额t日期n); myPrint(p); printf(*n); system(PAUSE);/根据物品名称修改对应订单信息void change() char name30; system(cls); struct article *p=NULL; printf(请输入要更改物品的名称:n); scanf(%s,name); /遍历订单链表,找到对应的订单 for(p=head;p!=NULL;p=p-next) if(strcmp(p-name,name)=0)/找到对应的订单,重新输入其信息 printf
9、(请输入配送年份:); while(0 = scanf(%d,&p-deliver.year)/输入年份的规范性检查 while(n != getchar() printf(输入无效,请重新输入年份:); printf(请输入配送月份:); while(0 = scanf(%d,&p-deliver.month) | (p-deliver.monthdeliver.month12)/输入月份的规范性检查 while(n != getchar() printf(输入无效,请重新输入月份:); printf(请输入配送日期:); scanf(%d,&p-deliver.day); printf(请
10、输入物品名称:); scanf(%s,p-name); printf(请输入物品编号:); scanf(%d,&p-num1); printf(请输入物品出厂地:); scanf(%s,p-produce); printf(请输入物品配送地:); scanf(%s,p-dest); printf(请输入配送方式:); scanf(%s,p-mode); printf(请输入配送个数:); scanf(%d,&p-num2); printf(请输入配送金额:); scanf(%f,&p-money); system(pause);/根据物品名称和配送金额删除对应订单信息void delete_r
11、ec() system(cls); char name20; float money; int choice; struct article *p=NULL,*q=NULL; p=head; q=head; printf(请输入要删除的物品名称:); scanf(%s,name); printf(请输入金额:); scanf(%f,&money); for(;q!=NULL;q=q-next) if(head-money=money)&(strcmp(head-name,name)=0)/要删除的订单为订单列表中的第一个订单 printf(*n); printf(名称t编号t产地t目的地t模式
12、t数量t金额t日期n); myPrint(q); printf(*n); printf(确认删除?n 1是n 2否n); /scanf(%d,&choice); while(0 = scanf(%d,&choice) | (choice!=1 & choice!=2)/输入选择的规范性检查 while(n != getchar() printf(输入无效,请重新选择:); if(choice=1)/删除 head=q-next; Recordcount-; else break;/取消删除 else/要删除的订单不是订单列表中的第一个订单 if(q-money=money)&(strcmp(q
13、-name,name)=0)/找到对应的订单进行删除 printf(*n); printf(名称t编号t产地t目的地t模式t数量t金额t日期n); myPrint(q); printf(*n); printf(确认删除?n 1是n 2否n); /scanf(%d,&choice); while(0 = scanf(%d,&choice) | (choice!=1 & choice!=2)/输入选择的规范性检查 while(n != getchar() printf(输入无效,请重新选择:); if(choice=1)/删除 p-next=q-next; Recordcount-; else b
14、reak;/取消删除 /存储订单链表到文件void logistic() char ch; char file_head=*n名称t编号t产地t目的地t模式t数量t金额t日期n; char file_tail=*n; FILE *fp; if(fp=fopen(.record.txt/*filename*/,w)=NULL) printf(无法打开文件n); exit(0); fputs(file_head,fp);/写入文件头 struct article *p=NULL; for(p=head;p!=NULL;p=p-next)/遍历订单链表,将各个订单信息逐次写入文件 fputs(p-n
15、ame,fp); fprintf(fp,t%dt,p-num1); fputs(p-produce,fp); fprintf(fp,t,); fputs(p-dest,fp); fprintf(fp,t,); fputs(p-mode,fp); fprintf(fp,t%dt,p-num2); fprintf(fp,%.2ft,p-money); fprintf(fp,%d-%d-%dn,p-deliver.year,p-deliver.month,p-deliver.day); fputs(file_tail,fp); rewind(fp); fclose(fp); printf(所有订单信
16、息已经存入ecord.txt文件中!n);/打印主菜单void menu() system(cls); printf(*n); printf(欢迎使用物流配送管理系统n); printf(*n); printf(1:添加记录n); printf(2:显示记录n); printf(3:存储记录n); printf(4:查询记录n); printf(5:更改记录n); printf(6:删除记录n); printf(7:退出n);void main() int n,b=1,s; struct article *head=NULL; void add(); void show(); void log
17、istic(); void search(); void change(); void delete_rec(); void menu(); while(b=1) menu(); printf(请输入您的选择:n); while(0 = scanf(%d,&n) while(n != getchar() printf(输入无效,请重新输入!n); switch(n)/系统功能调用 case 1: add();break; case 2: show();break; case 3: logistic();break; case 4: search();break; case 5: change();break; case 6: delete_rec();break; case 7: exit(0);break; default :printf(errorn); printf(是否返回主菜单? 0是 1否n); while(0 = scanf(%d,&s) | (s!=0 & s!=1) while(n != getchar() printf(输入无效!n); b=b+s;
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2