main.cpp:
#include "family.h"
int main()
{
US *h_user=NULL;
PE *h_people=NULL;
FILE *fp_people,*fp_user; /*创建文件型指针*/
Login();
if((fp_user=fopen("User.txt","rb"))==NULL||(fp_people=fopen("People.txt","rb"))==NULL)
{
Init1(h_user);
Init2(h_people);
Login1(h_user,h_people);
}
else if((fp_user=fopen("User.txt","rb"))!=NULL||(fp_people=fopen("People.txt","rb"))!=NULL)
{
Load(h_user,h_people);
Login1(h_user,h_people);
}
return 0;
}
family.h:
#ifndef FAMILY_H_INCLUDED
#define FAMILY_H_INCLUDED
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
typedef struct user
{
char user_name[10]; //姓名
char user_password[10]; //密码
int user_flag; //标志:0为普通成员,1为家长
struct user *next;
}US; //成员登陆信息
typedef struct people
{
char people_name[10]; //姓名
int people_income; //收入
int people_output; //支出
struct people *next;
}PE; //成员收支信息
void Login();//初始界面
void Init1(US *&h_user);//登录成员信息初始化
void Init2(PE *&h_people);//成员收支信息初始化
void Login1(US *h_user,PE *h_people);//);//成员登录
void Menu1(US *&h_user,PE *&h_people);//管理员选择界面
void Menu2(US *h_user,PE *h_people);//普通成员选择界面
void Add_user(US *&h_user,PE *h_people);//增加登录成员
void Add_people(US *h_user,PE *&h_people);//录入成员收支信息
void Delete_people(US *h_user,PE *&h_people);//删除成员收支信息
void Delete_user(US *&h_user,PE *h_people);//删除成员登录信息
void Print_people(PE *p);//输出成员收支信息
void Find_people1(US *h_user,PE *h_people);//查找成员收支信息
void Find_people2(US *h_user,PE *h_people);//查找成员收支信息
void Print_allpeople1(US *h_user,PE *h_people);//输出全部成员收支信息
void Print_allpeople2(US *h_user,PE *h_people);//输出全部成员收支信息
void Change_people(US *h_user,PE *h_people);//修改成员收支信息
void Change_code1(US *h_user,PE *h_people);//修改成员登录密码
void Change_code2(US *h_user,PE *h_people);//修改成员登录密码
void Save(US *h_user,PE *h_people); //保存
void Save_User(US *h_user); //保存成员登陆信息
void Save_People(PE *h_people); //保存成员收支信息
void Load(US *h_user,PE *h_people); //加载
void Load_User(US *h_user); //加载成员登陆信息
void Load_People(PE *h_people); //加载成员收支信息
int out();//退出系统
void List(US *h_user,PE *h_people);//排序
#endif // FAMILY_H_INCLUDED
family.cpp:
#include "family.h"
/********************************************************************************************************************************************
* 功能描述: 进入欢迎界面
* 输入参数: 任意值
* 输出参数:
* 返回值 :
* 其它说明:当存在家庭成员信息时进入登陆界面,否则进入初始化界面
*********************************************************************************************************************************************/
void Login() /*欢迎界面*/
{
system("cls");
system("color 4f");
printf("\n");
printf(" ** ** ********* ** ** *** \n");
printf(" ** ** ********* ** ** ** ** \n");
printf(" ** ** ** ** ** ** ** \n");
printf(" ** ** ** ** ** ** ** \n");
printf(" ********* ********* ** ** ** ** \n");
printf(" ********* ********* ** ** ** ** \n");
printf(" ** ** ** ** ** ** ** \n");
printf(" ** ** ** ** ** ** ** \n");
printf(" ** ** ********* ********* ********* ** ** \n");
printf(" ** ** ********* ********* ********* *** \n");
printf("\n");
printf(" 欢 迎 进 入 家 庭 财 务 管 理 系 统!\n");
printf("\n\n\n\t\t 按任意键进入系统...");
getch();
system("cls");
}
/**************************************************************************************************************
* 功能描述: 家庭成员信息初始化
* 输入参数: US *&h_user形参指针
* 输出参数: 无
* 返回值 :
* 其它说明:家庭成员信息包括姓名、密码和权限。
****************************************************************************************************************/
void Init1(US *&h_user) //登录成员信息初始化
{
system("cls");
US *p0;
printf("\n 【成员信息初始化】\n\n");
p0=(US*)malloc(sizeof(US)); /*申请新结点存储空间*/
h_user=(US*)malloc(sizeof(US));
printf("\n请输入成员姓名:");
scanf("%s",p0->user_name);
printf("\n\n请输入新成员密码:");
scanf("%s",p0->user_password);
printf("\n\n新成员是否作为家长(是请输入1,否输入0):");
scanf("%d",&p0->user_flag);
p0->next=NULL;
h_user->next=p0;
printf("\n成员信息初始化完毕!按任意键继续下一步操作..\n");
getch();
system("cls");
}
/**************************************************************************************************************
* 功能描述: 家庭成员收支信息初始化
* 输入参数: PE *&h_people形参指针
* 输出参数: 无
* 返回值 :
* 其它说明:家庭成员收支信息包括姓名、收入和支出。
****************************************************************************************************************/
void Init2(PE *&h_people) //成员收支信息初始化
{
system("cls");
PE *p0;
printf("\n 【成员收支信息初始化】\n\n");
p0=(PE*)malloc(sizeof(PE)); /*申请新结点存储空间*/
h_people=(PE*)malloc(sizeof(PE));
printf("\n请输入成员姓名:");
scanf("%s",p0->people_name);
printf("\n\n请输入成员收入:");
scanf("%d",&p0->people_income);
printf("\n\n请输入成员支出:");
scanf("%d",&p0->people_output);
p0->next=NULL;
h_people->next=p0;
printf("\n成员信息初始化完毕!按任意键继续下一步操作..\n");
getch();
system("cls");
}
/**************************************************************************************************************
* 功能描述: 家庭成员登陆
* 输入参数: US *&h_user,PE *h_people形参指针,US *p用来遍历的指针
* 输出参数: 无
* 返回值 :
* 其它说明:当家庭成员的姓名和密码正确时才进入选择菜单界面。不同权限进入不同界面。
****************************************************************************************************************/
void Login1(US *h_u