1C语言课程设计报告课程名称:计算机高级语言课程设计(C)教师姓名:陈喆本科生姓名:张宸本科生学号:20151000853本科生专业:土地资源管理所在院系:公共管理学院类别:C.本科生日期:2016.01.14课程设计评语2对课程论文的评语:平时成绩:课程论文成绩:总成绩:评阅人签名:注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。目录前言................................................................................................................................4一、题目要求............................................................................................................4二、题目分析...........................................................................................................53三、总体设计...........................................................................................................5四、详细设计...........................................................................................................61、主函数.........................................................................................................62、各功能模块设计.........................................................................................9(1)数据输入设计.....................................................................................9(2)删除设计...........................................................................................15(3)查询设计...........................................................................................20(4)查找配对设计...................................................................................24五、上机操作.........................................................................................................27后记.........................................................................................................................30附录:所有程序代码..............................................................................................324前言C程序课程设计的目的:为加深学生对基础知识的了解,同时提高综合程序设计能力,在课堂教学结束后,集中安排了课程设计强化训练,目的是使学生融会贯通基本算法,提高综合程序设计能力。通过前四单元的温故而知新、庖丁解牛、举一反三、熟能生巧等过程的练习之后能够解决一些简单的实际问题。一、题目要求设计:“建筑工地信息管理系统”建立如下4个文件(括号内为文件中每条记录的字段内容):(1)销售商-配件-建筑工地(销售商号码,配件号,工地号,数量)(2)建筑工地(工地号,名字,城市)(3)配件(配件号,配件名,颜色,重量,产地)(4)销售商(号码,名字,状态,城市)功能:(1)首先建立文件,然后插入数据,并进行删除、更新操作,最后进行查询操作。(2)查询与供应商所在城市相同的零件——供应商,项目——供应商记录对。二、题目分析根据题目要求,建立文件,应选择结构体数组来存放数据,再定义一个全局变量和文件指针进行程序的运行,然后把数据信息存入文件中,所以要提供结构体和文件的输入输出等操作;在程序中要进行数据的插入、删除、更新、查询等操作,所以需要建立相应的模块来实现,为简便起见,还应建立一个主菜单,在每个模块中建立相应的副菜单;另外,还要提供键盘式选择菜单来实现选择功能,使程序在运行时达到要求。三、总体设计根据题目要求,可以将系统分为:1)插入数据模块;2)删除模块;3)查询模块;4)查找配对;;建筑工地信息管理系统5图一:系统功能模块图四、详细设计1、主函数【分析】主函数一般设计得比较简便,只提供输入、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。其流程图:图二:主函数流程图开始显示一系列功能选择输入n,判断w是否是0到4?根据n值调用各功能模块函数结束N6【程序】voidmenu(){intn,w;//变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内do{puts(\t\t*************建筑工地信息管理****************\n\n);puts(姓名:陈文昕);puts(学号:20141003384);puts(班号:175142);puts(\t\t****************MENU*******************\n\n);puts(\t\t\t\t1.输入);//输入puts(\t\t\t\t2.删除);//删除puts(\t\t\t\t3.查找);//查找puts(\t\t\t\t4.配对);//查找配对puts(\t\t\t\t5.Exit);puts(\n\n\t\t**************************************\n);printf(Chooseyournumber(1-5):[]\b\b);scanf(%d,&n);if(n1||n5){w=1;getchar();}elsew=0;}while(w==1);switch(n){case1:enter();break;case2:delete();break;case3:search();break;case4:search2();break;case5:exit(0);}}main(){menu();}72、各功能模块设计(1)数据输入设计【分析】数据信息存放在文件中,用结构体存放,方便数据输入与数据的保存。另外,输入模块中建立副菜单,用以输入四个文件的信息选项。开始输入用户信息是否继续进行?返回主菜单结束Y8图三:数据输入模块流程图9【程序】//销售商-配件-建筑工地信息输入模块voidSFB_enter(){intj;charc[2];FILE*fp;if((fp=fopen(data1.txt,w))==NULL){printf(Cannotopenthefile!\n);exit(0);}for(j=0;ji;j++){fwrite(&SFB[j],sizeof(structSellerFitBuild),1,fp);}while(1){printf(输入销售商号码:\n);scanf(%d,&SFB[i].seller_code);printf(输入配件号:\n);scanf(%d,&SFB[i].fit_code);printf(输入工地号:\n);scanf(%d,&SFB[i].build_code);printf(输入项目号:\n);scanf(%d,&SFB[i].subject_code);printf(输入销售数量:\n);scanf(%d,&SFB[i].num);if(fwrite(&SFB[i++],sizeof(structSellerFitBuild),1,fp)!=1)printf(Filewriteerror\n);elseprintf(Successful!\n);printf(是否继续?(是[y]/否[n])\n);scanf(%s,c);if(strcmp(c,n)==0)break;}fclose(fp);menu();}10//建筑工地信息输入模块voidBS_enter(){intj;charc[2];FILE*fp;if((fp=fopen(data2.txt,w))==NULL){printf(Cannotopenthefile!\n);exit(0);}for(j=0;ji;j++){fwrite(&BS[j],sizeof(structBuildingSite),1,fp);}while(1){printf(输入工地号:\n);scanf(%d,&BS[i].build_code);printf(输入工地名:\n);scanf(%s,BS[i].build_name);printf(输入城市:\n);scanf(%s,BS[i].city);if(fwrite(&BS[i++],sizeof(structBuildingSite),1,fp)!=1)printf(Filewriteerror\n);elseprintf(Successful!\n);printf(Isthereanymore?(Yes[y]/No[n])\n);scanf(%s,c);if(strcmp(c,n)==0)break;}fclose(fp);menu();}//配件信息输入模块voidFit_enter(){intj;charc[2];FILE*fp;if((fp=fopen(data3.txt,w))==NULL){printf(Cannotopenthefile!\n);exit(0);}11for(j=0;ji;j++){fwrite(&Fit[j],sizeof(structFitting),1,fp);}while(1){printf(输入配件号:\n);scanf(%d,&Fit[i].fit_code);printf(输入配件名:\n);scanf(%s,Fit[i].fit_name);printf(输入配件颜色:\n);scanf(%s,Fit[i].color);printf(输入配件重量:\n);scanf(%f,&Fit[i].weight);printf(输入配件产地:\n);scanf(%s,Fit[i].city);if(fwrite(&Fit[i++],sizeof(structFitting),1,fp)!=1)printf(Filewriteerror\n);elseprintf(Successful!\n);printf(Isthereanymore?(Yes[y]/No[n])\n);scanf(%s,c);if(strcmp(c,n)==0)break;}fclose(fp);menu();}//销售商信息输入模块voidSeller_enter(){intj;c