⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 design.c

📁 优惠计划是电信企业在市场营销拓展计划和企业利润评估指导下
💻 C
📖 第 1 页 / 共 2 页
字号:
				ub[l].custId=c[i].custId;
				strcpy(ub[l].custName,c[i].custName);	
				strcpy(ub[l].userNbr,b[j].userNbr);		
				ub[l].localFormerFee=b[j].localFee;				
				ub[l].ldFormerFee=b[j].ldFee;
				l++;

				cb[i].localFee+=b[j].localFee;                                      /*计算客户初始市话费用*/
				cb[i].ldFee+=b[j].ldFee;                                            /*计算客户初始长话费用*/ 
			}
		}						
		kind=2;                                                                     /*2种话费*/	
		for(k=0;(k<line3)&&kind&&count;k++)	                                        /*各种话费分析过后,结束循环*/
		{	
			if(c[i].localRuleId==d[k].ruleId)                                       /*查找市话优惠计算规则*/
			{
				kind--;	
				switch(d[k].ruleType)					                            /*选择优惠计算规则*/
				{						
				case 'a':							                                /*直接折扣*/	
					cb[i].localFee=simpleDisct(cb[i].localFee,d[k]);                /*计算客户市话费用*/ 
					break;
				case 'b':                                                           /*封顶保底*/							
					cb[i].localFee=boundDisct(cb[i].localFee,d[k]);                 /*计算客户市话费用*/ 
					break;
				case 'c':															/*保底打折*/	
					cb[i].localFee=baseDisct(cb[i].localFee,d[k]);                  /*计算客户市话费用*/               
					break;
				default:
					printf("Data Error!\n");										/*处理非法数据*/
				}
			}			
			if(c[i].ldRuleId==d[k].ruleId)		                                    /*查找长话优惠计算规则*/	
			{			
				kind--;					
				switch(d[k].ruleType)								                /*选择优惠计算规则*/
				{				
				case 'a':														    /*直接折扣*/
					cb[i].ldFee=simpleDisct(cb[i].ldFee,d[k]);                      /*计算客户长话费用*/ 
					break;
				case 'b':                                                           /*封顶保底*/
					cb[i].ldFee=boundDisct(cb[i].ldFee,d[k]);                       /*计算客户长话费用*/ 
					break;
				case 'c':															/*保底打折*/	
					cb[i].ldFee=baseDisct(cb[i].ldFee,d[k]);                        /*计算客户长话费用*/        			
					break;
				default:
					printf("RuleType Error!\n");						     		/*处理非法数据*/
				}
			}
		}		
		cb[i].Fee=cb[i].localFee+cb[i].ldFee;                                       /*计算客户话费*/
		repartDisctResult(c[i],cb[i],ub);                                           /*优惠结果摊分*/
	}
}	
/*    
   函数功能:按用户号码查询费用清单
   函数参数:结构体数组ub[],表示用户帐单
			整形变量n,表示所查询的用户号码
   函数返回值:无

*/
int srchByCustNbr(struct UserBill ub[])
{
	char s[100];                                                                    /*定义字符数组s,表示所查询的用户号码*/
    int n=0;                                                                        /*定义整形变量n,表示客户编码*/
	int i;                                                                          /*用户帐单结构数组的下标*/
	int flag=1;																	    /*置标志为真*/
	
	printf("Please input the number you search:  (for example 83490000 )\n");       /*提示输入所要查询的用户号码*/
	scanf("%s",s);
	printf("\n\n");
	for(i=0;i<line1;i++)
	{
		if(strcmp(s,ub[i].userNbr)==0)                                              /*查找用户号码*/
			n=ub[i].custId;	                                                        /*记录客户编码*/
	}
	for(i=0;i<line1&&n;i++)                                                         /*客户存在情况下查找所属用户*/
	{
		if(flag)
			{
				printf("客户编码 客户名称 用户号码 市话原费用 市话优惠结果 长话原费用 长话优惠结果 优惠后费用合计\n");
				flag--;																/*若找到,置标志为假*/		
			}
		if(ub[i].custId==n)
			/*显示费用清单*/
			printf("%5d%11s%10s%9g%12g%11g%11g%11g\n",
				ub[i].custId,
				ub[i].custName,
				ub[i].userNbr,
				ub[i].localFormerFee,            
				ub[i].localDisctFee,
				ub[i].ldFormerFee,
				ub[i].ldDisctFee,
				ub[i].disctFee
				);
	}
	if(!n)                                                                       /*若未找到*/
		printf("Do not Exist\n");
	return 1;
	printf("\n\n\n");
}
/*    
   函数功能:将用户帐单升序排序
   函数参数:结构体数组ub[],表示用户帐单
   函数返回值:无

*/
void sortUserBill(struct UserBill ub[])
{
	struct UserBill temp;                                                           /*用户帐单中间变量*/
	int i,j,k;                                                                      /*用户帐单结构数组的下标*/
	/*选择法排序*/
	for(i=0;i<line1;i++)                                                        
	{
		k=i;		
		for(j=i+1;j<line1;j++)
		{
			if(strcmp(ub[k].custName,ub[j].custName)>0)                             /*客户号码升序排列*/ 
				k=j;
			else if( (ub[j].custId==ub[k].custId) && 
				(strcmp(ub[k].userNbr,ub[j].userNbr)>0) )                           /*用户号码升序排列*/
				k=j;
		}		
		if(k!=i)
		{	/*交换位置*/
			temp=ub[k];																
			ub[k]=ub[i];
			ub[i]=temp;
		}
	}
}
/*   
   函数功能:输出用户帐单
   函数参数:结构体数组ub[],表示用户帐单
   函数返回值:无

*/
void exportUserBill(struct UserBill ub[])
{
	FILE *fp;																		/*文件句柄*/
	int i=0;											                            /*用户帐单结构数组的下标*/
	/*打开文件*/
	if((fp=fopen("UserBill.txt","w"))==NULL)
	{
		printf("cannot open file\n");
		exit(0);
	}
	/*向fp写数据*/
	while((!feof(fp))&&(i<line1))
	{
		fprintf(fp,"%d %s %s %g %g %g %g %g\n",
			ub[i].custId,
			ub[i].custName,
			ub[i].userNbr,
			ub[i].localFormerFee,            
			ub[i].localDisctFee,
			ub[i].ldFormerFee,
			ub[i].ldDisctFee,
			ub[i].disctFee
			);
		i++;
	}
	/*关闭文件*/	
	fclose(fp);
	/*输出用户帐单*/
	if(line1)                                                                       /*判断用户账单结构体数组是否为空*/
	{
		printf("The userBill:\n\n");
		printf("客户编码 客户名称 用户号码 市话原费用 市话优惠结果 长话原费用 长话优惠结果 优惠后费用合计\n");
		for(i=0;i<line1;i++)		
			printf("%5d%11s%10s%9g%12g%11g%11g%11g\n",
			ub[i].custId,
			ub[i].custName,
			ub[i].userNbr,
			ub[i].localFormerFee,            
			ub[i].localDisctFee,
			ub[i].ldFormerFee,
			ub[i].ldDisctFee,
			ub[i].disctFee
			);	
		printf("\n\n\n");
	}
	else
	{
	printf("No information exist\n");
	printf("Please execute 1--2 steps first\n");
	}
}
/* 
   
   函数功能:输出客户帐单
   函数参数:结构体数组cb[],表示客户帐单
   函数返回值:无

*/
void exportCustBill(struct CustBill cb[])
{
			
	FILE *fp;																		/*文件句柄*/
	struct CustBill temp;                                                           /*客户帐单中间变量*/
	int i,j,k;													                    /*客户帐单结构数组的下标*/
	/*选择法排序*/
	for(i=0;i<line2;i++)
	{
		k=i;
		for(j=i+1;j<line2;j++)
		{
			if((cb[j].custId>cb[k].custId))                                         /*降序排列*/
				k=j;
		}
		/*交换位置*/
		if(k!=i)
		{
			temp=cb[k];
			cb[k]=cb[i];
			cb[i]=temp;
		}
	}
	i=0;
	/*打开文件*/
	if((fp=fopen("CustBill.txt","w"))==NULL)
	{
		printf("cannot open file\n");
		exit(0);
	}	
	/*向fp写数据*/
	while((!feof(fp))&&(i<line2))
	{
		fprintf(fp,"%d %s %g %g %g\n",
			cb[i].custId,
			cb[i].custName,
			cb[i].localFee,
			cb[i].ldFee,            
			cb[i].Fee
			);
		i++;
	}
	/*关闭文件*/
	fclose(fp);
	/*输出客户帐单*/
	if(line2)                                                                       /*判断客户账单结构体数组是否为空*/
	{
		printf("The custBill:\n\n");
		printf("客户编码 客户名称     市话费用小计    长话费用小计    费用合计\n");	
		for(i=0;i<line2;i++)			
			printf("    %d	  %s  	%g   	%g   	%g\n",
			cb[i].custId,
			cb[i].custName,
			cb[i].localFee,
			cb[i].ldFee,            
			cb[i].Fee
			);
		printf("\n\n\n");
	}
	else
	{
	printf("No information exist\n");
	printf("Please execute 1--2 steps first\n");
	}
}
/* 
   
   函数功能:显示系统菜单
   函数参数:无
   函数返回值:无

*/
void menu(void)
{
	int i;
	char s[100];
	while(1)
	{
	printf("Please input your choice(1 - 7 )\n");
	printf("***************************************\n");                            /*系统菜单*/
	printf("|             1 装载资料              |\n");
	printf("|             2 优惠分析              |\n");
	printf("|             3 号码查询              |\n");
	printf("|             4 升序排列用户账单      |\n");
	printf("|             5 输出用户帐单          |\n");
	printf("|             6 输出客户帐单          |\n");
	printf("|             7 退出系统              |\n");
	printf("***************************************\n\n");
	scanf("%s",s);
	i=atoi(s);                                                                      /*程序健壮度*/
	switch(i)
	{
	case 1:
		loadBasicBill();                                                            /*装载基础帐单资料*/
		loadCustInfo();                                                             /*装载客户资料*/
		loadDisctRule();                                                            /*装载优惠规则*/
		printf("操作已完成,请继续操作\n");
		break;
	case 2:
		analyseCustDisct(basicBillList,custList,
			disctRuleList,userBillList,custBillList);                               /*客户优惠行为分析*/
		printf("操作已完成,请继续操作\n");
		break;
	case 3:
		srchByCustNbr(userBillList);                                                /*按客户号码查询费用清单*/ 
		printf("操作已完成,请继续操作\n");
		break;
	case 4:
		sortUserBill(userBillList);                                                 /*将用户账单升序排列*/
		printf("操作已完成,请继续操作\n");
		break;
	case 5:
		exportUserBill(userBillList);                                               /*输出用户帐单*/
		printf("操作已完成,请继续操作\n");
		break;
	case 6:
		exportCustBill(custBillList);                                               /*输出客户帐单*/
		printf("操作已完成,请继续操作\n");
		break;
	case 7:
		exit(0);                                                                    /*退出系统*/
	default:
		printf("Input Error.\n");					                         		/*处理非法输入*/
	}
	printf("\n\n");
	}
}

void main()                                                                         /*主程序*/
{
	int i;
	char s[100];
	printf("************************W*E*L*C*O*M*E************************\n");      /*欢迎界面*/
	printf("*******************                       *******************\n");
	printf("**************                                 **************\n");
	printf("*******                 1 进入系统                  *********\n");
	printf("****                                                     ****\n");
	printf("*******                 2 退出系统                  *********\n");  
	printf("**************                                 **************\n");
	printf("*******************                       *******************\n");
	printf("*************************W*E*L*C*O*M*E***********************\n\n");
	printf("Please input your choice(1 or 2 ):\n");
	scanf("%s",s);
	printf("\n");
	i=atoi(s);                                                                      /*程序健壮度*/

	while(1)                                                                        /*反复循环*/
	{	
	switch(i)
	{
	case 1:                                                                         /*进入系统*/
		menu();
		break;
	case 2:                                                                         /*退出系统*/
		exit(0);
	default:                                                                        /*处理非法输入*/
		printf("Input Error.\n");
		printf("Please input your choice(1 or 2 ):\n");
		scanf("%s",s);
		printf("\n");
		i=atoi(s);
	}
	}
		
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -