c 房屋信息管理系统设计

设计一个信息管理系统,系统可以完成:

  1. 对房屋信息的“输入”、“查询”、“删除”、“显示”、“添加”、“排序”、“修改”、“统计”。
  2. 系统的登入、退出、密码重置。

功能描述:

1.输入   

   根据提示信息依次输入“楼号”“类型”“面积”“费用”“住户名”,输入完成键入回车显示“创建成功!”,数据写入文本文件“E:\\test.txt”。

2.查询

   选择是否继续查询,否则返回菜单,是则进入查询,输入提示需要查询的楼号,输入完成键入回车显示所查询到的信息。

3.删除

   选择是否继续删除,否则返回菜单,是则进入删除,输入提示需要删除的信息对应的住户名以进行查找,找到后删除对应信息,显示“删除成功!”,将更改后的所有信息写入文本文件。

4.显示

   系统按格式打印当前文本文件中存在的所有信息,随后可以选择返回主菜单或退出系统。

5.添加

   根据提示信息依次输入“楼号”“类型”“面积”“费用”“住户名”,输入完成键入回车显示“创建成功!”,数据写入文本文件。

6.排序

   选择需要的排序方式,系统按格式打印排序完成的房屋信息。

7.修改

    输入需要修改的信息对应的住户名,以住户名进行查找,查找到后根据提示输入需要修改的信息种类,再输入更改的信息,键入回车显示“修改成功!”,数据写入文本文件。

8.统计

    显示当前文件中总房屋数、其中公寓数、其中别墅数。

9.登入

    共有4次输入正确登入密码的机会,输入正确进入开始欢迎界面,若不正确则显示剩余输入机会次数,若四次均不正确则自动退出系统。

10.密码设置

    输入需要修改为的密码,随后再输入确认密码,若两次输入相同则显示“修改成功”,否则显示“修改失败”,返回菜单

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>

#define NUM_HOUSE 100

struct House
{
	int bn;         //楼号
	char bt[20];      //类型
	int ba;           //面积 
	long be;       //费用
	char owner[20];    //住户
}house[NUM_HOUSE];

int n=0;
char password_rewrite[30];

void log_in();                  //登入界面
void start();                   //开始界面
void menu();                    //菜单
void selsct_objects();          //功能选项
void input();                   //信息录入
void sort_method();             //选择排序方法
void sort_be();                 //按费用排序
void sort_bn();                 //按楼号排序
void del();                     //信息删除
void modify();                  //信息修改
void search_method();           //选择查询方式
void search_bn();               //按楼号查询
void search_owner();            //按住户名查询
void add();                     //信息添加
void display();                 //所有信息显示
void sum();                     //信息统计
void password_setting();        //登入密码设置
void main();



void main()
{
	system("color f0");
	log_in();
	int n = 0;
	start();
	getch();
	menu();
}

void log_in()
{
	FILE*fp=fopen("E:\\password.txt","at+");
    fscanf(fp,"%s",password_rewrite);
	fclose(fp);
	int times=0;
	char password[30];
	char correct_pw[30]={123};
	printf("\n\n\n\n\n\t\t\t\t请输入密码:\n");
	scanf("%s",password);
	if(strcmp(password,password_rewrite)!=0)
	{
		printf("密码错误!\n");
		for(times=3;times>0;times--)
		{
		    if((times>0)&&(strcmp(password,password_rewrite)!=0))
			{
		        printf("\n您还有%d次输入机会!\n",times);
				//scanf("%s",password);
				scanf("%s",password);
			}
		}
		if((times==0)&&(strcmp(password,password_rewrite)!=0))
		{
			exit(0);
		}
	}
}

void start()   
{
	system("cls");
	printf("\n\n\n\n\n\n\n\n");
	printf("\t\t\t************************************************");
	printf("\n\n");
	printf("\t\t\t*****************欢迎使用本系统*****************");
	printf("\n\n");
	printf("\t\t\t************************************************");
	printf("\n\n");
	printf("\t\t\t\t       ***按任意键进入***\n");
}

void menu()  
{
	int n;
	system("cls");
	printf("\n\n\n\n\n\n\n\n");
	printf("\t\t***************************************\n\n");
	printf("\t\t*****************  菜单  **************\n\n");
	printf("                  1 [输入]房屋信息      \n\n");
	printf("                  2 [查询]房屋信息      \n\n");
	printf("                  3 [删除]房屋信息      \n\n");
	printf("                  4 [显示]房屋信息      \n\n");
	printf("                  5 [添加]房屋信息      \n\n");
	printf("                  6 [排序]房屋信息      \n\n");
	printf("                  7 [修改]房屋信息      \n\n");
	printf("                  8 [统计]房屋信息      \n\n");
    printf("                  9 [密码设置]      \n\n");
	printf("                  0 [退出系统]      \n\n");
	printf("\t\t***************************************\n\n");
	scanf("%d", &n);
	switch (n)
	{
	case 1:input(); break;
	case 2:search_method(); break;
	case 3:del(); break;
	case 4:display(); break;
	case 5:add(); break;
	case 6:sort_method(); break;
	case 7:modify(); break;
	case 8:sum();break;
	case 0:exit(0); break;
    case 9:password_setting();break;
	default:break;
	}
}

void input()     
{
	int i, m;
	int len = 0;

	system("cls");
	printf("\n\n输入需要录入的房屋信息个数(1-100):\n");
	scanf("%d",&m);
	FILE* fp;
	fp = fopen("E:\\test.txt", "at+");
	for(i=0;i<m;i++)
	{
		printf("\n\n请分别输入楼号 类型 面积 费用 住户名 \n\n");
		printf("\n请输入楼号:\n");
		scanf("%d", &(house[i].bn));
		getchar();
		printf("\n请输入类型:(公寓/别墅)\n");
		gets(house[i].bt);
		printf("\n请输入面积(m^2):\n");
		scanf("%d", &(house[i].ba));
		getchar();
		printf("\n请输入费用(w):\n");
		scanf("%d", &(house[i].be));
		getchar();
		printf("\n请输入住户名:\n");
		gets(house[i].owner);
		fprintf(fp, "%d %s %d %ld %s\n", house[i].bn,house[i].bt,house[i].ba,house[i].be,house[i].owner);
		printf(">>%d  %s  %d  %ld  %s<<\n",house[i].bn,house[i].bt,house[i].ba,house[i].be,house[i].owner);
		n++;
	} 
	printf("\n创建成功!\n");
	system("pause");
	fclose(fp);
	menu();
}


void search_bn()
{
	int n;
	system("cls");
	printf("\n\n按1继续查询,按0返回主菜单\n");
	scanf("%d", &n);
	if (n == 0)
	{
		menu();
	}
	else
	{
		printf("输入错误!");
		system("pause");
	}
	int number,i=0;
	FILE *fp=fopen("E:\\test.txt","at+");
    while((i<NUM_HOUSE)&&(fscanf(fp, "%d %s %d %ld %s\n", &house[i].bn,house[i].bt,&house[i].ba,&house[i].be,house[i].owner)!=EOF))
	{
		i++;
	}
	n=i;
	fclose(fp);
	system("cls");
	printf("-----------------------------------------------------------------------\n");
	printf("\n     楼号          类型          面积(m^2)     费用(w)      住户\n\n");
	printf("-----------------------------------------------------------------------\n");
    printf("请输入需要查询的楼号");
    scanf("%d",&number);
	for(i=0;i<n;i++)
	{
        if(number==house[i].bn)
        {
	        printf("      %-12d %-12s  %-12d  %-12ld %-12s\n",house[i].bn,house[i].bt,house[i].ba,house[i].be,house[i].owner);
	    }
	}
	system("pause");
	menu();
}

void search_owner()
{
	int n;
		system("cls");
		printf("\n\n按1继续查询,按0返回主菜单\n");
		scanf("%d", &n);
		if (n == 0)
		{
			menu();
		}
	int i=0;
	char owner[20];
	FILE *fp=fopen("E:\\test.txt","at+");
    while((i<NUM_HOUSE)&&(fscanf(fp, "%d %s %d %ld %s\n", &house[i].bn,house[i].bt,&house[i].ba,&house[i].be,house[i].owner)!=EOF))
	{
		i++;
	}
	n=i;
	fclose(fp);
	system("cls");
	printf("-----------------------------------------------------------------------\n");
	printf("\n     楼号          类型          面积(m^2)     费用(w)      住户\n\n");
	printf("-----------------------------------------------------------------------\n");
    printf("请输入需要查询的住户名");
    scanf("%s",owner);
	for(i=0;i<n;i++)
	{
        if(strcmp(owner,house[i].owner)==0)
        {
	        printf("      %-12d %-12s  %-12d  %-12ld %-12s\n",house[i].bn,house[i].bt,house[i].ba,house[i].be,house[i].owner);
	    }
	}
	system("pause");
	menu();
}

void search_method()
{
	char m[20];
	system("cls");
	printf("输入需要查询的类型:(楼号/住户名)\n");
	scanf("%s",m);
	if (strcmp(m,"楼号")==0)
	{
		search_bn();
	}
	if (strcmp(m,"住户名")==0)
	{
		search_owner();
	}
}

void display()
{
	int linenum = 0,q,i=0;
	FILE *fp=fopen("E:\\test.txt","at+");
    while((i<NUM_HOUSE)&&(fscanf(fp, "%d %s %d %ld %s\n", &house[i].bn,house[i].bt,&house[i].ba,&house[i].be,house[i].owner)!=EOF))
	{
		i++;
	}
	n=i;
	fclose(fp);
	system("cls");
	printf("-----------------------------------------------------------------------\n");
	printf("\n     楼号          类型          面积(m^2)     费用(w)      住户\n\n");
	printf("-----------------------------------------------------------------------\n");
	for(i=0;i<n;i++)
	{
		printf("      %-12d %-12s  %-12d  %-12ld %-12s\n",house[i].bn,house[i].bt,house[i].ba,house[i].be,house[i].owner);
	}
	system("pause");
	printf("\n按 1 返回主菜单,按 0 直接退出\n");
	scanf("%d",&q);
	if(q==1)
	{
		menu();
	}
	else
	{
		exit(0);
	}

}

void add()
{
	int n = 0, i, m;
	int len = 0;

	system("cls");
	printf("\n\n输入需要录入的房屋信息个数(1-100):\n");
	scanf("%d",&m);
	FILE* fp = fopen("E:\\test.txt", "at+");
	for(i=0;i<m;i++)
	{
		printf("\n\n请分别输入“楼号”“类型”“面积”“费用”\n\n");
		printf("\n请输入楼号:\n");
		scanf("%d", &(house[i].bn));
		getchar();
		printf("\n请输入类型:(公寓/别墅)\n");
		gets(house[i].bt);
		printf("\n请输入面积(m^2):\n");
		scanf("%d", &(house[i].ba));
		getchar();
		printf("\n请输入费用(w):\n");     
		scanf("%d", &(house[i].be));
		getchar();
		printf("\n请输入住户名:\n");
		gets(house[i].owner);
		fprintf(fp, "%d %s %d %ld %s\n", house[i].bn,house[i].bt,house[i].ba,house[i].be,house[i].owner);
		printf(">>%d  %s  %d  %ld  %s<<\n",house[i].bn,house[i].bt,house[i].ba,house[i].be,house[i].owner);
	}
	printf("添加成功!\n\n");
	system("pause");
	fclose(fp);
	menu();
}

void sort_bn()
{
	system("cls");
    struct House p;
	int i=0,j=0;
	FILE *fp=fopen("E:\\test.txt","at+");
    while((i<NUM_HOUSE)&&(fscanf(fp, "%d %s %d %ld %s\n", &house[i].bn,house[i].bt,&house[i].ba,&house[i].be,house[i].owner)!=EOF))
	{
		i++;
	}
	n=i;
	fclose(fp);
    for(i=0;i<n;i++)
	{  
        for (j=0;j<n-i-1;j++)
		{
            if(house[j].bn>house[j+1].bn)
			{
				p=house[j];
				house[j]=house[j+1];
				house[j+1]=p;
			}
		}
	}
	fp=fopen("E:\\test.txt","at+");
    printf("排序后的顺序是:\n");
	printf("-----------------------------------------------------------------------\n");
    printf("     楼号          类型          面积(m^2)     费用(w)      住户\n");
    printf("-----------------------------------------------------------------------\n");
    for(i=0;i<n;i++)
	{
		printf("      %-12d %-12s  %-12d  %-12ld %-12s\n",house[i].bn,house[i].bt,house[i].ba,house[i].be,house[i].owner);
	}
    fclose(fp);
	system("pause");
	menu();
}

void sort_be()
{
    system("cls");
    struct House p;
	int i=0,j=0;
	FILE *fp=fopen("E:\\test.txt","at+");
    while((i<NUM_HOUSE)&&(fscanf(fp, "%d %s %d %ld %s\n", &house[i].bn,house[i].bt,&house[i].ba,&house[i].be,house[i].owner)!=EOF))
	{
		i++;
	}
	n=i;
	fclose(fp);
    for(i=0;i<n;i++)
	{  
        for (j=0;j<n-i-1;j++)
		{
            if(house[j].be>house[j+1].be)
			{
				p=house[j];
				house[j]=house[j+1];
				house[j+1]=p;
			}
		}
	}
    printf("排序后的顺序是:\n");
	printf("-----------------------------------------------------------------------\n");
    printf("     楼号          类型          面积(m^2)     费用(w)      住户\n");
    printf("-----------------------------------------------------------------------\n");
    for(i=0;i<n;i++)
	{
		printf("      %-12d %-12s  %-12d  %-12ld %-12s\n",house[i].bn,house[i].bt,house[i].ba,house[i].be,house[i].owner);
	}
	system("pause");
	menu();
}

void sort_method()
{
	int m;
	system("cls");
	printf("请选择按[ 1 楼号] / [ 2 费用]排序\n");
	scanf("%d",&m);
	switch(m)
	{
	case 1:sort_bn();break;
	case 2:sort_be();break;
	default:break;
	}
}

void del()
{
	system("cls");
	int i=0,j=0,q;
	char s[20];
	int flag=0;
	printf("按 1 继续进行,按 0 退出");
	scanf("%d",&q);
	if(q==0)
		exit(0);
	FILE *fp=fopen("E:\\test.txt","at+");
    while((i<NUM_HOUSE)&&(fscanf(fp, "%d %s %d %ld %s\n", &house[i].bn,house[i].bt,&house[i].ba,&house[i].be,house[i].owner)!=EOF))
	{
		i++;
	}
	n=i;
	fclose(fp);
	printf("-----------------------------------------------------------------------\n");
    printf("     楼号          类型          面积(m^2)     费用(w)      住户\n");
    printf("-----------------------------------------------------------------------\n");
    for(i=0;i<n;i++)
	{
		printf("      %-12d %-12s  %-12d  %-12ld %-12s\n",house[i].bn,house[i].bt,house[i].ba,house[i].be,house[i].owner);
	}
    printf("\n请输入要删除的住户信息(住户名):\n");
	scanf("%s",&s);
	for (i = 0; i < n; i++)
	{
	    if(strcmp(house[i].owner,s)==0)
		{
			flag=1;
			for (j = i; j < n - 1; j++)
			{
				house[j] = house[j + 1];
			}
			n--;
		}
	}
	if(flag==1)
	{
		printf("\n\n删除信息成功!\n");
	}
	printf("-----------------------------------------------------------------------\n");
    printf("     楼号          类型          面积(m^2)     费用(w)      住户\n");
    printf("-----------------------------------------------------------------------\n");
    for(i=0;i<n;i++)
	{
		printf("      %-12d %-12s  %-12d  %-12ld %-12s\n",house[i].bn,house[i].bt,house[i].ba,house[i].be,house[i].owner);
	}
	fopen("E:\\test.txt","wb");
	for(i=0;i<n;i++)
        fprintf(fp, "%d %s %d %ld %s\n", house[i].bn,house[i].bt,house[i].ba,house[i].be,house[i].owner);
	fclose(fp);
	system("pause");
	menu();
}

void modify()
{
    int m=0,i=0;
	int number;
	int area;
	long expense;
	char type[1024];
	char owner[1024];
	FILE *fp=fopen("E:\\test.txt","rt");
    while((i<NUM_HOUSE)&&(fscanf(fp, "%d %s %d %ld %s\n", &house[i].bn,house[i].bt,&house[i].ba,&house[i].be,house[i].owner)!=EOF))
	{
		i++;
	}
	n=i;
	fclose(fp);
	system("cls");
	printf("-----------------------------------------------------------------------\n");
    printf("     楼号          类型          面积(m^2)     费用(w)      住户\n");
    printf("-----------------------------------------------------------------------\n");
    for(i=0;i<n;i++)
	{
		printf("      %-12d %-12s  %-12d  %-12ld %-12s\n",house[i].bn,house[i].bt,house[i].ba,house[i].be,house[i].owner);
	}
    printf("请输入要修改信息的住户名:\n");
    scanf("%s",owner);
    for(i=0;i<n;i++)
	{
    if(strcmp(owner,house[i].owner)==0)
    {
		printf("请输入修改的信息类型:\n");
        printf("----------------\n");
	    printf("1.修改楼号\n");
	    printf("2.修改类型\n");
	    printf("3.修改面积\n");
	    printf("4.修改费用\n");
	    printf("5.返回主菜单\n");
	    printf("----------------\n");
	scanf("%d",&m);
    switch(m)
	{
	case 1:
		printf("请输入楼号:\n");
		scanf("%d",&number);
		house[i].bn=number;
		break;
	case 2:
		printf("请输入类型:\n");
		scanf("%s",type);
		strcpy(house[i].bt,type);
		break;
	case 3:
		printf("请输入面积:\n");
		scanf("%d",&area);
		house[i].ba=area;
		break;
	case 4:
		printf("请输入费用:\n");
		scanf("%ld",&expense);
		house[i].be=expense;
		break;
	case 5:
		menu();
	}
	}
	}
	printf("修改成功!\n");
	printf("-----------------------------------------------------------------------\n");
    printf("     楼号          类型          面积(m^2)     费用(w)      住户\n");
    printf("-----------------------------------------------------------------------\n");
    for(i=0;i<n;i++)
	{
		printf("      %-12d %-12s  %-12d  %-12ld %-12s\n",house[i].bn,house[i].bt,house[i].ba,house[i].be,house[i].owner);
	}
	fopen("E:\\test.txt","wb");
	for(i=0;i<n;i++)
        fprintf(fp, "%d %s %d %ld %s\n", house[i].bn,house[i].bt,house[i].ba,house[i].be,house[i].owner);
	fclose(fp);
	system("pause");
	menu();
}
 
void sum()
{
	int i=0;
	int num_bn=0,mun_bt_flat=0,num_bt_villa=0;;
	FILE *fp=fopen("E:\\test.txt","rt");
    while((i<NUM_HOUSE)&&(fscanf(fp, "%d %s %d %ld %s\n", &house[i].bn,house[i].bt,&house[i].ba,&house[i].be,house[i].owner)!=EOF))
	{
		i++;
	}
	n=i;
	fclose(fp);
	system("cls");
	for(i=0;i<n;i++)
	{
		if(strcmp(house[i].bt,"公寓")==0)
		{
		    mun_bt_flat++;
		}
		if(strcmp(house[i].bt,"别墅")==0)
		{
			num_bt_villa++;
		}
	}
	if(i!=0)
		printf("\n\n共有住户 [%d] 位\n",i);
	if(i==0)
		printf("\n\n当前无住户!\n");
	if(mun_bt_flat==0)
		printf("\n当前 [无] 公寓住宅!\n");
	if(mun_bt_flat!=0)
		printf("\n共有公寓住宅 [%d]\n",mun_bt_flat);
	if(num_bt_villa==0)
		printf("\n当前 [无] 别墅住宅!\n\n\n\n\n");
	if(num_bt_villa!=0)
		printf("\n共有别墅住宅 [%d]\n\n\n\n\n",num_bt_villa);
	system("pause");
	menu();
}

void password_setting()
{
	char choice[5];
	char password_rewrite_re[30];
	printf("是否要继续修改密码?([y] or [n])\n");
	scanf("%s",choice);
	if(strcmp(choice,"n")==0||strcmp(choice,"N")==0)
	{
		menu();
	}
	if(strcmp(choice,"y")==0||strcmp(choice,"Y")==0)
	{
	 	FILE*fp=fopen("E:\\password.txt","at+");
	    fscanf(fp,"%s",password_rewrite);
	    fclose(fp);
		printf("请输入需要重新修改的密码:\n");
		scanf("%s",password_rewrite);
		printf("请再次输入需要重新修改的密码:\n");
		scanf("%s",password_rewrite_re);
		if(strcmp(password_rewrite_re,password_rewrite)==0)
		{
			printf("修改密码成功!\n");
			fopen("E:\\password.txt","wb");
			fprintf(fp,"%s",password_rewrite);
			fclose(fp);
			system("pause");
			menu();
		}
		else
			printf("密码修改失败!\n");
		system("pause");
		menu();
	}
}


猜你喜欢

转载自blog.csdn.net/weixin_51659968/article/details/119280369