电子账本的代码部分

这篇博客主要探讨了如何使用C语言在Linux环境下编写电子账本的应用程序。通过分析`main.c`主文件、`HeadFile.h`头文件以及`tally.c`模块,详细阐述了代码结构和功能实现,为读者提供了理解和学习C语言编程实践的一个实例。
摘要由CSDN通过智能技术生成

补充(需要注意的):如何在找账的时候不查到别人的账目。

main.c

#include"HeadFile.h"
int main()
{
    system("clear");
    int choice;
    do
    {   
        printf("------------\n");
        printf("1.登陆\n2.注册\n0.退出\n");
        printf("------------\n");
        scanf("%d",&choice);
        switch(choice)
        {
            case 1:  UserLogin();    break;
            case 2:  UserRegis();    break;
//            case 3:  UserTallt();    break;
            case 0:  system("clear");
                break;
        }
    }while(choice);
    return 0;
}

HeadFile.h

ifndef __UserAdm_
#define __UserAdm_

#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<unistd.h>
#define ACCOUNT 8; //璁板綍鏀跺叆鍜屾敮浠樼殑閽辨暟鐨勫瓧绗︿覆涓嬫爣

typedef struct UserStruct
{
    char UserID[18];
    char UserPassword[12];
    char UserPhoneNum[12];
}UserStruct;
UserStruct User;

typedef struct UserAccount
{
    char _UserID[18];
    char UserPay[8];
    char UserGet[8];
    char UserMatter[20];
    char UserDate[12];
}UserAccount;
UserAccount Account;

extern int UserRegsi();
extern int UserLogin();
//extern void UserPrint();
extern int UserTallt(char LoginID[18]); //璁拌处
extern int UserAudit(char LoginID[18]); //鏌ュ笎
//extern int UserAcMod(); //鏀硅处

#endif

register.c

/*
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
typedef struct UserStruct
{
    char UserID[18];
    char UserPassword[12];
    char UserPhoneNum[12];
}UserStruct;
UserStruct User;
*/
#include"HeadFile.h"

//int main()
int UserRegis()
{   
    system("clear");
    char RegisID[18];                          
    char RegisPassword[12];
    char _RegisPassword[12];
    char RegisPhoneNum[12];
    char FileName[20]="user_test_0.txt";
    //------
    //界面栏
    //------
    printf("-----------------------------\n");
    printf("请输入用户名: ");
    scanf("%s",RegisID);
    
    int fd;
    //-----------------------------------------------------------
    //检测用户名是不是已经注册
    //-----------------------------------------------------------
    int res=0;
    UserStruct Test;
    fd=open("filetest0.txt",O_RDONLY|O_CREAT,0644);
    if(fd==-1)
    {
        perror("open");
        return -1;
    }
    while(( res=read(fd,&Test,sizeof(UserStruct)) )>0)
    {
//        printf("test1\n");
        if(!strcmp(RegisID,Test.UserID))
        {
//            printf("test\n");
            printf("该用户已注册,注册失败\n");
            printf("--------------------------------\n");
            usleep(500000);
            system("clear");
            close(fd);
            return 0;
        }
    };
    close(fd);
    printf("请输入密码: ");
    scanf("%s",RegisPassword);
    printf("请再次输入密码: ");
    scanf("%s",_RegisPassword);
    while(strcmp(_RegisPassword,RegisPassword)!=0)
    {
        printf("两次密码不匹配\n");
        printf("请输入密码: ");
        scanf("%s",RegisPassword);
        printf("请再次输入密码: ");
        scanf("%s",_RegisPassword);
    }
    printf("请输入联系方式: ");
    scanf("%s",RegisPhoneNum);
    printf("---------------------------------\n");
    printf("Register\n");

    //-----------------------------------------------------------
    //信息放入结构体2
    //-----------------------------------------------------------
    strcpy(User.UserID,RegisID);
    strcpy(User.UserPassword,RegisPassword);
    strcpy(User.UserPhoneNum,RegisPhoneNum);
    
    //-----------------------------------------------------------
    //写入文件操作
    //-----------------------------------------------------------
    int count=0,count1=0,count2=0,count3=0;
    fd=open("filetest0.txt",O_RDWR|O_CREAT|O_APPEND,0666);//以可读可写可执行,有文件则以追加方式打开,无文件则创建的方式打开文件
    if(fd==-1)
    {
        perror("open");
        return -1;
    }
//    lseek(fd,0,SEEK_END);


    count=write(fd,&User,sizeof(UserStruct));   //将结构体写入文件,并用count记录写入了多少字符


//    count1=write(fd,User.UserID,      strlen(User.UserID));
//    count2=write(fd,User.UserPassword,strlen(User.UserPassword));
//    count3=write(fd,User.UserPhoneNum,strlen(User.UserPhoneNum));
//    count=count1+count2+count3;
//    printf("%d\n",count);
    usleep(3000000);
    system("clear");
    close(fd);  //关闭文件

    return 0;//
}

login.c
/*
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<unistd.h>
#include<string.h>
#define __FILE_ "filetest0.txt"
typedef struct UserStruct
{
    char UserID[18];
    char UserPassword[12];
    char UserPhoneNum[12];
}UserStruct;
UserStruct User;
*/

//int main()
#include"HeadFile.h"
int  UserLogin()
{
    system("clear");
//---------------------------------------------------------------
    char LoginID[18];
    char LoginPassword[12];
//    char LoginPhoneNum[12];
//---------------------------------------------------------------
    printf("---------------------\n");
    printf("请输入用户名: ");
    scanf("%s",LoginID);
    printf("请输入密码: ");
    scanf("%s",LoginPassword);
    printf("---------------------\n");
//---------------------------------------------------------------
//----文件操作
//---------------------------------------------------------------
    UserStruct LoginTest;
    int fd;
    fd=open("filetest0.txt",O_RDONLY|O_CREAT,0644);
    if(fd==-1)
    {
        perror("open");
        return -1;
    }
    int res=0;
//---检测密码是否相同--------------------------------------------
    while((res=read(fd,&LoginTest,sizeof(UserStruct)))>0)
    {
//        printf("res=%d\n",res);
        if(!strcmp(LoginTest.UserID,LoginID))
        {
//            printf("flag1\n");
            if(strcmp(LoginTest.UserPassword,LoginPassword))
            {
//                printf("flag2\n");
                printf("------------------\n");
                printf("密码错误\n");
                printf("------------------\n");
                usleep(500000);
                system("clear");
                close(fd);
                return -1;
            }
            else break;
        }
    }
    if(res==0)
    {
        printf("res1=%d\n",res);
        printf("---------------------\n");
        printf("用户名不存在\n");
        printf("---------------------\n");
        usleep(500000);
        system("clear");
        close(fd);
        return -1;
    }
//    printf("res1=%d\n",res);
//---------------------------------------------------------------
    printf("--------------------------\n");
    printf("登陆成功\n");
    printf("--------------------------\n");
    usleep(1000000);
    system("clear");
//---------------------------------------------------------------
//---打印
//---------------------------------------------------------------
    printf("-------------------------------\n");
    printf("用户名: %s",LoginID);
    printf("\n");
    printf("密码: %s",LoginPassword);
    printf("\n");
    printf("电话: %s",LoginTest.UserPhoneNum);
    printf("\n");
    printf("-------------------------------\n");
//---------------------------------------------------------------
    int a;
    printf("1.记账\n2.查帐\n");
    printf("0.返回上一级\n");
    scanf("%d",&a);
    if(a==1)
    {
        UserTallt(LoginID);
    }
    if(a==2)
    {
        UserAudit(LoginID);
    }
    if(!a)
    {
        system("clear");
        usleep(200000);
        close(fd);
    }
    return 0;
}

tallt.c

#include"HeadFile.h"
/*
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<unistd.h>
#define ACCOUNT 8; //璁板綍鏀跺叆鍜屾敮浠樼殑閽辨暟鐨勫瓧绗︿覆涓嬫爣


typedef struct UserStruct
{
    char UserID[18];
    char UserPassword[12];
    char UserPhoneNum[12];
}UserStruct;
UserStruct User;

typedef struct UserAccount
{
    char _UserID[18];
    char UserPay[8];
    char UserGet[8];
    char UserMatter[20];
    char UserDate[12];
}UserAccount;
UserAccount Account;

//extern int UserRegsi();
//extern int UserLogin();
//extern void UserPrint();
//int UserTallt(); //璁拌处
//extern int UserAudit(); //鏌ュ笎
//extern int UserAcMod(); //鏀硅处
*/
//int main()
int UserTallt(char LoginID[18])
{
//    char AcID[18];
//    char Pay[8];
//    char Get[8];
//    char Matter[20];
//    char Date[12];
    strcpy(Account._UserID,LoginID);

//---------------------------------------------------------------
//---界面
//---------------------------------------------------------------
    int button=0;
    do
    {
        printf("\n\n-------------------\n");
        printf("日期: ");
        scanf("%s",Account.UserDate);
        printf("收入: ");
        scanf("%s",Account.UserGet);
        printf("支出: ");
        scanf("%s",Account.UserPay);
        printf("事项: ");
        scanf("%s",Account.UserMatter);
        //---------------------------------------------------------------
        //---存入文件
        //---------------------------------------------------------------
        int fd;
        fd=open("talltfile.txt",O_WRONLY|O_CREAT|O_APPEND,0666);
        if(fd==-1)
        {
            perror("open");
            return -1;
        }
        write(fd,&Account,sizeof(UserAccount));
        close(fd);

        printf("\n\n-------------------\n1.继续\n0.完成\n\n");
        scanf("%d",&button);
    }while(button);

    return 0;
}


audit.c

#include"HeadFile.h"

int UserAudit(char LoginID[18])
//int main()
{
    system("clear");
    char Date[12];
    printf("输入查询日期: ");
    scanf("%s",Date);
    system("clear");
//---------------------------------------------------------------
//查帐功能实现
//---------------------------------------------------------------
    int fd;
    int res=0;
    UserAccount Audit;
    fd=open("talltfile.txt",O_RDONLY|O_CREAT,0644);
    if(fd==-1)
    {
        perror("open");
        return -1;
    }
    printf("日期: %s\n\n",Date);
    printf("\t————————————————————————-\n\t|项目\t|收入\t|支出\t|\n\t————————————————————————-\n");
//----------------------------------------------------
//检测日期,并输出
//----------------------------------------------------
    while((res=read(fd,&Audit,sizeof(UserAccount)))>0)
    {
//        printf("test3\n");
        if(!strcmp(Audit._UserID,LoginID))
        {
//            printf("test2\n");
            if(!strcmp(Audit.UserDate,Date))
            {
//                printf("test1\n");
//                printf("日期: %s\n\n",Date);
//                printf("\t|项目\t|收入\t|支出\t|\n");
                printf("\t|%s\t|%s\t|%s\t|\n",Audit.UserMatter,Audit.UserGet,Audit.UserPay);
            }
        }
        else break;
    }
    printf("\t————————————————————————-\n");
    int button=0;
    printf("1.继续\n0.退出\n");
    scanf("%d",&button);
    if(button)
        UserAudit(LoginID);
    if(!button)
        close(fd);
//---------------------------------------------------------------
    return 0;
}

makefile

main:main.o login.o register.o tallt.o audit.o
	gcc  main.o login.o register.o tallt.o audit.o
main.o:main.c HeadFile.h
	gcc -c main.c
login.o:login.c HeadFile.h
	gcc -c login.c
register.o:register.c HeadFile.h
	gcc -c register.c
tallt.o:tallt.c HeadFile.h
	gcc -c tallt.c
audit.o:audit.c HeadFile.h
	gcc -c audit.c


app小账本是一款帮助用户记录和管理日常消费的Android应用。以下是关于其代码的详细解释。 首先,app小账本的Android代码采用Java编写。为了实现这个功能强大的应用程序,代码主要分为几个模块。 一、用户界面模块:这个模块负责显示应用的主要界面和交互。它包括多个Activity和Fragment,用于展示账本明细、添加新的消费记录以及设置用户偏好等功能。通过操作界面上的按钮和输入框,用户可以方便地记录和查看消费信息。 二、数据库模块:这个模块负责与SQLite数据库进行交互,以保存用户的消费记录。它定义了一系列数据库表和相应的操作方法,比如插入、删除和更新数据等。通过这个模块,用户可以将消费记录持久化保存,并实现数据的增删改查。 三、数据处理模块:这个模块负责对用户输入和数据库中的数据进行处理和计算。通过对消费记录进行分类、求和和统计,它可以为用户提供有关消费情况的详细信息。例如,用户可以查看每个月的总消费金额或某一类别的消费总额等。 四、数据导出模块:这个模块负责将用户的消费数据导出为Excel或CSV格式的文件。用户可以选择导出特定时间段的消费记录,并将其保存到本地或通过电子邮件等方式分享给他人。 总的来说,app小账本的Android代码实现了一系列功能,包括用户界面、数据库操作、数据处理和数据导出等。这些功能相互配合,使得用户能够轻松记录和管理自己的日常消费,帮助他们更好地控制和规划个人财务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值