使用函数进行模块化设计,将程序结构优化,合理划分模块,并将两部分程序写为一份程序
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
double w1 = 2.07;
double w2 = 4.07;
double w3 = 6.07;
double s1 = 1.57;
double s2 = 1.07;
double p = 1.36;
static int count = 0;
struct person
{
char number[100]; //用户编号
char name[20]; // 姓名
double water_1; //自来水用水量
double water_2; //自备井用水量
double balance; //存款,初始值为0
};
struct person info[100]; //利用结构体数组,创建100个用户
void input(); //输入用户信息
void search(); //输入用户编号可以查询该用户,并显示该户人家的水费明细(水费计算等过程包括在其中),已用水量到下一档的剩余额度。
void balance(); //余额管理,能够进行扣费运算,能够充值。
void recharge(); //充值
void deduction(); //扣费
void print(); //主菜单
void assi(); //对用户余额赋初始值
void set(); //水价设置
//主菜单
void print(){
system("cls");
printf("---------------主界面-------------\n");
printf("**********************************\n");
printf("**********1 添加用户信息**********\n");
printf("**********2 查 询 **********\n");
printf("**********3 余额管理 **********\n");
printf("**********4 设 置 **********\n");
printf("**********5 退 出 **********\n");
printf("**********************************\n");
printf("请选择(1-4):");
}
//子菜单
void print_1(){
}
void input() //输入相关数据
{
system("cls");
int i;
char ch[2]="y";
//printf("是否输入(Y/N):");
//scanf("%s",ch);
while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){
system("cls");
printf("用户编号:");
scanf("%s",&info[count].number);
printf("姓名:");
scanf("%s",&info[count].name);
printf("自来水用水量(立方米):");
scanf("%lf",&info[count].water_1);
printf("自备井用水量(立方米):");
scanf("%lf",&info[count].water_2);
info[count].balance = 0;
count++;
printf("是否继续输入(Y/N):");
scanf("%s",ch);
}
printf("输入完成!\n按任意键返回");
}
//查询操作
void search(){
system("cls");
int i;
char n[100];
printf("请输入查询的用户编号:");
scanf("%s",&n);
for(i = 0;i < count + 1;i++){
if(strcmp(info[i].number,n)==0){
int x;//x为查询选项
float y,s,m1,m2,m3,e,z,a;
//y为该住户用水量,s为居民本月总水费,m1为水费,m2为水资源费,m3为污水处理费.e为到下一档的额度,z为账户余额,a为充值金额
printf("请选择查询项目:");
scanf("%d",&x);
switch(x)
{
case 1: //功能1为自来水用户查询
printf("输入该用户用水量:输入账户余额:\n");
scanf("%f%f",&y,&z);
if (y<=180)
{
s=y*5.0;m1=y*2.07;m2=y*1.57;m3=y*1.36;e=180-y;z=z-s;
printf("总水费:%.2f\n水费 %.2f\n水资源费: %.2f\n污水处理费: %.2f\n到下一档额度:%.2f\n账户余额%.2f\n",s,m1,m2,m3,e,z);
}
else if(y>180&&y<260)
{
s=y*7.0;m1=y*4.07;m2=y*1.57;m3=y*1.36;e=260-y;z=z-s;
printf("总水费:%.2f\n水费 %.2f\n水资源费: %.2f\n污水处理费: %.2f\n到下一档额度:%.2f\n账户余额%.2f\n",s,m1,m2,m3,e,z);
}
else if(y>=260)
{
s=y*9.0;m1=y*6.07;m2=y*1.57;m3=y*1.36;z=z-s;
printf("总水费:%.2f\n水费 %.2f\n水资源费: %.2f\n污水处理费: %.2f\n账户余额%.2f\n",s,m1,m2,m3,z);
}
break;
case 2://功能2为自备井用户查询
printf("输入该用户用水量:输入账户余额:\n");
scanf("%f%f",&y,&z);
if(y<=180)
{
s=y*4.5;m1=y*2.07;m2=y*1.07;m3=y*1.36;e=180-y;z=z-s;
printf("总水费:%.2f\n水费 %.2f\n水资源费: %.2f\n污水处理费: %.2f\n到下一档额度:%.2f\n账户余额%.2f\n",s,m1,m2,m3,e,z);
}
else if(y>180&&y<260)
{
s=y*6.5;m1=y*4.07;m2=y*1.07;m3=y*1.36;e=260-y;z=z-s;
printf("总水费:%.2f\n水费 %.2f\n水资源费: %.2f\n污水处理费: %.2f\n到下一档额度:%.2f\n账户余额%.2f\n",s,m1,m2,m3,e,z);
}
else if(y>=260)
{
s=y*8.5;m1=y*6.07;m2=y*1.07;m3=y*1.36;z=z-s;
printf("总水费:%.2f\n水费 %.2f\n水资源费: %.2f\n污水处理费: %.2f\n账户余额%.2f\n",s,m1,m2,m3,z);
}
break;
case 3://功能3为余额充值
printf("请输入账户余额: 输入充值金额:\n");
scanf("%.2f%.2f",&a,&z);
z=a+z;
printf("您的账户余额为:%.2f\n",z);
}
}
}
}
int main()
{
int sel=1;
while(sel)
{
print();
scanf("%d",&sel);
switch(sel){
case 1:input();
break;
case 2:search();
break;
case 5:sel=0;
break;
default:break;
}
}
return 0;
}
#include<stdio.h>
#include<string.h>
//编写代码实现,模拟用户登录情景,并且只能登录三次。
//(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。)
int main()
{
char passw[] = "12345";
char test[20] = "0";
int count = 0;//用来记录登录次数
while (count < 3)
{
printf("请输入密码->");
scanf("%s", &test);
if (strcmp(passw, test) == 0)
{
printf("登陆成功\n");
break;
}
else
{
printf("密码错误\n");
count++;
}
}
if (3 == count)
{
printf("退出程序\n");
}
return 0;
}