C语言-小区物业管理-实验报告(共15页).doc
精选优质文档-倾情为你奉上一. 设计目的1.熟悉结构体类型的定义;2.练习对数据的储存和读写:对文件的操作;3.实现函数的定义及对函数的调用;4.学习链表的建立,使用链表实现对数据的改动;5.掌握调试程序的方法,熟练单步跟踪等。二. 设计内容主要实现以下几个功能:1.管理员及业主账号的创建及核对,管理员密码的修改; 2录入业主信息;3.修改,增加,删除信息;4.信息的查询,打印,统计;5.信息的文件储存;6.文件的读写;7.密码的加密。三概要设计1功能模块图; 主函数管理员业主创建住户信息添加 修改查询打印删除统计修改密码查询22各个模块详细的功能描述。1.创建住户信息:键盘输入住户信息,有姓名,联系方式,房屋号码,房产所有,车位拥有情况,收费项目,家庭人口等。并储存在文件中。2.添加: 选择进行添加,添加住户信息。并储存进指定文件中。添加完毕后返回主界面。3.修改: 选择进行修改,进入后可选择修改的内容(包括联系方式,住户姓名,房间号等)。根据修改的内容查找用户,继续进行修改,输入新的信息,完成后打印新信息,存入指定文件。不再修改时返回主界面。4.删除: 选择要删除的人的信息(姓名或者房号),根据此信息查找该用户并删除相应信息,并存入指定文件中。5.打印: 利用读文件及链表打印存入的信息。6.查询: 打开文件,根据姓名或房间号查询此业主的全部信息。7.统计: 打开文件,每个住户的车位信息与no比较,不是则进行加加操作,统计出已用车位总数。8.修改密码:核对修改的账号,输入新密码,存入文件,并进行加密。9.查询2:打开文件,根据姓名或房间号查询此业主的姓名,联系方式,房间号信息四详细设计1功能函数的调用关系图; 退出退出 界 面 管理员住 户注册登录选项创 建添 加查 询打 印存文件读文件· 件注册登录选项查 询2改 密修 改选删 除统 计2各功能函数的数据流程图;主 界 面是否继续管理打 开 文 件 输入添加的住户基本信息YN退出(1)添加:(2)创建住户信息创 建 住 户 信 息创 建 链 表存 入 指 定 文 件输 入 住 户 信 息打 开 指 定 文 件管 理 员 界 面 是否继续输入(3).修改打 开 文 件改姓名改电话改房号输入修改的姓名是否存在是否存在是否存在打印输出修改后该人资料存入文件输入新姓名输入新电话输入新房号输入修改的电话输入修改的姓名退出YYYNNN(4).删除打 开 文 件姓 名电 话输入删除的姓名是否存在是否存在存入文件成功删除输入删除的电话退出YYN退出N (5).打印打 开 文 件查找打印的开始节点打 印(6).查询返回主界面 打 开 文 件按 姓 名按 房 号输 入 姓 名输 入 房 号比较文件中姓名与输入的姓名是否相同输出此住户信息此用户不存在是否继续查询查 询比较文件中姓名与输入的姓名是否相同此用户不存在NY(7).统计打 开 文 件对比所有用户的车位是否为noSum+输出车位数第一个用户信息下个用户且下个节点不为空NY(8)密码修改 打开密码文件输入修改密码的账号是否存在此用户输入新的密码打印修改后的登录信息不存在此用户,跳出NY3重点设计及编码。(1)登陆时密码存入文件及加密 开辟两个文件,一个存密码,另一个存加密文件,当void deng() /登录FILE *fp;FILE *k;char name30,code30; /用户名,选择登录(注册),密码struct mima *r,*s,*h,*s1; /密码链接的创建int i,p,j; /控制密码重输循环次数int m;char a6;fp=fopen("mima.txt","a+");k=fopen("temp.txt","a+");if(fp=NULL) printf("此文件不存在,请检查输入"); getch(); exit (1);system("cls"); printf("-n");printf("n*请输入账号:n");scanf("%s",name);h=(struct mima*)malloc(sizeof(struct mima);h->next=NULL;r=h;while(!feof(fp)s=(struct mima*)malloc(sizeof(struct mima);fscanf(fp,"%st%sn",s->z,s->m);if(strcmp(name,s->z)=0)break;r->next=s;r=s;r->next=NULL;if(strcmp(name,s->z)!=0)printf("无效账号!nn");printf("是否现在进行注册?(按1继续,按其它任意键退出)nn");scanf("%d",&m);system("cls");if(m=1)printf("n-n");printf("n*用户名:n");scanf("%s",name);fprintf(fp,"%s ",name);printf("n*密码:n");scanf("%s",code);fprintf(fp,"%sn",code);printf("n注册成功!正在跳转登录····nn");Sleep(1500);getch();deng(fp);elseprintf("nnnn 已成功退出!nnn");exit (0);printf(" n*请输入密码:n");for(j=0;j<6;j+)aj=getch();printf("*");aj='0' for(i=0,p=3;i<3;i+,p-)if(strcmp(s->m,a)!=0)printf("n密码错误!请检查!nn");printf("n您还有%d次输入密码的机会nn",p);printf("n*请重新输入密码!*n");for(j=0;j<6;j+)aj=getch();printf("*");aj='0'elsebreak;if(p=0)if(strcmp(s->m,code)!=0)printf("密码错误!nn");printf("对不起,你无权访问!n");exit(0);if(k=NULL)return;while(ai!='0')s1=ai1234;fputc(s1,k);i+;fclose(k);if(k=fopen("temp.txt","a+")=NULL)return; rewind(k); flushall;fclose(fp);printf("n");printf("n 恭喜您,您已成功登录!n");printf("n-n");getch();(2)文件的打开及写入struct people *fileopen()struct people *head,*s,*r;FILE *fp;long fsize,fno; s=head=(struct people *)malloc(sizeof(struct people);fp=fopen("zhuhu.txt","rt");if(fp=NULL)printf("n打开该管理文件失败!n也可能不存在,请检查输入!n");exit(1);fno=fileno(fp);fsize=filelength(fno);printf("n此文件成功打开!n");printf("该文件的大小为:%ld bytesn",fsize);while(!feof(fp)r=(struct people*)malloc(sizeof(struct people);fscanf(fp,"%st%st%st%st%st%st%dnn",r->name,r->pho,r->house,r->blong,r->car,r->money,&r->pop);s->next=r;s=r;s->next=NULL;fclose(fp);return head;printf("_n");struct people *filewrite(struct people *head) /写入文件函数FILE *fp;char filename30;struct people *q; printf("请输入现有信息要储存到de管理文件中:"); scanf("%s",filename); fp=fopen(filename,"wt");if(fp=NULL)printf("该文件无法找到,请检查输入n");exit(1);q=(struct people*)malloc(sizeof(struct people);q=head->next;while(q!=NULL) fprintf(fp,"%st%st%st%st%st%st%dnn",q->name,q->pho,q->house,q->blong,q->car,q->money,q->pop);/*改q=q->next;fclose(fp);return head;(3)链表的创立struct people *createlist() FILE *fp; char filename40; struct people *head1,*p1,*p2;int flag;printf("n请输入要保存的库存资料管理文件名(以.txt结尾):");scanf("%s",filename); if(fp=fopen(filename,"wt")=NULL) /*判断文件是否存在*/printf("nn*写文件出错,请检查输入*n");getch();exit(1);head1=(struct people *)malloc(sizeof(struct people); /*申请头结点空间*/p1=head1;p2=head1;system("cls"); printf("nn *(*_*) 成功创建管理文件包!*n");printf("请输入基本信息:n 姓名 联系电话 门牌号 房产所有 车位 收费 人口 n");printf("_n"); scanf("%s%s%s%s%s%s%d",p1->name,p1->pho,p1->house,p1->blong,p1->car,p1->money,&p1->pop);printf("_n");p1->next=NULL;fprintf(fp,"%st%st%st%st%st%st%dnn",p1->name,p1->pho,p1->house,p1->blong,p1->car,p1->money,p1->pop); /*将信息存入文件*/while(1)p1=(struct people *)malloc(sizeof(struct people);printf("是否继续输入基本信息?(按0结束,任意其他键继续)n");scanf("%d",&p1->flag); if(p1->flag=0) /*控制空间申请条件*/fclose(fp);return head1;printf("_n"); printf("请输入基本信息:nn 姓名 联系电话 门牌号 房产所有 车位 收费 人口 n");scanf("%s%s%s%s%s%s%d",p1->name,p1->pho,p1->house,p1->blong,p1->car,p1->money,&p1->pop); fprintf(fp,"%st%st%st%st%st%st%dnn",p1->name,p1->pho,p1->house,p1->blong,p1->car,p1->money,p1->pop); p1->next=NULL; p2->next=p1;p2=p1;专心-专注-专业