专周设计报告样板.docx

上传人:b****0 文档编号:9657117 上传时间:2023-05-20 格式:DOCX 页数:15 大小:92.31KB
下载 相关 举报
专周设计报告样板.docx_第1页
第1页 / 共15页
专周设计报告样板.docx_第2页
第2页 / 共15页
专周设计报告样板.docx_第3页
第3页 / 共15页
专周设计报告样板.docx_第4页
第4页 / 共15页
专周设计报告样板.docx_第5页
第5页 / 共15页
专周设计报告样板.docx_第6页
第6页 / 共15页
专周设计报告样板.docx_第7页
第7页 / 共15页
专周设计报告样板.docx_第8页
第8页 / 共15页
专周设计报告样板.docx_第9页
第9页 / 共15页
专周设计报告样板.docx_第10页
第10页 / 共15页
专周设计报告样板.docx_第11页
第11页 / 共15页
专周设计报告样板.docx_第12页
第12页 / 共15页
专周设计报告样板.docx_第13页
第13页 / 共15页
专周设计报告样板.docx_第14页
第14页 / 共15页
专周设计报告样板.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

专周设计报告样板.docx

《专周设计报告样板.docx》由会员分享,可在线阅读,更多相关《专周设计报告样板.docx(15页珍藏版)》请在冰点文库上搜索。

专周设计报告样板.docx

专周设计报告样板

专周报告

 

目录

一.专周目的1

二.专周任务与要求:

1

1、任务:

1

2、设计要求:

1

三.设计说明书2

1需求分析2

2概要设计9

5物理设计14

6数据库建立15

7数据初始化17

8数据库用户权限管理19

9、建立触发器,存储过程19

10系统实现20

四、专周心得体会28

一、题目和设计要求

专周题目:

停车场管理,

设计要求:

对一个两层共十二个车位的停车场进行停车、取车管理,我作为小组一员负责停车收费管理这一块。

Ø题目要求如下:

1、有一个两层的停车场,每层有6个车位,当地一层停车满后才允许使用第二层。

(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共四项,其中停车时间按分钟计算。

2、假设停车场的初始状态为第一层已经停有4辆车,其车位号依次为1-4,停车时间依次为20,15,10,5.即先将这四辆车的信息存入文件"car_dat"中(数组的对应元素也要进行赋值)。

3、停车操作:

当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空位必须停在第一层);停车时间设为5,最后将新停入的汽车的信息添加文件"car_dat"中,并将在此之前的所有车的停车时间加5。

4、收费管理(取车):

当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元。

(停车费用可用一个变量进行保存),同时从文件"car_dat"中删除该车的信息,并将该车对应的车位设置为可用状态,(即二位数组对用元素清零)。

按用户的选择来判断是否要输出停车收费的总计。

5、输出停车场的全部车辆信息。

6、退出系统。

Ø整个收费管理操作用一个charge函数来执行,在此函数内可使用其他函数,或者循环使用,同时在此函数执行中要记录下执行此操作的时间,以便于计算费用和打印凭条(即为题目要求的“输出停车收费总计),而且客户或者管理员在进行收费管理时也可以及时的返回主菜单,另外如果不按照系统指示进行操作也会返回主菜单。

二、设计与实现

1、分析问题

a)主过程:

当停在停车场的车要离开时,车主会输入车牌号,系统就应该迅速计算出停车费用,之后询问客户是否要凭条,是的话打印凭条。

b)输入车牌号的时候,有可能客户输入的车牌号不是五位,或者输入错误(没有输入自己的车牌号),此时也有可能输入的错误车牌号恰巧和停车场其他某一辆车一致,对于此类情况系统要做出判断和相应的提示。

c)询问车主取车时,可能不按提示输入。

d)在某些情况,可能车主会不记得自己的车牌号,则可以按车位取车。

e)按车位取车的时候,可能输入的车位不合范围。

f)询问车主是否打印凭条,车主不按照系统要求输入(比如Y或者N),而输入其他的。

 

2、设计思路

a)首先请车主输入车牌号(包含字母),如果输入的车牌号不是五个,就输出提示,提醒他输入五位。

b)当车主输入了车牌号(五位)之后,系统就在“car.dat”文件中去搜索,如果没有找到则说明车主输入有误,提醒他重新输入。

c)提醒的时候同时给予另外一种选择,即通过车位号取车,此时车主要做出选择。

d)如果选择输入车牌号,则再次回到a,如果选择通过车位号取车,系统就会提示车主输入车层和车位,如果输入车层超过2车位超过6,则提示车主输入错误,让他重新输入。

e)待车主输入正确之后,找到该车,输出车牌号并确认取车。

f)在b中,如果搜索到了对应的车牌号,则将此车相应的车层和车位输出,并询问车主是否确认取车(以防止输错车牌号和别人的车正好吻合)。

不取则回到菜单。

g)确认取车之后,系统就会计算出停车的费用,计算时,小于五分钟统一按五分钟计算,将结果输出,然后询问车主是否要打印凭条。

h)需要的话,即将结构体中所有的信息输出,不需要则不进行任何操作。

i)最后将取出的车的所有信息归零,包括车牌号,停车起始和终止时间,停车费用,以及停车日期,并存入文件,跳出charge函数。

j)在选择取车方式的时候,如果车主没有按照要求输入1或者2,则系统提示错误,默认返回主菜单。

3、流程图

Nn

4、功能实现

1,我的整个模块就是一个charge函数,其中包含了四个函数,fee函数、chargeplace函数、back函数、pingtiao函数、save函数,在chatge函数主体中,主要流程是让车主输入车牌号,同时也可以通过车位取车,这时就进入chargeplace函数和车主对话。

2,不论车主以何种方式取车,最终确认取车之后就进入fee函数,计算费用,如果车主不取车,进入back函数即回去主菜单。

3,在fee函数中,计算费用并输出之后,就询问是否需要凭条,需要则进入pingtiao(凭条)函数,输出车主停车的全部详细信息,如果不需要,则再次进入back函数,回到主菜单。

4,不论是否需要凭条,在fee函数最后都会执行save函数,将已取的车信息全部归零,以便于下次取车。

 

以下即为我负责编写的charge函数以及相应的注释:

/*声明要使用的函数*/

voidchargeplace();

voidfee(intj);

voidpingtiao();

voidfee(intj);/*声明fee函数*/

voidcharge()

{

inti,a;chard;/*定义要使用的变量及字符*/

charcode_num[6];/*定义一个一维数组存放车牌号*/

charc;

printf("请输入车牌号(五位):

");/*输入车牌号*/

scanf("%s",code_num);

while(strlen(code_num)!

=5)/*保证输入的(车牌号)字符串长度为5*/

{

printf("您的输入有误,请重新输入车牌号(五位):

");

scanf("%s",code_num);

}

for(i=0;;i++)

{

if((strcmp(parking_message[i].code_num,code_num)==0)&&(i<=11))/*通过车牌号找到i值*/

{

printf("您的车停放在%d层%d号车位:

",(i+1)<=6?

1:

2,(i+1)<=6?

(i+1):

(i-5));

/*找到对应的车位*/

printf(“确认要取该车(Y/N)?

");/*确认取车*/

scanf("%c",&d);

if(d=='y'||d=='Y')

{

printf("取车成功\n")

;fee(i);

break;

}

elseback();/*不取车即再次返回主采单*/

}

if(i>=12)break;/*没有找这个车牌,跳出循环执行下一项*/

}

if(i>=12)/*车牌号输入错误*/

{

printf("对不起!

该停车场没有找到车牌号为%s的车!

\n",code_num);

printf("1输入错误再来一次,请按---1\t2忘记了车牌号,请按---2");

scanf("%d",&a);/*选择取车方式*/

switch(a)

{

case1:

charge();break;/*再次输入,重新执行charge函数*/

case2:

chargeplace();break;/*忘记了车牌号,通过停车位取车*/

default:

printf("error\n");/*选择取车的时候按键错误,则返回主菜单*/

printf("按任意键返回主菜单.....\n");

scanf("%s",&c);

if((c=getchar())!

='\0')back();

}

}

save();

}

voidchargeplace()/*通过车位取车*/

{

inti=0;intm,n;chard;

printf("请输入层数(1~2)及车位号(1~6):

");/*输入车位*/

scanf("%d,%d",&m,&n);

while(m>2||n>6)/*保证输入的车位号正确*/

{

printf("您的输入有误,请重新输入层数(1~2)及车位号(1~6):

");

scanf("%d,%d",&m,&n);}

i=(m=1)?

(n-1):

(n+5);/*通过输入的车位确定i值,找相应的结构体元素*/

printf("车已找到,车牌号为%s",parking_message[i].code_num);

printf("\n");

printf("是否要取该车(Y/N)?

\n");/*确认取车*/

scanf("%s",&d);

if(d=='Y'||d=='y'){printf("取车成功\n");fee(i);

}/*取车即进入fee函数*/

elseback();/*不取车即再次返回主采单*/

}

voidfee(intj)/*收费函数*/

{

voidpingtiao(intk);charq;/*声明pingtiao函数*/

local=localtime(&parking_message[j].end);/*确定local结构体指针的指向*/

parking_message[j].end=time(NUL);/*确定本地时间,并将它赋给结构体*/

intp=parking_message[j].end,parking_message[j].start);

/*计算一辆车停车到取车的时间(秒)*/

printf("您的停车费用为:

");

parking_message[j].fee=((p/300)+1)*0.2;/*计算停车费用*/

printf("\t%7.1f\n",parking_message[j].fee);

printf("请问您是否需要您停车收费的凭条:

需要——Y\t退出——N\n");

/*询问是否需要打印全部信息*/

scanf("%s",&q);

if(q=='Y'||q=='y')pingtiao(j);/*需要则执行pingtiao函数*/

strcpy(parking_message[j].code_num,"");/*将原来停车的信息归零,即删除*/

parking_message[j].parkingtime2.year=parking_message[j].parkingtime2.day=

parking_message[j].parkingtime2.mon=parking_message[j].parkingtime2.hour=

parking_message[j].parkingtime2.min=parking_message[j].parkingtime1.year=

parking_message[j].parkingtime1.day=parking_message[j].parkingtime1.mon=

parking_message[j].parkingtime1.hour=parking_message[j].parkingtime1.min=0;

parking_message[j].start=0;

parking_message[j].end=0;save();/*最后再存入car.dat文件*/

}

voidpingtiao(intk)/*打印凭条函数*/

{

printf("******************************************************************");

/*输出车牌号,车位,停车费用信息*/

printf("\n您的车牌号为%5s,停放在第%d层第%d号车位,您停车的总费用为%6.2f元,

\n\n\t谢谢光临发发停车场,欢迎下次惠顾!

\n",

parking_message[k].code_num,parking_message[k].floor,

parking_message[k].place,parking_message[k].fee);

charstr[80];charptr[80];

local=localtime(&parking_message[k].end);

parking_message[k].end=time(NUL);

/*通过时间结构体获取当地时间并赋给parking_message结构体*/

parking_message[k].parkingtime2.hour=local->tm_hour;

parking_message[k].parkingtime2.min=local->tm_min;

printf("\n日期:

停车:

");/*输出当地年月日,以及停车取车具体时间*/

strftime(str,100,"%A,%Y-%B-%d,",local);

printf(str);

printf("%d:

%d\n",parking_message[k].parkingtime1.hour,parking_message[k].parkingtime1.min);

printf("取车:

");

strftime(ptr,100,"%A,%Y-%B-%d,",local);

printf(ptr);

printf("%d:

%d\n",parking_message[k].parkingtime2.hour,parking_message[k].parkingtime2.min);

printf("*****************************************************************");

}

5、典型算法和技巧分析,调试体会

1,从整体结构看,在我写的这个函数里,包含了很多个函数,这是由于在进行取车时,会遇到很多不同的情况,把每一种情况都编写成一个函数,便于编写,也便于思考和分析,看起来也显得清晰简洁。

2,在输入车牌号,车位号等信息,我都使用了一个while语句,给予车主提示,以保证输入给系统的信息可以被识别。

3,在输出时间的时候,我采用时间函数特有输出方式,这样比输出结构体的信息更准确更快速。

4,在程序中基本上没有有返回值的函数,但是整个函数围绕所要取的车辆,而确认所要取的车最直接的方法就是确定i值,即确定是结构体的哪一个元素,这样就可以把各个函数联系在一起,所取用的值和赋予的值都能够相互对应。

5,因此,我在使用fee函数pingtiao函数时,将i值作为一个实参进行传递,达到各个函数相互联系的目的。

6,由于函数很多,流向也很不清晰,刚开始运行总会出现很多很奇怪的结果,而且错误很多,vc的提示也不准确。

我将每个函数分开先进行调试,确认正确之后,只要保证函数之间的连接正确即可。

7,为了保证函数流向正确,我先大概了写了函数之后,就画它的流程图,通过流程图,我可以很轻松地发现我的错误,也看出了很多可以改进的地方。

8,调试程序的时候,我觉得手是心境最重要,首先要保持心情平静,不可心烦气躁,否则越调越乱,另外就是要冷静地思考,同时也有一些技巧,比如用/**/把一些不很重要的程序筐住,一部分一部分调试,效率更高也让人更有信心。

9,还有的时候,老是调试不通,偶然的机会在书上看到类似的,才发现自己本身掌握不够准确。

10,在运行中有的算法不明显的,特别是有个程序只是在内部进行了运算处理,但是却暂时没有输出,在运行就没有办法看见这些算法是如何运行的,解决这样的问题,我可以在其中插入一些输出函数,就可以很清楚地看见这些算法是如何运行的,检查起来就容易多了。

三、专周小结

1.我们组的题目是关于停车场的管理,这是一个实际性很强的题目,所以在进行设计的时候要考虑很多实际情况,因此在设计中加入很多很人性化的操作,比如说忘了车牌号,输入错误可以再重新输入。

2.在收费的时候,收费的依据就是停车时间,所以停车时间一定要算准确,为次我们同学网上搜索和学习,在整个函数包括主函数都插入了时间结构体,在我这个函数中就记录了每辆车的停车时间,这样在打印凭条的时候就可以给客户一个清楚的停车起始时间和终止时间,这样用户得到凭条的时候也会有个好心情。

3.写这个程序的时候才发现,原来做一些程序的时候,拿来就上机实现,而不做任何准备,那只能应付小程序,一旦像现在这样写一个很大的程序时,就发现在长长的一大块里面找一个小错误是多么的困难。

4.体会最深的也是上面提到过的,算法是一个程序的灵魂,写之前一定要使用流程图,起码心中有数,否则在调试的时候,太乱了,c语言也不像其他的,错误指向不精确,如果是一些句子的语法错误还比较容易发现,但是如果算法有错或者有漏洞,它的错误指示就毫无章法可询,这个时候在vc里面拖上拖下检查程序效率就非常低,相反的,放下电脑,拿张纸画一下算法就很容易发现问题。

5.这次做这个程序是以小组形式进行的,注意组内的合作,也是非常重要的,大的程序分成多个不关联的部分大家同时去做,程序写得更快更精辟,检查错误的时候,“旁观者清”就显而易见了。

在设计程序的时候,相互交流,可以发现更多好主意,也使得程序更严谨,更符合实际。

6.如果调试很久也成功不了,就要考虑是不是自己储备的某些知识是错的,一直在误导你,这个时候就需要去重新认真的看看书,看看资料,之后就恍然大悟了。

7.通过程序设计,深深地体会到了那些编程工作者的枯燥乏味了,这是一项很艰难的工作,特别是老是运行不了,就让人很想放弃,不过一阵郁闷过后,重新冷静分析并且解决问题,可真是大快人心。

所以,不论做什么事情,不在乎结果,能够坚持不放弃才是最重要的。

8.在解决时间函数问题的同时,发现我们自身的知识实在是非常有限,也越发的感觉到c语言的魅力,也感受到了“学的越多,知道的越少”。

其实本来想实现通过按键来做出选择,而不是像这种输入1,2,3,4来做选择,在网上搜查才发现,那就要涉及到更多更难的知识。

所以,我感觉,学习知识是一个主动接受的过程,而不是一个被迫使用的过程。

四、参考文献

[1]钱丽萍等编《面向对象程序设计C++版》机械工业出版社,2007.7

[2]徐孝凯等编《面向对象程序设计实验》中央广播电视大学出版社,2008.3

[3]钱能主编《C++程序设计教程》清华大学出版社,2000.11

[4]戴锋编著《VisualC++程序设计基础》清华大学出版社,2001.4

[5]林丽闽主编《标准C++程序设计教程》电子工业出版社,2003.6

[6]谭浩强主编《C++程序设计》清华大学出版社,2004.6

[7][美]迪特尔(DeitelH.M.)[美]迪特尔(DeitelP.J.)薛万鹏等译者:

薛万鹏等译,《C++程序设计教程》,机械工业出版社,2004.10

考核情况(由指导老师填写)

项目

平时

(20%)

验收

(40%)

报告

(30%)

总分

得分

 

 

 

 

考勤

记录

考勤日期

出勤记录

 

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2