温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言如何实现房屋管理系统

发布时间:2021-04-17 15:11:01 来源:亿速云 阅读:332 作者:小新 栏目:编程语言

这篇文章主要介绍了C语言如何实现房屋管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

具体内容如下

#include<stdio.h> #include<windows.h> #include<string.h> #include<conio.h> #define N 100 int res = 0;  struct Lodginghouse {   char Lodginghouse_type[20];    //公寓类型 } Lodginghouse[100]; struct CommonHouse {   char building_style[20];     //住宅建筑风格 } CommonHouse[100]; struct Villa {   char villa_style[20];  //别墅建筑材料 } villa[100];   struct House {   char type[100];   //房屋类型   int number;   //房屋编号   // int buildtime;   //已经建立多长时间   char sold[100];  //是否售出   int price;     //售卖价格   int area;   //占地面积(平方米)   // int postion; //房屋位置,例如北京三环   // char balcony[20];  //阳台朝向   // int total_floors;  //房屋总层数 } house[100];     void main(); void menu(); void input(); void save(int); void display(); void del(); void add(); void array(); void search(); void search_num(); void search_name(); void yusuan(); void modify(); void start(); /*定义各函数*/ void start() //开始界面 {   system("cls");//清屏   system("color 1F"); //设置文字颜色为黄色 背景色蓝色   printf("\n\n\n\n\n\n\n\n\n\n\n\n");     printf("\t\t********************************************************************************\n");   printf("\n\n");   printf("\t\t************************欢迎使用我们的房屋销售管理系统*************************");   printf("\n\n");   printf("\t\t********************************************************************************\n\n\n\n\n");   printf("\t\t\t\t   制作人: \n");   printf("\t\t\t\t      XXX   XXX   XXX\n");   printf("\t\t\t\t         XXX   XXX \n");   printf("\t\t\t\t          XXX XX \n");   printf("\t\t\t\t            XX\n");   printf("\t\t\t\t   制作时间: \n");   printf("\t\t\t\t      2018年6月\n");     printf("\t\t\t  ***按任意键进入***\n"); } void menu() //菜单界面 {   system("cls");   system("color 1F");   printf("\n\n\n\n\n\n\n\n\n\n\n\n");   printf("\t\t\t\t\t************************\n\n");   printf("\t\t\t\t\t**********菜单**********\n\n");   printf("\t\t\t\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("注意:\n");   printf("首次使用该系统,请选择输入选项,且输入选项会覆盖原有信息。"); } void input()  /*录入函数*/ {   int i,m;   system("cls");   printf("需要录入的房屋个数(1--100):\n");   scanf("%d",&m);   for (i = res; i < m + res; i++)   {     printf("请输入房屋类型(公寓,普通住宅,别墅): ");     scanf("%s",&house[i].type);     printf("请输入房屋编号: ");     scanf("%d",&house[i].number);     // printf("请输入已经建立多长时间: ");     // scanf("%d",&house[i].buildtime);     printf("请输入是否售出(是/否): ");     scanf("%s",&house[i].sold);     printf("请输入售卖价格: ");     scanf("%d",&house[i].price);     printf("请输入占地面积: ");     scanf("%d",&house[i].area);     // printf("请输入房屋位置(例如三环输入3): ");     // scanf("%d",&house[i].postion);    // printf("请输入阳台朝向(东南西北): ");    // scanf("%s",&house[i].balcony);    // printf("请输入房屋总层数: ");     // scanf("%d",&house[i].total_floors);     if(strcmp(house[i].type, "公寓") == 0)     {       printf("请输入公寓类型: ");       scanf("%s",&Lodginghouse[i].Lodginghouse_type);     }     else if(strcmp(house[i].type, "普通住宅") == 0)     {       printf("普通住宅建筑风格: ");       scanf("%s",&CommonHouse[i].building_style);     }     else     {       printf("请输入别墅建筑材料: ");       scanf("%s",&villa[i].villa_style);     }     printf("\n");   }   res = i;   printf("\n创建完毕!\n");   save(m);//保存房屋总数m } void save(int m) /*保存文件函数*/ {   int i, type;   FILE*fp1, *fp2, *fp3;  //声明fp是指针,用来指向FILE类型的对象   if ((fp1=fopen("Lodginghouse","wb"))==NULL) //打开房屋列表文件为空   {     printf ("打开失败\n");     exit(0);   }   if ((fp2=fopen("Ordinary house","wb"))==NULL) //打开房屋列表文件为空   {     printf ("打开失败\n");     exit(0);   }   if ((fp3=fopen("Villa","wb"))==NULL) //打开房屋列表文件为空   {     printf ("打开失败\n");     exit(0);   }   for (i=0; i<m; i++) /*将内存中房屋的信息输出到磁盘文件中去*/   {     if(strcmp(house[i].type, "公寓") == 0)     {       if (fwrite(&house[i],sizeof(struct House),1,fp1)!=1)//写入数据块  &em[i]:是要输出数据的地址 sizeof(struct clerk):获取一个单体的长度 1:数据项的个数 fp:目标文件指针         printf("文件读写错误\n");       if (fwrite(&Lodginghouse[i],sizeof(struct Lodginghouse),1,fp1)!=1)         printf("文件读写错误\n");     }     else if(strcmp(house[i].type, "普通住宅") == 0)     {       if (fwrite(&house[i],sizeof(struct House),1,fp2)!=1)//写入数据块  &em[i]:是要输出数据的地址 sizeof(struct clerk):获取一个单体的长度 1:数据项的个数 fp:目标文件指针         printf("文件读写错误\n");       if (fwrite(&CommonHouse[i],sizeof(struct CommonHouse),1,fp2)!=1)         printf("文件读写错误\n");     }     else     {       if (fwrite(&house[i],sizeof(struct House),1,fp3)!=1)//写入数据块  &em[i]:是要输出数据的地址 sizeof(struct clerk):获取一个单体的长度 1:数据项的个数 fp:目标文件指针         printf("文件读写错误\n");       if (fwrite(&villa[i],sizeof(struct Villa),1,fp3)!=1)         printf("文件读写错误\n");     }   }     fclose(fp1);// 缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区   fclose(fp2);   fclose(fp3); } int load(int type) /*导入函数 int型*/ {   int k;   FILE*fp;   int i=0;   if(type == 1)  //公寓   {     if((fp=fopen("Lodginghouse","rb"))==NULL)     {       printf ("cannot open file\n");       exit(0);     }     while(feof(fp)==0) //检测流上的文件结束符     {       fread(&house[i],sizeof(struct House),1,fp); //读取       fread(&Lodginghouse[i],sizeof(struct Lodginghouse),1,fp);       i++;     }   }   else if(type == 2)   //普通住宅   {     if((fp=fopen("Ordinary house","rb"))==NULL)     {       printf ("cannot open file\n");       exit(0);     }     while(feof(fp)==0)     {       fread(&house[i],sizeof(struct House),1,fp); //读取       fread(&CommonHouse[i],sizeof(struct CommonHouse),1,fp);       i++;     }   }   else     //别墅   {     if((fp=fopen("Villa","rb"))==NULL)     {       printf ("cannot open file\n");       exit(0);     }     while(feof(fp)==0)     {       fread(&house[i],sizeof(struct House),1,fp); //读取       fread(&villa,sizeof(struct Villa),1,fp);       i++;     }   }   fclose(fp);   return i - 1;//返回该类房屋个数 } void search()/*查询函数*/ {   int t,button;   system("cls");//清屏   do   {     printf("\n按1 查询\n按2 回主菜单\n");     scanf("%d",&t);     if(t>=1&&t<=2)     {       button=1;       break;     }     else     {       button=0;       printf("输入错误");     }   }   while(button==0);//回到查询选择项   while(button==1)   {     switch(t)//选择查询方式     {     case 1:       printf("正在查询\n");       search_num();       break;     case 2:       main();       break;     default:       break;     }   } } void search_num()//按房屋编号查询 {   int a, k;   int i,t;   int m;   char s[20];   printf("请输入要查询的房屋类型:\n");   scanf("%s", &s);   if(strcmp(s, "公寓") == 0)     k=1;   else if(strcmp(s, "普通住宅") == 0)     k=2;   else     k=3;   m=load(k);   printf("请输入要查找的房屋编号:\n");   scanf("%d",&a);   for(i=0; i<m; i++)     if(a==house[i].number)     {       printf("房屋类型  房屋编号  是否售出  价格(元)  面积(平方米)  位置(环)  阳台朝向  总层数(层)");       if(k == 1) printf("   公寓类型");       else if(k == 2) printf("   住宅风格");       else printf("    别墅材料");       printf("\n");       printf("\n %-6s   %-6d   %-8s  %-7d", house[i].type, house[i].number, house[i].sold, house[i].price);       printf("    %-8d ", house[i].area);       if(k == 1) printf("  %s", Lodginghouse[i].Lodginghouse_type);       else if(k == 2) printf("  %s", CommonHouse[i].building_style);       else printf("  %s", villa[i].villa_style);       break;       }   if(i==m)     printf("\n没有查询到该房\n");   printf("\n");   printf("返回查询函数请按1,继续查询房屋编号请按2\n");   scanf("%d",&t);   switch(t)   {   case 1:     search();     break;   case 2:     break;   default:     break;   } } void display() /*浏览函数*/ {   int sold, unsold;   sold = 0;     //各类房屋已售数量   int i, type;   char s[20];   printf("请输入要显示的房屋的种类:");   scanf("%s", &s);   if(strcmp(s, "公寓") == 0)     type=1;   else if(strcmp(s, "普通住宅") == 0)     type=2;   else     type=3;   int m=load(type);   system("cls");   printf("房屋类型  房屋编号  是否售出  价格(元)  面积(平方米)  位置(环)  阳台朝向  总层数(层)");   if(type == 1) printf("   公寓类型");   else if(type == 2) printf("   住宅风格");   else printf("    别墅材料");   printf("\n");   for(i=0; i<m+res - 1; i++)   {     if(strcmp(house[i].sold, "是") == 0) sold++;     printf("\n %-6s   %-6d    %-8s  %-7d", house[i].type, house[i].number, house[i].sold, house[i].price);     printf("    %-8d  ", house[i].area);     if(type == 1) printf("  %s", Lodginghouse[i].Lodginghouse_type);     else if(type == 2) printf("  %s", CommonHouse[i].building_style);     else printf("  %s", villa[i].villa_style);   }   printf("\n该类楼房已售数量为:%d", sold);   printf("\n该类楼房未售数量为:%d", m + res - 1 -sold); } void add()/*添加函数*/ {   FILE*fp;   int n;   int type;   int count=0;   int i;   char s[20];   printf("请输入要增添的房屋的种类:");   scanf("%s", &s);   if(strcmp(s, "公寓") == 0)     type=1;   else if(strcmp(s, "普通住宅") == 0)     type=2;   else     type=3;   int m=load(type);   printf("\n 原来的房屋信息:\n");   display();   printf("\n");   printf("请输入想增加的房屋数:\n");//确定要加入的房屋数n   scanf("%d",&n);   for (i=m; i<(m+n); i++) //添加n个房屋的信息   {     printf("请输入房屋类型(公寓,普通住宅,别墅): ");     scanf("%s",&house[i].type);     printf("请输入房屋编号: ");     scanf("%d",&house[i].number);       printf("请输入是否售出(是/否): ");     scanf("%s",&house[i].sold);     printf("请输入售卖价格: ");     scanf("%d",&house[i].price);     printf("请输入占地面积: ");     scanf("%d",&house[i].area);       if(type == 1)     {       printf("请输入公寓类型: ");       scanf("%s",&Lodginghouse[i].Lodginghouse_type);     }     else if(type == 2)     {       printf("普通住宅建筑风格: ");       scanf("%s",&CommonHouse[i].building_style);     }     else     {       printf("请输入别墅建筑材料: ");       scanf("%s",&villa[i].villa_style);     }     printf("\n");     count=count+1;     printf("已增加的房屋数:\n");     printf("%d\n",count);   }   save(m + n);   printf("\n添加成功\n");   printf("\n增加后的所有房屋信息:\n");   display();//显示添加后的信息 } void modify() /*修改函数*/ {   int k;   char s[100];   char type[100];   int number;     char sold[100];   int price;   int area;     char Lodginghouse_type[100];   char building_style[20];   char villa_style[20];   int b,c,i,n,t,button;   printf("请输入要修改的房屋所属种类:");   scanf("%s", &s);   if(strcmp(s, "公寓") == 0)     k=1;   else if(strcmp(s, "普通住宅") == 0)     k=2;   else     k=3;   int m=load(k);   system("cls");     printf("\n 原来的房屋信息:\n");   display();   printf("\n");     printf("请输入要修改的房屋的编号:\n");   scanf("%d",&number);   for(button=1,i=0; button&&i<m; i++)   {     if(house[i].number == number)     {       printf("\n该房屋原始记录为:\n");       printf("房屋类型  房屋编号  是否售出  价格(元)  面积(平方米) ");       if(k == 1) printf("   公寓类型");       else if(k == 2) printf("   住宅风格");       else printf("    别墅材料");       printf("\n %-6s   %-6d    %-8s  %-7d", house[i].type, house[i].number, house[i].sold, house[i].price);       printf("    %-8d  ", house[i].area);       if(k == 1) printf("  %s", Lodginghouse[i].Lodginghouse_type);       else if(k == 2) printf("  %s", CommonHouse[i].building_style);       else printf("  %s", villa[i].villa_style);       printf("\n确定 按1 ; 不修改请按0\n");       scanf("%d",&n);       if(n==1)       {         printf("\n需要进行修改的选项\n 1.房屋类型 2.房屋编号4.是否售出 5.价格 6.面积");         if(k==1) printf("10.公寓类型 ");         else if(k == 2) printf("10.住宅风格 ");         else printf("10.别墅材料 ");         printf("11.返回上层\n");         printf("请选择序号1-11:\n");         scanf("%d",&c);         if(c>11||c<1)           printf("\n选择错误,请重新选择!\n");       }       button=0;     }     }   if(button==1)     printf("\n没有查到该房屋\n");     do   {     switch(c)   /*因为当找到第i个房屋时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个*/     {     case 1:       printf("房屋类型改为: ");       scanf("%s",&type);       strcpy(house[i - 1].type,type);       break;     case 2:       printf("房屋编号改为: ");       scanf("%d",&number);       house[i-1].number=number;       break;       case 4:       printf("该房屋是否售出改为: ");       scanf("%s",&sold);       strcpy(house[i-1].sold, sold);       break;     case 5:       printf("房屋价格改为: ");       scanf("%d",&price);       house[i-1].price=price;       break;     case 6:       printf("房屋面积改为:");       scanf("%d", &area);       house[i-1].area=area;       break;       case 10:       if(k == 1)       {         printf("公寓类型改为:");         scanf("%s", &Lodginghouse_type);         strcpy(Lodginghouse[i-1].Lodginghouse_type, Lodginghouse_type);         break;       }       else if(k == 2)       {         printf("住宅风格改为:");         scanf("%s", &building_style);         strcpy(CommonHouse[i-1].building_style, building_style);         break;       }       else       {         printf("别墅建筑材料改为:");         scanf("%s", &villa_style);         strcpy(villa[i-1].villa_style, villa_style);         break;       }       break;     case 11:       modify();       break;     }       printf("\n");     printf("\n\n 确定修改 请按1 ; 重新修改 请按2: \n");     scanf("%d",&b);   }while(b==2);   printf("\n修改后的所有房屋信息:\n");   printf("\n");   save(m);     display();   printf("\n按1 继续修改 ,不再修改请按0\n");   scanf("%d",&t);   switch(t)   {   case 1:     modify();     break;   case 0:     break;   default :     break;   } } void del()  /*删除函数 */ {   int type;   char s[100];   int i,j,n,t,button;   int number;   printf("请输入需要删除的房屋所属种类:");   scanf("%s", &s);   if(strcmp(s, "公寓") == 0)     type=1;   else if(strcmp(s, "普通住宅") == 0)     type=2;   else     type=3;   int m=load(type);   printf("\n 原来的房屋信息:\n");   display(); //显示删除前的房屋信息   printf("\n");     printf("请输入需要删除的房屋的编号:\n");   scanf("%d",&number);   for(button=1,i=0; button&&i<m; i++) //主函数中确定button==1时各函数才可以被调用   {     if(house[i].number == number)//按员工姓名查找到某员工 并调出其资料     {       printf("\n该房屋原始记录为:\n");//显示选定员工的信息       printf("房屋类型  房屋编号 是否售出  价格(元)  面积(平方米) ");       if(type == 1) printf("   公寓类型");       else if(type == 2) printf("   住宅风格");       else printf("    别墅材料");       printf("\n %-6s   %-6d   %-8d   %-8s  %-7d", house[i].type, house[i].number, house[i].sold, house[i].price);       printf("    %-8d ", house[i].area);       if(type == 1) printf("  %s", Lodginghouse[i].Lodginghouse_type);       else if(type == 2) printf("  %s", CommonHouse[i].building_style);       else printf("  %s", villa[i].villa_style);       printf("\n确定删除 请按1,不删除请按0\n");       scanf("%d",&n);       if(n==1)       {         for(j=i; j<m-1; j++) //从第i项开始 将后一项的各值赋给前一项各对应的 完成对第i项的删除         {           strcpy(house[j].type,house[j+1].type);           house[j].number=house[j+1].number;           // house[j].buildtime=house[j+1].buildtime;           strcpy(house[j].sold, house[j+1].sold);           house[j].price=house[j+1].price;           house[j].area=house[j+1].area;           //house[j].postion=house[j+1].postion;           // strcpy(house[j].balcony, house[j+1].balcony);           //house[j].total_floors=house[j+1].total_floors;           if(type == 1) strcpy(Lodginghouse[j].Lodginghouse_type, Lodginghouse[j+1].Lodginghouse_type);           else if(type == 2) strcpy(CommonHouse[j].building_style, CommonHouse[j+1].building_style);           else strcpy(villa[j].villa_style, villa[j+1].villa_style);         }         button=0;       }     }   }   if(!button)//button==0表明删除已完成     m=m-1;//总房屋数减少一人   else     printf("\n查无此房屋!\n");   printf("\n 删除后的所有房屋信息:\n");   save(m);   //调用保存函数   display(); //调用浏览函数     printf("\n继续删除请按1,不再删除请按0\n");   scanf("%d",&t);   switch(t)   {   case 1:     del();     break;   case 0:     break;   default :     break;   } } void yusuan() {   int i;   int type;   char s[100];   int ayusuan = 0;     //代表预算   printf("请输入需要预算的房屋种类:");   scanf("%s", &s);   if(strcmp(s, "公寓") == 0)     type=1;   else if(strcmp(s, "普通住宅") == 0)     type=2;   else     type=3;   int m=load(type);   for (i=0; i<m; i++)   {     ayusuan += house[i].price;   }   if(type == 1)     printf("公寓全部卖出的预算为:");   else if(type == 2)     printf("普通住宅全部卖出的预算为:");   else     printf("别墅全部卖出的预算为:");   printf("%d\n", ayusuan); } void sort_realw() {   int i,j,k,m,l;   char s;   printf("请输入需要排序的房屋所属种类:");   scanf("%s",&s);   if(strcmp(s, "公寓") == 0)     l=1;   else if(strcmp(s, "普通住宅") == 0)     l=2;   else     l=3;   m=load(k);   struct House replace;   struct House *p;   p=house;   for(i=0;i<m-1;i++)   {     k=i;     for(j=i+1;j<m;j++)     {      if(p[k].price<p[j].price)       k=j;      replace=house[k];      house[k]=house[i];      house[i]=replace;     }   }     for(i=0;i<m;i++)   {       printf("房间号  面积  价格 类型  销售状态  \n");     printf("\n %-6d %-6d %-8d %-8s %-8s ",house[i].number,house[i].area,house[i].price,house[i].type,house[i].sold);   }   } void main()//主函数 {   int n, m, button;   char a;   start();   getch();   menu();   do {       printf("功能选择(1—9 ):\n");     scanf("%d",&n);     if(n>=1&&n<=8)     {       button=1;       break;     }     else if(n == 9)     {       exit(0);     }     else     {       button=0;       printf("您输入有误,请重新选择!");     }   }   while(button==0);   while(button==1)   {     switch(n)     {     case 1:       input();       break;     case 2:       display();       break;     case 3:       search();       break;       case 4:       del();       break;     case 5:       add();       break;     case 6:       modify();       break;     case 7:       yusuan();       break; case 8:       yusuan();       break;       case 9:       exit(0);       break;     default :       break;     }     getchar();     printf("\n");     printf("按任意键继续\n");     getch();     system("cls"); /*清屏*/     menu(); /*调用菜单函数*/     printf("功能选择(1--9):\n");     scanf("%d",&n);     printf("\n");   } }

注意:计算房屋的总数的时候,一定注意全局变量数值的初始化与更新

感谢你能够认真阅读完这篇文章,希望小编分享的“C语言如何实现房屋管理系统”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI