1、 1、需求分析:信息采用文件存储,因而要提供文件的输入输出操作;要插入数据,因而要提供数据的 添加操作; 要实现数据的删除、 更新和查询, 因而要提供文件记录的删除、 修改和查找操作; 另外要提供键盘式选择菜单以实现功能选择。2、总体设计:整个系统可以被设计为数据输入模块、数据添加模块、数据删除模块、数据查询并修改模块、配对模块。数 据 添 加 模 块 图1 系统功能模块图 4、详细设计一、主函数【分析】 主函数一般设计得比较简便,只提供输入、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。void menu() f1() f11() do do switch(c) switch(c)
2、 case 1:f1();break;f11(); case 2:f2();f12(); case 3: case 3:f13(); case 4:f14(); case 5:exit(0);back=0; default: default: while(1); 图(2) 【程序】/*主菜单*/ void menu() int w; do system(cls); printf(tt*MENU*nntttt1.输入n/*输入*/ tttt2.删除n/*删除*/ tttt3.查找与修改n/*查找与修改*/ tttt4.配对n/*查找配对*/ tttt5.添加ntttt6.退出nntt*nChoo
3、se your number (1-6): bb scanf(%d,&w); switch(w) case 1:enter();Delete();search();search2();add(); case 6: while(1);void main()color 0a9 start();PAUSE menu();二、各功能模块设计(1)数据输入模块【分析】 数据信息存放在文件中,用结构体存放,方便数据输入与数据的保存。另外,输入模块中建立副菜单,用以输入四个文件的信息选项。【程序】(以输入销售商结构体信息为例)/*数据输入模块*/ void SEL_enter () int j;char c
4、2;FILE *fp; if(fp=fopen(data4.txt,w)=NULL) printf(Can not open the file!nfor(j=0;ji;j+) fwrite(&selj,sizeof(struct seller),1,fp);while(1) printf(n输入销售商号:scanf(%s,seli.num);n输入销售商名:,seli.name);n输入销售商所在城市:,seli.city);if(fwrite(&seli+,sizeof(struct seller),1,fp)!=1) nFile write errornelse printf(Succes
5、sful! -n是否继续?y/n:,c);if(strcmp(c,n)=0|strcmp(c,N)=0)break;fclose(fp);system(void enter() int m,back; do system(tt*MENU*nnt以下符号:S-项目、B-建筑工地、P-配件、SEL-销售商ntttt1.输入数据到Sntttt2.输入数据到Bntttt3.输入数据到Pn /*输入菜单*/tttt4.输入数据到SELntttt5.返回nntt *n请选择(1-5):m); switch(m) sal_enter();build_enter();pj_enter();SEL_enter(
6、);case 5:default: if(back=0)break; while(1); (2)删除模块【分析】 建立副菜单,选择要删除的是哪个文件中的信息,输入相应的信息,找到数据将其删除。一般的做法是将数据从文件中删除,删除位置后面的记录往前移。模块如:图(3) 删除模块流程图(以删除销售商结构体信息为例)/*删除模块*/ void SEL_delete() int j,v,flag=0; char a5,c2; FILE *fp;r)=NULL) n打开文件失败! exit(0); do请输入号码:,a); for(j=0;100; if(fread(&selj,sizeof(struc
7、t seller),1,fp)!=1) break; fclose(fp); fp=fopen( v=j;v; if(strcmp(selj.num,a)=0) printf(n销售商号码,销售商名字,城市: n%s %s %s,selj.num,selj.name,selj.city); for(i=j;ii+) seli=seli+1; flag=1; if(flag=0)printf(Cannot find the data!是否继续y/n: if(strcmp(c,j+) fwrite(&void Delete() int m,back;tttt1.删除数据到Sntttt2.删除数据到
8、Bntttt3.删除数据到Pn /*删除菜单*/tttt4.删除数据到SELn switch(m) sal_delete();build_delete();pj_delete();SEL_delete();(3)查找与修改模块【分析】 选择查找方式,输入相应的数据然后找出对应的数据。模块流程图: 图(4) 查找修改模块流程图(以查找修改销售商结构体信息为例)/*查找与修改模块*/ void SEL_search() int j,k=0,flag=0; struct seller p1100,p2100;n请输入要查找的销售商号:!feof(fp); fread(&p1j,sizeof(stru
9、ct seller),1,fp); if(strcmp(p1j.num,a)=0) n销售商号:%sn,p1j.num);销售商名:,p1j.name);所在城市名:,p1j.city);-n n是否修改y/n:yY)=0) printf(n销售商号:,p2k.num);strcpy(p1j.num,p2k.num);n销售商名:,p2k.name);strcpy(p1j.name,p2k.name);n所在城市名:,p2k.city);strcpy(p1j.city,p2k.city); k+;successful! /else continue; for(k=0;kj;k+)p1k,siz
10、eof(struct seller),1,fp); if(flag=0)没有要找的数据!void search() int back,w;tttt1.by项目号ntttt2.by工地号ntttt3.by配件号n /*查找与修改菜单*/tttt4.by销售商号ntttt5. 返回 switch(w)sal_search();build_search();pj_search();SEL_search();(4)查找配对模块【分析】 功能跟查找大致相同,输入要配对的相应信息,找出要的信息。 图(5) 查找配对模块流程图(以查找配件供应商信息为例)/*查找配对模块*/void find1() int
11、m=0,n,k; int flag=0; FILE *fp,*fp1,*fp2;data1.txt if(fp1=fopen(data3.txt if(fp2=fopen(salm,sizeof(struct sale),1,fp); for(n=0;feof(fp1);n+) fread(&pjn,sizeof(struct peijian),1,fp1); if(strcmp(pjn.num,salm.num2)=0)break; for(k=0;feof(fp2);selk,sizeof(struct seller),1,fp2); if(strcmp(selk.num,salm.num
12、1)=0)break; if(strcmp(selk.city,pjn.area)=0)销售商号码:,selk.num);配件号:,pjn.num); flag=1; m+; while(!feof(fp);没有配对项! fclose(fp1); fclose(fp2); 5、上机操作 (1) 主菜单函数 图(6) 主菜单(2)数据输入模块 图(7) 输入副菜单(3) 删除模块 图(8) 删除模块(4) 查找模块图(9) 查找修改模块(5)添加模块图(10) 添加模块(6)查找配对模块 图13 查找配对模块后记这次课程设计,让我对C语言编程有了更进一步的认识,巩固了C语言的基本功,同时体会到:
13、做好一件事是不容易的,要找准方向并付出最大努力,才有好的收获!我原本以为计算机二级过了,编程就没多大问题了,通过这次课设,我才明白考试只是一种形式,真正能检验实力还是实践。能看懂程序并不代表会写程序,看程序和写程序之间需要很长的路要走。我觉得这次课设主要是对基本知识的综合应用,并引入模块化程序设计的思想。比如我这个建筑工地信息管理系统,主要是用do、for循环和switch结构以文件为中间平台,使各模块之间能够数据共享,而不需要传值或传地址调用,降低了模块间的耦合性。应该说这次课设是为以后学习软件技术奠基。最后需要说明的是,这个程序还没有达到理想的效果,希望各位能够提供些帮助和建议!参考文献1
14、谭浩强.C程序设计(第二版).北京:清华大学出版社,19992王新 孙雷.C语言课程设计.北京:清华大学出版社,20093谭浩强.C程序设计(第三版).北京:清华大学出版社,2005 附录:源程序清单/*文件*data1.txtdata2.txtdata3.txtdata4.txt*/#includestdlib.hmalloc.hstring.h/#include#define SPACE 0x3920#define ESC 0x011bint i=0;struct sale /*定义销售商-配件-建筑工地*/ char num15; /*销售商号码*/ char num25; /*配件号*/ char num35; /*工地号*/ int num; /*数量*/ sal100;struct building /*定义建筑工地结构体*/ char num5; char name20; /*工地名*/ char city20; /*城市名*/ build100;struct peijian /*定义配件结构体*/ /*配件名*/ char color20; /*颜色*/ int weight; /*重量*/ char area20; /*产地*/ pj100;struct s
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1