📄 电费管理.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 + -