C语言程序设计实习报告-停车场管理系统
更新时间:2024-03-27 02:00:01 阅读量: 综合文库 文档下载
- c语言程序设计答案推荐度:
- 相关推荐
C语言课程设计实习报告
姓名: 成帅安学号:20141002605 院(系):工程学院专业:土木工程
2016年6 月
2016.6 中国地质大学C语言课程设计
1
第一章 停车场管理系统
§1.1题目描述
1、有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层,(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项,其中停车时间按分钟计算。
2、假设停车场初始状态为第一层已经停有4辆车,其车位号依次为1-4,停车时间依次为20,15,10,5。即先将这四辆车的信息存入文件“car.dat\中(数组的对应元素也要进行赋值)。
3、停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件\中,并将在此之前的所有车的停车时间加5。
4、收费管理(取车):当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元。(停车费用可设置一个变量进行保存),同时从文件\中删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组对应元素清零)。按用户的选择来判断是否要输出停车收费的总计。
5、输出停车场中全部车辆的信息。 6、退出系统。
§1.2算法设计
1、需求分析:车辆信息用文件储存,提供文件的输入输出操作; 当车离开时要删除文件中该车的信息,因而要提供文件的删除操作; 用键盘式菜单实现功能选择。
2、总体设计思路:整个管理系统设计可设计为停车模块、取车模块、车辆浏览信息模块。
另外车辆停放信息涉及到从car.dat中读取,保存和修改,为了方便起见和程序的模块化,我将文件的读入和保存单独设计为两个子程序。 整体模块图如下:
2016.6 成帅安 2
Main 键盘式菜单
输入车辆车牌号存车 putCar 停车模块 saveAll将车辆信息存入car.dat 输入车牌号码取车 getCar 取车模块 删除车辆信息 显示停车费用 showInfo 车位信息 Exit 退出 图1.整体模块图 3、各子程序设计如下:
(1)使用全局变量数组,用一个二维数组实现停车场车位的信息, int cars[12][4];
2016.6 中国地质大学C语言课程设计
3
(2)通过读取car.dat的数据,对程序初始化。下图为car.dat的初始数据:
在init()通过一个for循环完成对car.dat中数据的读取。
for(i=0;i<12;i++)
{
fscanf(fp,\ fscanf(fp,\ fscanf(fp,\ fscanf(fp,\ }
(3)设计一个子程序saveAll()用来保存停车场车位的信息到car.dat。用for循环再将处理后的数据存入文件中。
for(i=0;i<12;i++)
{
fprintf(fp,\ fprintf(fp,\ fprintf(fp,\ fprintf(fp,\ fprintf(fp,\ }
(4)停车模块:
首先,输入车辆的车牌号,我们从键盘读取车牌号码,并判断车牌号码是否正确(五位数整型车牌号码)。输入出错时要求继续输入。我们引入flag标志量判断车牌号是否正确,初始int flag=1,从键盘读入车牌号码,并判断:
2016.6 成帅安 4
printf(\请输入您的车牌号:\ do{
scanf(\
if((temp>9999)&&(temp<100000))break; flag=0;
printf(\请重新输入五位数车牌号\\n :\ }while(!flag);
其次,读取的车牌号正确之后对标志量清零flag=0,代表没有没有找到车位,进行为车辆找停车位的操作,如下:
flag=0;
for(i=1;i<13;i++)
{
if(cars[i][0]!=0) continue;
cars[i][0]=temp; flag=1; break; }
通过for循环和continue语句找到没有停车的车位,即car[i][0]不等于0,并将标志量flag赋值1,表示有车位,用break语句跳出循环。
再用if语句处理flag==1的情况,即停车场车位已满无法停车。
最后,对存入的车辆赋初始时间5,并且前面的已存入的车辆时间都加5。语句如下: for(i=0;i<12;i++)
{
if(cars[i][0]!=0) cars[i][3]+=5; cars[i][2]+=i; }
又因为我在car.dat已经对车辆的停放楼层和车位有过初始赋值,可以省去再对cars[i][1]和cars[i][2]的操作。并且可以满足“第一层有空位必须停在第一层”的要求,不过存在一个问题就是车辆只能按车位序号停放。 (5)取车模块:
第一步,读取要提取车辆的车牌号码。再通过flag标志量对所输入车牌号正误分别处理。(初始flag=0)
2016.6 中国地质大学C语言课程设计
5
第二步,对于输入正确的车辆进行操作:删除车辆信息,再计算费用,再对时间清零并标志取车成功。
第三步,进过上一步后取车不成功时即flag还是为0时,提示重复输入车牌号直道成功为止。
程序如下: do{
scanf(\
if((temp>9999)&&(temp<100000)){ for(i=0;i<12;i++)
if(cars[i][0]==temp){
cars[i][0]=0; cost=0.2*cars[i][3]/5; cars[i][3]=0; flag=1; break; } }
if(flag==0)
printf(\您输入的车牌号码有误,请重新输入。\\n\ }while(!flag);
第四步,有选择性的显示收费价格:
printf(\显示停车费用?是(1)/否(2)\ scanf(\ switch(i){
case 1: printf(\车牌号 : %d 费用 %8.2f元\\n\ case 2:
default: break; }
最后,调用saveAll()函数来保存数据到car.dat。
(6)车辆信息浏览模块:
只需要显示有车的车位,可以用for循环语句再加上if判断语句来实现显示功能。 printf(\车牌号\\t\\t楼层\\t 车位 \\t\\t时间\\n\ for(i=0;i<12;i++) if(cars[i][0]!=0) printf(\
\\t\\t %d\\n\
2016.6 成帅安 6
(7)主函数:
调用子函数init()初始化读取car.dat文件。用printf在屏幕上显示停车场的菜单。再用switch语句实现选择执行哪个模块语句。
switch(a){ case 1:putCar(); break; case 2:getCar();break;
case 3:showInfo();break; case 4:exit(0); break;
default:printf(\您输入的信息有误!\\n\ }; getchar();
§1.3程序设计及代码分析
程序代码如下: #include
int park[12][4]; /*停车场使用数组*/ void init() /*初始化*/ {
char filename[] = \ FILE *fp; int i;
if((fp = fopen(filename,\ printf(\无法打开文件 \\\ return ; }
for(i=0;i<12;i++){ /*读数据文件内容到数组*/ fscanf(fp,\ fscanf(fp,\ fscanf(fp,\ fscanf(fp,\ }
2016.6 中国地质大学C语言课程设计
7
fclose(fp); }
void saveAll()
{ /*保存数据到car.dat*/ char filename[] = \ FILE *fp; int i=0;
if((fp = fopen(filename,\ printf(\无法打开文件 \\\ return ; }
for(i=0;i<12;i++){ /*写数据到文件*/ fprintf(fp,\ fprintf(fp,\ fprintf(fp,\ fprintf(fp,\ fprintf(fp,\ }
fclose(fp); }
void putCar()
{ /*停车操作*/ int i; int temp; int flag=1;
printf(\欢迎来到地大停车场*********\\n\ printf(\请输入你的车牌号:\ do{
scanf(\
if((temp>9999)&&(temp<100000))break; flag=0;
printf(\您输入的车牌号格式有误\ }while(!flag); flag=0;
2016.6 成帅安 8
for(i=0;i<12;i++){ if(park[i][0]!=0) continue; park[i][0]=temp; flag=1; break; }
if(flag==0){ /*没有找到位置,停车场已满*/ printf(\很抱歉!车位已满:\\n\ return ; }
for(i=0;i<12;i++){ /*所有车的停车时间一起加5*/ if(park[i][0]!=0) park[i][3]+=5; }
saveAll(); getchar();
printf(\存车成功!\\n按任意键回到主菜单...\}
void getCar()
{ /*取车*/ int i,temp,flag=0; float cost;
printf(\从停车场取车*********\\n \ printf(\请输入你的车牌号码:\ do{
scanf(\
if((temp>9999)&&(temp<100000)){ for(i=0;i<12;i++)
if(park[i][0]==temp){
park[i][0]=0; /*删除该车位车辆信息*/ cost=0.2*park[i][3]/5; park[i][3]=0; flag=1; break;
2016.6 中国地质大学C语言课程设计
9
} }
if(flag==0)
printf(\您输入的车牌号码有误,请重新输入。\\n\ }while(!flag);
printf(\ scanf(\ switch(i){
case 1: printf(\车牌号 : %d 费用 %8.2f元\\n\ case 2:
default: break; }
saveAll(); /*保存数据*/ getchar();
printf(\取车成功!\\n按任意键回到主菜单...\}
void showInfo()
{ /*显示当前停车场信息*/ int i;
printf(\当前停车场车位信息*********\\n\ printf(\车牌号\\t\\t楼层\\t 车位 \\t\\t时间\\n\ for(i=0;i<12;i++) if(park[i][0]!=0) printf(\%d \\t\\t%d \\t\\t %d\\n\ getchar();
printf(\输入任意键返回主菜单...\}
int main() {
int a; init(); do{
2016.6 成帅安 10
printf(\*******\\n\
printf(\ 地大停车场管理系统 *\\n\
printf(\ 1.停车 *\\n\
printf(\ 2.取车 *\\n\
printf(\ 3.当前车位信息 *\\n\
printf(\ 4.退出 *\\n\
printf(\*\\n\
printf(\请输入选项:\ scanf(\
switch(a){ /*菜单选择*/ case 1:putCar(); break; case 2:getCar();break; case 3:showInfo();break; case 4:exit(0); break;
default:printf(\您输入的信息有误!\\n\ }; getchar(); }while(1); return 0;
}
§1.4试验数据及运行效果截图
1、打开程序进入键盘式界面菜单,选择您所需要进行的操作选项:
2016.6 中国地质大学C语言课程设计
11
2、车辆车位的初始化,查看当前车位信息如下:
3、停入车牌号为12345的车
2016.6 成帅安 12
4、查看当前车位信息:
5、取车并显示费用:
2016.6 中国地质大学C语言课程设计
13
6、连续停入多辆车,当停第13辆车时:
7、查看当前车位信息:
2016.6 成帅安 14
8、输入4程序退出。
§1.5设计中出现的错误及解决方法
错误:停车时车辆无法按照楼层和车位要求停放,查看当前车辆信息时显示为0.
解决方法:对car.dat进行修改楼层号初始化为1 1 1 1 1 1 2 2 2 2 2 2车位号初始化为1 2 3 4 5 6 1 2 3 4 5 6。在使用停车操作时,车辆从一楼到二楼依次按序停放。即:
2016.6 中国地质大学C语言课程设计
15
修改后的程序运行如下:
运行正确。
检验其他功能能否正常运行: 取车并计算费用:
2016.6 成帅安 16
车辆停够12辆之后:
查看当前车辆信息:
2016.6 中国地质大学C语言课程设计
17
输入4结束程序:
按任意键程序退出。 检验后程序无错误。
正在阅读:
C语言程序设计实习报告-停车场管理系统03-27
18秋西南大学《1153复变函数与积分变换》在线作业01-18
端午节活动总结202011-21
企业所得税纳税申报办法讲解04-24
办公室软件培训新闻稿08-14
高考作文历史人物素材03-08
生活知识常识总题库04-25
美妙的晨光作文600字06-29
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 实习报告
- 程序设计
- 停车场
- 管理系统
- 语言
- 教育实习1教案分析
- 浅谈ABAQUS用户子程序
- 公安局基层派出所业务用房建设项目投资申请报告及项目建议书word
- 组合电器安装技术交底
- 关于改革开放的口述史
- 名师指点中考物理复习三步走
- 浅谈幼儿园游戏化教学手段的运用
- 三升四暑假补习
- 2011世界休闲旅游大使总决赛指导手册
- 水文学计算题答案
- 右手定则
- 2019-2020年度最新七年级(上)Modules6至10 - 图文
- 陶瓷材料介入当代艺术 - 图文
- ABS型材挤出成型技术
- 住宅燃气输送用不锈钢波纹软管施工及验收规程
- 赵州桥说课稿
- 小微企业信贷风险防控(下)
- 黄石二十中袁文汇名著导读论语导学案 - 图文
- 国务院在京各部门因解决干部夫妻两地分居从京外调(迁)入人员审
- (JAVA) - 3级 - 理论知识复习题