《C语言程序设计课程设计报告停车场管理系统》由会员分享,可在线阅读,更多相关《C语言程序设计课程设计报告停车场管理系统(68页珍藏版)》请在金锄头文库上搜索。
1、HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGYC语言程序设计课程设计报告课设题目: 停车场管理系统 专 业: 自动化(汽车工业电气自动化) 班 级: T1123-6 姓 名: 鲁杰 成 绩: 完成日期: 2012年6月18日2012年6月22日 指导教师: 胡宁亚 目 录C语言程序设计0课程设计报告01.课程设计目的22.需求分析22.1要求22.2任务描述32.3运行环境32.4开发工具33.总体设计33.1系统流设计33.2系统模块设计44.详细设计54.1数据结构设计54.2模块接口设计64.3 以下是几个主要模块的流程图:85.运行结果145.1信息
2、自动导入提示界面:155.2主界面:155.3 车辆录入界面175.4停车信息浏览界面:185.5信息查询界面:185.6车辆出场界面:195.7修改收费界面195.8题目要求界面215.9重新载入文件信息提示界面225.10退出系统界面226.程序调试与测试236.1程序调试236.2程序测试317.问题与不足318.建议329.编程体会3210.程序源代码:3311.参考文献6612.用户使用手册661.课程设计目的1) 通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。2) 通过课程设计,进一步掌握C语言中重要的数据结构。掌握并熟练运用指针、链表
3、、结构体、文件等数据结构。3) 通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。4) 通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。5) 通过课程设计,加强了自己的程序分析能力。2.需求分析2.1要求1) 遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力。2) 运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。3) 学会利用数组、结构体、链表进行相关信息表示。4) 功能模块划
4、分清晰,系统结构图符合功能操作要求,且有详尽的功能描述5) 各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口等关系正确。6) 所设计的C程序较好的可读性和可靠性;程序书写风格规范,注释清晰。7) 界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。8) 程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。9) 学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。10) 掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。11) C语言课程设计报告的内容反应实际设计过
5、程,且符合格式要求,无抄袭现象。2.2任务描述此系统以停车场所停车辆为背景,假定学院1号停车场有车位20个,车位满时,能入不能进,要求记录每台车辆的车牌号,出入时间(要求自动获取系统时间),停车收费管理为:0.5小时内免费,以后每1小时收费1元,超过6小时的按2元计费,超过24小时的按3元计费,车辆入场时,告知空闲车位情况,并显示收费标准;车辆出场时统计总费用并显示。具体功能实现如下:1) 系统以菜单方式工作(用键盘输入16之间的数来选择功能,其中6为退出)2) 车辆进入停车场录入功能(车牌号、进入时间(自动获取系统时间)、车位满时不能进入; 3) 停车场停车信息总体浏览功能(车位占用情况、空
6、闲车位情况、已在车场内的车辆车牌号,当前已在车场的单台停车费用总计及停车场当前收费总计)4) 查询功能,按车位空闲情况、停车时时长查询(至少一种查询方式)5) 车辆出场后信息的删除(按车牌号进行删除,同时删除该车的所有费用)6) 收费的修改(给定密码,按费用性质修改,如改变收费时长或增加降低时长内费用)7) 所有数据符合实际应用要求2.3运行环境 WindowsXP/7系统VC+6.0编译环境2.4开发工具C语言3.总体设计3.1系统流设计本系统的功能模块如图所示,主要有以下模块: 信息自动导入提示界面主菜单界面车辆录入停车信息总体浏览功能查询车辆出场修改收费题目要求重新导入文件信息退出系统按
7、时长修改按费用修改保存再退出退出显示空闲车位按车牌号查询车辆信息 系统功能模块图 3.2系统模块设计1) 信息自动导入提示界面:构造函数void loadRec(),实现文件内信息的自动导入并提示。2) 主菜单界面:构造函数int menu_select(),实现系统主菜单的显示。3) 车辆录入:构造函数void insertRec(),录入车牌号码并显示所自动提取的系统时间,并将相关信息存入文件,实现对车辆信息的添加录入。 4) 停车信息总体浏览:构造函数void listRec(),显示所有车辆的车牌号、车辆进入时间、并通过调用修改函数double moneyget(double p)来计
8、算车辆当前收费以及停车场当前收费总计。5) 功能查询:构造函数void searchRec(),显示停车场车位空闲情况、给定车牌号浏览该车辆相关信息。6) 车辆出场:构造函数void deleteRec(),输入出场的车辆的车牌号码,删除该车辆在文件中的信息。并通过对收费函数double moneyget(double p)的调用,实现相应的车辆收费的查询。7) 修改收费:构造函数void modifyRec(),给定密码(123为初始密码),若输入密码正确,则调用int moneycharge(int q)函数实现对全局变量t1、t2、t3、m1、m2、m3、m4的修改,从而实现对车辆收费规
9、定的修改。8) 题目要求显示:构造函数int timu(),显示题目要求。9) 重新导入文件信息:调用函数void loadRec(),重新载入文件信息。10) 退出系统:构造函数void exit0(),若信息有改动,则调用保存函数void writeInfo()保存相关改动。4.详细设计4.1数据结构设计根据系统要求,系统中需要保存的数据信息,其结构如下:数据项名称数据项系统表示数据类型数据长度备注车牌号码num7char14车辆进入时间年yearint8车辆进入时间月monthint4车辆进入时间日dayint4车辆进入时间时hourint4车辆进入时间分minuteint4根据系统要求
10、,系统中需要保存的类别信息,其结构如下:类别代号num7yearmonthdayhourminute类别名称车牌号进入时间-年进入时间-月进入时间-日进入时间-时进入时间-分为了能实现不受限制的增加学生信息,采用链表的结构保存学生信息,在增加学生的基本信息时,创建一个学生信息的节点,将其插入到链表中,示意图如下。 车辆信息1车辆信息2通讯录信息1221车辆信息3车辆信息4为此,先声明一个类型为struct student的结构体,其成员为所停车辆的信息。然后通过对指针、链表、文件等数据结构的操作,实现对车辆信息的读取,插入,保存,查询,浏览,删除等一系列操作。其中,结构体定义如下:struct
11、 carchar num7; int year;int month;int day;int hour; int minute; struct car *next;4.2模块接口设计(1)所有函数模块声明如下:void loadRec();/*从磁盘文件导入停车信息到内存*/ void insertRec();/*车辆录入,插入信息到内存*/ void listRec();/*停车信息总体浏览*/ void searchRec();/*功能查询,通过输入车牌号码查询*/void deleteRec();/*车辆出场,并删除信息*/void modifyRec(); /*给定密码修改收费标准*/
12、int moneycharge(); /*修改收费*/void exit0();/*退出*/int menu_select();/*主菜单*/void writeInfo();/*保存停车记录*/double moneyget(); /*收费管理*/int timu(); /*显示题目要求*/(2)并定义两个全局变量:double t1=0.5,t2=6,t3=24; double m1=0,m2=1,m3=2,m4=3; /*收费修改的全局变量*/ int b; /*记录车辆总数全局变量*/ int writeinfo_flag=0; /*停车记录保存标志全局变量*/struct car*head=NULL,*p1,*p2,*p3;(3)主要模块的实现系统以主函数void main()为入口,调用loadRec()函数自动导入文件中的信息,再调用menu_select()函数,进入主菜单界面。系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。用户输入选择“1、”时,进入车辆录入模块,调用void insertRec()函数,接收用户输入的车牌号,获取系统时间作为进入时间;用户输入选择“2、”时,进入停车信息总体浏览模块,调用void listRec()函数,显示所有车辆的车牌号、车辆进