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 <stdio.h>
#include <stdlib.h>
#include <string.h>

//函数声明
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");//清屏
}

 

  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网络键盘侠-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值