C语言程序设计--优秀实习报告

时间:2024.4.13

   C语言课程设计

 

    院系:XX学院

    姓名: XXX   

    学号:XXXXXXXX   

    班号:XXXX

    指导教师:

    日期:20##年 月

题目要求(课程设计编号、名称、内容)

编号:第二十七题

名称:停车场管理系统2

内容:

(1)    有一个两层的停车场,每层有6个车位,当第一层车停满是才允许在第二层停车,(停车场可用一个二维数组来实现,每个数组中存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项,其中停车时间按分钟计算

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

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

(4)    收费管理(取车):当有车离开时,输入其车牌号,先按其停车时间计算费用每5分钟0.2元.(停车费用可设置一个变量进行保存),同时从文件”car.dat”中删除该车的 信息,并将该车对应的车位设置为可使用状态(即二维数组对应元素清零).按用户的选择来判断是否要输出停车收费的总计.

(5)    输出停车场中全部车辆的信息.

(6)    退出系统.

二、需求分析

   车辆信息要用文件存储,提供文件的输入输出操作;当车离开时要删除文件中该车的信息,因而要提供文件的删除操作;另外还要用键盘式菜单实现功能选择.


三.总体设计

  该题目为一个两层停车场的停车,取车以及对停车场内现有所有车辆信息的浏览问题。车辆的信息包括车牌号码,层号,车位号以及停车时间4四项信息,可以用一个结构体来实现。双层停车场的信息可以有一个二维数组来实现。整个管理系统可设计为停车模块、取车模块、车辆信息浏览模块。

四.详细设计(模块设计)

 1.停车信息结构体

  车辆信息包括车牌号carNO,层号floor,车位号position,停车时间time,把四个成员作为结构体Car的成员以便处理

    struct Car     

{

      int carNO;

      int floor;

      int position;

      int  time;

}car[12]

2.车位信息数组

 因为停车场为两层,每层6个车位,所以定义一个二维数组park[2][6]来存储结构体

int park[2][6]

 3.主菜单

 四项功能

 1)停车(TING CHE)

 2)取车(QU CHE)

 3)浏览(LIU LAN)

 4)退出(TUI CHU)

程序:

for(; ;)

      { 

      printf(" please choose: 1停车   2取车  3输出停车场中全部车辆的信息  0退出\n" );

 4.车位分析和停车模块

因为只有第一层车位停满才能在第二层停车,所以在停车之前先要对车位的情况进行分析,然后停车,停车时停车时间为5分钟,原有车辆停车时间加5分钟。进行分析时先打开文件检查停车车牌号是否为NULL,是的话就可以在该车位停车,否则就不行,应用FOR语句来保证第一层优先停车。停车后存储文件。

 scanf("  %c", &a);

      if(a== '1')

        {

       printf(" 请输入车牌号

              fprintf(stderr,"error opening file\n");

              exit(1);

            }

        for (j = 0; j<i+1;++j)

       fprintf(fp,"car[%d].carNO = %d\n car[%d].floor = %d\n car[%d].position = %d\n car[%d].time = %d\n",j,car[j].carNO,j,car[j].floor ,j,car[j].position,j,car[j].time);

         fclose(fp);

       printf("\n"); for (j = 0; j<2;++j)

         {

           for (k = 0; k<6;++k)

             {

                   if(park[j][k] ==0)

                   {park[j][k] = car[i].carNO; break;}

             }

         if(park[j][k] == car[i].carNO)

                   break;

         }

           car[i].floor = j+1;

          car[i].position = k+1;

        car[i].time = 5;

        for (j = 0; j<i;++j) 

        car[j].time += 5;

         printf(" 停车操作完成\n " )

5.取车模块

 取车时,输入一车牌号,如果与文件中任何一个车牌号相同,便可以取车,并按一分钟0.2元算出停车费用,并且把该车停车记录从文件中删除。如果没有这个车牌号就给出提示。

if(a== '2')

         {

         printf(" 请输入要离开车的车牌号: " );

          scanf(" %d",&carNUM);

        for (j = 0; j<i;++j)

            {

                  if(carNUM == car[j].carNO)

                  {

                fee = (float)car[j].time/5*0.2;

                        printf(" 车牌号为%d的停车费为:  " ,carNUM);

                        printf("%f\n",fee);

                        printf(" -----------------------------------------------------------------\n " );

                park[j/6][j%6] = 0;

        if((fp=fopen("car.dat","w")) ==NULL)

            {

              fprintf(stderr,"error opening file\n");

              exit(1);

            }

        for (k = 0; k<j;++k)

       fprintf(fp,"car[%d].carNO = %d\n car[%d].floor = %d\n car[%d].position = %d\n car[%d].time = %d\n",k,car[k].carNO,k,car[k].floor ,k,car[k].position,k,car[k].time);

        for (++k; k<i;++k)

       fprintf(fp,"car[%d].carNO = %d\n car[%d].floor = %d\n car[%d].position = %d\n car[%d].time = %d\n",k,car[k].carNO,k,car[k].floor ,k,car[k].position,k,car[k].time);

         fclose(fp);

       printf("\n");

                        break;

                  }

            }

         if(j == i)

              printf(" 没有此号码或者输入错误!\n" );

         else continue;

             printf(" -----------------------------------------------------------------\n " );

         }

6.浏览模块

 浏览即是输出所有停车车辆的所有信息

if(a== '3')

         {

                        printf(" 停车场所有车辆信息如下: \n ");

                        printf(" 车牌号 层号 车位号 停车时间\n ");

                        for (j = 0; j<2;++j)

                        {

                     for (k = 0; k<6;++k)

                           {

                          if(park[j][k] !=0)

      printf("%d     %d    %d     %d \n ",car[j*6+k].carNO,car[j*6+k].floor,car[j*6+k].position,car[j*6+k].time);

                              else continue;

                           }

                        }

        if((fp=fopen("car.dat","w")) ==NULL)

            {

           fprintf(stderr,"error opening file\n");

              exit(1);

            }

       printf(" -----------------------------------------------------------------\n " );

         }

7.退出模块

if(a== '0')

         {

          printf(" press any key to continue... " );

           break;

五、上机操作

1程序原代码:

#include<stdio.h>

#include<stdlib.h>

#define MAX 2 /*车库容量*/

#define price 0.2 /*每车每分钟费用*/

  struct Car      /* 车的信息*/

{

       int carNO;

       int floor;

       int position;

       int  time;

}car[12];

 

int main()

{

       int i,j,k;

       int carNUM;

       float fee;/*计算停车费用*/

           char a;

    FILE *fp;

    int park[2][6]={1001,1002,1003,1004,0,0,0,0,0,0,0,0}; /*停车场状态 若为0表示车位空,否则值为carNO*/

    /* 初始化已停车的信息-------------------------------------------*/

       car[0].carNO = 1001;

    car[0].floor = 1;

    car[0].position = 1;

    car[0].time = 20;

       car[1].carNO = 1002;

       car[1].floor = 1;

       car[1].position = 2;

       car[1].time = 15;

       car[2].carNO = 1003;

       car[2].floor = 1;

       car[2].position = 3;

       car[2].time = 10;

       car[3].carNO = 1004;

       car[3].floor = 1;

       car[3].position = 4;

       car[3].time = 5;

       if((fp=fopen("car.dat","w")) ==NULL)

       {

              fprintf(stderr,"error opening file\n");

              exit(1);

       }

    for (i = 0; i<4;++i)

              fprintf(fp,"car[%d].carNO = %d\n car[%d].floor = %d\n car[%d].position = %d\n car[%d].time = %d\n",i,car[i].carNO,i,car[i].floor ,i,car[i].position,i,car[i].time);

       fclose(fp);

       printf("\n");

       /*初始化完毕---------------------------------*/

    for(; ;)

       { 

      printf(" please choose: 1停车   2取车  3输出停车场中全部车辆的信息  0退出\n" );

      scanf("  %c", &a);

      if(a== '1')

         {

       printf(" 请输入车牌号: " );

       scanf(" %d",&car[i].carNO);

       for (j = 0; j<2;++j)

          {

            for (k = 0; k<6;++k)

               {

                      if(park[j][k] ==0)

                      {park[j][k] = car[i].carNO; break;}

               }

         if(park[j][k] == car[i].carNO)

                      break;

          }

         car[i].floor = j+1;

           car[i].position = k+1;

           car[i].time = 5;

        for (j = 0; j<i;++j)  /*将在此前的所有车的停车时间加5*/

        car[j].time += 5;

           if((fp=fopen("car.dat","w")) ==NULL)/*将所有停车信息刷新后写出到car.dat*/

              {

                  fprintf(stderr,"error opening file\n");

                  exit(1);

              }

        for (j = 0; j<i+1;++j)

       fprintf(fp,"car[%d].carNO = %d\n car[%d].floor = %d\n car[%d].position = %d\n car[%d].time = %d\n",j,car[j].carNO,j,car[j].floor ,j,car[j].position,j,car[j].time);

          fclose(fp);

       printf("\n");

          printf(" 停车操作完成\n " );

       printf(" -----------------------------------------------------------------\n " );

          ++i;

         }

     else  if(a== '2')

          {

          printf(" 请输入要离开车的车牌号: " );

           scanf(" %d",&carNUM);

        for (j = 0; j<i;++j)

              {

                     if(carNUM == car[j].carNO)

                     {

                fee = (float)car[j].time/5*0.2;

                            printf(" 车牌号为%d的停车费为:  " ,carNUM);

                            printf("%f\n",fee);

                            printf(" -----------------------------------------------------------------\n " );

                park[j/6][j%6] = 0;

           if((fp=fopen("car.dat","w")) ==NULL)/*将所有停车信息刷新后写出到car.dat*/

              {

                  fprintf(stderr,"error opening file\n");

                  exit(1);

              }

        for (k = 0; k<j;++k)

       fprintf(fp,"car[%d].carNO = %d\n car[%d].floor = %d\n car[%d].position = %d\n car[%d].time = %d\n",k,car[k].carNO,k,car[k].floor ,k,car[k].position,k,car[k].time);

        for (++k; k<i;++k)

       fprintf(fp,"car[%d].carNO = %d\n car[%d].floor = %d\n car[%d].position = %d\n car[%d].time = %d\n",k,car[k].carNO,k,car[k].floor ,k,car[k].position,k,car[k].time);

          fclose(fp);

       printf("\n");

                            break;

                     }

              }

         if(j == i)

                  printf(" 没有此号码或者输入错误!\n" );

         else continue;

               printf(" -----------------------------------------------------------------\n " );

          }

      else if(a== '3')

          {

                            printf(" 停车场所有车辆信息如下: \n ");

                            printf(" 车牌号 层号 车位号 停车时间\n ");

                            for (j = 0; j<2;++j)

                            {

                      for (k = 0; k<6;++k)

                               {

                             if(park[j][k] !=0)

       printf("%d     %d    %d     %d \n ",car[j*6+k].carNO,car[j*6+k].floor,car[j*6+k].position,car[j*6+k].time);

                                   else continue;

                               }

                            }

           if((fp=fopen("car.dat","w")) ==NULL)/*将所有停车信息刷新后写出到car.dat*/

              {

             fprintf(stderr,"error opening file\n");

                  exit(1);

              }

       printf(" -----------------------------------------------------------------\n " );

          }

      else if(a== '0')

          {

    

          printf(" press any key to continue... " );

           break;

    

          }

          else

          {

        printf(" input error! please input again!\n" );

        printf(" -----------------------------------------------------------------\n " );

          }

       }

}

2程序运行结果:

(1)对于停车模块的操作如下:输入“1”按下”enter”进入停车操作。根据提示输入车牌号,停车操作完成。数据运行结果见下图:

(2):这一部分是取车模块的操作。步骤类似于停车模块,具体操作如下:输入“2”按下”enter”进入停车操作。根据提示输入车牌号,取车操作完成。数据运行结果见下图:(图中分别取得车为1001号,1005号,1007号)

(3):这一部分是车辆信息浏览模块的内容。它的操作是在(1),(2)的基础之上的具体操作步骤如下:输入“3”按下”enter”进入停车操作。根据提示输入车牌号,车辆信息浏览模块操作完成。数据运行结果见

六、总结(实习心得)

     从开始接触C语言时就觉得很有意思并且打心底里想把它学好,虽然我们专业对于计算机的要求并不高但我也毫不犹豫报了计算机2级的考试。在课堂学习的过程中我仅仅能读懂程序和做一些基本的程序选填题对于程序设计却毫无所知,一直挺期待这次上机实习的,感觉只有当自己尝试编写程序能够正确运行出来的时候,这个程序才是自己的才算真的掌握了。

     本学期末在老师的带领下我们在短短一周的实习期间获取了不少新知识也巩固了许多老知识。在这之前,我们已经对C语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在学习了解的范围,对里面的好多东西还是很陌生,并不是很熟练,有着许多欠缺,更多的在运用起来的时候还是感到很不好动手。

C语言是需要有一定基础、而且动手能力强的学科。上机实验是学习程序设计语言必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、巩固贯穿系统知识、掌握程序设计方法、提高程序设计能力,这些都必须通过充分的实际上机操作才能完成。

课堂上许多关于C语言的语法规则,听起来复杂也不容易记住,死记硬背是不可取的。然而要使用C语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握C语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,更加巩固了学过的知识,而且在设计的时候学要系统的知识,也是一个较大的挑战,某一方面知识的欠缺都将影响到整个程序的设计。

这次上机实习让我学到了很多有用的东西,巩固了之前的学习,让我学到了在教室和做题中学不到的一些知识,通过这个程序的学习,使我进一步理解和运用结构化程序设计的思想和方法。初步掌握开发一个小型实用系统的基本方法,学会调试一个比较长程序的基本方法,学会利用流程图表示算法,进一步掌握和提高利用C语言进行程序设计的能力。

我认为,这次实习对于我是非常有意义的,对我个人的影响比较大,在实习过程中我上网浏览了很多类似的程序设计也照着C语言课程设计的课本反复看,与周围的同学讨论,虽然在程序刚刚写出时出现了不少问题但最终一一解决了。这次实习给我的收获良多,除了

锻炼了我动手实践能力,同时也在培养我积极探索思考的能力,再次感谢学校也感谢实习的老师给了我这个学习与锻炼的机会。

更多相关推荐:
《C语言程序设计》课程设计报告(小组)

东莞理工学院《C语言程序设计》课程设计题目:图书信息管理系统院系:电子工程学院专业:电子信息工程年级:20##班别:2班指导教师:##组长:##同组成员:##目录一、目的....................…

c语言课程设计报告

C语言程序设计课程设计学生姓名学号系院专业设计论文题目学生选课系统管理完成日期20xx年6月指导教师目录一实验目的二实验内容三总体设计四详细设计五运行结果六课程设计体会一实验目的1通过课程设计加深对结构化程序设...

C语言课程设计报告

河南理工大学计算机科学与技术学院课程设计报告20XX20XX学年第一学期课程名称C语言课程设计设计题目《小学算术运算测试》学生姓名学号专业班级计算机07-2班指导教师20XX年9月12日目录1.设计任务书21.…

C语言课程设计报告范例

C语言课程设计报告设计题目专业班级学号姓名任课老师时间目录一课程设计题目及所涉及知识点二课程设计思路及设计流程图三课程设计中遇到的难点及解决办法四小结五附录原程序2一课程设计题目及所涉及知识点一课程设计题目1基...

厦门理工学院11级C语言C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期题目专业班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求1二方案实现与调试221掷骰子游戏222射击游戏323汽车...

C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期专业计算机科学与技术班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求3二方案实现与调试321掷骰子游戏322汽车加...

c语言程序贪吃蛇课程设计报告

山东工商学院信电学院自动111班第一组贪吃蛇课程设计报告高级语言程序设计课程设计报告ExperimentDesigningreporter课程名称高级语言程序设计英文名称CProgramExperimentDe...

C语言课程设计报告书样本

海南大学三亚学院C语言程序设计课程设计贪吃蛇算法专业计算机科学与技术班级计科1001姓名杨凯文题目学号指导老师李春林目录C语言程序设计课程设计11程序要求32程序分析与设计33流程图44源程序清单45调试过程1...

C语言课程设计报告—人事管理系统

人事管理系统前言:现代计算机技术的发展为人们的学习、生活、工作提供了很大的帮助,各行各业都需要特定计算系统的运用,我们需要了解这些系统是怎么样为我们服务以及他们是怎样编辑出来的。我们需要学习C语言编程,根据课堂…

C语言课程设计报告(通讯录)

设计说明书通讯录系统起止日期20xx年01月03日至20xx年01月08日学班学成生姓名级号绩XXX指导教师签字计算机与通信学院20xx年01月08日一课题任务设计一个通讯录管理系统课题的主要任务是1对通讯录信...

C语言课程设计报告 扫雷

程序课程设计基础课程设计扫雷游戏院系计算机科学技术学院计算机科学与技术师范班级师计091设计者徐群杨松徐春辉杨雷刘安然学号3224312504指导教师黄绍义20xx年12月25日1目录1概述311研究的背景及意...

简单计算器C语言课程设计报告书

C语言课程设计报告书题目:简单计算器院系:班级:学号:姓名:一、课程设计目的1.巩固和加深C语言课程的基本知识的理解和掌握2.掌握C语言编程和程序调试的基本技能3.利用C语言进行基本的软件设计4.掌握书写程序设…

c语言程序设计课程设计报告(34篇)