C语言课程实训报告(实训1-2)

时间:2024.4.14

汕头职业技术学院

C语言课程实训报告


第二篇:c语言实训报告 (2)


       

HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGY

C语言程序设计

实训报告

实训题目:     汽车零部件质检管理系统          

专    业:            软件工程       

班    级:           K1373-3                  

姓    名:             王扶夏                 

成    绩:                                     

完成日期:          20##-1-18                 

指导教师:            陈艳海                        

     课设报告内容:

一、-----------------------------设计题目与要求

二、-----------------------------系统设计

三、------------------------------程序测试与运行结果

四、------------------------------实训总结

五、------------------------------程序源代码

一、课设题目与要求:

汽车零部件质检管理程序

题目描述

已知在汽车零部件生产过程中,需要对生产的零部件进行质量检测,保证生产质量,以便对出现生产质量问题的责任人进行考核,设计一个汽车零部件质检管理程序,该程序应该具有完成如下功能:

(1)能从键盘输入质检信息。

(2)指定质检编号,显示质检信息。

(3)指定生产者,显示质检信息。

(4)指定质检编号,修改质检信息。

(5)指定质检编号,删除质检信息。

题目要求:

(1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。

(2) 质检信息包括:质检编号、零部件名称、生产者、生产部门、质检结果(合格/不合格)、质量问题(设计缺陷/装配质量/加工质量)、质检员、质检日期。

(3) 为程序设计windows窗口,在该窗口上以按钮的形式为用户提供“菜单”,通过点击各个功能项对应的按钮完成操作。

输入要求:

    (1)用户可以根据需求,选定相应的操作项目。进入每个操作后,通过窗口的文本框,从键盘输入相应的信息。程序根据用户输入的信息完成相应的处理,实现要求的功能。

    (2)能对输入的数据进行简单的校验,例如,质检日期必须是一个合法的日期格式,质检编号是唯一的(一个质检编号对应一次质检的质检信息)。

输出要求:

   (1)应用程序运行后,要在屏幕上显示一个按钮形式的“菜单”。

   (2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式以及结束方式等。

(3)在程序完成处理后,要清楚地给出程序的处理结果。例如,在给定质检编号删除质检信息时,如果该质检信息不存在,要提示没能删除,如果删除成功要提示删除成功。

实现要求:

   (1)在程序中使用链表存储质检信息。

   (2)采用模块化程序设计的方法,将程序中的各项功能用函数实现。

提示:

   (1)使用结构体表示质检信息,一个结点保存一条质检信息。

扩展功能:

   (1)提供一些统计功能。例如统计生产者质检不合格的次数,统计各种质量问题出现次数。

   (2)质检信息从文件读入。

   (3)将质检信息保存到文件中。

二、系统设计

(1)系统功能模块划分

1读取文件

2输入质检信息

3通过质检编号显示质检信息

4通过生产者显示质检信息

5指定质检编号修改信息

6指定质检编号删除信息

7保存文件

(2)主函数的流程分析与设计

 


三、程序测试与运行结果

void menu()                       //菜单

{

    system("cls");

system("color f0");

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

printf("\t\t\t*                     菜单                   *\n");

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

printf("\t\t\t*  1.读入文件                                *\n");

printf("\t\t\t*  2.输入质检信息                            *\n");

printf("\t\t\t*  3.通过质检编号显示质检信息                *\n");

printf("\t\t\t*  4.通过生产者显示质检信息                  *\n");

printf("\t\t\t*  5.指定质检编号修改信息                    *\n");

printf("\t\t\t*  6.指定质检编号删除信息                    *\n");

printf("\t\t\t*  7.统计                                    *\n");

printf("\t\t\t*  8.保存文件                                *\n");

printf("\t\t\t*  0.退出                                    *\n");

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

printf("\t\t\t 请输入选项(0~7):");

}

void readFile()         // 读取文件

{

FILE *fp;

struct qualityTesting *sp,*newp,*sp2;

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

if(fp == NULL)

{

   printf("文件打开失败!");

   exit(0);

}

headp = (struct qualityTesting *) malloc(sizeof(struct qualityTesting));

headp->next = NULL;

sp =headp;

    while(!feof(fp))

{

    newp = (struct qualityTesting *) malloc(sizeof(struct qualityTesting));

       fscanf(fp,"%d%s%s%s%s%s%s%s ",&(newp->quality_number),&(newp->part_name),&(newp->producer),&(newp->production),&(newp->result),&(newp->problem),&(newp->quality_person),&(newp->data));

       count++;

       newp->next = NULL;

       sp->next = newp;

       sp = sp->next;

}

    sp->next = NULL;

headp1 = sp;

fclose(fp);

printf("计数器:%d\n",count);

    printf("文件录入成功!\n");

sp2=headp->next;

while(sp2!=NULL)

{

       printf("%d %s %s %s %s %s %s %s \n",sp2->quality_number,sp2->part_name,sp2->producer,sp2->production,sp2->result,sp2->problem,sp2->quality_person,sp2->data);

       sp2=sp2->next;

             

}

    system("pause");

}

void input()           //输入质检信息

{

    struct qualityTesting *sp,*newp;

int cho=1;

sp = headp1;

while(cho != 0)

{

    newp = (struct qualityTesting *) malloc(sizeof(struct qualityTesting));

       printf("请输入质检信息\n");

       printf("质检编号:");

       scanf("%d",&(newp->quality_number));

       printf("零件名称:");

       scanf("%s",&(newp->part_name));

       printf("生产者:");

       scanf("%s",&(newp->producer));

       printf("生产部门:");

       scanf("%s",&(newp->production));

       printf("质检结果(合格/不合格):");

       scanf("%s",&(newp->result));

       printf("质检问题(设计缺陷/装配质量/加工质量):");

       scanf("%s",&(newp->problem));

       printf("质检员:");

       scanf("%s",&(newp->quality_person));

       printf("质检日期:");

       scanf("%s",&(newp->data));

       newp->next = NULL;

       sp->next = newp;

       sp=sp->next;

       count++;

       printf("继续输入请输入数字键(退出:0)");

       scanf("%d",&cho);

}

sp->next = NULL;

}

void quality_number_search()                 //通过质检编号显示质检信息

{

    struct qualityTesting *sp;

int number;

sp = headp->next;

printf("\n请输入质检编号:");

scanf("%d",&number);

while(sp != NULL)

{

    if(sp->quality_number == number)

       {

           printf("%d %s %s %s %s %s %s %s \n",sp->quality_number,sp->part_name,sp->producer,sp->production,sp->result,sp->problem,sp->quality_person,sp->data);

              break;

       }

       sp = sp->next;

}

system("pause");

}

void producer_search()                    //通过生产者显示质检信息

{

    struct qualityTesting *sp;

char name[10];

sp = headp->next;

printf("\n请输入生产者:");

scanf("%s",&name);

while(sp != NULL)

{

    if(strcmp(sp->producer,name) == 0)

       {

           printf("%d %s %s %s %s %s %s %s \n",sp->quality_number,sp->part_name,sp->producer,sp->production,sp->result,sp->problem,sp->quality_person,sp->data);

              break;

       }

       sp = sp->next;

}

system("pause");

void quality_number_change()                          //指定质检编号修改信息

{

    struct qualityTesting *sp;

int number;

sp = headp->next;

printf("\n请输入质检编号:");

scanf("%d",&number);

while(sp != NULL)

{

    if(sp->quality_number == number)

       {

              printf("请输入质检信息\n");

           printf("质检编号:");

           scanf("%d",&(sp->quality_number));

           printf("零件名称:");

           scanf("%s",&(sp->part_name));

           printf("生产者:");

           scanf("%s",&(sp->producer));

           printf("生产部门:");

           scanf("%s",&(sp->production));

           printf("质检结果(合格/不合格):");

           scanf("%s",&(sp->result));

           printf("质检问题(设计缺陷/装配质量/加工质量):");

           scanf("%s",&(sp->problem));

           printf("质检员:");

           scanf("%s",&(sp->quality_person));

           printf("质检日期:");

           scanf("%s",&(sp->data));

           break;

       }

       sp = sp->next;

}

printf("修改成功!");

system("pause");

}

void quality_number_delete()                   //指定质检编号删除信息

{

    struct qualityTesting *sp,*fellowp;

int number;

sp = headp->next;

fellowp = headp;

printf("\n请输入质检编号:");

scanf("%d",&number);

while(sp != NULL)

{

    if(sp->quality_number == number)

       {

           fellowp->next = sp->next;

              free(sp);

           flag=1;

              count--;

           break;

       }

       fellowp = sp;

       sp = sp->next;

}

if(flag == 1)

    printf("删除成功!");

else

    printf("删除失败!");

system("pause");

}

void saveFile()                          //保存文件

{

struct qualityTesting *sp,*fellowp;

FILE *fp2;

sp = headp->next;

fellowp = headp;

fp2 = fopen("data.txt","w");

while(sp != NULL)

{

    fprintf(fp2,"%d %s %s %s %s %s %s %s \n",sp->quality_number,sp->part_name,sp->producer,sp->production,sp->result,sp->problem,sp->quality_person,sp->data);

       fellowp = sp;

       sp = sp->next;

       free(fellowp);     

}

printf("保存成功!(链表清空完毕)");

system("pause");

}

void add()                     //统计

{

struct qualityTesting *sp;

sp = headp->next;

while(sp != NULL)

{

    if(strcmp(sp->result,"不合格") == 0)

              a++;

       if(strcmp(sp->problem,"设计缺陷") == 0)

              b++;

       if(strcmp(sp->problem,"装配质量") == 0)

              c++;

       if(strcmp(sp->problem,"加工质量") == 0)

              d++;

       sp = sp->next;

}

printf("不合格次数:%d\n",a);

printf("设计缺陷次数:%d\n",b);

printf("装配质量次数:%d\n",c);

printf("加工质量次数:%d\n",d);

system("pause");

}

四、实训总结

        通过本次实训,我发现我在c语言的学习上还存在很多的问题,而且对于一些基础知识的掌握还是不够熟练,本次实训的代码中很多地方都需要用到链表的知识,但是我发现我对链表的掌握很差,而且代码中的链表方面的知识还是在同学的的帮助下完成的,所以,在本次实训过后我发现我对链表方面知识的掌握有了进一步的提高。

        而且在本次实训中,我发现c语言的学习其实并不是原来想象的那么难,只要对一些基本的知识点掌握的比较熟练了之后,对于一些简单的程序都可以很好的独立完成。所以作为一个计算机专业的学生,在以后的学习和其他各类计算机语言中,我要加强对基础知识的掌握,平时勤加练习,争取今早的掌握。

       同时在本次实训中,我也遇到了一些困难和问题,但同时我也学会了一些面对困难时所必须的态度,这都是本次实训所带给我的。最后,我想说,虽然我的c语言基础不是很好,但是,我相信,只要我肯努力,我的c语言成绩肯定会更进一步的。

五、程序源代码

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<windows.h>

struct qualityTesting               //结构体:质检信息

{

int quality_number;             //质检编号

char part_name[20];             //零件名称

char producer[30];              //生产者

char production[30];            //生产部门

char result[10];                //质检结果(合格/不合格)

char problem[30];               //质检问题(设计缺陷/装配质量/加工质量)

char quality_person[30];        //质检员

char data[30];                  //质检日期

struct qualityTesting *next;

};

struct qualityTesting *headp,*headp1;       //头结点

int count=0;                        //计数器

int flag =0;                        //判断删除是否成功

int a=0;                            //统计不合格数量

int b=0,c=0,d=0;                    //统计各种质量问题出现次数

void menu()                       //菜单

{

    system("cls");

system("color f0");

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

printf("\t\t\t*                     菜单                   *\n");

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

printf("\t\t\t*  1.读入文件                                *\n");

printf("\t\t\t*  2.输入质检信息                            *\n");

printf("\t\t\t*  3.通过质检编号显示质检信息                *\n");

printf("\t\t\t*  4.通过生产者显示质检信息                  *\n");

printf("\t\t\t*  5.指定质检编号修改信息                    *\n");

printf("\t\t\t*  6.指定质检编号删除信息                    *\n");

printf("\t\t\t*  7.统计                                    *\n");

printf("\t\t\t*  8.保存文件                                *\n");

printf("\t\t\t*  0.退出                                    *\n");

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

printf("\t\t\t 请输入选项(0~7):");

}

void readFile()         // 读取文件

{

FILE *fp;

struct qualityTesting *sp,*newp,*sp2;

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

if(fp == NULL)

{

   printf("文件打开失败!");

   exit(0);

}

headp = (struct qualityTesting *) malloc(sizeof(struct qualityTesting));

headp->next = NULL;

sp =headp;

    while(!feof(fp))

{

    newp = (struct qualityTesting *) malloc(sizeof(struct qualityTesting));

       fscanf(fp,"%d%s%s%s%s%s%s%s ",&(newp->quality_number),&(newp->part_name),&(newp->producer),&(newp->production),&(newp->result),&(newp->problem),&(newp->quality_person),&(newp->data));

       count++;

       newp->next = NULL;

       sp->next = newp;

       sp = sp->next;

}

    sp->next = NULL;

headp1 = sp;

fclose(fp);

printf("计数器:%d\n",count);

    printf("文件录入成功!\n");

sp2=headp->next;

while(sp2!=NULL)

{

       printf("%d %s %s %s %s %s %s %s \n",sp2->quality_number,sp2->part_name,sp2->producer,sp2->production,sp2->result,sp2->problem,sp2->quality_person,sp2->data);

       sp2=sp2->next;

             

}

    system("pause");

}

void input()           //输入质检信息

{

    struct qualityTesting *sp,*newp;

int cho=1;

sp = headp1;

while(cho != 0)

{

    newp = (struct qualityTesting *) malloc(sizeof(struct qualityTesting));

       printf("请输入质检信息\n");

       printf("质检编号:");

       scanf("%d",&(newp->quality_number));

       printf("零件名称:");

       scanf("%s",&(newp->part_name));

       printf("生产者:");

       scanf("%s",&(newp->producer));

       printf("生产部门:");

       scanf("%s",&(newp->production));

       printf("质检结果(合格/不合格):");

       scanf("%s",&(newp->result));

       printf("质检问题(设计缺陷/装配质量/加工质量):");

       scanf("%s",&(newp->problem));

       printf("质检员:");

       scanf("%s",&(newp->quality_person));

       printf("质检日期:");

       scanf("%s",&(newp->data));

       newp->next = NULL;

       sp->next = newp;

       sp=sp->next;

       count++;

       printf("继续输入请输入数字键(退出:0)");

       scanf("%d",&cho);

}

sp->next = NULL;

}

void quality_number_search()                 //通过质检编号显示质检信息

{

    struct qualityTesting *sp;

int number;

sp = headp->next;

printf("\n请输入质检编号:");

scanf("%d",&number);

while(sp != NULL)

{

    if(sp->quality_number == number)

       {

           printf("%d %s %s %s %s %s %s %s \n",sp->quality_number,sp->part_name,sp->producer,sp->production,sp->result,sp->problem,sp->quality_person,sp->data);

              break;

       }

       sp = sp->next;

}

system("pause");

}

void producer_search()                    //通过生产者显示质检信息

{

    struct qualityTesting *sp;

char name[10];

sp = headp->next;

printf("\n请输入生产者:");

scanf("%s",&name);

while(sp != NULL)

{

    if(strcmp(sp->producer,name) == 0)

       {

           printf("%d %s %s %s %s %s %s %s \n",sp->quality_number,sp->part_name,sp->producer,sp->production,sp->result,sp->problem,sp->quality_person,sp->data);

              break;

       }

       sp = sp->next;

}

system("pause");

}

void quality_number_change()                          //指定质检编号修改信息

{

    struct qualityTesting *sp;

int number;

sp = headp->next;

printf("\n请输入质检编号:");

scanf("%d",&number);

while(sp != NULL)

{

    if(sp->quality_number == number)

       {

              printf("请输入质检信息\n");

           printf("质检编号:");

           scanf("%d",&(sp->quality_number));

           printf("零件名称:");

           scanf("%s",&(sp->part_name));

           printf("生产者:");

           scanf("%s",&(sp->producer));

           printf("生产部门:");

           scanf("%s",&(sp->production));

           printf("质检结果(合格/不合格):");

           scanf("%s",&(sp->result));

           printf("质检问题(设计缺陷/装配质量/加工质量):");

           scanf("%s",&(sp->problem));

           printf("质检员:");

           scanf("%s",&(sp->quality_person));

           printf("质检日期:");

           scanf("%s",&(sp->data));

           break;

       }

       sp = sp->next;

}

printf("修改成功!");

system("pause");

}

void quality_number_delete()                   //指定质检编号删除信息

{

    struct qualityTesting *sp,*fellowp;

int number;

sp = headp->next;

fellowp = headp;

printf("\n请输入质检编号:");

scanf("%d",&number);

while(sp != NULL)

{

    if(sp->quality_number == number)

       {

           fellowp->next = sp->next;

              free(sp);

           flag=1;

              count--;

           break;

       }

       fellowp = sp;

       sp = sp->next;

}

if(flag == 1)

    printf("删除成功!");

else

    printf("删除失败!");

system("pause");

}

void saveFile()                          //保存文件

{

struct qualityTesting *sp,*fellowp;

FILE *fp2;

sp = headp->next;

fellowp = headp;

fp2 = fopen("data.txt","w");

while(sp != NULL)

{

    fprintf(fp2,"%d %s %s %s %s %s %s %s \n",sp->quality_number,sp->part_name,sp->producer,sp->production,sp->result,sp->problem,sp->quality_person,sp->data);

       fellowp = sp;

       sp = sp->next;

       free(fellowp);     

}

printf("保存成功!(链表清空完毕)");

system("pause");

}

void add()                     //统计

{

struct qualityTesting *sp;

sp = headp->next;

while(sp != NULL)

{

    if(strcmp(sp->result,"不合格") == 0)

              a++;

       if(strcmp(sp->problem,"设计缺陷") == 0)

              b++;

       if(strcmp(sp->problem,"装配质量") == 0)

              c++;

       if(strcmp(sp->problem,"加工质量") == 0)

              d++;

       sp = sp->next;

}

printf("不合格次数:%d\n",a);

printf("设计缺陷次数:%d\n",b);

printf("装配质量次数:%d\n",c);

printf("加工质量次数:%d\n",d);

system("pause");

}

int main()

{

    int choice;

while(1)

{

    menu();

       scanf("%d",&choice);

       switch(choice)

       {

       case 1:readFile();break;

       case 2:input();break;

       case 3:quality_number_search();break;

       case 4:producer_search();break;

       case 5:quality_number_change();break;

       case 6:quality_number_delete();break;

       case 7:add();break;

       case 8:saveFile();break;

       case 0:return 0;break;

       default:

           printf("输入错误!请重新输入");

       }

}

free(headp);

return 0;

}

                                              20##年1月

更多相关推荐:
课程实习报告

食品专业课程设计报告院系:专业:班级:学生姓名:指导教师:实习地点:实习时间:报告成绩:一、实习目的1、通过实地参观,真切地感受公司的文化,更能让我们了解生产酒和醋的各种制作流程以及一些管理制度进行了参观和调查…

课程实训报告格式

模拟电子技术课程实训报告课题名称基于单片机的系别机电系专业电气自动化班级09级学号35号学生姓名指导教师袁从贵完成日期20xx525广州科技贸易职业学院教务处制广州科技贸易职业学院课程实训报告目录1实训任务与要...

课程实习报告

经济与管理学院国际经济与贸易专业学生姓名度艳班级国贸09102班学号20xx01010241指导教师刘金红实习单位李文锁城长沙分公司实习时间20xx年11月28日至12月8日20xx年12月11日前言伴随着本学...

课程设计(实训)报告模板

广州航海高等专科学校课程设计实训报告课程ASPNET程序设计基础与实训教程题目网络课程生成系统专业计算机应用技术指导教师王琢成绩班级计应101班学号20xx1501123姓名黄华20xx年6月14日广州航海高等...

课程实训报告(参考格式)

挤吹吸冲裁四合一微型成型机组操作实训报告实训序号实验三实训项目名称挤吹吸冲裁四合一微型成型机组操作

课程实训总结报告

黄河水利职业技术学院课程实训总结报告希望可以有机会交流我的邮箱chengyannnnn126com班级电子商务1102学号20xx030203姓名程艳菲指导教师王威黄河水利职业技术学院网站推广方案推广方案的制定...

大学课程实训报告

九江职业技术学院JiujiangVocationalampTechnicalCollege课程名称班级学号姓名指导教师日期实训报告市场调查与预测市场营销0901班20xx2627夏宇李红20xx年6月20日九江...

RFID课程实践实训报告

目录第一章RFID基本知识111RFID概念及原理1111概念1112组成2113工作原理212RFID分类413RFID系统的应用7第二章学生管理系统硬件设计921系统框图组成922各部分选择及作用923系统...

单片机课程实训报告

单片机交通灯设计报告17组目录第一部分课程设计任务书1一课程设计题目1二课程设计时间1三课程设计提交方式1四设计要求1第二部分课程设计报告2一单片机发展简史2二MCS51单片机系统简介2三设计思路4四硬件设计电...

MATLAB实训课程报告

广东技术师范学院天河学院控制系统仿真系别班级学号学生姓名指导老师课程设计电气工程系李颖琼年10月20xx目录1Matlab软件简介311MATLAB产生的历史背景312MATLAB的语言特点和开发环境42课程设...

会计实训课程会计分录上机实训报告

上机实训报告经济与管理系实训课程会计学原理专业班级会计专业1304学号20xxxxxx姓名xxxx20xx年05月05日

模拟电子技术仿真及简单干手器实训课程报告

哈理工大学电子技术课程设计报告学院测控技术与通信工程学院专业班级通信2班学生姓名陈浩鑫指导教师完成时间20xx年12月29号成绩1信号发生器和干手器一目的和意义该课程设计是在完成电子技术2的理论教学之后安排的一...

课程实训报告(45篇)