建筑工地信息系统 c语言实习报告Word下载.docx
《建筑工地信息系统 c语言实习报告Word下载.docx》由会员分享,可在线阅读,更多相关《建筑工地信息系统 c语言实习报告Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
通过前四单元的温故而知新、庖丁解牛、举一反三、熟能生巧等过程的练习之后能够解决一些简单的实际问题。
题目要求
设计:
“建筑工地信息管理系统”
建立如下4个文件(括号内为文件中每条记录的字段内容):
(1)销售商-配件-建筑工地(销售商号码,配件号,工地号,数量)
(2)建筑工地(工地号,名字,城市)
(3)配件(配件号,配件名,颜色,重量,产地)
(4)销售商(号码,名字,状态,城市)
功能:
(1)首先建立文件,然后插入数据,并进行删除、更新操作,最后进行查询操作。
(2)查询与供应商所在城市相同的零件——供应商,项目——供应商记录对。
分析
根据题目要求,建立文件,应选择结构体数组来存放数据,再定义一个全局变量和文件指针进行程序的运行,然后把数据信息存入文件中,所以要提供结构体和文件的输入输出等操作;
在程序中要进行数据的插入、删除、更新、查询等操作,所以需要建立相应的模块来实现,为简便起见,还应建立一个主菜单,在每个模块中建立相应的副菜单;
另外,还要提供键盘式选择菜单来实现选择功能,使程序在运行时达到要求。
总体设计
根据题目要求,可以将系统分为:
1)数据输入模块;
2)删除模块;
3)查询模块;
4)退出
建筑工地信息管理系统
图1系统功能模块图
详细设计
一、主函数
【分析】主函数一般设计得比较简便,只提供输入、处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
其流程图:
图2主函数流程图
【程序】
二、各功能模块设计
主菜单
/************************主菜单*********************************/
voidmenu()
{
intn,w;
/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*/
do
{printf("
\n\n\n"
);
printf("
建筑工地信息管理系统"
20111002889李亮084112"
\n\n"
*****************************************\n"
**\n"
*1数据输入2数据删除*\n"
*3数据查询5退出*\n"
请选择功能序号:
"
scanf("
%d"
&
n);
if(n<
1||n>
4)
w=1;
getchar();
}
elsew=0;
while(w==1);
switch(n)
{case1:
enter();
break;
case2:
delete();
case3:
search();
case4:
exit(0);
main()
menu();
}
(1)数据输入模块
【分析】数据信息存放在文件中,用结构体存放,方便数据输入与数据的保存。
另外,输入模块中建立副菜单,用以输入四个文件的信息选项。
图3数据输入模块流程图
【程序】
/*****************************数据输入模块************************************/
voidSAL_enter()
{intj;
charc[2];
FILE*fp;
if((fp=fopen("
data1.txt"
"
w"
))==NULL)
printf("
Cannotopenthefile!
\n"
for(j=0;
j<
i;
j++)
fwrite(&
sal[j],sizeof(structsale),1,fp);
while
(1)
Pleaseinputthesellernumber:
sal[i].num1);
Pleaseinputthefittingnumber:
sal[i].num2);
Pleaseinputthesitenumber:
sal[i].num3);
Pleaseinputthenumber:
sal[i].num4);
if(fwrite(&
sal[i++],sizeof(structsale),1,fp)!
=1)
Filewriteerror\n"
elseprintf("
Successful!
Isthereanymore?
(Yes[y]/No[n])\n"
%s"
c);
if(strcmp(c,"
n"
)==0)break;
fclose(fp);
voidenter()
{intt,m;
puts("
\t\t***************MENU*************\n\n"
\t\t\t\t1.SAL_enternewdata"
/***************输入菜单****************/
\t\t\t\t2.Exit"
\n\n\t\t********************************\n"
Choosethenumber(1-2):
[]\b\b"
m);
if(m<
1||m>
2)
t=1;
elset=0;
while(t==1);
switch(m)
case1:
SAL_enter();
(2)删除模块
【分析】建立副菜单,选择要删除的是哪个文件中的信息,输入相应的信息,找到数据将其删除。
一般的做法是将数据从文件中删除,删除位置后面的记录往前移。
模块如:
图4删除模块流程图
/******************************删除模块************************************/
voidSAL_delete()
{intj,v,c;
intw;
Pleaseinputthesellernumberwhichyouwanttodelete:
w);
fp=fopen("
rb"
100;
if(fread(&
sal[j],sizeof(structsale),1,fp)!
=1)break;
v=j;
v;
if(w==sal[j].num1)
c=j;
Cannotfindthedata!
wb"
if(j!
=c)
DeleteOK!
}voiddelete()
\t\t\t\t1.SAL_deletenewdata"
/*********删除菜单****************/
\t\t\t\t5.Exit"
SAL_delete();
case2:
(3)查找模块
【分析】输入相应的数据然后找出对应的数据。
模块流程图:
图5查找模块流程图
/********************************查找模块***********************************/
voidsearch()
intflag,j,x;
flag=0;
请输入销售商号码:
if(sal[j].num2==w)
sellernumber:
%d\n"
sal[j].num1);
fittingnumber:
sal[j].num2);
sitenumber:
sal[j].num3);
number:
sal[j].num4);
---------------------------------\n"
flag=1;
if(flag==0)
menu();
5、上机操作
(1)主菜单函数
图6主菜单
(2)数据输入模块
图7输入数据
删除模块
图8删除模块
(3)查找模块
图9查找模块
后记
刚开始学C语言的时候,很迷茫,在此之前从没有接触过C语言,有点摸不着头脑。
可是在上机过后,我觉得编程是很有趣的一件事。
我知道要学好C语言不容易,可是我决定完成这件不容易的事。
要学好C语言就要先懂得最基本的语法知识,看课本是必需的。
我觉得看不懂也没关系,尽力去理解就好了,在对知识有了一个大致的了解过后,就要上机实践。
学习C语言一定要动手,只看不做,眼高手低是不行的。
最开始可以打书上的例题,熟悉程序,慢慢的开始试着编程。
在编程时要理清自己的思路,然后再转换成C语言中的语言,这个时候就更要动手了,只有通过上机操作才能验证自己程序的正确性。
执行程序,不要害怕错误,其实,我觉得错误是好的,知道了自己所学知识的不足,并根据提示改正程序中发生的错误,一种成就感油然而生,觉得自己的付出都是值得的。
良好的编程习惯是学好C语言的重要因素,只有勤动手,多动脑才能学好C语言,光说不练是不行的。
在学习的时候,不会的一定要问明白,可以求助于老师,同学,不要自己一个人钻牛角尖,浪费时间又学不到东西。
上课的时候一定要认真听,老师讲的肯定是最重要的,错过了就是一大笔损失,认真听讲才可以提高学习效率。
我觉得在编程之前,要把自己的想法写在纸上,如果是简单一点的程序不需要这样,如果程序比较复杂,就写下来,这样可以让思路更加清晰。
完成程序的编写,决不意味着万事大吉。
你认为万无一失的程序,实际上机运行时可能不断出现麻烦。
如编译程序检测出一大堆错误。
有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。
开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。
程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。
有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。
通过这次为数不多的几天计算机实践学习,我们了解了一些关于c语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。
同时它让我知道,只要你努力,任何东西都不会太难。
七、附录:
源程序清单
#include<
stdio.h>
#include<
stdlib.h>
malloc.h>
string.h>
inti=0;
structsale/*定义销售商-配件-建筑工地*/
{intnum1;
/*销售商号码*/
intnum2;
/*配件号*/
intnum3;
/*工地号*/
intnum4;
/*数量*/
}sal[100];
voidmenu();
/***********************数据输入模块******************************/
voidSAL_enter()
不能打开文件!
请输入配件号:
请输入工地号:
请输入销售数量:
文件读取错误\n"
成功!
继续输入?
/***************输入菜单*************/
选择数字(1-2):
请输入你想要删除的销售商号码:
找不到数据!
删除成功!
intflag,j;
请输入销售商号:
**********************************