建筑工地信息系统 c语言实习报告.docx

上传人:b****6 文档编号:7784500 上传时间:2023-01-26 格式:DOCX 页数:22 大小:207.23KB
下载 相关 举报
建筑工地信息系统 c语言实习报告.docx_第1页
第1页 / 共22页
建筑工地信息系统 c语言实习报告.docx_第2页
第2页 / 共22页
建筑工地信息系统 c语言实习报告.docx_第3页
第3页 / 共22页
建筑工地信息系统 c语言实习报告.docx_第4页
第4页 / 共22页
建筑工地信息系统 c语言实习报告.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

建筑工地信息系统 c语言实习报告.docx

《建筑工地信息系统 c语言实习报告.docx》由会员分享,可在线阅读,更多相关《建筑工地信息系统 c语言实习报告.docx(22页珍藏版)》请在冰豆网上搜索。

建筑工地信息系统 c语言实习报告.docx

建筑工地信息系统c语言实习报告

 

C语言程序设计

 

专业:

会计学

班级:

084112

姓名:

李亮

学号:

20111002899

指导老师:

薛老师

 

一、前言2

二、题目要求3

三、详细设计5

四、各功能模块设计5

主菜单5

(1)数据输入模块7

(2)删除模块10

(3)查找模块12

五、上机操作14

六、后记17

七、附录:

源程序清单18

 

前言

课程设计目的:

C语言编程实践是学习C语言的一个重要环节,为提高学生的程序设计能力,通过课堂和上机实践使学生的程序设计能力有一个上升的台阶。

通过前四单元的温故而知新、庖丁解牛、举一反三、熟能生巧等过程的练习之后能够解决一些简单的实际问题。

题目要求

设计:

“建筑工地信息管理系统”

 

建立如下4个文件(括号内为文件中每条记录的字段内容):

(1)销售商-配件-建筑工地(销售商号码,配件号,工地号,数量)

(2)建筑工地(工地号,名字,城市)

(3)配件(配件号,配件名,颜色,重量,产地)

(4)销售商(号码,名字,状态,城市)

功能:

(1)首先建立文件,然后插入数据,并进行删除、更新操作,最后进行查询操作。

(2)查询与供应商所在城市相同的零件——供应商,项目——供应商记录对。

分析

根据题目要求,建立文件,应选择结构体数组来存放数据,再定义一个全局变量和文件指针进行程序的运行,然后把数据信息存入文件中,所以要提供结构体和文件的输入输出等操作;在程序中要进行数据的插入、删除、更新、查询等操作,所以需要建立相应的模块来实现,为简便起见,还应建立一个主菜单,在每个模块中建立相应的副菜单;另外,还要提供键盘式选择菜单来实现选择功能,使程序在运行时达到要求。

 

总体设计

根据题目要求,可以将系统分为:

1)数据输入模块;

2)删除模块;

3)查询模块;

4)退出

建筑工地信息管理系统

 

图1系统功能模块图

 

详细设计

一、主函数

【分析】主函数一般设计得比较简便,只提供输入、处理和输出部分的函数调用。

其中各功能模块用菜单方式选择。

其流程图:

图2主函数流程图

【程序】

二、各功能模块设计

主菜单

/************************主菜单*********************************/

voidmenu()

{

intn,w;/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*/

do

{printf("\n\n\n");

printf("建筑工地信息管理系统");

printf("20111002889李亮084112");

printf("\n\n");

printf("\n\n");

printf("*****************************************\n");

printf("*****************************************\n");

printf("*****************************************\n");

printf("**\n");

printf("*1数据输入2数据删除*\n");

printf("**\n");

printf("*3数据查询5退出*\n");

printf("**\n");

printf("*****************************************\n");

printf("*****************************************\n");

printf("*****************************************\n");

printf("请选择功能序号:

");

scanf("%d",&n);

if(n<1||n>4)

{

w=1;

getchar();

}

elsew=0;

}

while(w==1);

switch(n)

{case1:

enter();break;

case2:

delete();break;

case3:

search();break;

case4:

exit(0);

}

}

main()

{

menu();

}

(1)数据输入模块

【分析】数据信息存放在文件中,用结构体存放,方便数据输入与数据的保存。

另外,输入模块中建立副菜单,用以输入四个文件的信息选项。

图3数据输入模块流程图

【程序】

/*****************************数据输入模块************************************/

voidSAL_enter()

{intj;

charc[2];

FILE*fp;

if((fp=fopen("data1.txt","w"))==NULL)

{

printf("Cannotopenthefile!

\n");

exit(0);

}

for(j=0;j

{

fwrite(&sal[j],sizeof(structsale),1,fp);

}

while

(1)

{

printf("Pleaseinputthesellernumber:

\n");

scanf("%d",&sal[i].num1);

printf("Pleaseinputthefittingnumber:

\n");

scanf("%d",&sal[i].num2);

printf("Pleaseinputthesitenumber:

\n");

scanf("%d",&sal[i].num3);

printf("Pleaseinputthenumber:

\n");

scanf("%d",&sal[i].num4);

if(fwrite(&sal[i++],sizeof(structsale),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();

}

voidenter()

{intt,m;

do

{

puts("\t\t***************MENU*************\n\n");

puts("\t\t\t\t1.SAL_enternewdata");

/***************输入菜单****************/

puts("\t\t\t\t2.Exit");

puts("\n\n\t\t********************************\n");

printf("Choosethenumber(1-2):

[]\b\b");

scanf("%d",&m);

if(m<1||m>2)

{

t=1;

getchar();

}

elset=0;

}

while(t==1);

switch(m)

{

case1:

SAL_enter();break;

case2:

menu();

}

}

(2)删除模块

【分析】建立副菜单,选择要删除的是哪个文件中的信息,输入相应的信息,找到数据将其删除。

一般的做法是将数据从文件中删除,删除位置后面的记录往前移。

模块如:

图4删除模块流程图

【程序】

/******************************删除模块************************************/

voidSAL_delete()

{intj,v,c;

intw;

FILE*fp;

printf("Pleaseinputthesellernumberwhichyouwanttodelete:

");

scanf("%d",&w);

fp=fopen("data1.txt","rb");

for(j=0;j<100;j++)

{

if(fread(&sal[j],sizeof(structsale),1,fp)!

=1)break;

}

v=j;

for(j=0;j

{

if(w==sal[j].num1)

c=j;

elseprintf("Cannotfindthedata!

");menu();

}

fclose(fp);

fp=fopen("data1.txt","wb");

for(j=0;j

{

if(j!

=c)

fwrite(&sal[j],sizeof(structsale),1,fp);

}

fclose(fp);

printf("DeleteOK!

\n");menu();

}voiddelete()

{intt,m;

do

{

puts("\t\t***************MENU*************\n\n");

puts("\t\t\t\t1.SAL_deletenewdata");

/*********删除菜单****************/

puts("\t\t\t\t5.Exit");

puts("\n\n\t\t********************************\n");

printf("Choosethenumber(1-2):

[]\b\b");

scanf("%d",&m);

if(m<1||m>2)

{

t=1;

getchar();

}

elset=0;

}

while(t==1);

switch(m)

{

case1:

SAL_delete();break;

case2:

menu();

}

}

(3)查找模块

【分析】输入相应的数据然后找出对应的数据。

模块流程图:

图5查找模块流程图

【程序】

/********************************查找模块***********************************/

voidsearch()

{

intflag,j,x;

intw;

FILE*fp;

flag=0;

printf("请输入销售商号码:

");

scanf("%d",&w);

fp=fopen("data1.txt","rb");

for(j=0;j<100;j++)

{

if(fread(&sal[j],sizeof(structsale),1,fp)!

=1)break;

if(sal[j].num2==w)

{

printf("sellernumber:

%d\n",sal[j].num1);

printf("fittingnumber:

%d\n",sal[j].num2);

printf("sitenumber:

%d\n",sal[j].num3);

printf("number:

%d\n",sal[j].num4);

printf("---------------------------------\n");

flag=1;

}

if(flag==0)

printf("Cannotfindthedata!

\n");

fclose(fp);menu();

}

}

5、上机操作

(1)主菜单函数

图6主菜单

(2)数据输入模块

图7输入数据

删除模块

图8删除模块

(3)查找模块

图9查找模块

 

 

后记

刚开始学C语言的时候,很迷茫,在此之前从没有接触过C语言,有点摸不着头脑。

可是在上机过后,我觉得编程是很有趣的一件事。

我知道要学好C语言不容易,可是我决定完成这件不容易的事。

要学好C语言就要先懂得最基本的语法知识,看课本是必需的。

我觉得看不懂也没关系,尽力去理解就好了,在对知识有了一个大致的了解过后,就要上机实践。

学习C语言一定要动手,只看不做,眼高手低是不行的。

最开始可以打书上的例题,熟悉程序,慢慢的开始试着编程。

在编程时要理清自己的思路,然后再转换成C语言中的语言,这个时候就更要动手了,只有通过上机操作才能验证自己程序的正确性。

执行程序,不要害怕错误,其实,我觉得错误是好的,知道了自己所学知识的不足,并根据提示改正程序中发生的错误,一种成就感油然而生,觉得自己的付出都是值得的。

良好的编程习惯是学好C语言的重要因素,只有勤动手,多动脑才能学好C语言,光说不练是不行的。

在学习的时候,不会的一定要问明白,可以求助于老师,同学,不要自己一个人钻牛角尖,浪费时间又学不到东西。

上课的时候一定要认真听,老师讲的肯定是最重要的,错过了就是一大笔损失,认真听讲才可以提高学习效率。

我觉得在编程之前,要把自己的想法写在纸上,如果是简单一点的程序不需要这样,如果程序比较复杂,就写下来,这样可以让思路更加清晰。

完成程序的编写,决不意味着万事大吉。

你认为万无一失的程序,实际上机运行时可能不断出现麻烦。

如编译程序检测出一大堆错误。

有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。

开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。

程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。

有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。

通过这次为数不多的几天计算机实践学习,我们了解了一些关于c语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。

同时它让我知道,只要你努力,任何东西都不会太难。

 

七、附录:

源程序清单

#include

#include

#include

#include

inti=0;

structsale/*定义销售商-配件-建筑工地*/

{intnum1;/*销售商号码*/

intnum2;/*配件号*/

intnum3;/*工地号*/

intnum4;/*数量*/

}sal[100];

voidmenu();

/***********************数据输入模块******************************/

voidSAL_enter()

{intj;

charc[2];

FILE*fp;

if((fp=fopen("data1.txt","w"))==NULL)

{

printf("不能打开文件!

\n");

exit(0);

}

for(j=0;j

{

fwrite(&sal[j],sizeof(structsale),1,fp);

}

while

(1)

{

printf("请输入销售商号码:

\n");

scanf("%d",&sal[i].num1);

printf("请输入配件号:

\n");

scanf("%d",&sal[i].num2);

printf("请输入工地号:

\n");

scanf("%d",&sal[i].num3);

printf("请输入销售数量:

\n");

scanf("%d",&sal[i].num4);

if(fwrite(&sal[i++],sizeof(structsale),1,fp)!

=1)

printf("文件读取错误\n");

elseprintf("成功!

\n");

printf("继续输入?

(Yes[y]/No[n])\n");

scanf("%s",c);

if(strcmp(c,"n")==0)break;

}

fclose(fp);menu();

}

voidenter()

{intt,m;

do

{

puts("\t\t***************MENU*************\n\n");

/***************输入菜单*************/

puts("\t\t\t\t1.SAL_enternewdata");

puts("\t\t\t\t2.Exit");

puts("\n\n\t\t********************************\n");

printf("选择数字(1-2):

[]\b\b");

scanf("%d",&m);

if(m<1||m>2)

{

t=1;

getchar();

}

elset=0;

}

while(t==1);

switch(m)

{

case1:

SAL_enter();break;

case2:

menu();

}

}

/******************************删除模块************************************/

voidSAL_delete()

{intj,v,c;

intw;

FILE*fp;

printf("请输入你想要删除的销售商号码:

");

scanf("%d",&w);

fp=fopen("data1.txt","rb");

for(j=0;j<100;j++)

{

if(fread(&sal[j],sizeof(structsale),1,fp)!

=1)break;

}

v=j;

for(j=0;j

{

if(w==sal[j].num1)

c=j;

elseprintf("找不到数据!

");menu();

}

fclose(fp);

fp=fopen("data1.txt","wb");

for(j=0;j

{

if(j!

=c)

fwrite(&sal[j],sizeof(structsale),1,fp);

}

fclose(fp);

printf("删除成功!

\n");menu();

}voiddelete()

{intt,m;

do

{

puts("\t\t***************MENU*************\n\n");

/*********删除菜单****************/

puts("\t\t\t\t1.SAL_deletenewdata");

puts("\t\t\t\t2.Exit");

puts("\n\n\t\t********************************\n");

printf("选择数字(1-2):

[]\b\b");

scanf("%d",&m);

if(m<1||m>2)

{

t=1;

getchar();

}

elset=0;

}

while(t==1);

switch(m)

{

case1:

SAL_delete();break;

case2:

menu();

}

}

/********************************查找模块***********************************/

voidsearch()

{

intflag,j;

intw;

FILE*fp;

flag=0;

printf("请输入销售商号:

");

scanf("%d",&w);

fp=fopen("data1.txt","rb");

for(j=0;j<100;j++)

{

if(fread(&sal[j],sizeof(structsale),1,fp)!

=1)break;

if(sal[j].num2==w)

{

printf("sellernumber:

%d\n",sal[j].num1);

printf("fittingnumber:

%d\n",sal[j].num2);

printf("sitenumber:

%d\n",sal[j].num3);

printf("number:

%d\n",sal[j].num4);

printf("---------------------------------\n");

flag=1;

}

}

if(flag==0)

printf("找不到数据!

\n");

fclose(fp);menu();

}

/************************主菜单*********************************/

voidmenu()

{

intn,w;/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*/

do

{printf("\n\n\n");

printf("建筑工地信息管理系统");

printf("20111002889李亮084112");

printf("\n\n");

printf("\n\n");

printf("*****************************************\n");

printf("*****************************************\n");

printf("*****************************************\n");

printf("**\n");

printf("*1数据输入2数据删除*\n");

printf("**\n");

printf("*3数据查询5退出*\n");

printf("**\n");

printf("*****************************************\n");

printf("*****************************************\n");

printf("**********************************

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1