C语言课程设计报告模板

时间:2024.3.27

C语言课程设计

 

课程名称C语言课程设计

教师姓名  樊媛媛

本科生姓名  王云娜

本科生学号  20101001322

本科生专业  机械设计制造及其自动化

所在院系  机械与电子信息学院

类别 :  本科生

日期 : 201266

            课程设计评语

注:1、无评阅人签名成绩无效;

2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;

3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。

               目 录

课程设计评语..................................................................................................................... 2

目 录................................................................................................................................. 3

1.课程论文题目................................................................................................................ 4

2.程序设计思路................................................................................................................ 4

3.功能模块图................................................................................................................... 5

4.数据结构设计................................................................................................................ 5

5.算法设计....................................................................................................................... 6

6.程序代码..................................................................................................................... 13

7.程序运行结果.............................................................................................................. 22

8.编程中遇到的困难及解决方法...................................................................................... 25

9.总结心得及良好建议.................................................................................................... 26

10.致谢.......................................................................................................................... 26

1. 程论文题目:实验设备管理系统设计

【要求】

实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。试设计一实验设备信息管理系统,使之能提供以下功能:

   (1)能够完成对设备的录入和修改。

   (2)对设备进行分类统计。

   (3)设备的查询。

【提示】

需求分析:实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备的插叙需要提供查找操作,设备的查询可根据设备编号、设备种类、设备名称、设备购入日期、正常设备(未报废的)等多种方式查询;另外还要提供键盘式选择菜单以实现功能选择。

2.程序设计思路

根据需求分析,可将系统的设计分为四个模块:输入模块,修改模块,统计模块,查询模块;实验室设备信息用文件存储,提供文件的输入输出;建立实验设备信息结构体,结构体成员包括:设备编号,设备种类,设备名称,设备价格,设备购入日期,是否报废,报废日期。

   (1)主函数设计

主函数提供输入,处理,输出部分的函数调用,其中各功能模块用菜单方式选择,即主函数里显示一系列功能选项,判断后,是否调用个功能模块用了switch()选择功能。

   (2)各功能模块设计

    输入模块:定义了文件型指针变量,打开文件输入用户要输入设备的个数,输入设备的各项详细信息,将输入的信息存储到文件的中;用到fopen(文件名,使用文件方式);fclose(文件指针);fprintf(文件指针,格式字符串,输出列表)。

修改模块:输入要修改的设备编号,是否找到该设备资料,如果找到记录,调用修改函数,对该设备的信息进行修改;如果没有找到,返回主菜单。在寻找的过程中用了字符串的比较strcmp(字符串1,字符串2),如果字符串1=字符串2,则函数值为0。

                            如果字符串1>字符串2,则函数值为一个正整数。

                            如果字符串1<字符串2,则函数值为一个负整数。

比较时,只能用if(strcmp(str1,str2)>0)。

还用到feof()若到文件末尾,函数值为“真”。

     统计模块:打开文件,并对文件中的设备信息进行统计计算类型数目,总价格,平均价格;此程序中将char类型转化成double型,用到了pc=atof();fscanf(文件指针,格式字符串,输入列表);同样也用到了字符串的比较strcmp(字符串1,字符串2),feof()。

     查询模块:询问用户想要选择的搜索方式,分三种类型查询(设备名称,设备型号,设备价格),再用switch()的选择功能,每一种类型有用到了feof()控制循环,字符串的比较strcmp(字符串1,字符串2),

3. 功能模块图

 (1) 输入模块

             

 (2) 修改模块

(3)统计模块

 

  

 

(4)查询模块

 

4.  数据结构设计

此程序中用到了

            (1)基本类型:1)常量的使用#define N 50,

                           2)整型(int),

                           3)字符型(char),

                           4)浮点型(双精度double)。                 

            (2)构造类型:1)数组类型 (equipCode[10] ,equipType[20],equipName[20]

                         equipPrice[10],equipOver[20], equipYesno[10], equipTime[10] )

                            2)结构体类型:      struct equip

                             {

                               char  equipCode[10];

                               char  equipType[20];

                               char  equipName[20];

                               char  equipPrice[10];

                               char  equipOver[20];

                               char  equipYesno[10];      

                               char  equipTime[10];

                              }equ[N],temp;

              (3)指针类型:FILE *fp,文件型指针变量,fp是一个指向FLIE类型结构

                             的指针变量。

5. 算法设计

 

 

 


 

                                                                                                

 

 


                                                                    

 

 


6. 程序代码

#include "stdio.h"

#include<stdlib.h>

#include<string.h>

# define N 50

struct equip

{

        char  equipCode[10];

        char  equipType[20];

        char  equipName[20];

        char  equipPrice[10];

        char  equipOver[20];

        char  equipYesno[10];      

        char  equipTime[10];

}equ[N],temp;

int enter()         //输入记录   

{

   FILE *fp;

   int c;

   printf("**************************************\n");

   printf("Add new equiment\n");

   printf("**************************************\n");

 if((fp=fopen("test.txt","a"))==NULL)

{

        printf("Can not open file!\n");

}

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

     printf("请输入设备ID号:\n");

     scanf("%s",temp.equipCode);

     printf("请输入设备类型\n");

     scanf("%s",temp.equipType);

     printf("请输入设备名称\n");

     scanf("%s",temp.equipName);

     printf("请输入设备价格\n");

     scanf("%s",temp.equipPrice);

     printf("请输入设备购买日期\n");

     scanf("%s",temp.equipTime);

     printf("请输入设备报废日期\n");

     scanf("%s",temp.equipOver);

     printf("请输入设备是否报废\n");

     scanf("%s",temp.equipYesno);

     fprintf(fp,"%s %s %s %s %s %s %s\n",

                    temp.equipCode,

                    temp.equipType,

                    temp.equipName,

                    temp.equipPrice,

                    temp.equipTime,

                    temp.equipOver,

                    temp.equipYesno);

    fclose(fp);

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

    printf("Return to main menu?\n");

    printf("1.YES,Addition Successful\n");

    printf("2.NO,I want to quit now\n");

    scanf("%d",&c);

    if(c==1)return(0);

    if(c==2)return(0);

}

int modifty()           //修改记录

{

    char code[10];

   int i,j;

   int c;

   FILE *fp;

   printf("*************************************\n");

   printf("Modifty for the equiment\n");

   printf("*************************************\n");

   printf("Please input the equipcode for modiftying\n");

   scanf("%s",code);

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

if((fp=fopen("test.txt","r"))==NULL)

{

       printf("\nCan not open test!\n");

}

for(i=0;!feof(fp);i++)

{

   fscanf(fp,"%s %s %s %s %s %s %s",

            equ[i].equipCode,

            equ[i].equipType,

            equ[i].equipName,

            equ[i].equipPrice,

            equ[i].equipTime,

            equ[i].equipOver,

            equ[i].equipYesno);

    if(strcmp(equ[i].equipCode,code)==0)

 {

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

    printf("Input new equipCode\n");

    scanf("%s",equ[i].equipCode);

    printf("Input new equiptype\n");

    scanf("%s",equ[i].equipType);

    printf("Input new equipname\n");

    scanf("%s",equ[i].equipName);

    printf("Input equipPrice\n");

    scanf("%s",equ[i].equipPrice);

    printf("Input new euiptime\n");

    scanf("%s",equ[i].equipTime);

    printf("Input new euipover\n");

    scanf("%s",equ[i].equipOver)

    printf("Input new euipyesno\n");

    scanf("%s",equ[i].equipYesno);

}

}

   fclose(fp);

    j=i;

if((fp=fopen("test.txt","w"))==NULL)

{

       printf("\nCan not open test!\n");

}

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

{

        printf("\nwrite!\n");

     fprintf(fp,"%s %s %s %s %s %s %s",

                equ[i].equipCode,

                equ[i].equipType,

                equ[i].equipName,

                equ[i].equipPrice,

                equ[i].equipTime,

                equ[i].equipOver,

                equ[i].equipYesno);

}

   fclose(fp);

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

   printf("Return to main menu?   \n");

   printf("1.YES Modify Successful\n");

   printf("2.NO, quit now\n");

   scanf("%d",&c);

 if(c==1)return(0);

 if(c==2)return(0);

}

int disp()               //统计记录

{

   int c;

   double sum=0;

   int count=0;

   double aver=0;

   char type[20];

   int i;

   FILE *fp;

 if((fp=fopen("test.txt","r"))==NULL)

{

        printf("\nWrong\n");

}

     printf("please input equipType:\n");

     scanf("%s",type);

 for(i=0;!feof(fp);i++)

{

        fscanf(fp,"%s %s %s %s %s %s %s",

                    equ[i].equipCode,

                       equ[i].equipType,

              equ[i].equipName,

                       equ[i].equipPrice,

                       equ[i].equipTime,

                       equ[i].equipOver,

                       equ[i].equipYesno);

     printf("\nOK!\n");

        printf("%s,%s,%s,%s,%s,%s,%s\n",

                    equ[i].equipCode,

                       equ[i].equipType,

              equ[i].equipName,

                       equ[i].equipPrice,

                       equ[i].equipTime,

                       equ[i].equipOver,

                       equ[i].equipYesno);

   if(strcmp(equ[i].equipType,type)==0)

   {

             double pc=atof(equ[i].equipPrice);       //char 转换为double

        count++;

        sum+=pc;

        aver=sum/count;

   }

}   

     fclose(fp);

     printf("----------Statist--Result-----------");

     printf("\n\n这种类型的数目:%d",count);

     printf("\n\n总的价格 :%lf",sum);

     printf("\n\n平均价格 :%lf",aver);

     printf("\nexit");

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

     printf("Return to main menu?\n");

     printf("1.YES Disp Successful \n");

     printf("2.NO,quit now.\n");

     scanf("%d",&c);

  if(c==1) return(0);

  if(c==2) return(0);

}

int search()            //查询记录

{

  char code[10];

  char name[20];

  char price[10];

  int sel;

  int c;

  FILE *fp;

  int i;

 fp=fopen("test.txt","r");

 if(fp==NULL) exit(0);

   printf("please choose the way of search:\n\n");

   printf("1.search by equipCode\n\n");

   printf("2.search by equipName \n\n");

   printf("3.search by equipPrice\n\n");

   printf("0.return\n\n");

   printf("please input number 0-5:");

   scanf("%d",&sel);             

 if(sel==0)  exit(0);

 switch(sel)

{

   case 0:exit(0);  break;

   case 1:

        printf("please input equipCode:\n");

        scanf("%s",code);

        for(i=0;!feof(fp);i++)

        {

            fscanf(fp,"%s %s %s %s %s %s %s",

                      equ[i].equipCode,

                      equ[i].equipType,

                      equ[i].equipName,

                      equ[i].equipPrice,

                      equ[i].equipTime,

                      equ[i].equipOver,

                      equ[i].equipYesno);

          if(strcmp(equ[i].equipCode,code)==0)

     {

        printf("\nequipCode,equipType,equipName,equipPrice,euipTime,euipOver,euipYesno\n");

        printf( "\n%s,%s,%s,%s,%s,%s,%s\n",

                          equ[i].equipCode,

                          equ[i].equipType,

                         equ[i].equipName,

                equ[i].equipPrice,

                         equ[i].equipTime,

                         equ[i].equipOver,

                         equ[i].equipYesno);

                }

        }

      break;

  case 2:

       printf("please input equipName:\n");

       scanf("%s",name);

      for(i=0;!feof(fp);i++)

        {

            fscanf(fp,"%s %s %s %s %s %s %s",

                        equ[i].equipCode,

                        equ[i].equipType,

               equ[i].equipName,

                        equ[i].equipPrice,

                        equ[i].equipTime,

                        equ[i].equipOver,

                        equ[i].equipYesno);

          if(strcmp(equ[i].equipName,code)==0)

                {

        printf("\nequipCode,equipType,equipName,equipPrice,euipTime,euipOver,euipYesno\n");

        printf("\n%s,%s,%s,%s,%s,%s,%s\n",

                        equ[i].equipCode,

                        equ[i].equipType,

               equ[i].equipName,

                        equ[i].equipPrice,

                        equ[i].equipTime,

                        equ[i].equipOver,

                        equ[i].equipYesno);

                }

        }

    break;

case 3:

     printf("please input equipPrice:\n");

     scanf("%d",&price);

     for(i=0;!feof(fp);i++)

        {  

          fscanf(fp,"%s %s %s %s %s %s %s",

                       equ[i].equipCode,

                       equ[i].equipType,

              equ[i].equipName,

                       equ[i].equipPrice,

                       equ[i].equipTime,

                       equ[i].equipOver,

                       equ[i].equipYesno);

          if(strcmp(price,equ[i].equipPrice)==0)

 {    

        printf("\nequipCode,equipType,equipName,equipPrice,euipTime,euipOver,euipYesno\n");

        printf("\n%s,%s,%s,%s,%s,%s,%s\n",

             equ[i].equipCode,

                      equ[i].equipType,

             equ[i].equipName,

                      equ[i].equipPrice,

                      equ[i].equipTime,

                      equ[i].equipOver,

                      equ[i].equipYesno);

                }

        }

break;

}

   fclose(fp);

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

   printf("Return to main menu?   \n");

   printf("1.YES Search Successful \n");

   printf("2.NO, quit now\n");

   scanf("%d",&c);

 if(c==1) return(0);

 if(c==2) return(0);

}

void main()

{  

    int n;

    int w;

    do

    puts("\t\t*******MENU*******\n\n");

    puts("\t\t 1.Enter new data");

    puts("\t\t 2.Modify data");

    puts("\t\t 3.Disp ");

    puts("\t\t 4.Search");

    puts("\t\t 5.Exit");

    puts("\n\n\t\t*****************\n");

    printf("Choice your number(1-5):");

    scanf("%d",&n);

  if(n<1||n>5)

{  

    w=1;

   getchar();

}

  else w=0;

switch(n)

  { 

     case 1:enter();break;

     case 2:modifty();break;

     case 3:disp();break;

     case 4:search();break;

     case 5:exit(0);

  }

}  

   while(w==0);

}

 

7. 程序运行结果

(1)主函数

(2)输入模块

    

(3)修改模块

(4)统计模块

(5)查询模块

 

8.编程中遇到的困难及解决方法

    由于自己时间过长的遗忘及知识的局限性使得在程序的编译中存在一些问题,对每个功能模块的理解,以及主函数的功能,都是在老师的讲解下有了更深的了解。编写主函数根据一些例题的模式以及自己的所要实现的功能来完成;每一个子模块,也是根据例题模块,以及要实现的功能编写,用到了文件,结构体类型,数组,类型的装换等等,文件以及结构体类型,通过查看书本完成的,类型的装换是通过老师和同学的帮忙解决的。在运行过程中,每个模块运行后不能接着下一个模块,也是在老师的帮助下完成的,总体程序还是比较简单的。

9. 总结心得及良好建议

    经过这几天的实习使我了解到C语言的重要性,之前接触到的C语言内容都是理论上的,理论知识知道的比较多,但是没怎么用到实际操作当中。这次上机实习给了我一次真正认识C语言的机会,刚开始我一脸的迷茫,不知道从哪里开始动手,觉得C语言是一种很深奥的东西,对于刚开始接触这门课程的我来说非常的不适应。很多东西都是第一次:第一次真正认真的投入C语言当中,第一次用自己在课堂上学习的东西逐步的去解决实际问题,这次是完成实验设备信息的管理。经过这次实习,我知道自己的计算机知识还是相当有限的,在这次的程序编译过程中遇到了很多自己无法解决的问题,可是通过老师的指导,上网查看资料,问高年级的学长学姐等方法,最终问题都基本解决了。

    这次C语言课程设计给我的帮助是很大的。虽然到现在我还掌握得不好。所以在以后的学习生活中我会更加注重这方面的实际操作,提高自己的实际动手操作能力,解决实际问题的能力以及提升自己的计算机水平。 

10.致谢

    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篇)