| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 503 人关注过本帖
标题:修改C语言程序源码的void add()实现文件存储
只看楼主 加入收藏
ljfsai
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-4-7
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
修改C语言程序源码的void add()实现文件存储
本人菜鸟,每次运行都要添加,希望大神在输入用户时可以存储在一个TXT上,下次可以读取,在需要的地方加上指针操作
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>

#define w 1.8/*水1.8元/吨*/
#define e 0.5/*电0.5元/度*/
#define g 2.1/*气2.1元/立方*/

struct user
{
    char name[10],ID[20];/*用户的姓名和身份证号码*/
    double water,electricity,gas;/*用水(吨)、电(度)量,气量(立方)*/
    double money;/*总共的水电费用*/
}
u[100];/*用户最大容量为100*/


/*显示用户信息*/
void display()
{
    int n;/*确定当前用户的人数*/
    int i;
    for(n=0;n<100;n++)
        if(u[n].money==0) break;
    if(n==0)
        printf("系统无用户,需要添加!^_^\n");
    else
        for(i=0;i<n;i++)
            printf("\n编号:%dID:%s",i+1,u[i].ID);

            printf("\t姓名:%s\t\n",u[i].name);
            printf("\t用水量:%.1f吨",u[i].water);
            printf("\t用电量:%.1f度",u[i].electricity);
            printf("\t用气量:%.1f立方\t\n",u[i].gas);
}
/*添加用户*/
void add()
{
   


    int n;/*确定当前用户的人数*/
    for(n=0;n<100;n++)
        if(u[n].money==0) break;
    printf("\t\t\t请输入新用户的姓名:");
    scanf("%s",u[n].name);

    printf("\t\t\t请输入新用户的ID(18位):");
    scanf("%s",u[n].ID);

    printf("\t\t\t请输入新用户的用水量:");
    scanf("%lf",&u[n].water);

    printf("\t\t\t请输入新用户的用电量:");
    scanf("%lf",&u[n].electricity);

    printf("\t\t\t请输入新用户的用气量:");
    scanf("%lf",&u[n].gas);
   
    u[n].money=(u[n].water)*w+(u[n].electricity)*e+(u[n].gas);
    printf("\n添加成功!\n");
}



/*修改用户信息*/
void alter()
{
    char name[10];
    int n;/*确定当前用户的人数*/
    int i;
    printf("\t\t\t请输入您的姓名:");
    scanf("%s",name);
    for(n=0;n<100;n++)
        if(u[n].money==0) break;
    for(i=0;i<n;i++)
        if(strcmp(u[i].name,name)==0){
            int choice=0;
            printf("\n\t\t\t1.修改ID\n\t\t\t2.修改用水量\n\t\t\t3.修改用电量\n\t\t\t4.修改用气量\n\t\t\t5.退出\n");
            printf("\n\t\t\t请输入您的选择:");
GOTO1:scanf("%d",&choice);
            switch(choice)
            {
            case 1:
                printf("\n\t\t\t请输入ID:");
                scanf("%s",u[i].ID);
                break;
            case 2:
                printf("\n\t\t\t请输入用水量:");
                scanf("%lf",&u[i].water);
                break;
            case 3:
                printf("\n\t\t\t请输入用电量:");
                scanf("%lf",&u[i].electricity);
                break;
            case 4:
                printf("\n\t\t\t请输入用气量:");
                scanf("%lf",&u[i].gas);
                break;
            case 5:
                break;
            default:
                printf("\t\t\t输入错误,请重新输入:");
                goto GOTO1;
            }
            printf("\n修改成功!\n");
            break;
        }
        if(i==n)
            printf("\n\t\t\t没有此用户,您可以选择注册新用户^_^!\n");
}

/*删除用户*/
void delete_()
{
    int n,i=0,j;
    for(n=0;n<100;n++)
        if(u[n].money==0) break;
    display();
    printf("\n\t\t\t请输入要删除用户对应的编号:");
    scanf("%d",&i);
    for(j=i-1;j<n;j++){
        strcpy(u[j].name,u[j+1].name);
        u[j].electricity=u[j+1].electricity;
        strcpy(u[j].ID,u[j+1].ID);
        u[j].money=u[j+1].money;
        u[j].water=u[j+1].water;
    }
    u[n-1].money=0;
    printf("删除成功!^_^\n");
}

/*用户管理*/
void m_user()
{
    int choice=0;
GOTO2:system("cls");
    printf("\t\t\t---------------------\n");
    printf("\t\t\t|    用户管理^_^    |\n");
    printf("\t\t\t---------------------\n\n\n");
   
    printf("\n\t\t\t1.显示用户信息\n\t\t\t2.添加用户\n\t\t\t3.修改用户信息\n\t\t\t4.删除用户信息\n\t\t\t5.退出");
    printf("\n\t\t\t请输入您的选择:");
GOTO3:scanf("%d",&choice);
    switch(choice)
    {
    case 1:
        display();
        system("pause");
        goto GOTO2;
    case 2:
        add();
        system("pause");
        goto GOTO2;
    case 3:
        alter();
        system("pause");
        goto GOTO2;
    case 4:
        delete_();
        system("pause");
        goto GOTO2;
    case 5:
        break;
    default:
        printf("\t\t\t输入有误,请重新输入:");
        goto GOTO3;
    }
}

/*收费管理*/
void m_fee()
{
    int n,i,choice=0;
    double w_sum=0,e_sum=0,g_sum=0;
GOTO4:system("cls");
    printf("\t\t\t---------------------\n");
    printf("\t\t\t|    收费管理^_^    |\n");
    printf("\t\t\t---------------------\n\n\n");

    for(n=0;n<100;n++)
        if(u[n].money==0) break;
    printf("\n\t\t\t1.用户费用信息查询\n\t\t\t2.总水费\n\t\t\t3.总电费\n\t\t\t4.总气费\n\t\t\t5.总费用\n\t\t\t6.退出\n");
    printf("\n\t\t\t请输入您的选择:");
GOTO5:scanf("%d",&choice);
    switch(choice)
    {
    case 1:
        if(n==00)
            printf("\n\t\t\t系统无注册用户!\n");
        else
            for(i=0;i<n;i++){
                printf("\n\t姓名:%s",u[i].name);
                printf("\t水费:%.2f元",(u[i].water)*w);
                printf("\t电费:%.2f元",(u[i].electricity)*e);
                printf("\t气费:%.2f元",(u[i].gas*g));
                printf("\t缴纳的总费用:%.2f元\n",u[i].money);
                w_sum+=u[i].water*w;
                e_sum+=u[i].electricity*e;
                g_sum+=u[i].gas*g;
                         }
        system("pause");
        goto GOTO4;
    case 2:
        printf("\n\t\t\t系统用户缴纳的总水费:%.2f元\n",w_sum);
        system("pause");
        goto GOTO4;
    case 3:
        printf("\n\t\t\t系统用户缴纳的总电费:%.2f元\n",e_sum);
        system("pause");
        goto GOTO4;
    case 4:
        printf("\n\t\t\t系统用户缴纳的总气费:%.2f元\n",g_sum);
        system("pause");
        goto GOTO4;
    case 5:
        printf("\n\t\t\t系统用户缴纳的总费用:%.2f元\n",w_sum+e_sum);
        system("pause");
        goto GOTO4;
    case 6:
        printf("管理完毕!\n");
        break;
    default:
        printf("\n\t\t\t输入错误,请重新输入:");
        goto GOTO5;
    }
}




/*主函数*/
void main()

{
    GOTO6:system("cls");
     time_t rawtime;
    struct tm * timeinfo;
    time ( &rawtime );
    timeinfo = localtime ( &rawtime );
    printf ( "\t\t\t %s\t\t\t\n", asctime (timeinfo) );
    int choice=0;

      
   
printf("\t\t\t-----------------------------------\n");
    printf("\t\t\t|    欢迎进入水电费管理系统^_^    |\n");
    printf("\t\t\t-----------------------------------\n\n\n");

    printf("\n\t\t\t1.用户管理\n\t\t\t2.收费管理\n\t\t\t3.退出\n");

    printf("\n\t\t\t请输入您的选择:");

GOTO7:scanf("%d",&choice);
    switch(choice)
    {case 1:
        m_user();
        system("pause");
        goto GOTO6;
    case 2:
        m_fee();
        system("pause");
        goto GOTO6;
    case 3:
        break;

    default:
        printf("\n您的输入有误,请重新输入:");
        goto GOTO7;
    }
   
}
搜索更多相关主题的帖子: 存储 include double C语言 
2013-04-17 15:49
Han_FlyB
Rank: 6Rank: 6
等 级:侠之大者
帖 子:143
专家分:424
注 册:2013-3-25
收藏
得分:10 
文件操作啊,还有就是,我看到了好多 goto 啊
如果是我boss看到的话就会被骂死了
2013-04-17 16:27
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:10 
用C了,那就不要这么多goto了,貌似goto用在异常处理比较多,而且是函数深度较大的情况。

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-04-19 06:57
快速回复:修改C语言程序源码的void add()实现文件存储
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019110 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved