停车场管理系统设计

上传人:y****3 文档编号:12832831 上传时间:2020-05-30 格式:DOC 页数:37 大小:460.50KB
返回 下载 相关 举报
停车场管理系统设计_第1页
第1页 / 共37页
停车场管理系统设计_第2页
第2页 / 共37页
停车场管理系统设计_第3页
第3页 / 共37页
点击查看更多>>
资源描述
. . 面向对象程序设计(C+)课程大作业 设计题目: 停车场管理系统设计 院 系: 计算机科学与信息工程学院 专业班级: 学号姓名: 指导教师: 年 1 月 . . 目 录 一、 成员分工 .1 二、需求分析 .2 三、总体设计 .3 四、详细设计 .6 五、系统测试 .17 六、总结 .20 七、参考文献 .21 . . 一 成员分工 我们小组成员共有三名,分别是,为了能按时圆满的完成这次 VC+课程设计,我们小组进行了详 细的分工,以确保设计能按时完成。经过周密的考虑和详细的调查最终确定该停车场管理系统需要以 下几个功能模块: (1) 需求分析 (2) 界面的设计 (3) 添加功能 (4) 显示功能 (5) 查询功能 (6) 编辑功能 (7) 删除功能 (8) 统计功能 (9) 保存功能 (10) 读取功能 经过小组成员的讨论,并根据个人的特长和具体爱好做如下具体分工: 神 1 具体完成以下模块的设计与实现: (1 ) 需求分析 (2 ) 界面的设计 (3 ) 添加功能 (4 )保存功能 神 2 具体完成以下模块的设计与实现: (1) 显示功能 (2) 查询功能 (3) 显示功能 神 3 主要具体完成以下模块的设计与实现: (1) 编辑功能 (2) 删除功能 (3) 读取功能 . . 二 需求分析 1问题描述 定 义 车 辆 类 , 属 性 有 车 牌 号 、 颜 色 、 车 型 ( 小 汽 车 、 小 卡 、 中 卡 和 大 卡 ) 、 到 达 的 时 间 和 离 开 的 时 间 等 信 息 和 相 关 的 对 属 性 做 操 作 的 行 为 。 定 义 一 个 管 理 类 , 完 成 对 停 车 场 的 管 理 。 停 车 场 的 具 体 要 求 : 设 停 车 场 是 一 个 可 停 放 n 辆 汽 车 的 狭 长 通 道 , 且 只 有 一 个 大 门 可 供 汽 车 进 出 。 汽 车 在 停 车 场 内 按 车 辆 到 达 时 间 的 先 后 顺 序 , 依 次 由 北 向 南 排 列 ( 大 门 在 最 南 端 , 最 先 到 达 的 第 一 辆 车 停 放 在 车 场 的 最 北 端 ) , 若 车 场 内 已 停 满 n 辆 汽 车 , 则 后 来 的 汽 车 只 能 在 门 外 的 便 道 上 等 待 , 一 旦 有 车 开 走 , 则 排 在 便 道 上 的 第 一 辆 车 即 可 开 入 ; 每 辆 停 放 在 车 场 的 车 在 它 离 开 停 车 场 时 必 须 按 它 停 留 的 时 间 长 短 交 纳 费 用 。 2. 基本要求 ( 1) 添 加 功 能 : 程 序 能 够 添 加 到 达 停 车 场 的 车 辆 信 息 , 要 求 车 辆 的 车 牌 号 要 唯 一 , 如 果 添 加 了 重 复 编 号 的 记 录 时 , 则 提 示 数 据 添 加 重 复 并 取 消 添 加 。 ( 2) 查 询 功 能 : 可 根 据 车 牌 号 、 车 型 等 信 息 对 已 添 加 的 停 车 场 中 的 车 辆 信 息 进 行 查 询 , 如 果 未 找 到 , 给 出 相 应 的 提 示 信 息 , 如 果 找 到 , 则 显 示 相 应 的 记 录 信 息 ; ( 3) 显 示 功 能 : 可 显 示 当 前 系 统 中 所 有 车 辆 的 信 息 , 每 条 记 录 占 据 一 行 。 ( 4) 编 辑 功 能 : 可 根 据 查 询 结 果 对 相 应 的 记 录 进 行 修 改 , 修 改 时 注 意 车 牌 号 的 唯 一 性 。 ( 5) 删 除 功 能 : 主 要 实 现 对 已 添 加 的 车 辆 记 录 进 行 删 除 。 如 果 当 前 系 统 中 没 有 相 应 的 人 员 记 录 , 则 提 示 “记 录 为 空 ! ”并 返 回 操 作 。 ( 6) 统 计 功 能 : 能 统 计 停 车 场 中 车 辆 的 总 数 、 按 车 型 、 按 到 达 时 间 进 行 统 计 等 。 ( 7) 保 存 功 能 : 可 将 当 前 系 统 中 各 类 人 员 记 录 和 休 假 记 录 存 入 文 件 中 , 存 入 方 式 任 意 。 ( 8) 读 取 功 能 : 可 将 保 存 在 文 件 中 的 信 息 读 入 到 当 前 系 统 中 , 供 用 户 进 行 使 用 。 3系统运行环境 (1)硬件环境。联想 双核处理器,2G 内存,2G 独立显卡,80G 硬盘。 (2)软件环境。Microsoft Visual C+6.0,WindosXP 系统。 . . 三 总体设计 (1) 设计思想 本停车场 n 个车位, 所以可以用数组表示,每辆车用一结构体表示,包括车牌号、颜色、车 型、 车位号、停车时间和停车标志位(标志是否停车)。当车入库时,将更改信息,当车 出库时,将信息写入 car.dat 中。再次进入该系统时,还用这个该数组,来接受 car.dat 数据 的读入,便于用户以后的操作,防止停车信息的流失。此外,由于需要显示所有汽车的停 车信息,所以我们又加了一个顾客结构体,一个顾客链表,当存车时,新建用户节点,并 使用头插法,插于链表(便于取车时查到用户,补充完整用户的信息),填写用户的相关 信息(车牌号,颜色,车型,车位号,车入库时刻)。当出库时,查找相应节点,补充完 整用户信息,包括(用户留言,停车时间总计,花费)。当退出系统后,将已出库的汽车 的车主信息,写入历史文件 list.dat 中,便于管理员的查询。将还未取走车的车主的信息存入 临时文件 temp.dat 中,防止系统关闭后数据信息的丢失,车主取车时找不到车。同时,还 要将成员信息写入临时文件 user.dat; (2) 数据结构 结构体 Car,保存每个车位的停车信息。 结构体 Gustomer,保存每个客户的信息。 结构体 User,保存管理员信息。 数组 Cars,保存整个停车状况。 数组 user; 链表 CustList,保存所有客户的信息,包括车已取走,和车未取走的。 (3) 程序模块 (1) 此停车场管理系统,主要分为以下若干模块: 首先定义用来模拟停车的数组,用来保存顾客信息的链表,保存管理员信息的结构以及全局 变量,然后编写主函数,在此主函数中实现对其它各个模块的调用。在主函数中首先调用 option()函数,出现欢迎用户使用的界面,然后提示用户进入此停车场管理系统后,再出现 一个供用户选择的主界面(包括顾客界面和停车场管理员管理界面)。当用户选择顾客界面 时,跳入到顾客界面,再次界面,用户可以选择存车、取车及返回主页面。在用户的选择过 程中,程序又分别存车,取车函数调用以及退出程序这三个函数模块。其中,当存车时,调 用了显示空闲车位状态的信息函数,并调用了保存 car.dat 的函数;当取车时,调用显示本 次停车情况以及消费金额的函数, 并调用了保存 car.dat 的函数。建立 user.dat 存放管理 人员的信息。最后,在主界面选择“退出”,保存历史文件 list.dat 和临时文件 temp.dat。当 用户选择车管系统时,调用管理员身份验证函数,从而跳入车管界面,然后相应的功能函数, 实现查询所有停车信息。 (2)各模块之间的调用关系以及算法设计 下图是个模块之间的调用关系: 欢迎页面 进入主页面 客户界面 停车场管理员界面 存 车 界 面 取 车 界 面 返 回 主 页 退 出 输入车 牌号 满 显示车 位,客 户选择 车牌 有效 退出 退出 输入车 牌号 退出 显 示 凭 据 客 户 留 言 返 回 主 页 否 是 . . (3)函数设计 int UsertestAdd(); void SaveUsers(User users6); 车 辆 信 息 注: 在取、存操作后,会自动保存信息 到 car.dat 中。 在每次退出系统时,会保存 list.dat 和 temp.dat。 初 始 停 车 场 输 入 管 理 员 信 息 显 示 管 理 员 信 息 . . void loa(User users6); void FourUserIn(User users6); void Load(Car cars6); void Showusers(User users6); void loafile(User users6,char name10,char id10,char password10, int qingjia,int empty); void Loadfile(Car cars6,char license10,char pchexing10,char pcolor2,int pnumber,int ptime,int empty); void FourCarIn(Car Cars6); void Enterpark(Car cars6); void Showcars(Car cars6); void Savecars(Car cars6); bool IsEmpty(Car cars6); void Print(char license10,char pchexing10,char pcolor2,int pnumber,int ptime,float void Leavepark(Car cars6,char license,char pchexing,char pcolor,int void CarOutMenu(char license,char pchexing,char pcolor,int void Manage(Car cars6); void InitCustList(CustList * void CreateCustList(CustList * void GetDate(char tmp64); void SearchCust(CustList * void Customer(Car cars6); void CustomerNote(char note100); void EachGuideInfor(Car c); . . 四 详细设计 实现概要设计中定义的所有数据类型,对主要操作写出实现算法,对主程序和其他模块写出算法, 写出函数的调用关系。 (1) 数据类型 结构体 Car,保存每个车位的停车信息。 struct Car char license8; int pnumber; char pcolor2; char pchexing10; int ptime; int empty;/标志位,有车为 1,无车为 0 ; struct Customer char license10;/车牌号 char pchexing10;/车的型号 char pcolor2;/车的颜色 char date64;/停车的时刻 int ptimecount;/本次停车总时间 float cost; char note100;/顾客留言 Customer *next; ; struct User char id10;/编号 char name10;/姓名 char password10;/留言 int qingjia; int empty;/标志位,有车为 1,无车为 0 ; 数组 Cars,保存整个停车状况。 . . 数组 User,保存整个管理人员的信息。 Car CarsPNUMBER; 链表,保存所有客户的信息,包括车已取走,和车未取走的。 typedef struct Snode CustList; (2) 主要操作 1) 存车 void Enterpark(Car cars6) coutinput your license,chexing,colorlicenpcolopche; while(!licen) coutinput your license,chexing,colorlicenpcolopche; /判断车库是否已经满了 int i; for(i=0;i6;i+) if(carsi.empty=1) carsi.ptime +=5; else carsi.pnumber =i+1; carsi.ptime=5; carsi.empty=1; strcpy(carsi.license,licen); return; /如果使用 break,则只能跳出单层循环, 2) 取车 void Leavepark(Car carsFLOORPNUMBER,char license,int return; /查找车位 int sign=1;/标志位,车库有该车为 1,没有赋值为零,初始值为 0 int i,j; while(sign) for(i=0;iFLOOR;i+) for(j=0;jPNUMBER;j+) if(strcmp(carsij.license,license)=0) sign=0; floor=i; pnumber=j; ptime=carsij.ptime; if(sign) cout您刚才输入的车牌号不存在!endl; coutlicense; if(sign=0) cout车已找到,请稍等。endl; strcpy(note,0000000000); . . floor+=1; pnumber+=1; /system (cls); for(i=0;i100000000;i+); carsfloor-1pnumber-1.floor =0; carsfloor-1pnumber-1.pnumber =0; carsfloor-1pnumber-1.ptime=0; carsfloor-1pnumber-1.empty=0; strcpy(carsfloor-1pnumber-1.license, ); 3)添加管理员的信息到 User.txt 中 void SaveUsers(User users6) FILE* fp = fopen(user.txt,wb); if(fp=NULL) coutCan not open this fileendl; return; User user; int j=0; while(j6) if(usersj.empty =1) strcpy(user.name ,usersj.name ); strcpy(user.id ,usersj.id ); strcpy(user.password ,usersj.password); user.qingjia =usersj.qingjia; fwrite( j+; fclose(fp); 4)登录界面 int UsertestAdd() . . /simple 登陆验证和注册用户功能 User UserArr10=031010216,神 1,031010216;/默认用户 int count=0;/统计输入用户名和密码错误次数 int i=0;/遍历变量或找到用户的 ID int k=1;/表示已存在的用户数 while(1) int n=0;/标识是否匹配,若匹配,则退出外循环 cout请输入您的管理账号id; cout请输入密码password; for(i=0;i10;i+) if(!strcmp(UserArri.id,id) break; if(n) break; i=0; count+; cout密码或账号错误,; if(count=2|k=2) cout您今天已累计输错count 次-; cout您是否要注册用户?(否则您将自动退出系统)endl; coutendl; cout输入数字 1 表示同意注册,其他则表示不同意条款tip; if(tip=1) if(k=2) cout很遗憾,系统管理员用户总数达到上限,无法注册,若需注册,请联系管理员 endl; return 0; else cout请输入要注册账号id; strcpy(UserArrk+1.id ,id); cout请输入您的姓名name; strcpy(UserArrk+1.name ,name); cout请输入您的密码password; strcpy(UserArrk+1.password ,password); cout注册成功,系统正在为您跳转到登陆界面endl; int j=0; while(j1000000000)j+; coutendl; +k; else return 0; coutendl; cout*endl; cout欢迎进 UserArri.name 入停车场后台管理系统endl; cout*endl; coutendl; . . return 1; 5)顾客界面 void Customer(Car cars6) cout*停车场*endl; while(1) cout1 存车endl; cout2 取车endl; cout3 返回上一级endl; couti; if(i3) cout您的操作非法!endl; continue; if(i=1|i=2) switch(i) case 1: system (cls); cout*停车场*endl; Enterpark(cars); Savecars(cars); cout退出?(Y:是,N:不)endl; couta; Brea; case 2: system (cls); cout*停车场*endl; . . int pnumber,ptime; int pcount=0; float cost; char note100; coutlicenpchepcolo; Leavepark(cars,licen,pche,pcolo,pnumber,ptime,cost,note); CarOutMenu(licen,pche,pcolo,pnumber,ptime,cost,note); system (cls); /SearchCust(cl,licen,cost,pcount); Savecars(cars); break; if(a=Y) system (cls); break; else system (cls); break; 6)后台程序 void Manage(Car cars6) coutWelcome!endl; while(1) cout1 初始停车场endl; cout2 显示所有车辆信息endl; cout3 输入管理员信息 endl; . . cout4 显示管理员信息endl; cout5 退出endl; couti; if(i4) cout您的操作非法!endl; continue; if(i=1|i=2|i=3|i=4) switch(i) case 1: system (cls); FourCarIn(cars); cout退出?(Y:是,N:不)endl; couta; break; case 2: system (cls); Showcars(cars); break; case 3: system (cls); FourUserIn(users); break; case 4: . . system (cls); Showusers(users); break; if(a=Y) system (cls); break; else system (cls); break; 7)主函数 int main() UsertestAdd(); Car cars6; int j; for(j=0;j6;j+) carsj.pnumber=0; carsj.ptime=0; carsj.empty=0; strcpy(carsj.license , ); /CustList *cl; /InitCustList(cl); Load(cars); . . while(1) cout*停车场*endl; cout1 客户界面endl; cout2 车管界面endl; cout3 退出endl; couti; if(i3) cout您的操作非法!endl; continue; system (cls); switch(i) case 1:Customer(cars); break; case 2:Manage(cars); break; case 3:exit(-1); 五 系统测试 (1)登陆界面 . . (2)客户界面 (3)存车 . . (4)取车 (5)车管界面 . . 六 总结 . . 这次通过课程设计首先加深啦对对 C+程序设计这一课程所学内容进一步理解和巩固,特别是对 顺序进栈以及链式队列的结构还有保存程序到文件着几块,一次停车场系统的设计开发主要用的就是 这几种,在进行系统开发的准备阶段,也就是进行需求分析阶段,对系统功能进行分析,并设计合理 的模块化结构,提高了对问题分析和设计的能力。在进行系统开发的阶段能运用合理的控制流程编写 清晰高效的程序,也训练了 C+语言程序的调试能力,能将一个小型各级组织系统联调通过,基本上 可以完成每一项功能。汽车进入停车场的信息、离开停车场的信息以及通道上的信息都可以在程序上 一一实现。但是,该程序也有不足的地方,就是管理员账号无法修改登录密码还有一些兼容性不是很 好,不过为了简便代码,所以未实现这一功能。同时我觉得这一系统也一点可改进的方面在于还应该 增加时间的判断功能,即停车场内有可能有车辆停放时间超过一天。 总之,在这次对于停车场管理系统的课程设计中。我的收获还是挺多的,在系统开发中,使得我将 计算机课程所学知识与实际问题很好的相联接在了一起。 . . 七 参考文献 1数据结构理论与实践 杨永斌主编 天津科学技术出版社 2Visual C+课程设计与系统开发案例 伍俊良编著 清华大学出版社 3C+程序设计 谭浩强编著 清华大学出版社 4求实科技.数据库通用模块及典型系统开发M. 人民邮电出版社, 2006. 5陈刚. CSS 标准网页布局开发指南M. 清华大学出版社, 2007. 6尹堃.浅谈 ASP.NET 技术的应用J.硅谷动力, 2009,(07). 7蔡义忠.在 ASP.NET 应用开发中验证码的设计J.黄冈职业技术学院学报,2009,(01). 8徐安凤,黄河涛.基于 ASP.NET 2.0 的文件上传研究J.福建电脑, 2009,(03). 9胡晓庆.多层架构在 WEB 程序设计中的应用J.兵工自动化, 2007,(03). 10廖作斌,徐智.基于 ASP.NET 技术的数据库访问通用类设计J.福建电脑,2006,(11). 11程宴,徐征. ASP.NET 的网站新闻管理系统的设计与开发J.舰船电子工程,2008,(08). . . 附录: #include #include #include #include #include #define PNUMBER 6 using namespace std; struct Car char license10; char pchexing10; char pcolor2; int pnumber; int ptime; int empty;/标志位,有车为 1,无车为 0 ; / /顾客信息节点 struct Customer char license10;/车牌号 char pchexing10;/车的型号 char pcolor2;/车的颜色 char date64;/停车的时刻 int ptimecount;/本次停车总时间 float cost; char note100;/顾客留言 Customer *next; ; /顾客信息链表 typedef Customer CustList; /管理员 struct User char id10;/编号 char name10;/姓名 char password10;/留言 int qingjia; int empty;/标志位,有车为 1,无车为 0 ; User users6; int UsertestAdd(); void SaveUsers(User users6); void loa(User users6); void FourUserIn(User users6); void Load(Car cars6); . . void Showusers(User users6); void loafile(User users6,char name10,char id10,char password10, int qingjia,int empty); void Loadfile(Car cars6,char license10,char pchexing10,char pcolor2,int pnumber,int ptime,int empty); void FourCarIn(Car Cars6); void Enterpark(Car cars6); void Showcars(Car cars6); void Savecars(Car cars6); bool IsEmpty(Car cars6); void Print(char license10,char pchexing10,char pcolor2,int pnumber,int ptime,float void Leavepark(Car cars6,char license,char pchexing,char pcolor,int void CarOutMenu(char license,char pchexing,char pcolor,int void Manage(Car cars6); void InitCustList(CustList * void CreateCustList(CustList * void GetDate(char tmp64); void SearchCust(CustList * void Customer(Car cars6); void CustomerNote(char note100); void EachGuideInfor(Car c); /游客个人信息的自我查询 void EachGuideInfor(Car c) cout.setf(ios:left); cout.width(10); cout车牌号; cout.width(8); cout颜色; cout.width (8); cout车型; cout.width(8); cout车位号; cout.width(8); cout停车开始时间endl; cout.setf(ios:left); cout.width(10); coutc.license; cout.width(2); coutc.pcolor ; cout.width (10); coutc.pchexing; cout.width(8); coutc.pnumber; cout.width(8); coutc.ptimeendl; /顾客留言 void CustomerNote(char note100) coutnote; /存车 void Enterpark(Car cars6) . . char licen10,pche10,pcolo2; coutlicen; coutpche; cout pcolo; while(!licen) coutlicen; coutpche; cout pcolo; /判断车库是否已经满了 int i; for(i=0;i6;i+) if(carsi.empty=1) carsi.ptime +=5; else carsi.pnumber =i+1; carsi.ptime=5; carsi.empty=1; strcpy(carsi.license,licen); return; /如果使用 break,则只能跳出单层循环, /取车 void Leavepark(Car cars6,char license,char pchexing10,char pcolor2,int return; /查找车位 int sign=1;/标志位,车库有该车为 1,没有赋值为零,初始值为 0 int j; while(sign) . . for(j=0;j6;j+) if(strcmp(carsj.license,license)=0) sign=0; pnumber=j; ptime=carsj.ptime; if(sign) cout您刚才输入的车牌号不存在!endl; coutlicense; if(sign=0) cout车已找到,请稍等。endl; pnumber+=1; /system (cls); /延时 for(j=0;j1000000000;j+); /车出库,将车位空出 carspnumber-1.pnumber =0; carspnumber-1.ptime=0; carspnumber-1.empty=0; strcpy(carspnumber-1.license, ); /由于 floor,pnumber 与实际的二位数组有区别,加 1 /取车的菜单项 void CarOutMenu(char license,char pchexing10,char pcolor2,int cout2 留言endl; cout3 直接退出endl; while(1) couti; if(i3) cout您的操作非法!endl; continue; switch(i) . . case 1: cout-现有汽车停车信息-endl; Print(license,pchexing,pcolor,pnumber,ptime,cost);break; case 2:CustomerNote(note);break; case 3:break; if(i=1|i=2) continue; else break; /得到当前时间 void GetDate(char tmp64) time_t t = time( 0 ); strftime(tmp, sizeof(tmp), %Y/%m/%d %X %A,localtime( bool IsEmpty(Car cars6) int j; for(j=1;j6;j+) if(carsj.empty=1) return false; return true; /逐条添加记录到 car.dat 中 void Savecars(Car cars6) FILE* fp = fopen(car.txt,wb); if(fp=NULL) coutCan not open this fileendl; return; /to file Car car; int j=0; while(j6) if(carsj.empty =1) strcpy(car.license ,carsj.license ); car.pnumber =carsj.pnumber ; car.ptime =carsj.ptime ; car.empty=carsj.empty ; / fwrite( / 如果写成这样,每次都从 car00地址开始写入, 回报原来的内容覆盖掉,加深了我对 fwrite()的理解 fwrite( j+; fclose(fp); . . void SaveUsers(User users6) FILE* fp = fopen(user.txt,wb); if(fp=NULL) coutCan not open this fileendl; return; /to file User user; int j=0; while(j6) if(usersj.empty =1) strcpy(user.name ,usersj.name ); strcpy(user.id ,usersj.id ); strcpy(user.password ,usersj.password); user.qingjia =usersj.qingjia; / fwrite( / 如果写成这样,每次都从 car00地址开始写入, 回报原来的内容覆盖掉,加深了我对 fwrite()的理解 fwrite( j+; fclose(fp); void Load(Car cars6) FILE* fp = fopen(car.txt,rb); if(fp=NULL) coutcan not open this fileendl; return; Car car; int n; while(!feof(fp) /read one car information n = fread( if(n!=1) break; / coutcar.license car.flo car.pnumber car.ptime endl; Loadfile(cars,car.license,car.pchexing,car.pcolor,car.pnumber,car.ptime,car.empty ); fclose(fp); void Loa(User users6) FILE* fp = fopen(user.txt,rb); . . if(fp=NULL) coutcan not open this fileendl; return; User user; int n; while(!feof(fp) /read one car information n = fwrite( if(n!=1) break; loafile( users,user.id,user.name,user.password ,user.qingjia ,user.empty); / coutcar.license car.flo car.pnumber car.ptime endl; fclose(fp); /输出 收费后 个人 凭据 void Print(char license,char pchexing10,char pcolor2,int pnumber,int ptime,float /输出 cout.setf(ios:left); cout.width(10); cout车牌号; cout.width(10); cout车型; cout.width(2); cout车的颜色; cout.width(8); cout车位号; cout.width(8); cout消费endl; cout.setf(ios:left); cout.width(10); coutlicense; cout.width(10); coutpchexing; cout.width(10); coutpcolor; cout.width(10); coutpnumber; cout.width(10); coutcostendl; void FourUserIn(User users6) User a; int i; cout请输入四位管理人员的信息:endl; for(i=0;i4;i+) . . cout第 i+1a.name; cout第 i+1a.id; cout第 i+1a.password; cout第 i+1a.qingjia; a.empty=1; void loafile(User users6,char name10,char id10,char password10, int qingjia,int empty); SaveUsers(users); void FourCarIn(Car cars6) /4 车进库 Car c; int i; cout请输入四辆车的信息:endl; for(i=0;i4;i+) cout第 i+1c.license; cout第 i+1c.pchexing; cout第 i+1c.pcolor; cout第 i+1c.pnumber; cout第 i+1c.ptime; c.empty=1; void Loadfile(Car cars6,char license10,char pchexing10,char pcolor2,int pnumber,int ptime,int empty); /写入文件 car.dat Savecars(cars); /记录一个停车位的状态 void Loadfile(Car cars6,char license10,char pchexing10,char pcolor2,int pnumber,int ptime,int empty) if(!license) return; strcpy(carspnumber-1.license,license); carspnumber-1.pnumber =pnumber; carspnumber-1.ptime =ptime; carspnumber-1.empty =empty; void loafile(User users6,char name10,char id10,char password10, int qingjia,int empty) strcpy(usersqingjia-1.name,name); strcpy(usersqingjia-1.id,id); strcpy(usersqingjia-1.password,password); usersqingjia-1.empty =empty; . . void Showcars(Car cars6) cout-现有汽车停车信息-endl; int j; cout.setf(ios:left); cout.width(10); cout车牌号; cout.width(10); cout车型; cout.width (2); cout车色; cout.width(8); cout车位号; cout.width(8); cout停车时间endl; for(j=0;j6;j+) if(carsj.empty=1) cout.setf(ios:left); cout.width(10); coutcarsj.license; cout.width(10); coutcarsj.pchexing; cout.width(2); coutcarsj.pcolor; cout.width(8); coutcarsj.pnumber; cout.width(8); coutcarsj.ptimeendl; void Showusers(User users6) cout-现有管理员信息-endl; int j; cout.setf(ios:left); cout.width(10); cout姓名; cout.width(10); cout管理号; cout.width (2); cout密码; cout.width(8); cout请假次数; coutendl; for(j=0;j6;j+) if(usersj.empty=1) cout.setf(ios:left); cout.width(10); . . coutusersj.name; cout.width(10); coutusersj.id; cout.width(2); coutusersj.password; cout.width(8); coutusersj.qingjia; coutendl; int UsertestAdd() /simple 登陆验证和注册用户功能 User UserArr10=031010216,神 1,031010216;/默认用户 int count=0;/统计输入用户名和密码错误次数 int i=0;/遍历变量或找到用户的 ID int k=1;/表示已存在的用户数 while(1) int n=0;/标识是否匹配,若匹配,则退出外循环 cout请输入您的管理账号id; cout请输入密码password; for(i=0;i10;i+) if(!strcmp(UserArri.id,id) break; if(n) break; i=0; count+; cout密码或账号错误,; if(count=2|k=2) cout您今天已累计输错count 次-; cout您是否要注册用户?(否则您将自动退出系统)endl; coutendl; cout输入数字 1 表示同意注册,其他则表示不同意条款tip; . . if(tip=1) if(k=2) cout很遗憾,系统管理员用户总数达到上限,无法注册,若需注册,请联系 管理员endl; return 0; else cout请输入要注册账号id; strcpy(UserArrk+1.id ,id); cout请输入您的姓名name; strcpy(UserArrk+1.name ,name); cout请输入您的密码password; strcpy(UserArrk+1.password ,password); cout注册成功,系统正在为您跳转到登陆界面endl; int j=0; while(j1000000000)j+; coutendl;
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 模板表格


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!