C语言课程设计之快递包裹系统
实现的功能
1.对于整个系统的加密,即设置密码,主要用到了字符串的对比;
2.界面设计;
3.基本信息的增删改查;
4.单号排序;
5.打印。
这是一些用到的函数声明
//函数声明
void password(); //系统加密
void menu(); //菜单栏
void establish();//输入信息
void revamp(); //修改信息
void del(); //删除信息
void save(); //保存信息
void search(); //查询信息
void sort(); //单号排序
void read(); //读取信息
void sum(); //统计包裹数
void print(); //打印报表typedef struct Express
{char sender[100];//寄件方char receiver[100];//收件方char senderaddress[100];//寄件方地址char receiveraddress[100];//收件方地址char tracknumber[100];//快递单号char phonenumber1[100];//寄件方电话号码char phonenumber2[100];//收件方电话号码
}express;
加密模块
int main()
{ password(); //系统加密system("color f3");//改变窗口背景及字体颜色menu();
}void password()//系统加密
{char a[100],b[100]="666666";printf("————————快递包裹系统V1.0————————\n");printf("请输入登录密码:");scanf("%s",&a);if(strcmp(a,b)==0){printf("登陆成功!\n");system("pause");//暂停}else{ printf("密码输入错误!无法进入系统!\n");exit(0);}
}
界面菜单
void menu() //菜单栏
{ int n;while(1){ system("cls");//清屏puts("\t 快递包裹系统V1.0");puts("***************MENU**************");puts("*\t 1.输入信息\t\t*");puts("*\t 2.修改信息\t\t*");puts("*\t 3.删除信息\t\t*");puts("*\t 4.保存信息\t\t*");puts("*\t 5.查询信息\t\t*");puts("*\t 6.单号排序\t\t*");puts("*\t 7.读取信息\t\t*");puts("*\t 8.统计数量\t\t*");puts("*\t 9.打印报表\t\t*");puts("*\t 0.退出\t\t*");puts("*********************************");puts("请输入序号:"); n=getchar();//从键盘输入一个字符switch(n){case'1':establish();break;//输入信息case'2':revamp();break; //修改信息case'3':del();break; //删除信息case'4':save();break; //保存信息case'5':search();break; //查询信息case'6':sort();break; //单号排序case'7':read();break; //读取信息case'8':sum();break; //统计数量case'9':print();break; //打印报表case'0':exit(0); //退出}}
}
对于信息增删查改
void establish()//输入信息
{node *pnewnode=(node*)malloc(sizeof(node));pnewnode->next=NULL;if(head==NULL){head=pnewnode;}else{pnewnode->next=head;head=pnewnode;}printf("请输入相关信息\n");printf("寄件方姓名:");scanf("%s",pnewnode->express.sender);printf("寄件方电话号码:");scanf("%s",pnewnode->express.phonenumber1);printf("寄件方地址:");scanf("%s",pnewnode->express.senderaddress);printf("收件方姓名:");scanf("%s",pnewnode->express.receiver);printf("收件方电话号码:");scanf("%s",pnewnode->express.phonenumber2);printf("收件方地址:");scanf("%s",pnewnode->express.receiveraddress);printf("快递单号:");scanf("%s",pnewnode->express.tracknumber);printf("输入成功\n");system("pause");//暂停system("cls");//清屏}void revamp()//修改信息
{node *p1=head;char tracknumber[100],ch;
int flog=0;
printf("\t\t\t\t*修改数据*\n");
printf("===========================================================================\n");
printf("请输入将要修改包裹单号:");
scanf("%s",tracknumber);
while(p1!=NULL)
{ if(strcmp(tracknumber,p1->express.tracknumber)==0)
{printf("该包裹基本信息\n");printf("寄件方姓名:%s\n",p1->express.sender);printf("寄件方电话号码:%s\n",p1->express.phonenumber1);printf("寄件方地址:%s\n",p1->express.senderaddress);printf("收件方姓名:%s\n",p1->express.receiver);printf("收件方电话号码:%s\n",p1->express.phonenumber2);printf("收件方地址:%s\n",p1->express.receiveraddress);printf("快递单号:%s\n",p1->express.tracknumber);flog=1;printf("\n请选择要修改的信息\n");printf("\t1.寄件方姓名\t2.寄件方电话号码\t3.寄件方地址\t4.收件方姓名\n");printf("\t5.收件方电话号码\t6.收件方地址\t7.快递单号\n");printf("您的选择是(1~7):");scanf("%s",&ch);switch(ch){case'1':printf("请输入修改之后的内容:\n寄件方姓名:");scanf("%s",p1->express.sender);printf("\n修改成功!\n");printf("===========================================================================\n");break;case'2':printf("寄件方电话号码:");scanf("%s",p1->express.phonenumber1);printf("\n修改成功!\n");printf("===========================================================================\n");break;case'3':printf("寄件方地址:");scanf("%s",p1->express.senderaddress);printf("\n修改成功!\n");printf("===========================================================================\n");break;case'4':printf("收件方姓名:");scanf("%s",p1->express.receiver);printf("\n修改成功!\n");printf("===========================================================================\n");break;case'5':printf("收件方电话号码:");scanf("%s",p1->express.phonenumber2);printf("\n修改成功!\n");printf("===========================================================================\n");break;case'6':printf("收件方地址:");scanf("%s",p1->express.receiveraddress);printf("\n修改成功!\n");printf("===========================================================================\n");break;case'7':printf("快递单号:");scanf("%s",p1->express.tracknumber);printf("\n修改成功!\n");printf("===========================================================================\n");break;}}p1=p1->next;
}if(flog==0){printf("没有找到该人的信息!\n");}system("pause");//暂停system("cls");//清屏
}void del()//删除信息
{node *p1,*p2;char tracknumber[100];int flog=1;printf("请输入要删除的快递单号:");scanf("%s",tracknumber);p2=p1=head;while(p1!=NULL&&flog){if(strcmp(tracknumber,p1->express.tracknumber)==0)//比较字符{printf("您要找到的数据\n");printf("寄件方姓名:%s\n",p1->express.sender);printf("寄件方电话号码:%s\n",p1->express.phonenumber1);printf("寄件方地址:%s\n",p1->express.senderaddress);printf("收件方姓名:%s\n",p1->express.receiver);printf("收件方电话号码:%s\n",p1->express.phonenumber2);printf("收件方地址:%s\n",p1->express.receiveraddress);printf("快递单号:%s\n",p1->express.tracknumber);if(p1==head){head=p1->next;free(p1);}else{p2->next=p1->next;free(p1);}flog=0;printf("删除成功\n");}p1=p1->next;}if(flog){printf("未有此包裹!");}system("pause");system("cls");
}void save()//保存信息
{ FILE *fp=fopen("file.dat","w");system("cls");if(fp==NULL){printf("打开文件失败");return;}p=head;while(p!=NULL){fwrite(&p->express,1,sizeof(Express),fp);p=p->next;}fclose(fp);printf("\n数据保存成功\n");system("pause");system("cls");}void search()//根据快递单号查询信息
{char tracknumber[100];int flog=1;node *p=NULL;p=head;printf("请输入快递单号:");scanf("%s",tracknumber);while(p!=NULL)
{if(strcmp(tracknumber,p->express.tracknumber)==0)//比较字符{printf("您要找到的数据\n");printf("寄件方姓名:%s\n",p->express.sender);printf("寄件方电话号码:%s\n",p->express.phonenumber1);printf("寄件方地址:%s\n",p->express.senderaddress);printf("收件方姓名:%s\n",p->express.receiver);printf("收件方电话号码:%s\n",p->express.phonenumber2);printf("收件方地址:%s\n",p->express.receiveraddress);printf("快递单号:%s\n",p->express.tracknumber);flog=0;}p=p->next;
}
if(flog)
{printf("查无此包裹!\n");
}system("pause");//暂停system("cls");//清屏
}
以上就是核心功能的部分,对于此课程设计,还有美中不足的是,对于收录的快递单号没有进行查重,于是乎,在面对庞大的信息量时,当人为的记不住,就会导致错误的出现,希望读者能够完善此系统。最后附上完整的代码——
#include
#include
#include //函数声明
void password(); //系统加密
void menu(); //菜单栏
void establish();//输入信息
void revamp(); //修改信息
void del(); //删除信息
void save(); //保存信息
void search(); //查询信息
void sort(); //单号排序
void read(); //读取信息
void sum(); //统计包裹数
void print(); //打印报表typedef struct Express
{char sender[100];//寄件方char receiver[100];//收件方char senderaddress[100];//寄件方地址char receiveraddress[100];//收件方地址char tracknumber[100];//快递单号char phonenumber1[100];//寄件方电话号码char phonenumber2[100];//收件方电话号码
}express;//节点
typedef struct node
{struct Express express;struct node *next;
}node;
node *head=NULL;//链表头指针为空
node *p=NULL;int main()
{ password(); //系统加密system("color f3");//改变窗口背景及字体颜色menu();
}void password()//系统加密
{char a[100],b[100]="666666";printf("————————快递包裹系统V1.0————————\n");printf("请输入登录密码:");scanf("%s",&a);if(strcmp(a,b)==0){printf("登陆成功!\n");system("pause");//暂停}else{ printf("密码输入错误!无法进入系统!\n");exit(0);}
}void menu() //菜单栏
{ int n;while(1){ system("cls");//清屏puts("\t 快递包裹系统V1.0");puts("***************MENU**************");puts("*\t 1.输入信息\t\t*");puts("*\t 2.修改信息\t\t*");puts("*\t 3.删除信息\t\t*");puts("*\t 4.保存信息\t\t*");puts("*\t 5.查询信息\t\t*");puts("*\t 6.单号排序\t\t*");puts("*\t 7.读取信息\t\t*");puts("*\t 8.统计数量\t\t*");puts("*\t 9.打印报表\t\t*");puts("*\t 0.退出\t\t*");puts("*********************************");puts("请输入序号:"); n=getchar();//从键盘输入一个字符switch(n){case'1':establish();break;//输入信息case'2':revamp();break; //修改信息case'3':del();break; //删除信息case'4':save();break; //保存信息case'5':search();break; //查询信息case'6':sort();break; //单号排序case'7':read();break; //读取信息case'8':sum();break; //统计数量case'9':print();break; //打印报表case'0':exit(0); //退出}}
}void establish()//输入信息
{node *pnewnode=(node*)malloc(sizeof(node));pnewnode->next=NULL;if(head==NULL){head=pnewnode;}else{pnewnode->next=head;head=pnewnode;}printf("请输入相关信息\n");printf("寄件方姓名:");scanf("%s",pnewnode->express.sender);printf("寄件方电话号码:");scanf("%s",pnewnode->express.phonenumber1);printf("寄件方地址:");scanf("%s",pnewnode->express.senderaddress);printf("收件方姓名:");scanf("%s",pnewnode->express.receiver);printf("收件方电话号码:");scanf("%s",pnewnode->express.phonenumber2);printf("收件方地址:");scanf("%s",pnewnode->express.receiveraddress);printf("快递单号:");scanf("%s",pnewnode->express.tracknumber);printf("输入成功\n");system("pause");//暂停system("cls");//清屏}void revamp()//修改信息
{node *p1=head;char tracknumber[100],ch;
int flog=0;
printf("\t\t\t\t*修改数据*\n");
printf("===========================================================================\n");
printf("请输入将要修改包裹单号:");
scanf("%s",tracknumber);
while(p1!=NULL)
{ if(strcmp(tracknumber,p1->express.tracknumber)==0)
{printf("该包裹基本信息\n");printf("寄件方姓名:%s\n",p1->express.sender);printf("寄件方电话号码:%s\n",p1->express.phonenumber1);printf("寄件方地址:%s\n",p1->express.senderaddress);printf("收件方姓名:%s\n",p1->express.receiver);printf("收件方电话号码:%s\n",p1->express.phonenumber2);printf("收件方地址:%s\n",p1->express.receiveraddress);printf("快递单号:%s\n",p1->express.tracknumber);flog=1;printf("\n请选择要修改的信息\n");printf("\t1.寄件方姓名\t2.寄件方电话号码\t3.寄件方地址\t4.收件方姓名\n");printf("\t5.收件方电话号码\t6.收件方地址\t7.快递单号\n");printf("您的选择是(1~7):");scanf("%s",&ch);switch(ch){case'1':printf("请输入修改之后的内容:\n寄件方姓名:");scanf("%s",p1->express.sender);printf("\n修改成功!\n");printf("===========================================================================\n");break;case'2':printf("寄件方电话号码:");scanf("%s",p1->express.phonenumber1);printf("\n修改成功!\n");printf("===========================================================================\n");break;case'3':printf("寄件方地址:");scanf("%s",p1->express.senderaddress);printf("\n修改成功!\n");printf("===========================================================================\n");break;case'4':printf("收件方姓名:");scanf("%s",p1->express.receiver);printf("\n修改成功!\n");printf("===========================================================================\n");break;case'5':printf("收件方电话号码:");scanf("%s",p1->express.phonenumber2);printf("\n修改成功!\n");printf("===========================================================================\n");break;case'6':printf("收件方地址:");scanf("%s",p1->express.receiveraddress);printf("\n修改成功!\n");printf("===========================================================================\n");break;case'7':printf("快递单号:");scanf("%s",p1->express.tracknumber);printf("\n修改成功!\n");printf("===========================================================================\n");break;}}p1=p1->next;
}if(flog==0){printf("没有找到该人的信息!\n");}system("pause");//暂停system("cls");//清屏
}void del()//删除信息
{node *p1,*p2;char tracknumber[100];int flog=1;printf("请输入要删除的快递单号:");scanf("%s",tracknumber);p2=p1=head;while(p1!=NULL&&flog){if(strcmp(tracknumber,p1->express.tracknumber)==0)//比较字符{printf("您要找到的数据\n");printf("寄件方姓名:%s\n",p1->express.sender);printf("寄件方电话号码:%s\n",p1->express.phonenumber1);printf("寄件方地址:%s\n",p1->express.senderaddress);printf("收件方姓名:%s\n",p1->express.receiver);printf("收件方电话号码:%s\n",p1->express.phonenumber2);printf("收件方地址:%s\n",p1->express.receiveraddress);printf("快递单号:%s\n",p1->express.tracknumber);if(p1==head){head=p1->next;free(p1);}else{p2->next=p1->next;free(p1);}flog=0;printf("删除成功\n");}p1=p1->next;}if(flog){printf("未有此包裹!");}system("pause");system("cls");
}void save()//保存信息
{ FILE *fp=fopen("file.dat","w");system("cls");if(fp==NULL){printf("打开文件失败");return;}p=head;while(p!=NULL){fwrite(&p->express,1,sizeof(Express),fp);p=p->next;}fclose(fp);printf("\n数据保存成功\n");system("pause");system("cls");}void search()//根据快递单号查询信息
{char tracknumber[100];int flog=1;node *p=NULL;p=head;printf("请输入快递单号:");scanf("%s",tracknumber);while(p!=NULL)
{if(strcmp(tracknumber,p->express.tracknumber)==0)//比较字符{printf("您要找到的数据\n");printf("寄件方姓名:%s\n",p->express.sender);printf("寄件方电话号码:%s\n",p->express.phonenumber1);printf("寄件方地址:%s\n",p->express.senderaddress);printf("收件方姓名:%s\n",p->express.receiver);printf("收件方电话号码:%s\n",p->express.phonenumber2);printf("收件方地址:%s\n",p->express.receiveraddress);printf("快递单号:%s\n",p->express.tracknumber);flog=0;}p=p->next;
}
if(flog)
{printf("查无此包裹!\n");
}system("pause");//暂停system("cls");//清屏
}void sort()//单号排序
{ }void read()//读取信息
{ FILE *fp=fopen("file.dat","r");struct Express express;if(fp==NULL){printf("打开文件失败");return;}while(fread(&express,1,sizeof(Express),fp)){node* pnewnode=(node *)malloc(sizeof(node));pnewnode->next=NULL;memcpy(pnewnode,&express,sizeof(struct Express));if(head==NULL){head=pnewnode;}else{pnewnode->next=head;head=pnewnode;} }fclose(fp);printf("加载数据成功...\n");system("pause");//暂停system("cls");//清屏
}void sum()//统计包裹数
{struct Express express;FILE *fp;int n=0;if((fp=fopen("file.dat","r+"))==NULL){ printf("文件不存在!\n");return ;}while(!feof(fp)) if(fread(&express,1,sizeof(Express),fp)) n++; //统计记录包裹个数if(n==0){printf("没有记录!\n");fclose(fp);return;}printf("包裹数量:%d\n",n);//将统计的个数输出fclose(fp);system("pause");//暂停system("cls");//清屏}void print()//打印报表
{system("cls");puts("*************************************************************************************************");puts("*\t\t\t\t\t欢迎来到快递包裹系统V1.0\t\t\t\t\t*");puts("*************************************************************************************************");puts("* 快递单号 * 寄件方 * 寄件方号码 * 寄件方地址 * 收件方 * 收件方号码 * 收件方地址 *");puts("*************************************************************************************************");p=head;while(p!=NULL){printf("* %s * %s * %s * %s * %s * %s * %s *\n",p->express.tracknumber,p->express.sender,p->express.phonenumber1,p->express.senderaddress,p->express.receiver,p->express.phonenumber2,p->express.receiveraddress);p=p->next;}puts("*************************************************************************************************");system("pause");//暂停system("cls");//清屏
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
