C语言课程设计建筑工地信息管理系统.doc
《C语言课程设计建筑工地信息管理系统.doc》由会员分享,可在线阅读,更多相关《C语言课程设计建筑工地信息管理系统.doc(30页珍藏版)》请在沃文网上搜索。
1、名称:建筑工地信息管理系统 前言课程设计目的:C语言编程实践是学习C语言的一个重要环节,为提高学生的程序设计能力,通过课堂和上机实践使学生的程序设计能力有一个上升的台阶。通过前四单元的温故而知新、庖丁解牛、举一反三、熟能生巧等过程的练习之后能够解决一些简单的实际问题。1、 题目要求设计:“建筑工地信息管理系统”建立如下4个文件(括号内为文件中每条记录的字段内容):(1) 销售商-配件-建筑工地 (销售商号码,配件号,工地号,数量)(2) 建筑工地 (工地号,名字,城市)(3) 配件 (配件号,配件名,颜色,重量,产地)(4) 销售商 (号码,名字,状态,城市)功能:(1) 首先建立文件,然后插
2、入数据,并进行删除、更新操作,最后进行查询操作。(2) 查询与供应商所在城市相同的零件供应商,项目供应商记录对。 2、分析 根据题目要求,建立文件,应选择结构体数组来存放数据,再定义一个全局变量和文件指针进行程序的运行,然后把数据信息存入文件中,所以要提供结构体和文件的输入输出等操作;在程序中要进行数据的插入、删除、更新、查询等操作,所以需要建立相应的模块来实现,为简便起见,还应建立一个主菜单,在每个模块中建立相应的副菜单;另外,还要提供键盘式选择菜单来实现选择功能,使程序在运行时达到要求。 3、总体设计根据题目要求,可以将系统分为:1) 插入数据模块;2) 删除模块;3) 查询模块;4) 查
3、找配对;5) 功能选择菜建筑工地信息管理系统 查 找 配对 模块删除模块查询模块数据输入模块 功能 选 择 菜 单 图1 系统功能模块图 4、详细设计一、主函数【分析】 主函数一般设计得比较简便,只提供输入、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。其流程图:开始显示一系列功能选择输入n,判断w 是否是0到4?根据n值调用各功能模块函数结束N 图2 主函数流程图 【程序】/*主菜单*/ void menu() int n,w; /*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*/ do puts(tt*建筑工地信息管理*nn); puts(姓名:文富奎);
4、 puts(学号:20071003889); puts(班学号:055071-30); puts(tt*MENU*nn); puts(tttt1.输入);/*输入*/ puts(tttt2.删除);/*删除*/ puts(tttt3.查找);/*查找*/ puts(tttt4.配对);/*查找配对*/ puts(tttt5.Exit); puts(nntt*n); printf(Choose your number (1-5): bb); scanf(%d,&n); if(n5) w=1; getchar(); else w=0; while(w=1); switch(n) case 1:en
5、ter();break; case 2:delete();break; case 3:search();break; case 4:search2();break; case 5:exit(0); main() menu(); 二、各功能模块设计(1)数据输入模块【分析】 数据信息存放在文件中,用结构体存放,方便数据输入与数据的保存。另外,输入模块中建立副菜单,用以输入四个文件的信息选项。开始输入用户信息是否继续进行? 结束返回主菜单Y 图3 数据输入模块流程图【程序】/*数据输入模块*/ void sal_enter() int j; char c2; FILE *fp; if(fp=fop
6、en(data1.txt,w)=NULL) printf(Can not open the file!n); exit(0); for(j=0;ji;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.num3); printf(输入数量r:n); scanf(%d,&sali.num4); if(fwrite(&s
7、ali+,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(data2.txt,w)=NULL) printf(Can not open the file!n); exit(0); for(j=0;ji;j
8、+) fwrite(&buildj,sizeof(struct building),1,fp); while(1) printf(输入工地号:n); scanf(%d,&buildi.num); printf(输入工地名:n); scanf(%s,buildi.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 ther
9、e 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;ji;j+) fwrite(&pjj,sizeof(struct peijian),1,fp); while(1) printf(输入配件号:n); scanf(%d,&pji.num);
10、 printf(输入配件名:n); scanf(%s,pji.name); printf(输入配件颜色:n); scanf(%s,pji.color); printf(输入配件重量:n); scanf(%d,&pji.weight); printf(输入配件产地: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);
11、scanf(%s,c); if(strcmp(c,n)=0)break; 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;ji;j+) fwrite(&selj,sizeof(struct seller),1,fp); while(1) printf(输入销售商号:n); scanf(%d,&seli.num); printf(输入销售商名:n); scan
12、f(%s,seli.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?( Yesy/Non) n); scanf(%s,c); if(strcmp(c,n)=0)break; fclose(fp);menu();
13、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); /*输入菜单*/ puts(tttt4.SET_enter new data); puts(tttt5.Exit); puts(nntt *n); printf(Choose the number(1-5): bb); scanf(%d,&m); if(m5) t=1; getchar(); else t=0; whi
14、le(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
15、 j,v; int w; FILE *fp; printf(请输入要删除的销售商号码:); scanf(%d,&w); fp=fopen(data1.txt,rb); for(j=0;j100;j+) if(fread(&salj,sizeof(struct sale),1,fp)!=1) break; v=j; for(j=0;jv;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
16、;iv;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,&w); fp=fopen(data2.txt,rb); for(j=0;j100;j+) if(fread(&buildj,sizeof(struct building),1,fp)!=1) break; v=j; for(j=0;jv;j+) if(w=buildj.n
17、um) printf(工地号,工地名,城市名:n);printf(%d %s %s,buildj.num, buildj.name,buildj.city);printf(删除成功);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;j100;j+) if(fread(&pjj,sizeof(struc
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 建筑工地 信息管理 系统