📑前言
本文主要是【居民物业管理系统】——居民物业管理系统分析与设计的文章,如果有什么需要改进的地方还请大佬指出⛺️
🎬作者简介:大家好,我是听风与他🥇
☁️博客首页:CSDN主页听风与他
🌄每日一句:狠狠沉淀,顶峰相见
本实训项目是小区物业管理系统,为了提高物业管理公司的服务质量、工作效率,拟定开发一个物业管理系统,实现对居民信息管理、收费管理、停车场车位管理物业服务的自动化管理。
项目组长:xxx项目成员:xxx xxx
项目分工:项目共有四个模块,分别为居民信息管理、物业收费管理、来客访问管理、设备报修管理。
xxx负责居民信息管理及物业收费管理模块。居民信息管理:建立住户信息库,实现住户档案数据的计算机化管理,使居民的登记与查询简易而快速,对居民的信息查询应有一定的权限检测,按权限进行查询,分级管理,同是应有更新功能。 物业收费管理:对纳入社区收费管理的收费项目进行电子收费管理(主要是指对煤气表、电表、水表的自动抄表与电子收费),提供应缴费用的查询、定期催缴、收费项目和计费方式的变更维护、定期统计收费情况等功能,同时将其他各子系统相应的收费信息递交收费管理中进行统一结算。
xxx负责访问管理。来客访问管理:对出入小区的外来人员进行人员信息、出入信息的登记、汇总、监督管理,并提供查询功能。
xxx负责设备报修管理模块。设备报修管理:对日常设备的报修信息进行登记,对设备报修,及其处理情况有查询、考核与统计等管理功能,定期产生考核情况明细,报修信息的录入具有多条途径,相应的费用通过收费管理功能进行统一的结算。
基本要求:
- 按功能定义函数,划分好函数功能,进行模块化设计,各个功能模块用函数的形式来实现。
- 设计出的界面友好,易读懂且便于操作。
- 程序能成功运行,各个功能基本实现。
- 代码有大量注释,易读懂,且代码方便进行修改。
- 提供程序相应的测试方案。
- 需求分析
6.1目的
为了提高物业管理公司的服务质量、工作效率,利用小区物业管理系统,根据管理员拥有的权限,给予多种功能,实现对居民信息管理、收费管理、停车场车位管理物业服务的自动化管理,让小区物业管理变得方便、快捷。
6.2系统设计需求
(1):建立住户信息库,实现住户档案数据的计算机化管理,使居民的登记与查询简易而快速,对居民的信息查询应有一定的权限检测,按权限进行查询,分级管理,同时应有更新功能。
(2)对纳入社区收费管理的收费项目进行电子收费管理(主要是指对煤气表、电表、水表的自动抄表与电子收费),提供应缴费用的查询、定期催缴、收费项目和计费方式的变更维护、定期统计收费情况等功能。
(3)对出入小区的外来人员进行人员信息、出入信息的登记、汇总、监督管理,并提供查询功能。
(4)对日常设备的报修信息进行登记,对设备报修,及其处理情况有查询、考核与统计等管理功能,定期产生考核情况明细。
-
可行性分析
在开发系统之前要进行系统可行性分析,目的是用最简单的方法来解决最大的问题,程序一旦开发出来满足了用户的需要,所带来的便利和利益也很大。本系统主要从技术、经济、操作三个方面来进行调查研究和可行性分析。
7.1技术可行性分析
本系统开发选择c语言技术,大大减少了使用windows编程的难度,减少了开发人员在设计算法上的难度,同时,本系统选择Dev-C++作为编译工具,它环境简单,友好的界面以及强大的 功能,给程序开发人员带来了极大的便利,后台设计选择使用文本文档来建立、存放用户信息,因而本系统的技术是可行的。
7.2经济可行性分析
在疫情防控形势下,本系统进行软件开发仅需一台普通的计算机便可完成实现开发,开发难度不大,因而其成本低。且该系统软件的投入使用,可以实现更加快速高效的疫情防控形势下小区物业管理,同时还能实现对人力资源和管理资源的有效节约,因而在当前环境背景下小区物业管理系统在经济上完全可行。
7.3操作可行性分析
本系统采用基于移动端用电脑安装软件就能够进行访问和操作,且界面简单易操作,该系统的可操作性,主要是随着网络技术发展,计算机网络控制的高效简便极大程度提高了工作的效率和准确度,对于数据化管理可以更好的提高工作效率,所以本系统的操作问题是可行的。
经过总结,本系统在经济方面、技术方面、操作方面的条件都得以满足,为此系统的开发具备了可行性条件。
- 系统流程的分析
8.1系统流程图 
讯享网
图一 系统流程图
8.2系统用例图

图二 系统用例图
8.3系统实体图

图三 业主信息实体图

图四 物业费信息实体图

图五 外来人员信息实体图

图六 报修信息实体图
8.4功能流程图

图七 居民信息管理功能流程图

图八 物业收费管理功能流程图

图九 来客访问管理功能流程图

图十 设备报修管理功能流程图
-
系统界面功能展示
输入正确的管理用户名和密码后可进入系统

进入系统后,主页面有四个主功能板块,输入相应的数字即可进入对应的功能板块。

进入居民信息管理功能区,可执行四个功能

进入物业收费管理功能区,可执行四个功能

进入来客访问管理功能区,可执行四个功能

进入设备报修管理功能区,可执行三个功能

实验代码:
管理员账号:admin
密码:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<conio.h> #include<stdlib.h> #include<windows.h> #include<time.h> #include<malloc.h> //8项数据 //居民信息结构体 typedef struct Node { int ID;//用户ID char name[10]; //姓名 char sex[10]; //性别 char IDnumber[10];//身份证号 char phone[10]; // 手机号 int building; //楼号 int roomID; //房号 int roomarea; //住房面积 struct Node *next; }SLNode; //13项数据 //物业费结构体 typedef struct node { int ID;//用户ID char name[10];//用户姓名 int gas_fee;//煤气 int water_fee;//水费单价 int power_fee;//电费单价 int park_fee;//停车费 int repair_fee;//报修费 int gas;//煤气用度 int water;//水用度 int power; //电单用度 int total;//总费用 char time[20];//时间 char bz[10]; //备注 struct node *next; }Fee; //外来人员信息结构体 typedef struct NODE { char name[10]; //姓名 char sex[10]; //性别 char phone[10]; // 手机号 char ad_name[10];//值班管理人员姓名 char time[20];//时间 struct NODE *next; }Out; //设备维修信息结构体 typedef struct NOde { int ID;//用户ID char water[10];//水系统 char elec[10];//电 系统 int water_level;//维修水平 int elec_level;//维修水平 char time[20];//时间 struct NOde *next; }SBei; //声明相关的函数 void MM_pass();//密码判定函数 void UI_showA();//居民信息管理页面 void UI_showB();//物业收费管理页面 void UI_showC();//来客访问管理页面 void UI_showD();//设备报修管理页面 void FUN();//总体功能函数 void FUN_A();//居民信息管理系统 void FUN_B();//物业收费管理系统 void FUN_C();//来客访问管理系统 void FUN_D();//设备报修管理系统 void EXIT_ALL();//退出总系统页面 void EXIT();//退出四大信息管理页面 SLNode* createlist();//链表A生成函数 Fee* createlist_B();//链表B生成函数 Out* createlist_C();//链表C生成函数 SBei* createlist_D();//链表D生成函数 //A void OAD_addnew(); //添加用户 void OAD_select();//查询用户 void OAD_change();//修改用户信息 void OAD_delete(); //删除功能 //B void OBD_select();//查询功能 void OBD_urge();//定期催缴功能 void OBD_change();//费用维护功能 void OBD_count();//定期统计收费功能 void OBD_fee(int ID);//返回界面 void OBD_addnew();//添加收费信息 //C void OCD_addnew();//添加外来人员 void OCD_select();//查询外来人员信息 void OCD_ad_select();//监管信息查询 //D void ODD_addnew();//添加 void ODD_select();//查询 void ODD_produce();//考核情况 //======================================================================= //密码判定函数 void MM_pass() { //首先进行用户名判断,当存在此用户名后 再进行与该用户名 匹配的密码 判断 。当密码输入3次错误时 退出程序 int count = 0, a, i; char MM[10] = { "" }, MI[10]; //密码存放 char UW[10] = { "admin" }, UU[10]; //用户名存放 //------------------------------------------------------------- for (i = 0; i<8; i++) //UI欢迎界面 { printf("\n"); } for (i = 0; i<30; i++) { printf(" "); } printf("欢迎进入物业管理系统\n"); //------------------------------------------------------------------------------- while (1) //进入循环 //判断用户名是否存在 { for (i = 0; i<30; i++) { printf(" "); } printf("请输入用户名:"); //提示输入用户名 gets(UU); //键盘得到 用户名 if (strcmp(UW, UU) == 0) //如果用户名存在 则判断密码是否正确 { for (i = 0; i<30; i++) { printf(" "); } printf("请输入密码:"); for (count = 0; count<3; count++) //判断密码是否正确 { gets(MI); a = strcmp(MM, MI); if (a == 0) // 如果比对 成功 { system("cls"); return ; //返回值,结束此函数 } if (count == 0 || count == 1) //比对不成功 { for (i = 0; i<30; i++) { printf(" "); } printf("请输入密码:"); //提示重新输入密码 } } //由于执行过count++ 则count为3 if (count >= 3) //密码输错3次 程序锁定 错误判定 { for (i = 0; i<25; i++) { printf(" "); } printf("密码3输入错误,程序锁定,退出重试。\n"); getchar(); exit(0); } } else { for (i = 0; i<30; i++) { printf(" "); } printf("查无此用户!\n"); } } } //======================================================================= //进入界面 UI 实现 void UI_show() { int i, j; system("cls"); //-------------------------------------------------------------------- printf("\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } printf("\n"); for (i = 0; i < 30; i++) { printf(" "); } printf("欢迎进入物业管理系统"); for (i = 0; i < 30; i++) { printf(" "); } printf("\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } //实现上方欢迎界面 //-------------------------------------------------------------------- printf("\n\n\n"); for (i = 0; i < 33; i++) //以下实现 菜单界面功能选择 { printf(" "); } printf("请选择以下功能:\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("1、居民信息管理\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("2、物业收费管理\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("3、来客访问管理\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("4、设备报修管理\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("5、退出系统\n"); printf("\n\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } printf("\n\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("请选择:"); //实现界面UI } //进入界面 UI 实现居民信息管理系统 void UI_showA() { system("cls"); int i, j; //-------------------------------------------------------------------- printf("\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } printf("\n"); for (i = 0; i < 30; i++) { printf(" "); } printf("欢迎进入居民信息管理系统"); for (i = 0; i < 30; i++) { printf(" "); } printf("\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } //实现上方欢迎界面 //-------------------------------------------------------------------- printf("\n\n\n"); for (i = 0; i < 33; i++) //以下实现 菜单界面功能选择 { printf(" "); } printf("请选择以下功能:\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("1、查询居民信息\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("2、添加居民信息\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("3、修改居民信息\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("4、删除居民信息\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("5、退出系统\n"); printf("\n\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } printf("\n\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("请选择:"); //实现界面UI } void FUN() { int pan,p; while (1) { system("cls"); //清屏 UI_show(); //调用 界面UI 显示 scanf("%d", &pan); switch (pan) { case 1:FUN_A(); break; case 2:FUN_B(); break; case 3:FUN_C(); break; case 4:FUN_D(); break; case 5:EXIT_ALL(); break;//退出 default:printf("\n\t\t\t输入错误! 按回车键返回重新选择");//按键错误反馈 } getchar(); getchar(); system("cls");//清屏 } } void FUN_A() { system("cls"); UI_showA(); int pan,p; while (1) { scanf("%d", &pan); switch (pan) { case 2:OAD_addnew(); break;//新用户信息添加 case 3:OAD_change(); break;//修改住户信息的功能 case 4:OAD_delete(); break;//删除住户信息的功能 case 1:OAD_select();break;//查询居民信息 case 5:EXIT(); break;//退出 default:printf("\n\t\t\t输入错误! 按回车键返回重新选择");//按键错误反馈 } getchar(); getchar(); system("cls");//清屏 } } //功能B void FUN_B() { system("cls"); UI_showB(); int pan,p; while (1) { scanf("%d", &pan); switch (pan) { case 1:OBD_select(); break;//费用查询 case 2:OBD_urge(); break;//定期催缴功能 case 3:OBD_change(); break;//费用变更维护 case 4:OBD_count();break;//定期统计收费 case 5:OBD_addnew();break;//添加收费信息 case 6:EXIT(); break;//退出 default:printf("\n\t\t\t输入错误! 按回车键返回重新选择");//按键错误反馈 } getchar(); getchar(); system("cls");//清屏 } } //功能C void FUN_C() { system("cls"); UI_showC(); int pan,p; while (1) { scanf("%d", &pan); switch (pan) { case 1:OCD_addnew(); break;//登记人员出入信息 case 2:OCD_ad_select(); break;//监督管理 case 3:OCD_select();break;//查询信息 case 4:EXIT(); break;//退出 default:printf("\n\t\t\t输入错误! 按回车键返回重新选择");//按键错误反馈 } getchar(); getchar(); system("cls");//清屏 } } //功能D void FUN_D() { system("cls"); UI_showD(); int pan,p; while (1) { scanf("%d", &pan); switch (pan) { case 1:ODD_addnew(); break;//登记报修信息 case 2:ODD_select(); break;//查询报修情况 case 3:ODD_produce(); break;//产生考核情况明细 case 4:EXIT();break;//退出 default:printf("\n\t\t\t输入错误! 按回车键返回重新选择");//按键错误反馈 } getchar(); getchar(); system("cls");//清屏 } } //进入界面 UI 实现物业收费管理系统 void UI_showB() { system("cls"); int i, j; //-------------------------------------------------------------------- printf("\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } printf("\n"); for (i = 0; i < 30; i++) { printf(" "); } printf("欢迎进入物业收费管理系统"); for (i = 0; i < 30; i++) { printf(" "); } printf("\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } //实现上方欢迎界面 //-------------------------------------------------------------------- printf("\n\n\n"); for (i = 0; i < 33; i++) //以下实现 菜单界面功能选择 { printf(" "); } printf("请选择以下功能:\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("1、查询应缴费用\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("2、定期催缴\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("3、费用变更维护\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("4、定期统计收费情况\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("5、添加收费信息\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("6、退出系统\n"); printf("\n\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } printf("\n\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("请选择:"); //实现界面UI } //进入界面 UI 实现来客访问管理系统 void UI_showC() { system("cls"); int i, j; //-------------------------------------------------------------------- printf("\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } printf("\n"); for (i = 0; i < 30; i++) { printf(" "); } printf("欢迎进入来客访问管理系统"); for (i = 0; i < 30; i++) { printf(" "); } printf("\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } //实现上方欢迎界面 //-------------------------------------------------------------------- printf("\n\n\n"); for (i = 0; i < 33; i++) //以下实现 菜单界面功能选择 { printf(" "); } printf("请选择以下功能:\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("1、登记外来人员出入信息\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("2、监督管理功能\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("3、查询外来人员信息\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("4、退出系统\n"); printf("\n\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } printf("\n\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("请选择:"); //实现界面UI } //进入界面 UI 实现设备报修管理系统 void UI_showD() { system("cls"); int i, j; //-------------------------------------------------------------------- printf("\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } printf("\n"); for (i = 0; i < 30; i++) { printf(" "); } printf("欢迎进入设备报修管理系统"); for (i = 0; i < 30; i++) { printf(" "); } printf("\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } //实现上方欢迎界面 //-------------------------------------------------------------------- printf("\n\n\n"); for (i = 0; i < 33; i++) //以下实现 菜单界面功能选择 { printf(" "); } printf("请选择以下功能:\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("1、登记报修信息\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("2、查询报修情况\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("3、产生考核情况明细\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("4、退出系统\n"); printf("\n\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } printf("\n\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("请选择:"); //实现界面UI } //退出功能 退出整个系统 void EXIT_ALL() { char ch; do { printf("你确定退出吗?(Y/N):"); getchar(); scanf("%c", &ch); } while ((ch != 'Y') && (ch != 'y') && (ch != 'n') && (ch != 'N')); if ((ch == 'y') || (ch == 'Y')) { exit(0); } } //退出居民管理系统 void EXIT() { char ch; do { printf("你确定退出吗?(Y/N):"); getchar(); scanf("%c", &ch); } while ((ch != 'Y') && (ch != 'y') && (ch != 'n') && (ch != 'N')); if ((ch == 'y') || (ch == 'Y')) { FUN(); } } void OAD_addnew() //添加用户 { FILE *fp=NULL; fp=fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\业主信息.txt", "a"); int flag=0; int ID,building,roomID,roomarea; char name[10],sex[10],IDnumber[10],phone[10]; char ch; while (1) //进入循环体,直到接收到用户 跳出循环 { printf("请输入ID:"); scanf("%d",&ID); SLNode* head = createlist(); SLNode* head2 = head; int j=0; while (head2 != NULL) { if(head2->ID==ID) { printf("该用户已存在,请重新输入\n", head2->ID, head2->name, head2->sex, head2->IDnumber, head2->phone, head2->building, head2->roomID,head2->roomarea); OAD_addnew(); j=1; break; }else { head2=head2->next; } } if(j==0) { printf("请输入姓名:"); scanf("%s", name); printf("请输入性别:"); scanf("%s", sex); printf("请输入身份证号:"); scanf("%s", IDnumber); printf("请输入联系电话:"); scanf("%s", phone); printf("请输入楼号:"); scanf("%d", &building); printf("请输入房号:"); scanf("%d", &roomID); printf("请输入住房面积:"); scanf("%d", &roomarea); } fprintf(fp,"%d %s %s %s %s %d %d %d\n",ID,name,sex,IDnumber,phone,building,roomID,roomarea); do // 接收字符 判断是否 继续录入用户信息 { printf("是否继续录入?请选择(Y/N)"); getchar(); //接收 回车键 scanf("%c", &ch); } while ((ch != 'Y') && (ch != 'y') && (ch != 'n') && (ch != 'N')); if ((ch == 'n') || (ch == 'N')) { fclose(fp); //如果用户 输入N 则保存 并退出程序 printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_A(); break; } } } void OAD_select()//居民查询功能 { SLNode* head = createlist(); SLNode* head2 = head; char ch; int ID,flag=0; system("cls"); printf("\n请输入要查询的住户ID:"); scanf("%d", &ID); printf("\n请您核对查询人的信息:\n\n"); printf("ID 姓名 性别 身份证号 电话 楼号 房号 住房面积 \n"); while (head2 != NULL) { if(head2->ID==ID) { printf("%d %s %s %s %s %d %d %d \n", head2->ID, head2->name, head2->sex, head2->IDnumber, head2->phone, head2->building, head2->roomID,head2->roomarea); flag=1; break; }else { head2=head2->next; } } if (flag == 0) //判断为未找到用户 { printf("没找到该用户!\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_A(); } printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_A(); } void UI_showB_fee() { system("cls"); int i, j; //-------------------------------------------------------------------- printf("\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } printf("\n"); for (i = 0; i < 30; i++) { printf(" "); } printf("欢迎进入进入物业费系统"); for (i = 0; i < 30; i++) { printf(" "); } printf("\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } //实现上方欢迎界面 //-------------------------------------------------------------------- printf("\n\n\n"); for (i = 0; i < 33; i++) //以下实现 菜单界面功能选择 { printf(" "); } printf("请选择以下功能:\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("1、查询煤气费\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("2、水费\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("3、电费\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("4、停车费\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("5、报修费\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("6、总费用\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("7、电子收费单据\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("8、缴费\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("9、退出\n"); printf("\n\n"); for (i = 0; i < 75; i++) //数字 控制 上方 = 数量 { printf("="); } printf("\n\n"); for (i = 0; i < 33; i++) { printf(" "); } printf("请选择:"); //实现界面UI } //费用查询功能 void OBD_select() { Fee* head = createlist_B(); Fee* head2 = head; FILE *fp; char ch; int ID,flag=0; system("cls"); printf("\n请输入要查询的住户ID:"); scanf("%d", &ID); while (head2!= NULL) { if(head2->ID==ID) { system("cls"); printf("\n\n请您核对查询人的信息:\n\n"); printf("\nID:%d 姓名:%s\n",head2->ID,head2->name); printf("\n请按回车键继续....."); getchar(); getchar(); int change; UI_showB_fee(); scanf("%d",&change); switch(change) { case 1:system("cls");printf("\n煤气费明细:用量:%d立方米 单价:%d元 煤气费:%d元",head2->gas_fee,head2->gas,head2->gas_fee*head2->gas); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); OBD_fee(ID); break; case 2:system("cls");printf("\n水费明细:用量:%d升 单价:%d元 水费:%d元",head2->water_fee,head2->water,head2->water_fee*head2->water); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); OBD_fee(ID);break; case 3:system("cls");printf("\n电费明细:用量:%d度 单价:%d元 电费:%d元",head2->power_fee,head2->power,head2->power_fee*head2->power); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); OBD_fee(ID);break; case 4:system("cls");printf("\n停车费:%d元",head2->park_fee); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); OBD_fee(ID);break; case 5:system("cls");printf("\n报修费:%d元",head2->repair_fee); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); OBD_fee(ID);break; case 6:system("cls");printf("\n总费用:%d元",(head2->gas_fee*head2->gas+head2->water_fee*head2->water+head2->power_fee*head2->power+head2->park_fee+head2->repair_fee)); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); OBD_fee(ID);break; case 7:system("cls"); printf("ID:%d\n姓名:%s\n煤气费:%d元\n水费:%d元\n电费:%d元\n停车费:%d元\n报修费:%d元\n总计:%d元\n", head2->ID, head2->name, head2->gas_fee, head2->water_fee, head2->power_fee, head2->park_fee, head2->repair_fee,(head2->gas_fee*head2->gas+head2->water_fee*head2->water+head2->power_fee*head2->power+head2->park_fee+head2->repair_fee)); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); OBD_fee(ID);break; case 8:system("cls"); printf("缴费成功!已缴费%d元",(head2->gas_fee*head2->gas+head2->water_fee*head2->water+head2->power_fee*head2->power+head2->park_fee+head2->repair_fee)); head2->total=0; head2=head; fp = fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\物业费.txt", "w"); while(head2!=NULL) { fprintf(fp,"%d %s %d %d %d %d %d %d %d %d %d %s %s\n", head2->ID, head2->name, head2->gas_fee, head2->water_fee, head2->power_fee, head2->park_fee, head2->repair_fee,head2->gas,head2->water,head2->power,head2->total,head2->time,head2->bz); head2=head2->next; } fclose(fp); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); OBD_fee(ID);break; case 9:FUN_B();break; } flag=1; } head2=head2->next; } head2=head; fp = fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\物业费.txt", "w"); while(head2!=NULL) { fprintf(fp,"%d %s %d %d %d %d %d %d %d %d %d %s %s\n", head2->ID, head2->name, head2->gas_fee, head2->water_fee, head2->power_fee, head2->park_fee, head2->repair_fee,head2->gas,head2->water,head2->power,head2->total,head2->time,head2->bz); head2=head2->next; } fclose(fp); if (flag == 0) //判断为未找到用户 { system("cls"); printf("抱歉!没找到该用户!\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_B(); } printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_B(); } //费用查询返回函数 void OBD_fee(int ID) { Fee* head = createlist_B(); Fee* head2 = head; FILE *fp; char ch; int flag=0; UI_showB_fee(); while (head2 != NULL) { if(head2->ID==ID) { int change; scanf("%d",&change); switch(change) { case 1:system("cls");printf("\n煤气费明细:用量:%d立方米 单价:%d元 煤气费:%d元",head2->gas_fee,head2->gas,head2->gas_fee*head2->gas); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); OBD_fee(ID); break; case 2:system("cls");printf("\n水费明细:用量:%d升 单价:%d元 水费:%d元",head2->water_fee,head2->water,head2->water_fee*head2->water); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); OBD_fee(ID);break; case 3:system("cls");printf("\n电费明细:用量:%d度 单价:%d元 电费:%d元",head2->power_fee,head2->power,head2->power_fee*head2->power); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); OBD_fee(ID);break; case 4:system("cls");printf("\n停车费:%d元",head2->park_fee); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); OBD_fee(ID);break; case 5:system("cls");printf("\n报修费:%d元",head2->repair_fee); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); OBD_fee(ID);break; case 6:system("cls");printf("\n总费用:%d元",(head2->gas_fee*head2->gas+head2->water_fee*head2->water+head2->power_fee*head2->power+head2->park_fee+head2->repair_fee)); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); OBD_fee(ID);break; case 7:system("cls"); printf("ID:%d\n姓名:%s\n煤气费:%d元\n水费:%d元\n电费:%d元\n停车费:%d元\n报修费:%d元\n总计:%d元\n", head2->ID, head2->name, head2->gas_fee, head2->water_fee, head2->power_fee, head2->park_fee, head2->repair_fee,(head2->gas_fee*head2->gas+head2->water_fee*head2->water+head2->power_fee*head2->power+head2->park_fee+head2->repair_fee)); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); OBD_fee(ID);break; case 8:system("cls");printf("缴费成功!已缴费%d元",(head2->gas_fee*head2->gas+head2->water_fee*head2->water+head2->power_fee*head2->power+head2->park_fee+head2->repair_fee)); head2->total=0; head2=head; fp = fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\物业费.txt", "w"); while(head2!=NULL) { fprintf(fp,"%d %s %d %d %d %d %d %d %d %d %d %s %s\n", head2->ID, head2->name, head2->gas_fee, head2->water_fee, head2->power_fee, head2->park_fee, head2->repair_fee,head2->gas,head2->water,head2->power,head2->total,head2->time,head2->bz); head2=head2->next; } fclose(fp); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); OBD_fee(ID);break; case 9:FUN_B();break; } flag=1; } head2=head2->next; } head2=head; fp = fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\物业费.txt", "w"); while(head2!=NULL) { fprintf(fp,"%d %s %d %d %d %d %d %d %d %d %d %s %s\n", head2->ID, head2->name, head2->gas_fee, head2->water_fee, head2->power_fee, head2->park_fee, head2->repair_fee,head2->gas,head2->water,head2->power,head2->total,head2->time,head2->bz); head2=head2->next; } fclose(fp); } //定期催缴功能 void OBD_urge() { Fee* head = createlist_B(); Fee* head2 = head; FILE *fp; int ID,flag=0; char bz[10]={"请缴费"}; //时间 char len[20] = {0}; time_t timep; time(&timep); struct tm *p; p = gmtime(&timep); int total; snprintf(len, 20, "%d-%d-%d %d:%d:%d", 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday, 8 + p->tm_hour, p->tm_min, p->tm_sec); while(head2!=NULL) { if(head2->total>0) { flag=1; strcpy(head2->time,len); strcpy(head2->bz,bz); printf("\n\n\n 尊敬的%s(先生/女士),您已欠费%d元,请及时缴纳 %s",head2->name,(head2->gas_fee*head2->gas+head2->water_fee*head2->water+head2->power_fee*head2->power+head2->park_fee+head2->repair_fee),head2->time); } head2=head2->next; } head2=head; fp = fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\物业费.txt", "w"); while(head2!=NULL) { fprintf(fp,"%d %s %d %d %d %d %d %d %d %d %d %s %s\n", head2->ID, head2->name, head2->gas_fee, head2->water_fee, head2->power_fee, head2->park_fee, head2->repair_fee,head2->gas,head2->water,head2->power,head2->total,head2->time,head2->bz); head2=head2->next; } if(flag==0) { printf("\n无人欠费!\n"); } fclose(fp); printf("\n\n 按回车键退出"); getchar(); getchar(); FUN_B(); } //添加物业费 void OBD_addnew() //添加用户 { FILE *fp=NULL; fp=fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\物业费.txt", "a"); int flag=0; int ID;//用户ID char name[10];//用户姓名 int gas_fee;//煤气 int water_fee;//水费 int power_fee;//电 int park_fee;//停车费 int repair_fee=0;//报修费 int gas;//煤气用度 int water;//水用度 int power; //电用度 int total;//总费用 char time[20];//时间 char bz[10]; //备注 char ch; while (1) //进入循环体,直到接收到用户 跳出循环 { printf("请输入用户ID:"); scanf("%d", &ID); SLNode* head = createlist(); SLNode* head2 = head; int j=0; while (head2 != NULL) { if(head2->ID==ID) { j=1; break; }else { head2=head2->next; } } if(j==0) { printf("该用户已存在,请重新输入\n"); OAD_addnew(); } if(j==1) { printf("请输入用户姓名:"); scanf("%s",name); printf("请输入煤气每立方米单价:"); scanf("%d",&gas_fee); printf("请输入水每升单价:"); scanf("%d",&water_fee); printf("请输入电每度单价:"); scanf("%d",&power_fee); printf("请输入停车费:"); scanf("%d",&park_fee); printf("请输入煤气用量:"); scanf("%d",&gas); printf("请输入水用度:"); scanf("%d",&water); printf("请输入电用度:"); scanf("%d",&power); printf("请输入时间:"); scanf("%s",time); printf("请输入备注:"); scanf("%s",bz); } total=gas_fee*gas+water_fee*water+power_fee*power+park_fee+repair_fee; fprintf(fp,"%d %s %d %d %d %d %d %d %d %d %d %s %s\n", ID, name, gas_fee, water_fee, power_fee, park_fee, repair_fee,gas,water,power,(gas_fee*gas+water_fee*water+power_fee*power+park_fee+repair_fee),time,bz); do // 接收字符 判断是否 继续录入用户信息 { printf("是否继续录入?请选择(Y/N)"); getchar(); //接收 回车键 scanf("%c", &ch); } while ((ch != 'Y') && (ch != 'y') && (ch != 'n') && (ch != 'N')); if ((ch == 'n') || (ch == 'N')) { fclose(fp); //如果用户 输入N 则保存 并退出程序 printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_B(); } } } //费用变更修维护功能 void OBD_change() { Fee* head = createlist_B(); Fee* head2 = head; Fee* p; FILE* fp; fp = fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\物业费.txt", "r"); while(head2!=NULL) { printf("\n修改前各项费用明细:\n"); printf("\n煤气费单价:%d元\n水单价:%d元\n电单价%d元\n",head2->gas,head2->water,head2->power); break; } printf("\n请输入修改项:1.煤气 2.水 3.电\n请输入:"); int a,gas=0,water=0,power=0; scanf("%d",&a); p=head; if(a==1) { printf("请输入修改后的煤气每立方米单价:\n"); scanf("%d",&gas); printf("修改成功!"); } if(a==2) { printf("请输入修改后的水每升单价:\n"); scanf("%d",&water); printf("修改成功!"); } if(a==3) { printf("\n\n请输入修改后的电每度单价:\n"); scanf("%d",&power); printf("修改成功!"); } while(p!=NULL) { if(gas>0) { p->gas=gas; }else if(water>0) { p->water=water; }else{ p->power=power; } p=p->next; } head2=head; fp = fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\物业费.txt", "w"); while(head2!=NULL) { fprintf(fp,"%d %s %d %d %d %d %d %d %d %d %d %s %s\n", head2->ID, head2->name, head2->gas_fee, head2->water_fee, head2->power_fee, head2->park_fee, head2->repair_fee,head2->gas,head2->water,head2->power,(head2->gas_fee*head2->gas+head2->water_fee*head2->water+head2->power_fee*head2->power+head2->park_fee+head2->repair_fee),head2->time,head2->bz); head2=head2->next; } fclose(fp); printf("\n按回车键退出"); getchar(); getchar(); FUN_B(); } //统计收费情况 void OBD_count() { Fee* head = createlist_B(); Fee* p=head; int i=0,j=0; int count1=0,count2=0,count=0;//已收费,未收费,总收费 while(p!=NULL) { if(p->total>0) { i++; count1=count1+p->total; count=count+count1; } if(p->total==0) { j++; count2=count2+p->park_fee+p->repair_fee+p->gas_fee*p->gas+p->power_fee*p->power+p->water_fee*p->water; count=count+count2; } p=p->next; } printf("\n 总计需收费:%d元\n 需收费%d户:%d元\n 已收费%d户:%d元",count,i,count1,j,count2); printf("\n\n 按回车键退出"); getchar(); getchar(); FUN_B(); } //居民管理系统修改功能 void OAD_change() { FILE* fp; SLNode *p1; SLNode* p2; SLNode* head = NULL; SLNode* head2 = NULL; SLNode *p; int ID,building,roomID,roomarea; char name[10],sex[10],IDnumber[10],phone[10],ch; fp = fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\业主信息.txt", "r"); int i = 0; //把文件中的数据存入到链表中 // printf("\n修改前各项数据数据:\n"); i = fscanf(fp, "%d %s %s %s %s %d %d %d",&ID,name,sex,IDnumber,phone,&building,&roomID,&roomarea ); while (i == 8) { p1 = (SLNode*)malloc(sizeof(SLNode)); if (p1 == NULL) printf("p1为空"); p1->ID=ID;//ID strcpy(p1->name, name);//姓名 strcpy(p1->sex, sex);//性别 strcpy(p1->IDnumber, IDnumber);//身份证 strcpy(p1->phone, phone);// 电话 p1->building=building;//楼号 p1->roomID=roomID;//房号 p1->roomarea=roomarea; //住房面积 p1->next = NULL; if (head == NULL) { head = p1; p2 = p1; } else { p2->next = p1; p2 = p1; } i = fscanf(fp, "%d %s %s %s %s %d %d %d",&ID,name,sex,IDnumber,phone,&building,&roomID,&roomarea ); } fclose(fp);//关闭文件 head2 = head; int sign=0; printf("请输入要修改的住户ID:\n"); scanf("%d", &ID); while(head2!=NULL) { if(head2->ID==ID) { sign=1; printf("\n请您核对居民的信息:\n\n"); printf("ID 姓名 性别 身份证号 电话 楼号 房号 住房面积 \n"); printf("%d %s %s %s %s %d %d %d \n", head2->ID, head2->name,head2->sex, head2->IDnumber, head2->phone, head2->building, head2->roomID,head2->roomarea); printf("\n您确认要修改信息吗(Y/N)"); getchar(); scanf("%c",&ch); if(ch=='Y'||ch=='y') { printf("\n请输入要修改的内容:(输入数字:1~9)\n"); printf("\n1.用户ID 2.姓名 3.性别\n4.身份证号码 5.手机号 6.楼号\n7.房号 8.住房面积9.退出\n"); int change1; while(1) { printf("\n 请输入选项:"); scanf("%d",&change1); printf("\n"); switch(change1) { case 1: printf("原ID为%d\n",head2->ID); printf("请输入新ID:"); scanf("%d", &ID); head2->ID=ID; break; case 2: printf("原姓名为%s\n",head2->name); printf("请输入新姓名:"); scanf("%s", name); strcpy(head2->name,name); break; case 3: printf("原性别为%s\n",head2->sex); printf("请输入新性别:"); scanf("%s", sex); strcpy(head2->sex,sex); break; case 4: printf("原身份证号为%s\n",head2->IDnumber); printf("请输入新身份证号:"); scanf("%s", IDnumber); strcpy(head2->IDnumber,IDnumber); break; case 5: printf("原手机号为%s\n",head2->phone); printf("请输入新手机号:"); scanf("%s", phone); strcpy(head2->phone,phone); break; case 6: printf("原楼号为%d\n",head2->building); printf("请输入新楼号:"); scanf("%d", &building); head2->building=building; break; case 7: printf("原房号为%d\n",head2->roomID); printf("请输入新房号:"); scanf("%d", &roomID); head2->roomID=roomID; break; case 8: printf("原住房面积为%d\n",head2->roomarea); printf("请输入新住房面积:"); scanf("%d", &roomarea); head2->roomarea=roomarea; break; case 9:EXIT(); break;//退出 default:printf("\n\t\t\t输入错误! 按回车键返回重新选择");//按键错误反馈 } break; } } } head2=head2->next; } p=head; fp = fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\业主信息.txt", "w"); while(p!=NULL) { fprintf(fp,"%d %s %s %s %s %d %d %d\n",p->ID,p->name,p->sex,p->IDnumber,p->phone,p->building,p->roomID,p->roomarea); p=p->next; } if(sign==0) { fclose(fp); printf("没有找到此用户信息\n"); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_A(); } fclose(fp);//关闭并保存 printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_A(); } void OAD_delete() //删除用户信息 { FILE* fp; fp = fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\业主信息.txt", "r"); int flag = 0,ID; SLNode* head = createlist();//创建业主信息链表 SLNode* head2 = head; printf("\n请您核对居民的信息:\n\n"); printf("ID 姓名 性别 身份证号 电话 楼号 房号 住房面积 \n"); while (head2) { printf("%d %s %s %s %s %d %d %d\n", head2->ID, head2->name, head2->sex,head2->IDnumber,head2->phone,head2->building,head2->roomID,head2->roomarea); head2 = head2->next; } head2 = head; fp = fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\业主信息.txt", "w"); printf("\n请输入您想要删除的用户ID:\n"); scanf("%d",&ID); while (head2 != NULL) { //再把链表中的数据存入文件 if (head2->ID==ID)//ID比对 { head2 = head2->next; if (head2 == NULL) break; } fprintf(fp,"%d %s %s %s %s %d %d %d\n", head2->ID, head2->name, head2->sex,head2->IDnumber,head2->phone,head2->building,head2->roomID,head2->roomarea); head2 = head2->next; } fclose(fp); printf("\n删除成功\n"); printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_A(); } void OCD_addnew() //添加用户 { FILE *fp=NULL; fp=fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\外来人员.txt", "a"); int flag=0; char name[10]; //姓名 char sex[10]; //性别 char phone[10]; // 手机号 char ad_name[10];//值班管理人员姓名 char time[20];//时间 char ch; while (1) //进入循环体,直到接收到用户 跳出循环 { printf("请输入姓名:"); scanf("%s", name); printf("请输入性别:"); scanf("%s", sex); printf("请输入联系电话:"); scanf("%s", phone); printf("请输入值班人姓名:"); scanf("%s", ad_name); printf("请输入时间:"); scanf("%s", time); fprintf(fp,"%s %s %s %s %s\n",name,sex,phone,ad_name,time); do // 接收字符 判断是否 继续录入用户信息 { printf("是否继续录入?请选择(Y/N)"); getchar(); //接收 回车键 scanf("%c", &ch); } while ((ch != 'Y') && (ch != 'y') && (ch != 'n') && (ch != 'N')); if ((ch == 'n') || (ch == 'N')) { fclose(fp); //如果用户 输入N 则保存 并退出程序 printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_C(); } } } void OCD_select()//外来人员查询功能 { Out* head = createlist_C(); Out* head2 = head; char ch; int flag=0; char name[10]; printf("请输入要查询外来人员姓名:"); scanf("%s", name); while (head2 != NULL) { if(strcmp(name, head2->name) == 0) { printf("\n请您核对外来人员的信息:\n\n"); printf("姓名:%s 性别:%s 电话:%s 时间:%s \n", head2->name, head2->sex, head2->phone, head2->time); flag=1; break; }else { head2=head2->next; } } if (flag == 0) //判断为未找到用户 { printf("没找到该用户!\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_C(); } printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_C(); } void OCD_ad_select()//监督管理功能 { Out* head = createlist_C(); Out* head2 = head; char ch; int flag=0; char name[10]; printf("请输入要监督外来人员姓名:\n"); scanf("%s", name); while (head2 != NULL) { if(strcmp(name, head2->name) == 0) { printf("请您核对当天值班人员的信息:\n\n"); printf("%s %s \n", head2->ad_name, head2->time); flag=1; break; }else { head2=head2->next; } } if (flag == 0) //判断为未找到用户 { printf("没找到该用户!\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_C(); } printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_C(); } //添加维修设备 void ODD_addnew() { FILE *fp=NULL; FILE *fp1=NULL; Fee* head = createlist_B(); Fee* head2 = head; fp=fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\设备.txt", "a"); fp1=fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\物业费.txt", "w"); int flag=0; int ID;//用户ID char water[10];//水系统 char elec[10];//电 系统 int water_level;//维修水平 int elec_level;//维修水平 char time[20];//时间 int level;//综合维修等级 char ch; while (1) //进入循环体,直到接收到用户 跳出循环 { printf("请输入用户ID:"); scanf("%d",&ID); SLNode* p = createlist(); int j=0; while (p != NULL) { if(p->ID==ID) { j=1; break; }else { p=p->next; } } if(j==0) { printf("该用户不存在,请重新输入\n"); } if(j==1) { printf("请输入维修水设备:"); scanf("%s", water); printf("请输入维修电设备:"); scanf("%s", elec); printf("请输入水维修水平:(0~2):0/不维修 1/轻度维修 2/报废维修\n请输入:"); scanf("%d",&water_level ); printf("请输入电维修水平:(0~2):0/不维修 1/轻度维修 2/报废维修\n请输入:"); scanf("%d",&elec_level); printf("请输入时间:"); scanf("%s",time); fprintf(fp,"%d %s %s %d %d %s\n",ID,water,elec,water_level,elec_level,time); level=water_level+elec_level; while(head2!=NULL) { if(head2->ID==ID) { if(level==0) { head2->repair_fee=0; head2->total=(head2->gas_fee*head2->gas+head2->water_fee*head2->water+head2->power_fee*head2->power+head2->park_fee+head2->repair_fee); break; } else if(level==1) { head2->repair_fee=1; head2->total=(head2->gas_fee*head2->gas+head2->water_fee*head2->water+head2->power_fee*head2->power+head2->park_fee+head2->repair_fee); break; } else if(level==2) { head2->repair_fee=2; head2->total=(head2->gas_fee*head2->gas+head2->water_fee*head2->water+head2->power_fee*head2->power+head2->park_fee+head2->repair_fee); break; } else if(level==3) { head2->repair_fee=3; head2->total=(head2->gas_fee*head2->gas+head2->water_fee*head2->water+head2->power_fee*head2->power+head2->park_fee+head2->repair_fee); break; } else { head2->repair_fee=4; head2->total=(head2->gas_fee*head2->gas+head2->water_fee*head2->water+head2->power_fee*head2->power+head2->park_fee+head2->repair_fee); break; } head2=head2->next; } } } head2=head; while(head2!=NULL) { fprintf(fp1,"%d %s %d %d %d %d %d %d %d %d %d %s %s\n", head2->ID, head2->name, head2->gas_fee, head2->water_fee, head2->power_fee, head2->park_fee, head2->repair_fee,head2->gas,head2->water,head2->power,(head2->gas_fee*head2->gas+head2->water_fee*head2->water+head2->power_fee*head2->power+head2->park_fee+head2->repair_fee),head2->time,head2->bz); head2=head2->next; } fclose(fp1); do // 接收字符 判断是否 继续录入用户信息 { printf("是否继续录入?请选择(Y/N)"); getchar(); //接收 回车键 scanf("%c", &ch); } while ((ch != 'Y') && (ch != 'y') && (ch != 'n') && (ch != 'N')); if ((ch == 'n') || (ch == 'N')) { fclose(fp); //如果用户 输入N 则保存 并退出程序 printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_D(); } } } void ODD_select()//查询设备报修功能功能 { SBei* head = createlist_D(); SBei* head2 = head; int flag=0; int ID; char ch; printf("请您输入住户ID:"); scanf("%d",&ID); printf("请您核对住户的报修信息:\n\n"); while (head2 != NULL) { if(head2->ID==ID) { flag=1; printf("\n用户ID:%d \n\n供水系统报修设备:%s \n\n供电系统报修设备:%s \n\n供水系统设备报修等级:%d \n\n供电电系统报修等级:%d \n\n时间:%s \n\n", head2->ID,head2->water,head2->elec,head2->water_level,head2->elec_level,head2->time); break; } head2=head2->next; } if (flag==0) //判断为未找到用户 { printf("没找到该用户!\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_D(); }else{ printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_D(); } } void ODD_produce() { SBei* head = createlist_D(); SBei* head2 = head; system("cls"); printf("请您输入住户的ID:"); int ID; scanf("%d",&ID); printf("\n"); printf("住户的设备考核信息:\n\n"); while (head2 != NULL) { if(head2->water_level==0&&head2->elec_level==0) { printf("%s设备良好,%s设备良好\n",head2->water,head2->elec); break; } else if(head2->water_level==0&&head2->elec_level==1) { printf("%s设备良好,%s设备需轻度维修\n",head2->water,head2->elec); break; } else if(head2->water_level==0&&head2->elec_level==1) { printf("%s设备良好,%s设备受损严重\n",head2->water,head2->elec); break; } else if(head2->water_level==1&&head2->elec_level==0) { printf("%s设备良好,%s设备需轻度维修\n",head2->elec,head2->water); break; } else if(head2->water_level==2&&head2->elec_level==0) { printf("%s设备良好,%s设备受损严重\n",head2->elec,head2->water); break; } else if(head2->water_level==2&&head2->elec_level==2) { printf("%s设备受损严重,%s设备受损严重\n",head2->water,head2->elec); break; } head2=head2->next; } printf("\n请按回车键返回菜单选项....."); getchar(); getchar(); FUN_D(); } SLNode* createlist()//链表生成函数(完成可用) { //结构体中的各项数据 int ID,building,roomID,roomarea; char name[10],sex[10],IDnumber[10],phone[10]; //供链表定义使用 SLNode* p1; SLNode* p2; SLNode* head = NULL; SLNode* head2 = NULL; // FILE* fp1, * fp2; fp1 = fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\业主信息.txt", "r"); int i = 0; //把文件中的数据存入到链表中 i = fscanf(fp1, "%d %s %s %s %s %d %d %d",&ID,name,sex,IDnumber,phone,&building,&roomID,&roomarea ); while (i == 8) { p1 = (SLNode*)malloc(sizeof(SLNode)); if (p1 == NULL) printf("p1为空"); p1->ID=ID;//ID strcpy(p1->name, name);//姓名 strcpy(p1->sex, sex);//性别 strcpy(p1->IDnumber, IDnumber);//身份证 strcpy(p1->phone, phone);// 电话 p1->building=building;//楼号 p1->roomID=roomID;//房号 p1->roomarea=roomarea; //住房面积 p1->next = NULL; if (head == NULL) { head = p1; p2 = p1; } else { p2->next = p1; p2 = p1; } i = fscanf(fp1, "%d %s %s %s %s %d %d %d",&ID,name,sex,IDnumber,phone,&building,&roomID,&roomarea ); } fclose(fp1); return head; } Fee* createlist_B()//链表生成函数(完成可用) { //结构体中的各项数据 int ID;//用户ID char name[10];//用户姓名 int gas_fee;//煤气费 int water_fee;//水费 int power_fee;//电费 int park_fee;//停车费 int repair_fee;//报修费 int gas;//煤气单价 int water;//水单价 int power; //电单价 int total;//总费用 char time[20];//时间 char bz[10]; //备注 //供链表定义使用 Fee* p1; Fee* p2; Fee* head = NULL; Fee* head2 = NULL; FILE* fp; fp = fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\物业费.txt", "r"); int i = 0; //把文件中的数据存入到链表中 i = fscanf(fp, "%d %s %d %d %d %d %d %d %d %d %d %s %s",&ID,name,&gas_fee,&water_fee,&power_fee,&park_fee,&repair_fee,&gas,&water,&power,&total,time,bz ); while (i == 13) { p1 = (Fee*)malloc(sizeof(Fee)); if (p1 == NULL) printf("p1为空"); p1->ID=ID;//ID strcpy(p1->name, name);//姓名 p1->gas_fee=gas_fee; p1->water_fee=water_fee; p1->power_fee=power_fee; p1->park_fee=park_fee; p1->repair_fee=repair_fee; p1->gas=gas; p1->water=water; p1->power=power; p1->total=total; p1->next = NULL; strcpy(p1->time,time); strcpy(p1->bz,bz); if (head == NULL) { head = p1; p2 = p1; } else { p2->next = p1; p2 = p1; } i = fscanf(fp, "%d %s %d %d %d %d %d %d %d %d %d %s %s",&ID,name,&gas_fee,&water_fee,&power_fee,&park_fee,&repair_fee,&gas,&water,&power,&total,time,bz); } fclose(fp); return head; } // Out* createlist_C()//链表生成函数(完成可用) { //结构体中的各项数据 char name[10]; //姓名 char sex[10]; //性别 char phone[10]; // 手机号 char ad_name[10];//值班管理人员姓名 char time[20];//时间 //供链表定义使用 Out* p1; Out* p2; Out* head = NULL; Out* head2 = NULL; FILE* fp; fp = fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\外来人员.txt", "r"); int i = 0; //把文件中的数据存入到链表中 i = fscanf(fp, "%s %s %s %s %s",name,sex,phone,ad_name,time); while (i == 5) { p1 = (Out*)malloc(sizeof(Out)); if (p1 == NULL) printf("p1为空"); strcpy(p1->name, name);//姓名 strcpy(p1->sex,sex); strcpy(p1->phone,phone); strcpy(p1->ad_name,ad_name); strcpy(p1->time,time); if (head == NULL) { head = p1; p2 = p1; } else { p2->next = p1; p2 = p1; } i = fscanf(fp, "%s %s %s %s %s",name,sex,phone,ad_name,time); } fclose(fp); return head; } // // SBei* createlist_D()//链表生成函数(完成可用) { //结构体中的各项数据 int ID; char water[10]; char elec[10]; char time[20]; int water_level; int elec_level; //供链表定义使用 SBei* p1; SBei* p2; SBei* head = NULL; SBei* head2 = NULL; FILE* fp; fp = fopen("C:\\Users\\zhangzilong\\OneDrive\\桌面\\设备.txt", "r"); int i = 0; //把文件中的数据存入到链表中 i = fscanf(fp, "%d %s %s %d %d %s",&ID,water,elec,&water_level,&elec_level,time); while (i == 6) { p1 = (SBei*)malloc(sizeof(SBei)); if (p1 == NULL) printf("p1为空"); p1->ID=ID; strcpy(p1->water, water); strcpy(p1->elec,elec); p1->elec_level=elec_level; p1->water_level=water_level; strcpy(p1->time,time); if (head == NULL) { head = p1; p2 = p1; } else { p2->next = p1; p2 = p1; } i = fscanf(fp, "%d %s %s %d %d %s",&ID,water,elec,&water_level,&elec_level,time); } fclose(fp); return head; } int main() { MM_pass();// 调用 密码程序 输入3次密码错误 程序锁定 FUN();// 主要功能函数 system("pause"); return 0; }
讯享网
实验所需文档:

测试数据及测试方案:
- 功能测试
- 居民管理系统功能测试
1.添加用户
测试用例1:1 张三 女 123 123 14 15 120
测试用例2:2 李四 男 456 456 12 13 120
测试用例3:3 王五 女 258 258 25 26 150
测试结果:

输入用户数据,全被成功被记录在txt文件里并保存。
2.查询用户
输入要查询的居民ID:
测试用例1:1
测试结果:

测试用例2:10
测试结果:

3.修改用户信息
输入要修改的居民ID:
测试用例:1 3

测试结果:

张三的性别被更改为男,测试成功!
4.删除用户信息

输入要删除的居民ID:
测试用例:3
测试结果:


用户ID为3的居民信息成功被删除!测试成功!
-
- 物业收费管理系统功能测试
1.添加收费信息
测试用例1:1 张三 1 1 1 2 0 1 1 1 5 2023.1.5 无

测试用例2:2 李四 11 1 3 0 2 2 2 9 2023.1.5 无

测试结果:

物业费信息被成功写入物业费.txt并成功保存,添加成功!
2.查询收费信息
测试用例:1
测试结果:

测试用例:2
测试结果:

查询物业费成功!
3.定期催缴功能


使用催缴功能后,居民的备注信息由无变为请缴费,实现了缴费提醒的功能。测试成功!
4.费用维护统计功能
测试用例:3 2 3

测试结果:

5.定期统计收费功能
测试结果:

-
- 外来人员系统功能测试
1.登记外来人员信息
测试用例1:小明 男 145 张居 2023.1.2
测试用例2:小红 男 159 李宜 2023.1.2
测试结果:

外来人员信息已成功登记并保存。
2.查询外来人员信息
测试用例1:小明
测试结果:

测试用例2:小红

查询成功!
3.监督管理功能
测试用例1:小明
测试结果:

测试用例2:小红
测试结果:

-
- 设备维修系统功能测试
1.添加维修设备
测试用例:1 水表 电表 2 2 2023.1.5
测试结果:


添加维修设备的同时,物业费中的维修费用也会及时的更新,达到同步更新的效果。
2.查询维修设备情况
输入居民ID:
测试用例1:1
测试结果:

3.查询设备考核情况
输入居民ID:
测试用例1:1
测试结果:

成功打印出设备的考核情况,测试成功!
📑文章末尾


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/35477.html