xxss666 2021-12-30 20:29 采纳率: 42.9%
浏览 17
已结题

关于#ci#的问题,如何解决?

使用函数进行模块化设计,将程序结构优化,合理划分模块,并将两部分程序写为一份程序


 #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;
}


  • 写回答

1条回答 默认 最新

  • fuill 2021-12-30 20:48
    关注
    
    #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()
    {
        char passw[] = "12345";
        char test[20] = "0";
        int count = 0;//用来记录登录次数
        while (count < 3)
        {
            printf("请输入密码->");
            scanf("%s", &test);
            if (strcmp(passw, test) == 0)
            {
                printf("登陆成功\n");
                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;
                    }
                }
                break;
            }
            else
            {
                printf("密码错误\n");
                count++;
            }
        }
        if (3 == count)
        {
            printf("退出程序\n");
        }
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月7日
  • 已采纳回答 12月30日
  • 创建了问题 12月30日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。