版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 C语言课程设计 名称:建筑工地信息管理系统 学院:工程学院 班级:055071-30姓名:文富奎学号:20071003889指导老师:刘文中前言课程设计目的:C语言编程实践是学习C语言的一个重要环节,为提高学生的程序设计能力,通过课堂和上机实践使学生的程序设计能力有一个上升的台阶。通过前四单元的温故而知新、庖丁解牛、举一反三、熟能生巧等过程的练习之后能够解决一些简单的实际问题。1、 题目要求设计:“建筑工地信息管理系统”建立如下4个文件(括号内为文件中每条记录的字段内容):(1) 销售商-配件-建筑工地 (销售商号码,配件号,工地号,数量)(2) 建筑工地 (工地号,名字,城市)(3) 配件
2、 (配件号,配件名,颜色,重量,产地)(4) 销售商 (号码,名字,状态,城市)功能:(1) 首先建立文件,然后插入数据,并进行删除、更新操作,最后进行查询操作。(2) 查询与供应商所在城市相同的零件供应商,项目供应商记录对。 2、分析 根据题目要求,建立文件,应选择结构体数组来存放数据,再定义一个全局变量和文件指针进行程序的运行,然后把数据信息存入文件中,所以要提供结构体和文件的输入输出等操作;在程序中要进行数据的插入、删除、更新、查询等操作,所以需要建立相应的模块来实现,为简便起见,还应建立一个主菜单,在每个模块中建立相应的副菜单;另外,还要提供键盘式选择菜单来实现选择功能,使程序在运行时
3、达到要求。 3、总体设计根据题目要求,可以将系统分为:1) 插入数据模块;2) 删除模块;3) 查询模块;4) 查找配对;5) 功能选择菜建筑工地信息管理系统 查 找 配对 模块删除模块查询模块数据输入模块 功能 选 择 菜 单 图1 系统功能模块图 4、详细设计一、主函数【分析】 主函数一般设计得比较简便,只提供输入、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。其流程图:开始显示一系列功能选择输入n,判断w 是否是0到4?根据n值调用各功能模块函数结束N 图2 主函数流程图 【程序】/*主菜单*/ void menu() int n,w; /*变量n保存选择菜单数字,w判断输入的
4、数字是否在功能菜单对应数字范围内*/ do puts("tt*建筑工地信息管理*nn"); puts("姓名:文富奎"); puts("学号:20071003889"); puts("班学号:055071-30"); puts("tt*MENU*nn"); puts("tttt1.输入");/*输入*/ puts("tttt2.删除");/*删除*/ puts("tttt3.查找");/*查找*/ puts("tttt4.配对
5、");/*查找配对*/ puts("tttt5.Exit"); puts("nntt*n"); printf("Choose your number (1-5): bb"); scanf("%d",&n); if(n<1|n>5) w=1; getchar(); else w=0; while(w=1); switch(n) case 1:enter();break; case 2:delete();break; case 3:search();break; case 4:search
6、2();break; case 5:exit(0); main() menu(); 二、各功能模块设计(1)数据输入模块【分析】 数据信息存放在文件中,用结构体存放,方便数据输入与数据的保存。另外,输入模块中建立副菜单,用以输入四个文件的信息选项。开始输入用户信息是否继续进行? 结束返回主菜单Y 图3 数据输入模块流程图【程序】/*数据输入模块*/ void sal_enter() int j; char c2; FILE *fp; if(fp=fopen("data1.txt","w")=NULL) printf("Can not open
7、the file!n"); exit(0); for(j=0;j<i;j+) fwrite(&salj,sizeof(struct sale),1,fp); while(1) printf("输入销售商号码:n"); scanf("%d",&sali.num1); printf("输入配件号码:n"); scanf("%d",&sali.num2); printf("输入工地号码:n"); scanf("%d",&sali.nu
8、m3); printf("输入数量r:n"); scanf("%d",&sali.num4); if(fwrite(&sali+,sizeof(struct sale),1,fp)!=1) printf("File write errorn"); else printf("Successful!n"); printf("是否继续?( 是y/否n) n"); scanf("%s",c); if(strcmp(c,"n")=0)break; f
9、close(fp);menu(); void build_enter() int j; char c2; FILE *fp; if(fp=fopen("data2.txt","w")=NULL) printf("Can not open the file!n"); exit(0); for(j=0;j<i;j+) fwrite(&buildj,sizeof(struct building),1,fp); while(1) printf("输入工地号:n"); scanf("%d",
10、&buildi.num); printf("输入工地名:n"); scanf("%s",); printf("输入工地城市:n"); scanf("%s",buildi.city); if(fwrite(&buildi+,sizeof(struct building),1,fp)!=1) printf("File write errorn"); else printf("Successful!n"); printf("Is th
11、ere any more?( Yesy/Non) n"); scanf("%s",c); if(strcmp(c,"n")=0)break; fclose(fp);menu(); void pj_enter() int j; char c2; FILE *fp; if(fp=fopen("data3.txt","w")=NULL) printf("Can not open the file!n"); exit(0); for(j=0;j<i;j+) fwrite(&pjj
12、,sizeof(struct peijian),1,fp); while(1) printf("输入配件号:n"); scanf("%d",&pji.num); printf("输入配件名:n"); scanf("%s",); printf("输入配件颜色:n"); scanf("%s",pji.color); printf("输入配件重量:n"); scanf("%d",&pji.weight); pr
13、intf("输入配件产地:n"); scanf("%s",pji.area); if(fwrite(&pji+,sizeof(struct peijian),1,fp)!=1) printf("File write errorn"); else printf("Successful!n"); printf("Is there any more?( Yesy/Non) n"); scanf("%s",c); if(strcmp(c,"n")=0)br
14、eak; fclose(fp);menu(); void SET_enter () int j; char c2; FILE *fp; if(fp=fopen("data4.txt","w")=NULL) printf("Can not open the file!n"); exit(0); for(j=0;j<i;j+) fwrite(&selj,sizeof(struct seller),1,fp); while(1) printf("输入销售商号:n"); scanf("%d"
15、;,&seli.num); printf("输入销售商名:n"); scanf("%s",); printf("输入销售商状态:n"); scanf("%s",seli.state); printf("输入销售商所在城市:n"); scanf("%s",seli.city); if(fwrite(&seli+,sizeof(struct seller),1,fp)!=1) printf("File write errorn"
16、;); else printf("Successful!n"); printf("Is there any more?( Yesy/Non) n"); scanf("%s",c); if(strcmp(c,"n")=0)break; fclose(fp);menu(); void enter() int t,m; do puts("tt*MENU*nn"); puts("tttt1.sal_enter new data"); puts("tttt2.build_en
17、ter new data"); puts("tttt3.pj_enter new data"); /*输入菜单*/ puts("tttt4.SET_enter new data"); puts("tttt5.Exit"); puts("nntt *n"); printf("Choose the number(1-5): bb"); scanf("%d",&m); if(m<1|m>5) t=1; getchar(); else t=0; whil
18、e(t=1); switch(m) case 1:sal_enter();break; case 2:build_enter();break; case 3:pj_enter();break; case 4:SET_enter();break; case 5:menu(); (2) 删除模块【分析】 建立副菜单,选择要删除的是哪个文件中的信息,输入相应的信息,找到数据将其删除。一般的做法是将数据从文件中删除,删除位置后面的记录往前移。模块如: 开始输入要删除的数据是否找到?删除数据显示成功显示没有找到Y结束图4 删除模块流程图【程序】/*删除模块*/ void sal_delete()int
19、j,v; int w; FILE *fp; printf("请输入要删除的销售商号码:"); scanf("%d",&w); fp=fopen("data1.txt","rb"); for(j=0;j<100;j+) if(fread(&salj,sizeof(struct sale),1,fp)!=1) break; v=j; for(j=0;j<v;j+) if(w=salj.num1) printf("项目号,销售商号码,配件号,工地号,数量:n"); prin
20、tf("%d %d %d %d %d",salj.num,salj.num1,salj.num2,salj.num3,salj.num4);for(i=j;i<v;i+) salj=salj+;printf("删除成功");else printf("Cannot find the data!");menu(); fclose(fp); void build_delete() int j,v; int w; FILE *fp; printf("请输入要删除的工地号:"); scanf("%d"
21、;,&w); fp=fopen("data2.txt","rb"); for(j=0;j<100;j+) if(fread(&buildj,sizeof(struct building),1,fp)!=1) break; v=j; for(j=0;j<v;j+) if(w=buildj.num) printf("工地号,工地名,城市名:n");printf("%d %s %s",buildj.num, ,buildj.city);printf("删除成功&
22、quot;);else printf("Cannot find the data!");menu(); fclose(fp); menu(); void pj_delete() int j,v; int w; FILE *fp; printf("请输入要删除的配件号:"); scanf("%d",&w); fp=fopen("data3.txt","rb"); for(j=0;j<100;j+) if(fread(&pjj,sizeof(struct peijian),1,
23、fp)!=1) break; v=j; for(j=0;j<v;j+) if(w=pjj.num) printf(" 配件号,配件名,颜色,重量,产地:n");printf("%d %s %s %d %s",pjj.num,,pjj.color,pjj.weight,pjj.area);printf("删除成功"); else printf("Cannot find the data!");menu(); fclose(fp); menu(); void SET_delete () int j
24、,v,c; int w; FILE *fp; printf("请输入号码:"); scanf("%d",&w); fp=fopen("data4.txt","rb"); for(j=0;j<100;j+) if(fread(&selj,sizeof(struct seller),1,fp)!=1) break; v=j; for(j=0;j<v;j+) if(w=selj.num) printf(" 销售商号码,销售商名字,状态,城市: n");printf(&quo
25、t;%d %s %s %s",selj.num,,selj.state,selj.city);printf("删除成功"); else printf("Cannot find the data!");menu(); fclose(fp); menu(); void delete() int t,m; do puts("tt*MENU*nn"); puts("tttt1.sal_delete new data"); puts("tttt2.build_delete new dat
26、a"); puts("tttt3.pj_delete new data"); /*删除菜单*/ puts("tttt4.SET_delete new data"); puts("tttt5.Exit"); puts("nntt *n"); printf("Choose the number(1-5): bb"); scanf("%d",&m); if(m<1|m>5) t=1; getchar(); else t=0; while(t=1); s
27、witch(m) case 1:sal_delete();break; case 2:build_delete();break; case 3:pj_delete();break; case 4:SET_delete ();break; case 5:menu(); (3) 查找模块【分析】 选择查找方式,输入相应的数据然后找出对应的数据。模块流程图:开始输入查找的方式:1)项目号;2)工地号;3)配件号;4)销售商号是否找到?显示找到的记录提示没找到Y结束Y是否继续查找?返回主菜单 图5 查找模块流程图【程序】/*查找模块*/ void search() int flag,j,x; int
28、w,v,z,y; FILE *fp; printf("1.By 项目号n"); printf("2.By 工地号n"); printf("3.By 配件号n");printf("4.By 销售商号n");printf("请选择项:n"); scanf("%d",&x); if(x=3) flag=0; printf("Please input the 配件号:"); scanf("%d",&w); fp=fopen(&q
29、uot;data3.txt","rb"); for(j=0;j<100;j+) if(fread(&pjj,sizeof(struct peijian),1,fp)!=1) break; if(pjj.num=w) printf("配件号:%dn",pjj.num); printf("配件名:%sn",); printf("配件颜色:%sn",pjj.color); printf("配件重量:%dn",pjj.weight); printf("配
30、件产地:%sn",pjj.area); printf("-n"); flag=1; if(flag=0) printf("Cannot find the data!n"); fclose(fp); menu(); if(x=4) flag=0; printf("请输入销售商号:"); scanf("%d",&z); fp=fopen("data4.txt","rb"); for(j=0;j<100;j+) if(fread(&selj,size
31、of(struct seller),1,fp)!=1) break; if(pjj.num=y) printf("销售商号:%dn",selj.num); printf("销售商名:%sn",); printf("所在城市名:%sn",selj.city); printf("-n"); flag=1; if(flag=0) printf("Cannot find the data!n"); fclose(fp); menu(); if(x=2) flag=0; printf(&
32、quot;请输入建筑工地号:"); scanf("%d",&z); fp=fopen("data2.txt","rb"); for(j=0;j<100;j+) if(fread(&buildj,sizeof(struct building),1,fp)!=1) break; if(pjj.num=z) printf("建筑工地号:%dn",buildj.num); printf("建筑工地名:%sn",); printf("所在城市
33、名:%sn",buildj.city); printf("-n"); flag=1; if(flag=0) printf("Cannot find the data!n"); fclose(fp); menu(); if(x=1) flag=0; printf("Please input the 项目号:"); scanf("%d",&v); fp=fopen("data1.txt","rb"); for(j=0;j<100;j+) if(fread(
34、&pjj,sizeof(struct peijian),1,fp)!=1) break; if(pjj.num=v) printf("seller number:%dn",salj.num1); printf("peijian number:%dn",salj.num2); printf("building number:%dn",salj.num3); printf("number:%dn",salj.num4); printf("-n"); flag=1; if(flag=0) pr
35、intf("Cannot find the data!n"); fclose(fp);menu(); else printf("Error!n"); (4) 查找配对模块【分析】 功能跟查找大致相同,输入要配对的相应信息,找出要的信息。是否继续查找?开始输入要配对的方式:1)配件号;2)销售商号码是否找到?显示找到的记录提示没找到NY结束N 图6 查找配对模块流程图【程序】/*查找配对模块*/void search2() int flag,j,x; int w;FILE *fp; printf("1.By 配件号n");printf(
36、"2.By 销售商号n");printf("请选择项:n"); scanf("%d",&x); if(x=1) FILE *fp;int i; printf("Please input the 配件号:"); scanf("%d",&w);if(fp=fopen("data3.txt","r")=NULL)printf("Cannot find the data!n"); fclose(fp);menu(); for(i
37、=0;!feof(fp);i+)fscanf(fp,"%d%s%s",pji.num,&,&pji.area);fclose(fp);if(fp=fopen("data4.txt","r")=NULL)printf("Cannot find the data!n"); fclose(fp);menu(); for(i=0;!feof(fp);i+)fscanf(fp,"%d%s%s",seli.num,&,&seli.city);
38、fclose(fp);if(pji.num=w&&strcmp(pji.area,"seli.city")=0) printf("配件号:%dn",pjj.num); printf("配件名:%sn",); printf("销售商号:%dn",pjj.num); printf("销售商名:%sn",pjj.area); printf("-n"); flag=1; if(flag=0) printf("Cannot find the d
39、ata!n"); fclose(fp); menu(); 5、上机操作 (1) 主菜单函数 图7 主菜单(2) 数据输入模块 图8 输入副菜单图9 输入数据(3) 删除模块 图10 删除模块(4) 查找模块图11 查找模块(1) 图12 查找模块 (2)(5)查找配对模块 图13 查找配对模块后记此次课程设计的学习,让我的在计算机方面的认识有了更为广阔的了解。其中在学习过程中遇到了许多麻烦,很多都让人挺郁闷的,幸亏的是我没有放弃。以前在课堂上学的C语言用到上机上来,许多问题都反映了出来,得以让我的认知升级。课程设计的学习,提高了我运用了计算机能力以及培养了我运用结构化程序设计的思想和
40、方法,初步掌握开发一个小型实用系统的基本方法,学会调试较长的程序,学会用流程图表示算法,进一步掌握和提高利用C语言进行程序设计的能力。程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常称为流程,设计好如何进行程序的细编在程序量很大的情况下解决问题是很重要的。一个大的程序,一般是经过很多步才完成,不断的进行程序的调试来完成它。现在程序基本上是完成了,里面或多或少的存在问题。其中在对数据进行输入的时候,不太方便,可以设计一个程序使在完成一个的输入后返回副菜单而不是主菜单;删除模块可以加上一些程序使删除的时候有选择性而不是直接删除,没有后悔的余地;最重要的是现在查找配对还有一点不完善,没
41、有起到应有的作用。总的来说,这次课程设计还是比较成功的,虽然不是达到很完美。 附录:源程序清单/*data1.txt/*文件*/data2.txtdata3.txtdata4.txt*/#include<stdio.h> #include<stdlib.h> #include<malloc.h> #include<string.h> int i=0; struct sale /*定义销售商-配件-建筑工地*/ int num;/*项目号*/ int num1; /*销售商号码*/ int num2; /*配件号*/ int num3; /*工地号
42、*/ int num4; /*数量*/ sal100; struct building /*定义建筑工地结构体*/ int num; /*工地号*/ char name20; /*工地名*/ char city20; /*城市名*/ build100; struct peijian /*定义配件结构体*/ int num; /*配件号*/ char name20; /*配件名*/ char color20; /*颜色*/ int weight; /*重量*/ char area20; /*产地*/ pj100; struct seller /*定义销售商结构体*/ int num ; /*销售
43、商号码*/ char name20; /*销售商名字*/ char state20; /*状态*/ char city20; /*城市*/ sel100; void menu(); /*数据输入模块*/ void sal_enter() int j; char c2; FILE *fp; if(fp=fopen("data1.txt","w")=NULL) printf("Can not open the file!n"); exit(0); for(j=0;j<i;j+) fwrite(&salj,sizeof(str
44、uct sale),1,fp); while(1) printf("输入销售商号码:n"); scanf("%d",&sali.num1); printf("输入配件号码:n"); scanf("%d",&sali.num2); printf("输入工地号码:n"); scanf("%d",&sali.num3); printf("输入数量r:n"); scanf("%d",&sali.num4); if
45、(fwrite(&sali+,sizeof(struct sale),1,fp)!=1) printf("File write errorn"); else printf("Successful!n"); printf("是否继续?( 是y/否n) n"); scanf("%s",c); if(strcmp(c,"n")=0)break; fclose(fp);menu(); void build_enter() int j; char c2; FILE *fp; if(fp=fopen
46、("data2.txt","w")=NULL) printf("Can not open the file!n"); exit(0); for(j=0;j<i;j+) fwrite(&buildj,sizeof(struct building),1,fp); while(1) printf("输入工地号:n"); scanf("%d",&buildi.num); printf("输入工地名:n"); scanf("%s",buildi
47、.name); printf("输入工地城市:n"); scanf("%s",buildi.city); if(fwrite(&buildi+,sizeof(struct building),1,fp)!=1) printf("File write errorn"); else printf("Successful!n"); printf("Is there any more?( Yesy/Non) n"); scanf("%s",c); if(strcmp(c,&q
48、uot;n")=0)break; fclose(fp);menu(); void pj_enter() int j; char c2; FILE *fp; if(fp=fopen("data3.txt","w")=NULL) printf("Can not open the file!n"); exit(0); for(j=0;j<i;j+) fwrite(&pjj,sizeof(struct peijian),1,fp); while(1) printf("输入配件号:n"); scanf
49、("%d",&pji.num); printf("输入配件名:n"); scanf("%s",); printf("输入配件颜色:n"); scanf("%s",pji.color); printf("输入配件重量:n"); scanf("%d",&pji.weight); printf("输入配件产地:n"); scanf("%s",pji.area); if(fwrite(&
50、;pji+,sizeof(struct peijian),1,fp)!=1) printf("File write errorn"); else printf("Successful!n"); printf("Is there any more?( Yesy/Non) n"); scanf("%s",c); if(strcmp(c,"n")=0)break; fclose(fp);menu(); void SET_enter () int j; char c2; FILE *fp; if(fp=
51、fopen("data4.txt","w")=NULL) printf("Can not open the file!n"); exit(0); for(j=0;j<i;j+) fwrite(&selj,sizeof(struct seller),1,fp); while(1) printf("输入销售商号:n"); scanf("%d",&seli.num); printf("输入销售商名:n"); scanf("%s",seli.
52、name); printf("输入销售商状态:n"); scanf("%s",seli.state); printf("输入销售商所在城市:n"); scanf("%s",seli.city); if(fwrite(&seli+,sizeof(struct seller),1,fp)!=1) printf("File write errorn"); else printf("Successful!n"); printf("Is there any more?
53、( Yesy/Non) n"); scanf("%s",c); if(strcmp(c,"n")=0)break; fclose(fp);menu(); void enter() int t,m; do puts("tt*MENU*nn"); puts("tttt1.sal_enter new data"); puts("tttt2.build_enter new data"); puts("tttt3.pj_enter new data"); /*输入菜单*/ p
54、uts("tttt4.SET_enter new data"); puts("tttt5.Exit"); puts("nntt *n"); printf("Choose the number(1-5): bb"); scanf("%d",&m); if(m<1|m>5) t=1; getchar(); else t=0; while(t=1); switch(m) case 1:sal_enter();break; case 2:build_enter();break; ca
55、se 3:pj_enter();break; case 4:SET_enter();break; case 5:menu(); /*删除模块*/ void sal_delete() int j,v; int w; FILE *fp; printf("请输入要删除的销售商号码:"); scanf("%d",&w); fp=fopen("data1.txt","rb"); for(j=0;j<100;j+) if(fread(&salj,sizeof(struct sale),1,fp)!=1) break; v=j; for(j=0;j<v;j+) if(w=salj.num1) printf("项目号,销售商号码,配件号,工地号,数量:n"); printf("%d %d %d %d %d",salj.num,salj.num1,salj.num2,salj.num3,salj.num4);for(i=j;i<v;i+) salj=salj+;printf("删除成功"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中实习证明
- 2025年阅读题库及测试题及答案
- 2025年大学三年级经济学上学期案例分析卷
- 2025年安全食品试题及答案
- 2025年国家公务员录用考试公共基础知识预测模拟试卷及答案(共八套)
- 陕西省公务员2025年行政职业能力测验真题集
- 2025年高中二年级数学上学期解析几何专项测试卷
- 2025年基础设施建设借款合同模板
- 2025年租房带家具电器合同示范文本
- 2025年餐厅租赁合同模板
- 中职艺术理论考试题库及答案
- 医用化学(第三版)课件 -第20章 脂类化合物
- 四年级上册人教版数学课外辅导计划
- 心脑血管事件报告制度
- 2025年心理b证笔试试题及答案
- 急性阑尾炎课件
- 糖尿病伴心血管疾病的护理
- 银行物业服务承诺和质量保障措施
- 人工智能在智能水处理中的应用
- 全国高校辅导员素质能力大赛试题(谈心谈话、案例分析)
- 人工智能安全:原理与实践 课件全套 李剑 第1-16章 人工智能安全概述- 代码漏洞检测原理与实践
评论
0/150
提交评论