资源预览内容
第1页 / 共53页
第2页 / 共53页
第3页 / 共53页
第4页 / 共53页
第5页 / 共53页
第6页 / 共53页
第7页 / 共53页
第8页 / 共53页
第9页 / 共53页
第10页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
一、 设计目的 学会用C语言编程实现小区管理系统; 能熟练的掌握各个功能函数的熟练编写和理解;二、 设计内容小区管理系统设计:小区管理系统包括小区成员的所住单元、住户号、工作单位 姓名、电话号码等信息;小区管理系统主要提供以下功能: 1.系统的登录界面(主要包括用户名、密码的设置、新用户的创建、密码的修改等);2.系统以菜单方式工作3.住户信息录入功能输入4.住户信息浏览功能显示5.住户信息查询、修改、增加功能(1) 按姓名 (2)按电话号码6.住户信息删除功能7.住户信息以文件方式保存、读取8.住户信息的统计三、 概要设计1. 功能模块图依据程序的数据结构和功能,遵照“自顶向下”原则,采用基于函数的逐步求精法,描述该程序的层次结构: main()主函数菜单(登录界面、主菜单)输入显示查询修改添加删除退出按姓名按号码信息保存信息读取排序2.各个模块功能的详细描述l 主函数: main();l 登录菜单: . 进入主菜单:menu();.修改密码函数: repassword();.登录界面函数: print1();创建用户函数: usercreat();l 主菜单:输入函数:head=create();输出函数:print(head);住户信息文件的保存函数:save_inf(head);住户信息文件的读取函数:head=read_inf();住户信息的查找函数:find(head);住户信息的修改函数:re(head);住户信息的删除函数:delete(head);住户信息的添加函数:add(head);信息的排序:sort(head);住户信息的统计:count(head);四、 详细设计1功能函数的调用关系图Main()Print1()Menu()Repassword()Login()Usercreat()head=creat()print(head)find(head)re(head)delete(head)add(head)sort(head)save_inf()read_inf()count(head)2.各功能函数的数据流程图开始 输出函数print()的流程图 执行while循环语句执行printf()语句结束输入函数create()的流程图开始 Printf()提示语句;Scanf()语句输入数据执行While()语句依次查找链表再执行scanf()语句结束 执行查找函数find()流程图开始 执行while循环语句执行if判断语句结束执行修改函数re()的流程图开始 执行while语句进行查找执行if语句进行判断执行while语句进行选择要修改的内容结束执行删除函数delete的流程图开始 If语句判断节点是否为空执行while进行查找要删除的节点结束添加函数add的流程图 开始执行scanf语句输入要添加的信息执行while语句查找添加的位置结束执行排序sort函数的流程图开始 执行for循环统计节点的数目执行for循环节点一到尾部执行for循环找最大节点执行for循环给最后尾节点排序结束3.重点设计及编码1) 密码输入函数(实现密码能够再输错的情况下修改);编码:printf(nn*-请输入密码(6位)login in: );for(i=0;inum,&p1-num1,p1-name,p1-sex,p1-com,p1-tel);while(p1-num1!=0)p2-next=p1;/* 将新结点连接到表尾*/p2=p1; /* p2指向新的表尾*/p1=(struct person *)malloc(N);/* p1指向新申请的结点*/ scanf(%s%ld%s%s%s%s,p1-num,&p1-num1,p1-name,p1-sex,p1-com,p1-tel); p2-next=NULL;/* 表尾结点next域置空*/ free(p1); /* 释放无效空间*/ return head; 5) 文件的保存函数与读取函数要保持一致:编码:for(stu=h-next;stu!=NULL;stu=stu-next) fprintf(fp,%s %ld %s %s %s %sn,stu-num,stu-num1,stu-name,stu-sex,stu-com,stu-tel); /*格式化字符串写函数*/ printf(n文件已成功保存,按任意键返回!n); getch(); /* 从键盘上输入一个字符但不会现在屏幕上*/ fclose(fp); /* 将文件所指的指针FP关闭*/fscanf(fp,%s %ld %s %s %s %sn,stu-num,&stu-num1,stu-name,stu-sex,stu-com,stu-tel);/*格式化字符读函数*/r-next=stu;r=stu;r-next=NULL; /*尾指针置空*/fclose(fp);6) 排序函数关键在找最大节点的位置时能记录前一节点的位置:编码:struct person *p,*pre1,*pre2,*r,*s;int count=0,i; for(s=h;s-next!=NULL;s=s-next) /*统计节点数*/count+;for(s=h;s-next!=NULL;s=s-next); /*循环体语句为空,找尾节点*/for(i=1;inext; /*pre2指向p前的一个节点*/r=pre1-next;p=pre2-next;while(p!=s)/不等于尾节点if(p-num1r-num1) pre1=pre2; /*指针r始终指向数据较大的节点*/r=p;pre2=pre2-next;/依次往下查找p=p-next;pre1-next=r-next; /释放最大的节点 r-next=s-next;/给s节点附上新的节点s-next=r;for(p=s-next,p
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号