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

📄 电费管理.c

📁 建立一个电费管理系统要求该系统具有以下功能: 1.自动计算电费 2.按照电费的高低进行排序 3.查询用户的电费情况 4.增添用户 5.删除用户
💻 C
字号:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct users
{
	int bianhao;
	char name[10];
	float  dianliang;
	float  dianfei;
}user[1000],temp[1000]; 
float countdf(FILE *fp,int n)//计算电费函数
{
	int i;
	fp=fopen("dianfei1.dat.txt","r+");
	if(fp==NULL)
	{
		printf("error\n");
		exit(0);
	}
	else
	  for(i=0;i<n;i++)
	  {
		if(user[i].dianliang<=50)
			user[i].dianfei=user[i].dianliang*0.52;
		else if((user[i].dianliang>50)&&(user[i].dianliang<=100))		
			user[i].dianfei=(user[i].dianliang-50)*0.62+26;
		else if(user[i].dianliang>100)
			user[i].dianfei=(user[i].dianliang-100)*0.72+57;
	        printf("%3d %-6s %4.2f %4.2f\n",user[i].bianhao,user[i].name,user[i].dianliang,user[i].dianfei);
		fprintf(fp,"%3d %-6s %4.2f %4.2f\n",user[i].bianhao,user[i].name,user[i].dianliang,user[i].dianfei);	        
	}
	fclose(fp);
	return user[i].dianfei;

}

void sort(FILE *fp,int n) //按降序排列
{   
	int i,j;
	fp=fopen("dianfei1.dat.txt","w");

	if(fp==NULL)
	{
		printf("error\n");
		exit(0);
	}
	else
	{  
	   printf("按电费降序输出用户信息:\n");//排序输出用户数据
	   for(i=0;i<n;i++)
	   {
		for(j=i+1;j<n;j++)
		   if(user[i].dianfei<user[j].dianfei)
				{ 
			      temp[i]=user[i];
		          user[i]=user[j];
			      user[j]=temp[i];
				} 	
	        printf("%3d %-6s %4.2f %4.2f\n",user[i].bianhao,user[i].name,user[i].dianliang,user[i].dianfei);
		    fprintf(fp,"%3d %-6s %4.2f %4.2f\n",user[i].bianhao,user[i].name,user[i].dianliang,user[i].dianfei);
	   }
	}
	getchar();
	fclose(fp);

}

void search(int n)//查询用户数据
{
	int i,flag=0,sign;
	char name[10];
    lp1:printf("请输入要查询的姓名:");
	    scanf("%s",name);
	    for(i=0;i<n;i++)
	      if(!strcmp(name,user[i].name))
			{
			   flag=1;
		       sign=i;
			}
		  else
			 continue;
	         if(flag==0)
			{
		        printf("\n该用户不存在\n");
	            goto lp1;
			}
	         else
			 {
		         printf("\n你要找的姓名已找到\n");
	             printf("\n%3d %-6s %4.2f %4.2f\n",user[sign].bianhao,user[sign].name,user[sign].dianliang,user[sign].dianfei);
			 }
	
}

void change(FILE *fp,int n)//修改用户数据
{   
	char name[10],scret[5],mima[5]={"szy"};
	int i,flag=0,sign;
	fp=fopen("dianfei1.dat.txt","w");
	if(fp==NULL)
	{
		printf("error\n");
		exit(0);
	}
	else
	{
       lp3:printf("请输入要修改用户的姓名:");//修改用户
	       scanf("%s",name);
	       for(i=0;i<n;i++)
		   {
		      if(!strcmp(name,user[i].name))
			  {
			     flag=1;
		      	 sign=i;
			     printf("%3d %-6s %4.2f %4.2f\n",user[i].bianhao,user[i].name,user[i].dianliang,user[i].dianfei);
           lp2:  printf("\n请输入用户密码:");
			     scanf("%s",scret);
			     if(!strcmp(scret,mima))
				 {  
				    printf("\n请输入修改后的电量值:");
			        scanf("%f",&user[i].dianliang);													
			        if(user[i].dianliang<=50) 
				       user[i].dianfei=user[i].dianliang*0.52;
			        else if((user[i].dianliang>50)&&(user[i].dianliang<=100))		
				       user[i].dianfei=(user[i].dianliang-50)*0.62+26;   
		    	    else if(user[i].dianliang>100)
				       user[i].dianfei=(user[i].dianliang-100)*0.72+57;
				       printf("\n%3d %-6s %4.2f %4.2f\n",user[i].bianhao,user[i].name,user[i].dianliang,user[i].dianfei);
				 }
			     else
                    goto lp2;
			  }
		   }
	           if(flag==0)
			   {
	              printf("该用户不存在\n");
	              goto lp3;
			   }
	           else
			   {
	              for(i=0;i<n;i++)
		          fprintf(fp,"%3d %-6s %4.2f %4.2f\n",user[i].bianhao,user[i].name,user[i].dianliang,user[i].dianfei);
			   }
	}
	fclose(fp);
}

void del(FILE *fp,int n)//删除用户数据
{
	char name[10],mscret[11]={"sunzhongyi"},scret[11];
	int sign,i,flag=0;
	fp=fopen("dianfei1.dat.txt","w");
	if(fp==NULL)
	{
		printf("error\n");
		exit(0);
	}
	else
	{
    lp4:printf("请输入要删除用户的姓名:\n");
	    scanf("%s",name);
	    getchar();
	    for(i=0;i<n;i++)
		{
		  if(!strcmp(name,user[i].name))
		  {   
			flag=1;
			sign=i;
			printf("%3d %-6s %4.2f %4.2f\n",user[i].bianhao,user[i].name,user[i].dianliang,user[i].dianfei);
	lp5:	printf("请输入操作员密码:\n");
			gets(scret);
            if((strcmp(scret,mscret))!=0)
				goto lp5;
		  }		
		}
     	if(flag==0)
		{
		  printf("该要删除的用户不存在\n");
	      goto lp4;
		}
     	else
		{
	       for(i=0;i<n;i++)
		   { 
			 if(i<sign)
			 {
				 printf("%3d %-6s %4.2f %4.2f\n",user[i].bianhao,user[i].name,user[i].dianliang,user[i].dianfei);
			     fprintf(fp,"%3d %-6s %4.2f %4.2f\n",user[i].bianhao,user[i].name,user[i].dianliang,user[i].dianfei);
			 }
		     else if(i>=sign&&i<n-1)
			 { 
			   user[i]=user[i+1];
			   printf("%3d %-6s %4.2f %4.2f\n",user[i].bianhao,user[i].name,user[i].dianliang,user[i].dianfei);
			   fprintf(fp,"%3d %-6s %4.2f %4.2f\n",user[i].bianhao,user[i].name,user[i].dianliang,user[i].dianfei);
			 }
			 else if(i==n-1)
			 {
				 continue;
			 }
		   }
		}
	}
	fclose(fp);
}
void add(FILE *fp,int n)//增添用户
{
	int i;
	char mscret[11]={"sunzhongyi"},scret[11];
	fp=fopen("dianfei1.dat.txt","w");
	if(fp==NULL)
	{
		printf("error\n");
		exit(0);
	}
	else
	{   
		printf("请输入增添的用户姓名:");
	    scanf("%s",user[n].name);
		printf("\n请输入该用户编号:");
		scanf("%d",&user[n].bianhao);
		printf("\n请输入该用户所用的电量值:");
		scanf("%f",&user[n].dianliang);
		if(user[n].dianliang<=50)
			user[n].dianfei=user[n].dianliang*0.52;
		else if((user[n].dianliang>50)&&(user[n].dianliang<=100))		
			user[n].dianfei=(user[n].dianliang-50)*0.62+26;
		else if(user[n].dianliang>100)
			user[n].dianfei=(user[n].dianliang-100)*0.72+57;
lp8:    printf("\n请输入操作员密码:");
        scanf("%s",scret);
		if(strcmp(scret,mscret))
			goto lp8;
		for(i=0;i<n+1;i++)
		{
			   printf("%3d %-6s %4.2f %4.2f\n",user[i].bianhao,user[i].name,user[i].dianliang,user[i].dianfei);
			   fprintf(fp,"%3d %-6s %4.2f %4.2f\n",user[i].bianhao,user[i].name,user[i].dianliang,user[i].dianfei);	
		 }
	}
	fclose(fp);
	n=n+1;
}

main()      
{
	FILE *fp1,*fp2;
	float p;
	int i=0,j=0,t,n=4;
	fp1=fopen("dianfei0.dat.txt","r");//读dianfei0.dat.txt数据
    fp2=fopen("dianfei1.dat.txt","w");
	if(fp1==NULL)
	{
		printf("error\n");
		exit(0);
	}
	else
        printf("\t\t\t----$欢迎使用电费管理系统!$----\n");
	    printf("初始时用户数据如下:\n");
		while(!feof(fp1))
		{
            fscanf(fp1,"%d %s %f %f\n",&user[i].bianhao,user[i].name,&user[i].dianliang,&user[i].dianfei);
	        printf("%d %-6s %2.0f %2.0f\n",user[i].bianhao,user[i].name,user[i].dianliang,user[i].dianfei);
		    i++;
		}
	 
	    for(j=0;j<n;j++)
		{
			printf("\n请输入第%d个用户的电量:",j+1);
		    scanf("%f",&user[j].dianliang);
		}
		printf("用户的信息如下:\n");
		 p=countdf(fp2,n);		
    lp7: printf("\t----**   0:退出\t1:排序\t2:查询\t3:修改\t4:删除\t5:增添   **----\n");
    lp6: printf("请输入操作号:");
		 scanf("%d",&t);
		 printf("\n");
		 switch(t)
		 {
		   case 1:{
			         sort(fp2,n);
					 goto lp7;
				  }
		   case 2:{
			         search(n);
			         goto lp7;
				  }
		   case 3:{
			         change(fp2,n);
			         goto lp7;
				  }
		   case 4:{
			         del(fp2,n);
					 n--;
                     goto lp7;		  
				  }
		   case 5:{
			         add(fp2,n);
					 n++;
			         goto lp7;
				  }
		   case 0:{  
			         printf("\t\t\t----$欢迎使用电费管理系统!$----\n");
			         break;
				  }
		   default:
			   {
				   printf("输入操作数有误,请重新输入\n");
			       goto lp6;
			   }
		 }
    fclose(fp1);
}

⌨️ 快捷键说明

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