停车场管理系统 课程设计.docx

上传人:牧羊曲112 文档编号:5034417 上传时间:2023-05-30 格式:DOCX 页数:18 大小:354.58KB
返回 下载 相关 举报
停车场管理系统 课程设计.docx_第1页
第1页 / 共18页
停车场管理系统 课程设计.docx_第2页
第2页 / 共18页
停车场管理系统 课程设计.docx_第3页
第3页 / 共18页
停车场管理系统 课程设计.docx_第4页
第4页 / 共18页
停车场管理系统 课程设计.docx_第5页
第5页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《停车场管理系统 课程设计.docx》由会员分享,可在线阅读,更多相关《停车场管理系统 课程设计.docx(18页珍藏版)》请在三一办公上搜索。

1、高级语言程序设计(1)课程设计一、程序设计说明书【设计题目】停车场信息管理系统【问题描述】现如今随着经济的发展,私家车越来越多,系统管理停车场变得尤为重要。 某小区停车场有车数辆,将每个车主的信息用该软件通过键盘敲入并以文本文 件方式存放在磁盘,内容为五列:停车场车位号、车牌号、车主姓名、车主身 份证号、车主电话。编写程序,录入车主信息,可对车主信息随时进行修改、 删除,并按车位号查询车主信息。【基本要求】1. 通过此软件可以录入该汽车的车牌号;2. 通过此软件能够浏览录入该汽车所停车位号;3. 通过此软件录入车主信息,包括车主姓名、车主身份证号以及车主的联系 方式;4. 通过此软件可根据输入

2、的车位号删除、修改或查询车主信息;5. 过此软件能将车主信息按照车位号进行排序;6. 通过此软件可输出全部车主信息。【算法思想】1. 构造一个结构体类型,成员包括五项:一个字符型数组存放:车主姓名,四个整形变量:汽车的车牌号、汽车所停车位号、车主身份证号以及车主的联 系方式。2. 录入车主信息及车位号时,通过循环语句将各项信息输入到结构体中,然 后通过循环语句算出总分并写入文本文件中,并存入磁盘。3. 修改车主信息时,先将文件读出到结构体中,通过字符的比较查找所修改 的信息所在处,如果没有找到则输出警告语句,找到后则通过输入输出函数与 赋值进行修改,并将修改过后的车主信息写入文本文件中,并存入

3、磁盘。4. 查询车主信息时,直接通过已经存在的文本文件进行读出并在屏幕上输出 结果,如果文件不存在则输出警告语句。5. 查找时,直接通过已经存在的文本文件进行读出到结构体中,并将结构提 数组通过车位号的大小用冒泡法进行排序,然后将结果显示在屏幕上。【调用关系】main函数分别调用:insert ();/输入信息del();/删除车主信息modify();/修改车主信息inquire ();/查询车主信息sort();/对车主信息进行排序print_inf()/打印车主信息【概要设计】1. 功能模块图;主函数验读插修删查排保证取入改除找序存密文信信信信信文码件息息息息息件2. 各个模块详细的功能

4、描述。1. 保存信息模块:将程序中链表里所存储的信息保存到已经指定好的文件 中(result.txt)(主要是 fprintf 函数)。2. 读取信息模块:将指定的文件(result.txt)中的信息读取后存入运行程序中 的链表当中(主要是fscanf函数)3. 简单菜单模块:显示程序执行时的主菜单(主要是switch语句实现)。4. 输出信息模块:将链表中的信息输出到程序的显示框上(主要是for循环 和printf函数实现)。5. 添加信息模块:按照停车号的大小进行插入,有重号系统会显示“有重 号,添加失败”,否则“插入成功”。6. 删除信息模块:通过停车号的比较,当无此车位号则删除失败,否

5、则删 除成功。7. 修改信息模块:先找到需要修改的车位号,再按照车牌号,车主姓名, 车主身份证,车主联系方式进行进一步修改若无该车位号则提示错误信 息返回主菜单。8. 查询信息模块:如果链表里无数据则显示“系统无数据,按任意键返回” 如果有则按车位号查询,并输出。9. 排序信息模块:按照简单排序按车位号对信息进行排序,并输出。10. 主函数模块:将以上模块进行组合实现系统的功能。【详细设计】功能函数的调用关系图;输入密码进入菜单Switch ()4Case 7读取文件Case 1添加信息添加(插入)停车场的基本信息(车位号车牌号,车主信息)Case 2删除信息输入车位号,删除该车位的信息Cas

6、e 3修改信息输入车位号,选择修改各项信息b,Case 4查询信息输入车位号,查询该车位的信息Case 5排序信息将停车场现有的停车信息按照车 位号进行排序Case 6打印信息将停车场现有的停车信息输出Case 0退出七士击) 结束1/【程序使用方法】1. 执行程序,先输入密码,进入程序主界面按照程序提示进入所要执行的内容。2. 选择1,根据所停车位号添加车主信息,添加完成后按任意键返回主菜单。3. 选择2,根据所停车位号删除车主信息,删除完成后按任意键返回主菜单。4. 选择3,根据所停车位号修改车主信息,修改完成后按任意键返回主菜单。5. 选择4,根据所停车位号查询车主信息,查询后按任意键返

7、回主菜单。6. 选择5,给居所停车位对车主信息进行排序,排序完成后按任意键返回。7. 选择6,可输出全部车主信息,出现在屏幕上,按任意键进行返回。8. 显示主菜单是,选择0,结束本次程序。二. 程序上机调试报告【语法错误及其排除】1. 个别用户表示符和关键字相同导致程序无法运行,找出错误修改。2. 使用fscanf()函数时,参数直接写的是变量名,应该取地址。3. 宏定义时在末尾处加上了分号,应该不加分号。4. 部分单词拼写错误,导致定义的变量不存在,根据提示进行修改。三. 程序测试结果程序测试主要截屏1.输入系统密码2.密码正确,进入主菜单3.添加停车信息4.修改车主信息5.排序车主信息6.

8、打印车主信息7.查找车主信息8.删除车主信息9.退出程序【收获及体会】对自己的设计进行评价,指出合理和不足之处,提出改进方案;我自己觉得自己的程序还存在很大问题,比如如果使用者不按照程序先前制 定的规则输入则会出现bug,合理之处就在于基本完成了一个非收费停车场的基 本信息的管理。改进之处就是增加信息的项目已经bug的问题。还有就是将这个停车场改成一个收费的停车场,按照时间来收费,有过想法但是不知道该怎么实现,有想到 用time函数,但不知道怎么用!四、源程序代码#include#include#include#include#includestruct car *creat_inf();vo

9、id save_inf(struct car *h);struct car *read_inf(struct car *head);void menu(void);void scan_inf(struct car *h);void print_inf(struct car *h);int insert(struct car *h);int del(struct car *h);int modify(struct car *h);struct car * inquire(struct car *h);struct car *sort(struct car *head);定义结构体struct c

10、arint n;char num20;char name20;char number20;char tel_num20;struct car *next;停车场车位号车牌号车主姓名车主身份证号车主联系电话指针域建立单链表头结点struct car *creat_inf() struct car *head;head=(struct car *)malloc(sizeof(struct car);head-next=NULL;表尾节点next域置空return head;将单链表中的信息保存到指定的磁盘文件中void save_inf(struct car *h)struct car *c;FI

11、LE *fp;if(fp=fopen(result.txt,wt)=NULL)printf(写文件出错,按任意键退出!);getch();exit(1);for(c=h-next;c!=NULL;c=c-next)fprintf(fp,%d%s%s%s%s,c-n,c-num,c-name,c-number,c-tel_num);printf(n文件已成功保存,按任意键退出!nn);getch();fclose(fp);从指定的磁盘文件中读取信息并存入单链表中struct car *read_inf(struct car *head)struct car *p1,*p2;FILE *fp;sy

12、stem(cls);if(fp=fopen(result.txt,rt)=NULL)printf(文件空,按任意键返回!);getch();return head;p2=head;while(!feof(fp)文件未结束p1=(struct car *)malloc(sizeof(struct car);存放读取信息fscanf(fp,%d %s %s %s %sn”,&p1-n,p1-num,p1-name,p1-number,p1-tel _num);p2-next=p1;链接节点p2=p1;p2-next=NULL;fclose(fp);printf(-n文件中信息以正确读出,按任意键返

13、回!);getch();system(cls);return head;停车场管理系统菜单 void menu(void)printf(nnnnnn);-欢迎来到停车场管理系统printf(1.添加停车信息nn);printf(2.删除停车信息nn);printf(3.修改停车信息nn);printf(4.查询停车信息nn);printf(5.排序停车信息nn);printf(6.打印停车信息nn);printf(7.读取库中数据nn);printf(0.退出系统nn);printf(请选择0-6选项nn);输出模块void print_inf(struct car *h)struct car

14、 *p;system(cls);printf(nn目前停车场的数据为:nn);printf(车位号车牌号车主姓名车主身份证号车主联系电话n);for(p=h-next;p!=NULL;p=p-next)printf(%5d %10s %8s %10s %10sn,p-n,p-num,p-name,p-number,p-tel_ num);printf(按任意键返回主菜单!n);getch();添加信息模块int insert(struct car *h)struct car *p;p=(struct car *)malloc(sizeof(struct car); /p 指向新生成的节点sys

15、tem(cls);printf(-请输入要添加的车位号,车牌号,车主姓名,车主身份证号,车主联系电 话 n);scanf(%d%s%s%s%s”,&(p-n),(p-num),(p-name),(p-number),(p-tel_num) );while(h-next!=NULL & h-next-n n) h=h-next;if(h-next!=NULL & h-next-n = p-n)free(p);printf(有重号,添加失败,按任意键返回主菜单!);getch();return 0;p-next=h-next;h-next=p;printf(添加成功,按任意键返回主菜单!);get

16、ch();return 1;删除信息模块int del(struct car *h)int m;struct car *p;p=h-next;system(cls);if(p=NULL)只有头结点为空表,不能删除printf(无内容,无法删除,按任意键退出返回主菜单!n);getch();return 0;elseprintf(请输入要删除的车位号:n);scanf(%d”,&m);while(p!=NULL)if(p-n=m)h-next = p-next;free(p);printf(删除成功!按任意键返回主菜单!n);getch();return 1;h = p;p=p-next;pri

17、ntf(无此车位号,删除失败,按任意键返回主菜单!n);getch();return 0;修改信息模块int modify(struct car *h)int m,choice;struct car *p;p = h-next;system(cls);printf(n请输入要修改的车位号:n);scanf(%d,&m);while (p!=NULL)if(p-n=m)printf(您要修改哪一项:n);printf(n 1.车牌号n);printf(n 2.车主姓名n);printf(n 3.车主身份证号n);printf(n 4.车主联系方式n);printf(请选择 1-4:);scanf

18、(%d,&choice);switch(choice)case 1:printf(请输入修改后的车牌号:n);scanf(%s”,p-num);break;case 2:printf(请输入修改后的车主姓名:n);scanf(%s”,p-name);break;case 3:printf(请输入修改后的车主身份证号:n); scanf(%s”,p-number);break;case 4:printf(请输入修改后的车主联系方式:n);scanf(%s”,p-tel_num);break;printf(n停车信息n);printf(车位号车牌号车主姓名车主身份证号车主联系电话n);printf

19、(%5d %10s %8s %10s %10sn”,p-n,p-num,p-name,p-number,p-tel_num );printf(修改信息成功!按任意键返回主菜单!);getch();return 1;p=p-next;printf(您所要修改的信息不存在,按任意键返回主菜单!);getch();return 0;查询信息模块struct car * inquire(struct car *h)int m;struct car *p;system(cls);if(h-next = NULL)printf(系统无数据,按任意键返回主菜单n);getch();return 0;else

20、p = h-next;printf(请输入要要查找的车位号:,scanf(%d”,&m);while (p!=NULL)if(p-n=m)printf(车位号 车牌号车主姓名车主身份证号 车主联系电话n);printf(%5d %10s %8s %10s %10sn,p-n,p-num,p-name,p-number,p-tel_ num);printf(按任意键返回主菜单.);getch();return p;找到则返回指向该节点的指针Pp=p-next;return NULL;/未找到则返回空指针NULL排序struct car *sort(struct car *head)struct

21、car *temp1,*p1,*p2,*min,*temp,*p;temp=(struct car*)malloc(sizeof(struct car);if(head-next=NULL)system(cls);printf(系统无数据!按任意键返回主菜单!);getch();return head;for(p1=head-next;p1!=NULL;p1=p1-next)min=p1;for(p2=p1-next;p2!=NULL;p2=p2-next)if(min-n p2-n)min=p2;if(min!=p1)*temp=*min;*min=*p1;*p1=*temp;temp1=m

22、in-next;min-next=p1-next;p1-next=temp1;system(cls);printf(nn排序后停车场的数据为:nn);printf(车位号车牌号车主姓名车主身份证号车主联系电话n);for(p=head-next;p!=NULL;p=p-next)printf(%5d %10s %8s %10s %10sn,p-n,p-num,p-name,p-number,p-tel_ num);printf(按任意键返回主菜单.n);getch();return (head);主函数void main(void)struct car *head;int m,n,choice

23、;m=123;printf(请输入管理员密码:n);scanf(%d”,&n);if(n=m)printf(密码正确!,按任意键进入n);getch();elseprintf(密码错误!按任意键退出n);exit(0);head=creat_inf();dosystem(cls);menu();scanf(%d”,&choice);switch(choice)case 1:insert(head);break;case 2:del(head);break;case 3:modify(head);break;case 4:inquire(head);break;case 5:sort(head);break;case 6:print_inf(head);break;case 7:head = read_inf(head);break;case 0:break;while(choice!=0);save_inf(head);free(head);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号