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