资源描述
应用技术学院
课 程 设 计 报 告
课程名称: C语言课程设计
课题名: 泊车管理
专 业: 电气工程
班 级:0783班
学 号:200713010325
姓 名 :袁思
指导教师: 王颖
2007年 3 月 20日
湖南工程学院
课 程 设 计 任 务 书
课程名称: C语言程序设计
课 题: 泊车管理
专业班级: 电气工程
学生姓名: 袁思
学 号: 200713010325
指导老师: 王颖
审 批:
任务书下达日期:2007 年3月15日
任务完成日期:2007 年 3 月24 日
<一>前 言
《C语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,课程设计的课题比平时的习题复杂得多,也更接近实际。课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。为了达到上述目的,本课程设计安排了十五个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。学生可任选其中一题进行设计,设计完毕写出课程设计报告,用A4纸打印成册;并将课程设计报告与源程序存盘。学习委员将课程设计报告与磁盘(缺一不可)收齐后交指导老师。
一、目的
全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。
二、基本情况
课程类别:必修课
课程学分:1学分
课程学时:1周
课程对象:电气工程0781、0782、0783、0784、0785、0786
三、时间安排
时间
任务
2008-3-8下午3:40-5:40
指导老师给学生布置课程设计的任务及要求
2008-3-10到2008-3-15
学生根据设计任务及要求,对系统进行需求分析、概要设计和详细设计,并在此基础上编写程序代码
学生提交系统程序清单初稿
上机调试程序
修改并完善程序并上机调试程序
2008-3-16
接受指导老师的验收
2008-3-16到2008-3-22
书写程序设计报告
2008-3-25
提交课程设计报告
<二>设计和调试过程规范化要求
1)需要分析
分析系统功能需求以及用户操作流程。
2)概要设计
在需求分析的基础上,确定系统总体框架(系统功能结构图)。
3)详细设计
定义数据储存结构,并设计实现系统功能的具体算法,画出各算法的工作流程图。
4)代码设计
根据所设计的算法,定义相应函数分别实现系统的各子功能模块,同时由主程序提供友好的用户界面,使用户可通过选择主菜单来调用课程设计中要求完成的各个功能模块,子程序执行完后还可以返回到主菜单,继续选择其他功能执行。源程序要求书写规范,结构清晰。重点函数的重点变量。重点功能部分均要求给出清晰的程序注释。
5)程序调试
程序编译、链接成功后,自己设计实现程序功能的一组或多组测试数据,并严格按照此测试数据进行测试,然后分析测试结果。如果程序不能正常进行或结果不正确,则需对程序进行单步调试,在调试过程中认真查找算法实现中存在的问题,并加以分析和改正。如果程序能够基本正确地运行,可考虑增加若干基本的容错功能;另外尽量对现有的算法给出改进方案,并比较不同算法之间的优缺点。
<三>设计报告及书写内容要求
课程设计任务完成后,每位同学必须独立书写一份课程设计报告,注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。课程设计报告的内容应包括以下五个部分:
1) 需求分析:包括设计题目、设计要求以及系统功能需求分析;
2) 概要设计:包括系统总体设计框架和系统功能模块图;
3) 详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;
4) 主要源程序代码:包括存储结构设计说明,以及完整源程序清单;
5) 调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等);
6) 总结:包括课程设计过程中的学习体会和收获、对c语言和本次课程设计的认识以及自己的建议等内容。
7) 书写格式严格按所附要求书写。
附1:
l 课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
l 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
l 正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。
正文总字数要求在5000字以上(不含程序原代码)。
目录
需求分析----------------------------------------------------------------------8
设计题目
设计要求
设计大纲
系统的功能要求
概要分析----------------------------------------------------------------------10
系统的主要功能
详细设计------------------------------------------------------------------------10
各函数的功能
函数流程图
主函数流程图
泊车函数流程图
取车函数流程图
调试--------------------------------------------------------------------20
程序运行界面
测试数据
总结------------------------------------------------------------------21
附录-------------------------------------------------------------------23
参考文献
源程序及其注释
评分表
课程设计正文档
一、课程设计题目
《停车场泊车计费管理系统》的设计与实现
二、设计内容及要求
1、 要求整个系统均用C语言实现
2、 系统的各个功能模块都用函数的形式来实现
3、 系统要求有泊车、取车和退出功能,并且能根据泊车和取车时间进行计费,计费标准 0.08元/分钟。
三、设计大纲
一、问题描述:
对一个有n便道的泊车场。该系统实现对泊车场的泊车、取车、查询、泊车费用的计算等操作的管理。
二、 功能要求:
1.本系统采用一个结构体数组,每个数组的结构体应当包括:车牌号、泊车时间、取车时间、相关费率。
2.本系统显示这样的菜单:
(1)设置车位数。
(2)泊车:记录所停车位数,车牌号码。
(3)取车:清空该车位,清除对应车位原有信息。
(4)查询:可以查询末车位的状态,总共剩余空车位及某车是否停在泊车内。
(5)泊车费用计算:记录泊车时间,了解相关费率,进行计算。
3.执行一个具体的功能后,程序将重新显示菜单。
4.将停车场所有相关数据保存到文件中。
三、算法提示:
1.数据结构:结构体类型数组。
2.数据库结构:下表构成系统的基本数据库。
车牌号
泊车时间
取车时间
相关费率
int
float
float
float
四、测试数据:
车牌号:12458
泊车时间:8:10
取车时间:12:10
相关费率:?
费用: ?
五、其它
对该系统有兴趣的同学 可以在实现上述基本功能后,完善系统的其它功能
四、系统的功能要求:
a) 停车场有16个便道,每个便道上有3个等候泊车的车位。
b) 泊车时要求输入车牌号和泊车开始时间。
c) 如果停车场无空位泊车,则需在便道上等候泊车车位;只有当车辆取走腾出空车位时才可进入停车场。
d) 如果便道上已停满车,则显示相关提示信息不能泊车。
e) 取车时依据车牌号进行,同时要求输入取车时间并计算出泊车费用。
五、系统的主要功能
停车场泊车管理系统实现对车辆的停泊、取回、查询、泊车费用的计算等操作的管理。查询函数又主要包括查询便道是否拥挤,车辆是否在停车场内等子函数。泊车费用的计算函数则通过相应的泊车费率与系统所纪录的泊车时间来实现管理。
根据相关的要求。我们采用一个结构体数组来定义每一辆车的信息结构。
每一辆车的信息结构包括该车辆的车牌号(int)、该车辆的泊车时间(float)、该车辆的取车时间(float)、该车辆的相关费率(float)、该车辆的泊车费用(float)等。然后把它们组成一个有序的整体,作为该车辆的一个“数据库”。以此来对所有的车辆进行统一的管理。
六、各函数的功能:
1) 程序的模块组成:
主函数 main( ):
泊车函数(car_park() ):
按车牌寻找函数:
取车函数(car_get()):
时间纪录函数:
泊车费用计算函数
2) 各个程序的主要功能:
泊车函数:输入要停车辆的车牌号,且系统将自动纪录泊车时间(当前时,当前分)。
按车牌寻找函数:输入自己车辆的车牌号,通过系统查询该车在车场的位置(几便道)。
取车函数:输入要取车辆的车牌号,且系统将自动纪录取车时间(当前时,当前分)。且自动清除对应车位的原有信息。
时间纪录函数;嵌套在泊车函数和取车函数中,纪录泊车和取车时间。
泊车费用计算函数:通过系统显示相关的费率与取车和泊车的时间差值的乘积计算出泊车的费用。
七、课题的功能模块划分
1) 流程图界面:
开始
菜单界面
功能选项 能选项
结束
取车
泊车
输入车牌号
输入车牌号
输入泊车时间
输入取车时间
主函数(main( ))流程图:
开始
输出[CAR[n][0]]car[n][1] car[n][2]
输出:“停车场”
输出“=
=”
n<16
cars[n][0]!=0
0 n
输出[CAR car[n][0] ]
输出“— — — ”
car[n][0]!=0
n<15
0 n
输出“便道”
x==1
输出“泊车?取车?结束(1/2/3)”
输入值=x
n+1 n
N
car_park( )
x==2
N
car_get()
x==3
N
exit(0)
结束
泊车函数(car_park(void))流程图:
开始
0 i
n<16
N
car[n][0]==0
N
n+1 n
n==16
N
输出“便道很拥挤”
输入任意字符
输出:“泊车,请输入车牌:”
输入值 o
O m
m<16
N
car[m][0]==0
N
m+1 m
m!=16
N
输出“此车已泊”
输入任意字符
0 car[n][0]
n<16
N
输出:“请先在便道上等候”“位”
输出“请输入当前时”
输入值=>car[n][1]
输入任意字符
输出“请输入当前分”
输入值=>car[n][2]
结束
取车函数流程图:
开始
输出:“取车—请输入车牌”
输入值=>o
0 n
N
n<16
N
car[n][0]==o
n+1 n
n==16
N
输出:“没有这个车牌”
输入任意字符
输出:“请输入当前时”
输入值 p
输出:“请输入当前分”
输入值 q
(p*60+q)-(car[n][1]*60+car[n][2]) r
输出:“停车:r分钟 合计:r *0。08元”
n r
r<15
N
car[r+1][0] car[r][0]
car[r+1][0] car[r][0]
car[r+1][0] car[r][0]
r+1 r
p car[15][1]
q car[15][2]
输入任意值
结束
2)各个函数的说明
泊车函数:car_park( ) :本函数采用了两个For语句的循环结构,一个是用来判断便道是否拥挤,一个则是用来查询已占用的车位数,以此来确定可否再泊车。可以泊车,则将该车车牌(o)与停放车位car[n][]相对应,对号入座。
按车牌查询函数,时间纪录函数:这两种函数并不单独使用,而是嵌套在泊车和取车函数中进行。查询函数通过For循环和if条件语句来得以实现。而时间纪录函数则通过地址符(&)与相应的车辆所在车位(car[n][])链接。
取车函数 car_park( ):本函数采用if语句和return语句,通过确认车牌(o),再与相应的车位( car[n][ ])链接,从而达到取车的目的。系统还将通过新一轮的赋值把此空位移除。
费用计算函数:系统通过一个具体的数学公式计算出泊车的时间,再与费率(0.08)取积。
八、程序调试:
程序运行并链接的界面:
测试数据:
车牌号:12458
泊车时间:8:00
取车时间:12:00
费率:0.08
泊车费用:?
九、总结
此次课程设计,我感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整一个多星期的日子里,我学到了很多很多的的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,学会了好多常用语句的用法。通过这次课程设计还使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体数组……通过这次课程设计之后,把以前所学过的知识重新温故。
经过一个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。
通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己更好地学好这门专业课。
编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强迫自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的。
昨天,我终于把累了一个星期的课程设计做完了。真的很累,连续多个晚上半夜12点后睡觉,早上7点整还要从床上爬起来签到。只要有时间都是对着电脑,要不就是翻阅资料。所以今天,看着自己的最终版本,身上的压力感,责任感也变得轻松了很多,整个人感觉就是轻松了很多,而且脸上的表情也由绷紧状态慢慢变得松弛,慢慢可以恢复昔日的微笑了。现在等待着老师的检查。
但是,我在此必须声明,这个程序有一个比较大的弊端,它不能通过检测车子的类别来确定相关的费率。这就必然导致了一定的不公平性。就如一辆东风大型货车和一辆奔奔小巧跑车,在泊车时间一样的的情况下,泊车费用却无任何差距。可大型货车却又占了相当于两辆奔奔跑车的空间。受此影响更大的还是停车场的经济效益。也因此他们可能不能有足够的资金去改善相应的系统。所以希望还有更好更完善的作品出现。
C语言是一门很有用的课,在实际生活中被广泛运用。我们要学好它,重在实践操作,只有那样才能更好地熟悉它、理解它、使用它、驾御它。
通过程序设计,我在各方面都有所提高,但我们不能停止前进的脚步,我们要学习的道路还很长很长,C语言是计算机“语言中的语言”,它确实很深奥,所以它需要更多的耐心和毅力。
最后我要感谢给过我帮助的指导老师和同学,有了你们我才会做的更好。
附录
参考文献:
C语言课程程序设计 ——————-谭浩强著
C语言程序设计教程 --------------郭浩强著
源程序:
#include<stdio.h> /* I/O函数 */
#include<conio.h> /* 屏幕操作函数 */
#include<stdlib.h> /* 数据库函数 */
int cars[16][3]; /* 定义数组 */
void car_park(void) /* 泊车 */
{
int n,m,o; /* 定义整型变量 */
for(n=0;n<16;n++) if(cars[n][0]==0) break; /* 循环结构 */
if(n==16)
{
printf("\n the shortcut is crowed.\n");
getch(); /* 输入任意字符 */
return; /* 返回菜单 */
}
printf("\n park_please input the number of the car:");
scanf("%d",&o); /* 输入车牌号 */
for(m=0;m<16;m++) if(cars[m][0]==o) break; /*查询已占用车位数 */
if(m!=16)
{
printf("\n the car is there.\n");
getch();
return;
}
cars[n][0]=o; /* 车牌与停放车位对应 */
if(n<16)
{
printf("please input the hour :");
scanf("%d",&cars[n][1]); /* 输入泊车时间 */
printf("please input the minute:");
scanf("%d",&cars[n][2]);
return;
}
else printf("\n please wait ");
getch(); /*输入字符 */
}
void car_get() /* 取车 */
{
int n,o,p,q,r; /* 定义变量 */
printf("\n get_ please input the number of the car:");
scanf("%d",&o); /* 输入车牌 */
for(n=0;n<16;n++) if(cars[n][0]==o) break; /*查询车位*/
if(n==16)
{
printf("\n the number is not exist \n");
getch(); /* 输入字符 */
return; /* 返回上级菜单目录 */
}
printf("please input the hour:");
scanf("%d",&p); /* 输入取车时间 */
printf("please input the minute:");
scanf("%d",&q);
r=(p*60+q)-(cars[n][1]*60+cars[n][2]); /* 计算泊车时间 */
printf("stay%dminute total%.2fyuan\n",r,r*0.08); /*计算费用 */
for(r=n;r<15;r++)
{
cars[r][0]=cars[r+1][0]; /* 腾出车位 */
cars[r][0]=cars[r+1][0];
cars[r][0]=cars[r+1][0];
}
cars[15][1]=p;
cars[15][2]=q;
getch();
}
void main(void)
{
int n; /* 定义变量 */
char x;
mainloop: /* 跳出循环 */
clrscr(); /* 清屏 */
printf("the park lot :\n");
for(n=0;n<16;n++)
{
if(cars[n][0]!=0) /* 判断车位是否已停车 */
printf("[CAR %d] %d:%d\n",cars[n][0],cars[n][1],cars[n][2]); /* 显示已停车位 */
else printf("[===============]\n"); /* 显示空车位 */
}
printf("\n shortcut:\n");
for(n=10;n<15;n++)
{
if(cars[n][0]!=0)
printf("[CAR %d ]",cars[n][0])
else printf("[- - - - - - -]");
}
printf("\n\n park?get?end?(1/2/3)\n"); /* 显示相应功能代码*/
x=getch(); /* 输入代码 */
if(x=='1') car_park(); /* 运行相应代码所对应菜单 */
if(x=='2') car_get();
if(x=='3') exit(0);
goto mainloop; /* 跳出循环 */
}
应用技术学院课程设计评分表
课程名称: 泊车管理
项 目
评 价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日 期:
展开阅读全文