c语言大作业,物业管理系统.基本满足大部分的作业需求.代码最后附有代码运行时候需要的数据

  • 要求使用链表、文件。
  • 新住户信息的添加。(户主姓名、性别、身份证号、联系电话、楼号、单元号、房号、平米数、每平米物业价格、应缴纳物业费,备注信息)
  • 修改住户信息的功能。
  • 删除住户信息的功能。
  • 应缴物业费自动生成。每月1号,自动生成本月份的物业费。如果该住户之前的物业费未交清,则本月物业费与之前拖欠费用进行累加,为该用户应缴纳的物业费。
  • 缴费功能。根据用户缴纳金额,修改“应缴纳物业费”。
  • 统计功能。
  • 能够按楼号分类统计所有未交清物业费的记录。
  • 能够按拖欠款项多少,对所有用户信息进行从大到小排序。
  • 用菜单进行管理
  • 只有正确输入用户名密码才能使用此系统。
  • 所有内容能够保存到文件中。下次进入系统是从文件中读取原有信息。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>//管理员账号:12345
//管理员密码:12345 //文件名字
/*工程业主信息.txt", );工程账号密码.txt", );*/struct node {char account[100];//账号 char key[100];//密码 char name[100];//名字 char sex[20];//性别 char Id_card[100];//身份证char tel_number[100];//电话号码int building_number;//楼号int room_number;//房号int unit_number;//单元号 double square_meter;//平方米数double square_money;//每平方米价格double wuye_cost;//应缴物业费char tips[1000];//备注信息 struct node* next;
};
typedef struct node* Person;//菜单函数
void menu_main();//主菜单 (完成)
void wuye_menu();//物业菜单 (完成)
void yezu_menu();//业主菜单 (完成)
void menu_change();//修改用户数据菜单(完成) //物业和业主系统
int wuye_os();//物业系统
int yezu_os();//业主系统 (完成) //物业系统函数
void add_new();//添加新用户 ,用户填写账号密码 (完成)
void change_one();//修改用户信息 (完成)
void high_fee();//按物业费高低排序 (完成)
void floor_fee();//按照楼层先后排序
void del_one(); //删除用户信息 (完成)
void find_people();//查看用户信息 (完成)
void updata_fee();//更新物业费 (完成)struct node* creatlist();//链表生成函数(完成) //业主系统函数
void fee_find(char s[20]); //查找物业费 (完成);
void information_find(char s[20]);//查询个人信息 (完成)
void get_fee(char s[20]);//缴纳物业费 (完成) int main()
{Person L = NULL;menu_main();int n = 0;scanf("%d", &n);switch (n){case 1:wuye_os();break;case 2:yezu_os();break;default:break;}}int wuye_os()//物业系统
{int account1 = 12345;int key1 = 12345;int s1, s2;printf("请输入管理员账号密码\n");printf("账号:");scanf("%d", &s1);printf("密码:");scanf("%d", &s2);if (s1 == account1 && s2 == key1){wuye_menu();int ch = 0;scanf("%d", &ch);switch (ch){case 1:add_new();//添加 (完成) break;case 2:change_one();//修改 (完成) break;case 3:high_fee();//欠费多少 break;case 4:floor_fee();//楼层排序欠费 break;case 5:del_one();//删除信息 break;case 6:updata_fee();//更新物业费 (完成) break;case 7:find_people();//查看所有用户信息break;case 8:menu_main();break;default:break;}}else{printf("||退出系统||\n");return 0;}}int yezu_os()//业主系统(完成)
{printf("请输入账号密码登录系统\n");char account1[20], key1[20];char account2[20], key2[20];int flag = 0, tig = 0;//做标记符号 printf("账号:");scanf("%s", account1);printf("密码:");scanf("%s", key1);FILE* fp1;fp1 = fopen("工程账号密码.txt", "r");if (fp1 == NULL) printf("文件打开失败\n");while (fscanf(fp1, "%s %s", account2, key2) == 2){if (strcmp(account1, account2) == 0 && strcmp(key1, key2) == 0){printf("输入正确的账号和密码,正常进入系统\n");flag = 1;break;}}fclose(fp1);if (flag == 0){printf("密码或账号错误\n");}if (flag == 1){yezu_menu();int n = 0;scanf("%d", &n);switch (n)//查询物业费 {case 1:fee_find(account1); //传递业主账号 break;case 2://查询个人信息 information_find(account1);//传递业主账号 break;case 3://缴纳物业费get_fee(account1);//传递业主账号用于进行信息比对 break;}}
}void get_fee(char s[20])//缴纳物业费(完成)
{fee_find(s);char ss[20];strcpy(ss, s);printf("请输入要缴纳的金额:");double fee = 0;scanf("%lf", &fee);//结构体中的各项数据 char s1[20], s2[20], s3[20], s4[20], s5[20], s6[20];int s7, s8, s9;double s10, s11, s12;char s13[100];Person p1, head2, head = creatlist();//调用链表创建函数生成信息链表 // 文件 FILE* fp1, * fp2;fp1 = fopen("工程业主信息.txt", "w");head2 = head;double newfee = 0;int flag = 0;while (head2 != NULL){//再把链表中的数据存入文件 if (strcmp(head2->account, ss) == 0)//账号比对` {newfee = head2->wuye_cost - fee;fprintf(fp1, "%s    %s    %s    %s    %s    %s    %5d  %5d  %5d   %9.2lf   %9.2lf   %9.2lf   %s\n", head2->account, head2->key, head2->name, head2->sex, head2->Id_card, head2->tel_number, head2->building_number, head2->room_number, head2->unit_number, head2->square_meter, head2->square_money, newfee, head2->tips);head2 = head2->next;if (head2 == NULL) break;}fprintf(fp1, "%s    %s    %s    %s    %s    %s    %5d  %5d  %5d   %9.2lf   %9.2lf   %9.2lf   %s\n", head2->account, head2->key, head2->name, head2->sex, head2->Id_card, head2->tel_number, head2->building_number, head2->room_number, head2->unit_number, head2->square_meter, head2->square_money, head2->wuye_cost, head2->tips);head2 = head2->next;}fclose(fp1);printf("\n***********缴费成功后*************\n");fee_find(ss);}void fee_find(char s[20]) //查找物业费 (完成)
{char ss1[20], ss2[20];char s1[20], s2[20], s3[20], s4[20], s5[20], s6[20];int s7, s8, s9;double s10, s11, s12;char s13[100];FILE* fp1;fp1 = fopen("工程业主信息.txt", "r");int i = 0;i = fscanf(fp1, "%s %s %s %s %s %s %d %d %d %lf %lf %lf %s", s1, s2, s3, s4, s5, s6, &s7, &s8, &s9, &s10, &s11, &s12, s13);while (i == 13){if (strcmp(s1, s) == 0)//账号比对成功; {printf("您需要缴纳的物业费为:%.2lf 元\n", s12);if (s12 <= 0){printf("不需要缴纳物业费\n");}break;}i = fscanf(fp1, "%s %s %s %s %s %s %d %d %d %lf %lf %lf %s", s1, s2, s3, s4, s5, s6, &s7, &s8, &s9, &s10, &s11, &s12, s13);}fclose(fp1);printf("\n************操作成功返回业主系统页面*************\n");//yezu_os();
}void information_find(char s[20])//查询个人信息 (完成)
{char ss1[20], ss2[20];char s1[20], s2[20], s3[20], s4[20], s5[20], s6[20];int s7, s8, s9;double s10, s11, s12;char s13[100];FILE* fp1;fp1 = fopen("工程业主信息.txt", "r");int i = 0;i = fscanf(fp1, "%s %s %s %s %s %s %d %d %d %lf %lf %lf %s", s1, s2, s3, s4, s5, s6, &s7, &s8, &s9, &s10, &s11, &s12, s13);while (i == 13){if (strcmp(s1, s) == 0){printf("信息比对成功\n");printf("账号:%s         密码:%s                 姓名:%s\n", s1, s2, s3);printf("性别:%s                 身份证:%s                电话号码:%s\n", s4, s5, s6);printf("楼号:%d                 房号:%d                     单元号:%d\n", s7, s8, s9);printf("平米数:%.2lf            平米物业单价:%.2lf          应缴纳物业费:%.2lf\n", s10, s11, s12);break;}i = fscanf(fp1, "%s %s %s %s %s %s %d %d %d %lf %lf %lf %s", s1, s2, s3, s4, s5, s6, &s7, &s8, &s9, &s10, &s11, &s12, s13);}fclose(fp1);printf("\n************操作成功返回业主系统页面*************\n");yezu_os();
}void wuye_menu()//物业菜单
{printf("------------1---添加                        \n");printf("------------2---修改信息                    \n");printf("------------3---按欠费多少统计物业费          \n");printf("------------4---按楼号统计物业费         \n");printf("------------5---删除业主信息             \n");printf("------------6---更新物业费               \n");printf("------------7---查看全部用户信息        \n");printf("------------8---退出                     \n");printf("请选择:");
}void yezu_menu()//业主界面 (完成)
{printf("\n温馨提示---如需修改个人信息请联系物业管理人员\n");printf("联系电话:8208208820\n");printf("----------1---查询物业费\n");printf("----------2---查询个人信息\n");printf("----------3---缴纳物业费\n");printf("请选择:");
}void menu_main()//主界面 (完成)
{printf("----------------------------------------------------------------\n");printf(" |                     *******欢迎使用物业管理系统*******\n"); printf(" |                     1---物业\n");printf(" |                     2---业主\n");printf(" |                     3---退出\n");printf("----------------------------------------------------------------\n");printf("                       请选择:");}void add_new()//添加 (已完成)(1)
{FILE* fp1, * fp2, * fp3;int flag = 0;char ss1[20], ss2[20];char s1[20], s2[20], s3[20], s4[20], s5[20], s6[20];int s7, s8, s9;double s10, s11, s12;char s13[100];printf("\n请输入你要添加的住户的各类信息\n");printf("创建账号密码)");printf("账号(身份证前三加后三位):");scanf("%s", s1);fp1 = fopen("工程业主信息.txt", "a+");fp2 = fopen("工程账号密码.txt", "a+");printf("密码(6位):");scanf("%s", s2);printf("姓名:");scanf("%s", s3);printf("性别");scanf("%s", s4);printf("身份证(5):");scanf("%s", s5);printf("电话号码(5)");scanf("%s", s6);printf("楼号(2)");scanf("%d", &s7);printf("房号(2):");scanf("%d", &s8);printf("单元号(2):");scanf("%d", &s9);printf("平米数:");scanf("%lf", &s10);printf("每平米物业价格:");scanf("%lf", &s11);printf("应缴纳物业费:");scanf("%lf", &s12);printf("备注(没有未缴纳物业费就直接填0):");scanf("%s", s13);//将变量写入文件 fprintf(fp1, "%s    %s    %s    %s    %s    %s    %5d  %5d  %5d   %9.2lf   %9.2lf   %9.2lf   %s\n", s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13);fprintf(fp2, "%s   %s \n", s1, s2);//存入账号,密码; fclose(fp1);fclose(fp2);printf("\n****添加完成,返回管理员物业系统*****\n");printf("需要重新输入\n");wuye_os();
}/*工程业主信息.txt", ");工程账号密码.txt", );*/
void change_one()//修改 (完成) (1)
{FILE* fp1, * fp2, * fp3;char ss1[20], ss2[20];//账号密码输入char ss3[20], ss4[20];int flag = 0;printf("请业主输入账号:\n");scanf("%s", ss1);//ss1存入账号 printf("密码:");scanf("%s", ss2);//ss2存入密码 fp1 = fopen("工程账号密码.txt", "r");while (fscanf(fp1, "%s %s", ss3, ss4) == 2){if (strcmp(ss3, ss1) == 0 && strcmp(ss4, ss2) == 0){flag = 1;break;//对输入的账号密码进行比对; }}fclose(fp1);//关闭文件 if (flag == 0){printf("-----输入错误账号或密码,为保护安全,结束进程----\n");}
loop1:char s1[20], s2[20], s3[20], s4[20], s5[20], s6[20];int s7, s8, s9;double s10, s11, s12;char s13[100];//供链表定义使用 Person p1, p2, head = NULL;Person p21, p22, head2 = NULL;if (flag == 1)//密码输入正确时候 {printf("-----已输入正确的账号和密码---\n");int ch = 0;menu_change();scanf("%d", &ch);fp1 = fopen("工程业主信息.txt", "r");int i = 0;//把文件中的数据存入到链表中printf("\n修改前各项数据数据:\n");i = fscanf(fp1, "%s %s %s %s %s %s %d %d %d %lf %lf %lf %s", s1, s2, s3, s4, s5, s6, &s7, &s8, &s9, &s10, &s11, &s12, s13);while (i == 13){p1 = (Person)malloc(sizeof(struct node));if (p1 == NULL) printf("p1为空");strcpy(p1->account, s1);//账号 strcpy(p1->key, s2);//密码 strcpy(p1->name, s3);//姓名 strcpy(p1->sex, s4);// 性别 strcpy(p1->Id_card, s5);//身份证 strcpy(p1->tel_number, s6);//电话 p1->building_number = s7;//楼号 p1->room_number = s8;//房间号 p1->unit_number = s9;//单元号 p1->square_meter = s10;//平米数 p1->square_money = s11;//平米物业单价 p1->wuye_cost = s12;//物业费 strcpy(p1->tips, s13);//备注 if (strcmp(ss1, p1->account) == 0)//匹配到同`一账号的用户对其信息输出 {printf("账号:%s         密码:%s                 姓名:%s\n", p1->account, p1->key, p1->name);printf("性别:%s                 身份证:%s                电话号码:%s\n", p1->sex, p1->Id_card, p1->tel_number);printf("楼号:%d                 房号:%d                     单元号:%d\n", p1->building_number, p1->room_number, p1->unit_number);printf("平米数:%.2lf            平米物业单价:%.2lf          应缴纳物业费:%.2lf\n", p1->square_meter, p1->square_money, p1->wuye_cost);}p1->next = NULL;if (head == NULL){head = p1;p2 = p1;}else{p2->next = p1;p2 = p1;}i = fscanf(fp1, "%s %s %s %s %s %s %d %d %d %lf %lf %lf %s", s1, s2, s3, s4, s5, s6, &s7, &s8, &s9, &s10, &s11, &s12, s13);}fclose(fp1);//关闭文件 head2 = head;p21 = head; p22 = head;if (ch == 1)//修改密码 s{char mm[20];printf("\n请输入修改后的密码:");scanf("%s", mm);while (head2 != NULL){if (strcmp(ss1, head2->account) == 0)//匹配到同`一账号的用户对其链表内内容进行修改 {printf("原密码为:%s\n", head2->key);strcpy(head2->key, mm);break;}head2 = head2->next;}}if (ch == 2)//住户姓名s{char zm[20];printf("\n请输入修改后的姓名:");scanf("%s", zm);while (head2 != NULL){if (strcmp(ss1, head2->account) == 0)//匹配到同`一账号的用户对其链表内内容进行修改 {printf("原姓名为:%s\n", head2->name);strcpy(head2->name, zm);break;}head2 = head2->next;}}if (ch == 3)//性别 s{char xb[20];printf("\n请输入修改后的性别:");scanf("%s", xb);while (head2 != NULL){if (strcmp(ss1, head2->account) == 0)//匹配到同`一账号的用户对其链表内内容进行修改 {printf("原性别为:%s\n", head2->sex);strcpy(head2->sex, xb);break;}head2 = head2->next;}}if (ch == 4)//身份证号码 s{char id[20];printf("\n请输入修改后的身份证号码:");scanf("%s", id);while (head2 != NULL){if (strcmp(ss1, head2->account) == 0)//匹配到同`一账号的用户对其链表内内容进行修改 {strcpy(head2->Id_card, id);printf("原本身份证号码为:%s\n", head2->key);break;}head2 = head2->next;}}if (ch == 5)//联系电话 s{char phone[20];printf("\n请输入修改后的电话号码:");scanf("%s", phone);while (head2 != NULL){if (strcmp(ss1, head2->account) == 0)//匹配到同`一账号的用户对其链表内内容进行修改 {strcpy(head2->tel_number, phone);printf("原电话号码:%s\n", head2->tel_number);break;}head2 = head2->next;}}if (ch == 6)//每平米单价 double{double dp = 0;printf("\n请输入修改后的每平米物业单价:");scanf("%lf", &dp);while (head2 != NULL){if (strcmp(ss1, head2->account) == 0)//匹配到同`一账号的用户对其链表内内容进行修改 {printf("原本每平米物业费为:%.2lf\n", head2->square_money);head2->square_money = dp;break;}head2 = head2->next;}}head2 = head;printf("\n修改后的数据为:\n");while (head2 != NULL){if (strcmp(ss1, head2->account) == 0)//匹配到同`一账号的用户对其信息输出 {printf("账号:%s         密码:%s                 姓名:%s\n", head2->account, head2->key, head2->name);printf("性别:%s                 身份证:%s                电话号码:%s\n", head2->sex, head2->Id_card, head2->tel_number);printf("楼号:%d                 房号:%d                     单元号:%d\n", head2->building_number, head2->room_number, head2->unit_number);printf("平米数:%.2lf            平米物业单价:%.2lf          应缴纳物业费:%.2lf\n", head2->square_meter, head2->square_money, head2->wuye_cost);}head2 = head2->next;}head2 = head;fp1 = fopen("工程业主信息.txt", "w");fp2 = fopen("工程账号密码.txt", "w");while (head2 != NULL){//再把链表中的数据存入文件 fprintf(fp1, "%s    %s    %s    %s    %s    %s    %5d  %5d  %5d   %9.2lf   %9.2lf   %9.2lf   %s\n", head2->account, head2->key, head2->name, head2->sex, head2->Id_card, head2->tel_number, head2->building_number, head2->room_number, head2->unit_number, head2->square_meter, head2->square_money, head2->wuye_cost, head2->tips);fprintf(fp2, "%s  %s\n", head2->account, head2->key);//账号密码文件 head2 = head2->next;}fclose(fp1);fclose(fp2);}//选择是否需要继续修改信息 if (flag == 1){printf("\n是否继续修改,(是)按--1   (否)按--2\n");printf("请选择:");int jxu = 0;scanf("%d", &jxu);if (jxu == 1){goto loop1;}else{printf("\n*****返回管理员系统******\n");wuye_os();}}}void menu_change()//修改选项界面 (完成)
{printf("---------用户信息修改页面--------\n");printf("--1-密码      \n");printf("--2-住户姓名      \n");printf("--3-性别      \n");printf("--4-身份证号码      \n");printf("--5-联系电话      \n");printf("--6-每平米价格      \n");printf("输入选择项目:");
}void updata_fee()//更新物业费(完成)
{//结构体中的各项数据 char s1[20], s2[20], s3[20], s4[20], s5[20], s6[20];int s7, s8, s9;double s10, s11, s12;char s13[100];//供链表定义使用 Person p1, p2, head = NULL;Person p21, p22, head2 = NULL;// FILE* fp1, * fp2;fp1 = fopen("工程业主信息.txt", "r");int i = 0;//把文件中的数据存入到链表中i = fscanf(fp1, "%s %s %s %s %s %s %d %d %d %lf %lf %lf %s", s1, s2, s3, s4, s5, s6, &s7, &s8, &s9, &s10, &s11, &s12, s13);while (i == 13){p1 = (Person)malloc(sizeof(struct node));if (p1 == NULL) printf("p1为空");strcpy(p1->account, s1);//账号 strcpy(p1->key, s2);//密码 strcpy(p1->name, s3);//姓名 strcpy(p1->sex, s4);// 性别 strcpy(p1->Id_card, s5);//身份证 strcpy(p1->tel_number, s6);//电话 p1->building_number = s7;//楼号 p1->room_number = s8;//房间号 p1->unit_number = s9;//单元号 p1->square_meter = s10;//平米数 p1->square_money = s11;//平米物业单价 p1->wuye_cost = s12;//物业费 strcpy(p1->tips, s13);//备注 p1->next = NULL;if (head == NULL){head = p1;p2 = p1;}else{p2->next = p1;p2 = p1;}i = fscanf(fp1, "%s %s %s %s %s %s %d %d %d %lf %lf %lf %s", s1, s2, s3, s4, s5, s6, &s7, &s8, &s9, &s10, &s11, &s12, s13);}fclose(fp1);head2 = head;printf("\n更新前各业主的物业费入下:\n");printf("账号     姓名    应缴纳物业费\n");while (head2 != NULL){printf("%s  %s  %.2lf \n", head2->account, head2->name, head2->wuye_cost);head2 = head2->next;}head2 = head;fp1 = fopen("工程业主信息.txt", "w");double updatafee = 0;while (head2 != NULL){//再把链表中的数据存入文件 updatafee = head2->wuye_cost + (head2->square_money) * (head2->square_meter);fprintf(fp1, "%s    %s    %s    %s    %s    %s    %5d  %5d  %5d   %9.2lf   %9.2lf   %9.2lf   %s\n", head2->account, head2->key, head2->name, head2->sex, head2->Id_card, head2->tel_number, head2->building_number, head2->room_number, head2->unit_number, head2->square_meter, head2->square_money, updatafee, head2->tips);head2 = head2->next;}fclose(fp1);fp1 = fopen("工程业主信息.txt", "r");i = fscanf(fp1, "%s %s %s %s %s %s %d %d %d %lf %lf %lf %s", s1, s2, s3, s4, s5, s6, &s7, &s8, &s9, &s10, &s11, &s12, s13);printf("\n更新后各业主的物业费入下:\n");printf("账号     姓名    应缴纳物业费\n");double mixfee = 0;while (i == 13){mixfee += s12;printf("%s   %s   %.2lf\n", s1, s3, s12);i = fscanf(fp1, "%s %s %s %s %s %s %d %d %d %lf %lf %lf %s", s1, s2, s3, s4, s5, s6, &s7, &s8, &s9, &s10, &s11, &s12, s13);}fclose(fp1);printf("需收取总物业费为:%.2lf\n", mixfee);printf("\n************操作成功返回管理员页面*************\n");wuye_os();}void high_fee()//按物业费高低(完成)
{struct node temp;Person head = creatlist(), p1, p2;//调用链表生成函数,生成用户信息的链表 p1 = head, p2 = head;int n = 0, i = 0, j = 0;int fee1 = 0, fee2 = 0;while (p1 != NULL)//统计链表中节点数 {n++;p1 = p1->next;}printf("节点数为:%d\n", n);p2 = head;p1 = head;Person find;//find = (struct node*)malloc(sizeof(struct node));double max = 0, mix_fee = 0;printf("\n--------按照物业费欠费高---排名更新前:-----------\n");while (p1){mix_fee += p1->wuye_cost;printf("姓名:%s   物业费:%.2lf  \n", p1->name, p1->wuye_cost);p1 = p1->next;}p1 = head;printf("\n--------按照物业费欠费高---排名更新后:-----------\n");for (i = 0; i < n; i++){max = find->wuye_cost;//保证max的初始值为链表中的最小值 p2 = head;while (p2 != NULL){if (p2->wuye_cost > max){max = p2->wuye_cost;find = p2;//保存这个节点 }p2 = p2->next;}printf("姓名:%s   物业费:%.2lf  \n", find->name, find->wuye_cost);find->wuye_cost = -1;//给这个节点处的物业费赋值为-1; }printf("总物业费为:%.2lf\n", mix_fee);printf("\n************操作成功返回管理员页面*************\n");wuye_os();}
void floor_fee()//按照楼层(完成)
{struct node temp;Person head = creatlist(), p1, p2;//调用链表生成函数,生成用户信息的链表 p1 = head, p2 = head;int n = 0, i = 0, j = 0;while (p1 != NULL)//统计链表中节点数 {n++;p1 = p1->next;}//printf("节点数为:%d\n", n);p2 = head;p1 = head;Person find;//创建一个中间变量 find = (struct node*)malloc(sizeof(struct node));int max = 0;//用于楼号的比较 double mix_fee = 0;//求总的物业费 printf("\n--------按照楼号排序--前-排名更新前:-----------\n");while (p1){mix_fee += p1->wuye_cost;printf("姓名:%s   楼号为:%d    物业费:%.2lf  \n", p1->name, p1->building_number, p1->wuye_cost);p1 = p1->next;}p1 = head;printf("\n--------按照楼号排序--后-排名更新后:-----------\n");for (i = 0; i < n; i++)//n为结点数 {max = 0;//保证max的初始值为链表中的最小值 p2 = head;while (p2 != NULL){if (p2->building_number > max){max = p2->building_number;find = p2;//保存这个节点 }p2 = p2->next;}printf("姓名:%s   楼号为:%d    物业费:%.2lf  \n", find->name, find->building_number, find->wuye_cost);find->building_number = -1;//给这个节点处的物业费赋值为-1; }printf("总物业费为:%.2lf\n", mix_fee);printf("\n************操作成功返回管理员页面*************\n");wuye_os();}
void del_one()  //删除用户信息 (完成)
{
loop1:printf("请输入你需要删除的账号和密码已确认删除\n");char ch1[20], ch2[20];printf("请输入账号:");scanf("%s", ch1);printf("请输入密码:");scanf("%s", ch2);char ch3[20], ch4[20];FILE* fp1, * fp2;fp1 = fopen("工程账号密码.txt", "r");int i = fscanf(fp1, "%s %s", ch3, ch4);int flag = 0;while (i == 2){if (strcmp(ch3, ch1) == 0 && strcmp(ch2, ch4) == 0){printf("*****输入有效账户,可进行操作****\n");flag = 1;}i = fscanf(fp1, "%s %s", ch3, ch4);}if (flag == 0){printf("\n*****输入无效信息-重新输入*******\n");goto loop1;}Person head = creatlist();//创建业主信息链表 Person head2 = head;printf("\n原业主中各信息:\n");while (head2){printf("%s %s %s\n", head2->account, head2->name, head2->sex);head2 = head2->next;}fp2 = fopen("工程账号密码.txt", "r");char zh[20], mma[20];Person p1, p2, head_x = NULL;int j = 0;j = fscanf(fp2, "%s %s", zh, mma);//创建密码账号的链表 while (j == 2){p1 = (Person)malloc(sizeof(struct node));strcpy(p1->account, zh);strcpy(p1->key, mma);p1->next = NULL;if (head_x == NULL){head_x = p1;p2 = p1;}else{p2->next = p1;p2 = p1;}j = fscanf(fp2, "%s %s", zh, mma);}fclose(fp2);p1 = head_x;p2 = head_x;fp1 = fopen("工程账号密码.txt", "w");while (p1){if (strcmp(ch1, p1->account) == 0)//匹配账号 {printf("账号匹配成功删除账号 %s  %s\n", ch1, p1->account);}else{fprintf(fp1, "%s   %s\n", p1->account, p1->key);//存入账号,密码; }p1 = p1->next;}fclose(fp1);head2 = head;fp1 = fopen("工程业主信息.txt", "w");while (head2 != NULL){//再把链表中的数据存入文件 if (strcmp(head2->account, ch1) == 0)//账号比对 {head2 = head2->next;if (head2 == NULL) break;}fprintf(fp1, "%s    %s    %s    %s    %s    %s    %5d  %5d  %5d   %9.2lf   %9.2lf   %9.2lf   %s\n", head2->account, head2->key, head2->name, head2->sex, head2->Id_card, head2->tel_number, head2->building_number, head2->room_number, head2->unit_number, head2->square_meter, head2->square_money, head2->wuye_cost, head2->tips);head2 = head2->next;}fclose(fp1);printf("\n账户删除完成\n");wuye_os();
}
void find_people()//查看用户信息(完成)
{Person head = creatlist();Person head2 = head;printf("账号        姓名 性别 电话 楼号 房号 单元  平方米  物业单价   物业费   \n");while (head2 != NULL){printf("%s  %s %s  %s %3d %3d %3d  %5.2lf   %5.2lf   %10.2lf      \n", head2->account, head2->name, head2->sex, head2->tel_number, head2->building_number, head2->room_number, head2->unit_number, head2->square_meter, head2->square_money, head2->wuye_cost);head2 = head2->next;}printf("\n************操作成功返回管理员页面*************\n");wuye_os();
}
struct node* creatlist()//链表生成函数(完成可用)
{//结构体中的各项数据 char s1[20], s2[20], s3[20], s4[20], s5[20], s6[20];int s7, s8, s9;double s10, s11, s12;char s13[100];//供链表定义使用 Person p1, p2, head = NULL;Person p21, p22, head2 = NULL;// FILE* fp1, * fp2;fp1 = fopen("工程业主信息.txt", "r");int i = 0;//把文件中的数据存入到链表中i = fscanf(fp1, "%s %s %s %s %s %s %d %d %d %lf %lf %lf %s", s1, s2, s3, s4, s5, s6, &s7, &s8, &s9, &s10, &s11, &s12, s13);while (i == 13){p1 = (Person)malloc(sizeof(struct node));if (p1 == NULL) printf("p1为空");strcpy(p1->account, s1);//账号 strcpy(p1->key, s2);//密码 strcpy(p1->name, s3);//姓名 strcpy(p1->sex, s4);// 性别 strcpy(p1->Id_card, s5);//身份证 strcpy(p1->tel_number, s6);//电话 p1->building_number = s7;//楼号 p1->room_number = s8;//房间号 p1->unit_number = s9;//单元号 p1->square_meter = s10;//平米数 p1->square_money = s11;//平米物业单价 p1->wuye_cost = s12;//物业费 strcpy(p1->tips, s13);//备注 p1->next = NULL;if (head == NULL){head = p1;p2 = p1;}else{p2->next = p1;p2 = p1;}i = fscanf(fp1, "%s %s %s %s %s %s %d %d %d %lf %lf %lf %s", s1, s2, s3, s4, s5, s6, &s7, &s8, &s9, &s10, &s11, &s12, s13);}fclose(fp1);return head;
}/*
//可用于存入业主信息文件的数据;
1020051059    123456    盛夏    男    12345    12345       12     13     14       14.00       14.00      600.00   1
1020051060    123456    寒冬    男    12345    12345       12     11     14       18.00       17.00      934.00   1
1020051061    123456    暮秋    男    12345    12345       12     13     14       13.00       14.00      500.00   1
1020051062    123456    初春    女    12345    12345       16     13     14       17.00       14.00      727.00   1//可用于存入账号密码文件的数据
1020051059   123456
1020051060   123456
1020051061   123456
1020051062   123456*/

物业管理系统(C语言)相关推荐

  1. java计算机毕业设计基于springboot小区物业管理系统

    项目介绍 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势:对于小区物业管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了小区物业管理系统,它彻底改变了过 ...

  2. 基于java下Springboot框架实现小区物业管理系统

    基于java下Springboot框架实现小区物业管理系统 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:N ...

  3. 基于c语言的物业管理系统设计,基于C#语言的小区物业管理系统的设计与实现

    摘要: 随着人们生活水平和消费水平的不断提高,人们在追求物质生活的同时,更注重生活的质量,小区物业管理作为一种服务行业,与人们的生活息息相关,是人们生活质量的最基本需求.因此,小区物业管理系统的研究和 ...

  4. c语言开发物业收费程序,C语言程序的设计_物业管理系统方案

    <C语言程序的设计_物业管理系统方案>由会员分享,可在线阅读,更多相关<C语言程序的设计_物业管理系统方案(10页珍藏版)>请在人人文库网上搜索. 1.i nclude std ...

  5. c#+sql语言开发的小区物业管理系统,基于C#环境下的物业管理系统.doc

    成都信息工程学院银杏酒店管理学院 本科生毕业论文(设计) 题 目 明珠苑小区物业管理系统的设计与实现 学生姓名 彭秋月 学 号 2011561281 年级 2011级 指导教师 倪铉珣 教务处制表 二 ...

  6. java计算机毕业设计小区物业管理系统录像展示.mp4源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计小区物业管理系统录像展示.mp4源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计小区物业管理系统录像展示.mp4源程序+mysql+系统+lw文档+远程调试 ...

  7. ssm物业管理系统的设计与实现毕业设计源码261632

    摘要 随着计算机科学技术日渐成熟,人们已经深刻认识到了计算机功能的强大,计算机已经进入到了人类社会发展的各个领域,并且发挥着十分重要的作用.每个社区的物业管理是一项系统而复杂的工作,它需要一个团队互相 ...

  8. java毕业设计智能小区物业管理系统Mybatis+系统+数据库+调试部署

    java毕业设计智能小区物业管理系统Mybatis+系统+数据库+调试部署 java毕业设计智能小区物业管理系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  9. 基于安卓的小区物业管理系统

    本文是基于安卓的小区物业管理系统的设计与实现.在20世纪90年代以来,随着网络.通信和信息技术的突破性进展,Internet技术在全球爆炸性增长并迅速普及.在这一时代背景下,移动端互联网应运而生了,各 ...

  10. java毕业设计物业管理系统源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计物业管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计物业管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 本源码技术栈: 项目 ...

最新文章

  1. 学python要考什么证-这十个Python常用库,学习Python的你必须要知道!
  2. Java基础day8
  3. 【CodeForces - 570A】Elections(模拟,水题)
  4. vector 函数都有哪些??
  5. 迁移潮来袭!数十个项目宣布即将停止支持 Python 2
  6. android 通过短信找回密码,我的android手机短信被我加密了,忘记密码了,在不刷机恢复出厂设置的情况下如何解决?急急急!!!!!...
  7. ASP.NET MVC架构与实战系列之三:MVC控件解析
  8. JavaScript数组实现图片轮播
  9. C语言实现简单的计算器(C语言入门1)
  10. ffmpeg API变更 2009-03-01—— 2017-05-09变更
  11. html列表自动无限循环滚动,js 无限循环垂直滚动列表
  12. c语言:24、大小端序
  13. 【Unity3D】Tank大战
  14. 争做“拼购村” 中国“家电之都”有了新致富路
  15. 如何把立创EDA上导出的原理图和封装导入AD的元件库
  16. 给Ubuntu文件夹解锁
  17. WinInet进阶:发送邮件
  18. 会声会影2022中文版主要功能讲解64位安装下载
  19. 计算机中丢失quartz dll,win10系统提示缺少quartz.dll文件的解决方法
  20. 为什么这些UI设计很糟糕?什么是好的UI设计?

热门文章

  1. Linux内核源码总体介绍—1
  2. ubuntu安装vasp_VASP 软件在ubuntu10.04下的安装过程
  3. 信号与系统----导论1杂谈为什么要学信号与系统
  4. 临近毕业,查降重来了
  5. ST电机库5.4.5FUL版本(ST MC SDK)
  6. C语言实现九九乘法表(四种情况)
  7. 三菱PLC仿真软件的序列号
  8. 深信服环境SCSA环境遇到的问题(无法访问网站)
  9. 搭建微信小程序(前后端)
  10. 黑桃k游戏java实战_Java入门第三季项目实战——扑克游戏