资源描述
C语言课程设计报告
题 目: 泊车管理系统
学 院:
学 号:
姓 名:
指导教师:
成 绩:
日期:
《泊车管理系统》
一、课程设计的目的与要求
1.目的
本课程设计是学生学习完《C语言程序设计》课程后,进行的一次全面的综合训练,通过课程设计,更好地掌握使用C语言进行程序设计的方法,加深对C语言特点和使用C语言进行程序设计开发过程的理解,加强动手能力。其主要目的是:
(1) 进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解;
(2) 针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
(3) 掌握C语言的编程技巧和上机调试程序的方法。
(4) 掌握程序设计的常用算法。
2.要求:
(1) 要求从所给题目中任选若干个,每个学生必须独立完成课程设计,不能互相抄袭。
(2) 设计完成后,对所完成的工作进行答辩。
(3) 要求写出一份详细的课程设计报告。
(4) 程序设计题目,须提交相应的程序,并需提供加注释的源程序,能正常运行。
二、开发环境
1.硬件环境 : 机器型号: Hewlett-Packard Compaq Presario CQ40 Notebook PC
内存配置: DDR2 SDRAM SO-DIMM
2.软件环境 :操作系统:jdk1.5 + tomcat6 + mysql .
开发工具:Microsoft Visual C++ 6.0
三、题目描述及分析
题目描述:
本程序属于非数值计算型算法设计,学生需要设计出一个简单的泊车模拟系统所需要的基本功能,并设计简单的界面(无需图形化)。假定有10个车位,汽车在到来的时候首先选择车位,然后记录当前停车的时间,在取车的时候再记录取车时间,根据停了多长时间来给出费用,本程序主要考察对自定义函数的熟悉程度,本程序中主要使用到的是数组的相关操作,包括数组的输入、输出、查找、插入、删除等操作,需要对数组有比较深入的掌握。
题目分析:
(1)通过提示菜单选择可以进行的操作。
(2)本系统设计不存在需要存放的数据,因此不需要文件操作。
(3)本系统假设收费时间固定,假定每小时收费为5元
(4)本停车场分为两个部分,一部分是停车位(10个),一部分是等候位(3个),所谓等候位就是目前停车场暂时全满,当有一辆车离开腾出一个停车位后,等候位的第一位用户就可以马上停车
(5)等用户选择离开停车场后,根据停车时间给出停车费用
(6)本系统主要包括的功能为:
a) 查看目前停车场的停车情况
b) 进入停车场,如果停车场满而等候位不满则可以提示用户是否要在等候位等候,如果用户选择是,则将该车辆放入等候位;如果停车场满而且等候位也满,则提示已无法停车。用户在停车的时候需要选择要停靠的停车位,此时可以根据情况选择是否对输入的停车位正确性作判断,在停靠的时候需要输入牌照和停车位号码
c) 离开停车场,此时输入牌照,系统将计算费用并显示,同时查看等候位是否有车辆,如果有车辆则将等候位的第一辆车移入刚刚的车位,同时将等候位的其他车辆往前移,如果等候位没有车辆则将该停车位清空,需要对输入的牌照进行判断,如果输入错误应给出提示
d) 退出系统
四、程序中使用函数说明
situation():查看停车的情况
parking() :停车的操作
getting() :取车的操作
exit() :退出系统
clock() :时间函数,返回近似调用程序运行时间量的值,该值除以CLOCKS_PER_SEC后转换为秒数。
(clock_t start[10]; clock_t end[10];则是应用的时间函数来计算时间。)
五、课程设计总结或结论
经过这次泊车系统程序设计,让我对自定义函数有了更多的了解。这次泊车系统主要运用了自定义函数,每一个自定义函数中又包括了顺序,选择,循环等结构,使我对这学期所学的编写程序的知识有了更多的认识,也更能熟练的运用。数组的运用使泊车系统程序变的简明,也让我巩固了数组知识。在这次程序设计中,还学会了运用时间函数去求时间,还有控制台的输出输入。这一次完整的程序设计,让我全面的了解了程序设计,无论是从知识方面还是从实践方面,我都有所进步,也使我对程序设计有了更多的兴趣。
六、代码
#include<stdio.h>
#include<conio.h> //控制台输入,输出
#include<time.h>
void situation(); //停车情况
void parking(); //停车
void getting(); //取车
void exit(); //退出系统
clock_t start[10]; //时间开始
clock_t end[10]; //时间结束
int park[10]={0},wait[3]={0},sum=0;//车位数组,等待车位数组,总车位的和
int select; //操作的选择
void main()
{
do //主界面
{
printf("===========Welcome to Car Parking System==============\n");
printf("1.Show Parking Situation\n");
printf("2.Parking Car\n");
printf("3.Getting Car\n");
printf("4.Exit\n");
printf("======================================================\n");
printf("Please Select:");
scanf("%d",&select);
switch(select) //用户选择
{
case 1:
situation();
break;
case 2:
parking();
break;
case 3:
getting();
break;
case 4:
exit();
break;
}
getch();
}
while(select>=1&&select<4);
}
void situation()
{
int i;
printf("park area car number\n");
for(i=0;i<10;i++)
{
if(park[i]==0)
printf("%d; no car\n",i); //没有停车的车位
else
printf("%d: %d\n",i,park[i]); //已停车的车位
}
printf("\n");
}
void parking()
{
int j,b,d;
char c;
if(sum==13) //是否总车位已满
printf("No parking area!\n"); //既没有空余的车位也没有空余的等候车位
else if(sum>=10) //是否有等候车位
{
printf("There are ten parking area!\n");
printf("Now Left No Area!\n");
printf("Do you want to wait?<Y/N>"); //是否想停入等候车位
scanf("%c",&c); //输入Y或N
switch(c)
{
case 121: //停入等候车位
{
int m,h;
printf("Please input car number:");
scanf("%d",&h);
for(m=0;m<3;m++)
{
if(wait[m]==0)
{
wait[m]=h;
break;
}
}
sum=sum+1;
}
case 110: //不停入等候车位
printf("Thank you for using this system\n");
printf("\n");
select=4;
break;
}
}
else if(sum>=0&&sum<10) //有车位
{
printf("There are ten parking area!");
printf("Now Left");
for(j=0;j<10;j++) //空余车位
{
if(park[j]==0)
printf("%d",j);
}
printf("Area!\n");
printf("Which one do you want to park?");
scanf("%d",&b); //输入停入的车位号
if(park[b]!=0)
printf("There is a car in this area!\n");
else if(b<0||b>9)
{
printf("No this parking area number!\n");
}
else
{
printf("Please input car number:"); //输入车牌号
scanf("%d",&d);
park[b]=d;
start[b]=clock();
sum=sum+1;
}
}
printf("\n");
}
void getting()
{
int n,a;
double t,money;
printf("Please input you car number:");
scanf("%d",&a);
for(n=0;n<10;n++)
{
if(park[n]==a)
{
end[n]=clock();
t=(end[n]-start[n])*1.0/CLOCKS_PER_SEC; //计算总共时间秒数
money=t/3600*5; //需支付的钱数
printf("You must pay %lf yuan\n",money);
sum=sum-1;
if(wait[0]!=0) //等候车位的第一位代替取走车得车位
{
park[n]=wait[0];
int p;
for(p=0;p<2;p++) //每个等候车位向前前进一个车位
{
wait[p]=wait[p+1];
}
wait[2]=0;
}
else
{
park[n]=0;
}
select=4;
break;
}
}
if(n==10)
printf("Cannot find this car!\n"); //错误提醒
printf("\n");
}
void exit()
{
printf("\n");
}
展开阅读全文