1/36防灾科技学院实习报告书实习题目:网络工程认识实习(C语言)学号:###姓名:###专业:网络工程系别:###实习时间:2015.5-2015.6实习地点:北504指导教师:杜春雷孙晓玲考勤成绩:10实习态度:10任务完成:40实习报告:20实习日志:20实习总成绩100指导教师评语指导教师(签名):2015年7月日防灾科技学院灾害信息工程系2015年制2/36项目一C语言实习一、实习目的本课程是网络工程专业的一门专业必修课程,是学生学习完C语言程序设计专业基础课程后,进一步学习其他专业课程前必须完成的一项实践教学环节。本次实习通过1个综合性强、实用性强、趣味性强的应用实例,使学生进一步巩固C语言基本知识,掌握应用程序设计语言描述问题、分析问题和解决问题的方法和思想,为后继的面向对象程序设计、数据结构、Web应用技术、网络工程专业实习、网络工程生产实习、网络工程毕业实习课程等课程打下基础。通过本课程的学习,使学生进一步明确学习目标、增强学习动力、培养学习兴趣。二、实习任务概述任务一:员工工资管理系统的设计与实现本系统基于C语言,实现了一个小型的信息管理系统,主要包括以下功能:1.信息的录入:a)首次进入系统,可以添加职工的工号、姓名、基本工资、津贴、员工奖金等数据录入操作。b)系统再次登录,可以从文件导入信息,也可以对文件内容进行修改,保存退出。2.删除操作:对离职的员工信息要从系统里删除。3.显示操作:将结构体中职工信息输出到屏幕上。4.查询与修改操作:分别按职工工号和职工姓名查询,修改职工信息并保存。5.统计与排序操作:分别统计所有员工的总工资,实现对总工资的排序。三、实习所用软件简介VC++6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC(MicrosoftFoundationClass)类库。使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用3/36程序开发变得简单。VisualC++6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。四、参考文献[1]韩莹.C语言实训教程[M].北京交通大学出版社,2013.[2]李新良.教学测评系统的应用与研究[J].湖南人文科技学院学报,2012(6):73-77.[3]张高煜.C语言程序设计实训.中国水利水电出版社,2011.8.[4]白帆.C语言开发实例详解.电子工业出版社,2012.5.[5]王为青.C语言实战105例.北京:人民邮电出版社,2011.[6]明日科技编著.C语言项目案例分析.北京:清华大学出版社,2012.五、实习日程安排时间实习内容第1-2天选题,对第一个选题进行功能需求分析、功能结构图和流程图的设计、系统架构设计第3-5天核心算法设计,程序设计及编码,逐步完善建立数据文件,增加数据,修改数据,查询数据,删除数据,对数据序和屏幕显示数据等功能第6-7天代码调试、测试、撰写实习报告六、实习内容及步骤任务1员工工资管理系统(C语言模块)1.1系统开发思路(需求分析)随着计算机技术的发展,企业管理越来越趋于自动化,而工资管理是企业管理的重要的组成部分,它与企业的财务管理、人才管理有着密切的联系。由4/36于企业员工工资结构存在一定的规律性,工资放在时间上和操作上存在的一定的重复性,这使得企业事业单位工资管理计算机的实现成为了可能。1.2数据结构设计structWorker{charworkernum[10];charworkername[20];intbasicwage;intallowance;intBonus;inttotalwage;}Worker_Infor[100];1.3系统设计与实现1.3.1系统功能结构图及流程图职工管理系统员工信息的录入员工信息查询员工信息修改员工工资排序员工工资汇总按工号查询按姓名查询选择查询方式选择修改内容数据文件保存5/36图1-1员工工资管理系统参考模块图.6/36开始主操作界面选择1录入职工信息继续?Y主操作界面N选择2职工总工资排序选择3录入数据文件保存选择4查询员工信息按姓名查找按工号查找退出,回到主页面选择5修改员工信息选择查询方式选择修改选项修改选择6查看所有员工信息选择7添加新的员工信息选择8删除员工信息输入要删除的员工姓名删除选择9退出程序图1-2员工工资管理系统流程图.7/361.3.2主要函数设计voidInput_Infor()函数功能:员工信息的录入voidPrint_Worker(inti)函数功能:员工工资的显示voiddelet_worker()函数功能:删除员工信息intSearch_Name()函数功能:姓名查询intSearch_Num()函数功能:工号查询intSearch_Worker()函数功能:查询主函数,调用姓名/工号查询voidModify_Worker()函数功能:修改员工信息voidCal_Wages()函数功能:计算总工资voidSort_Wage()函数功能:对员工工资排序intSave_Infor()函数功能:文件写操作voidUp_Infor()函数功能:读文件voidInput_worker(inti)函数功能:添加新的员工信息voidmain()函数功能:主函数选择进入界面1.3.3系统功能设计与实现下面分别对该模块中的具体功能进行详细描述,主要功能实现的代码相应功能实现的界面截图。1.---------------------------------------//主函数voidmain(){intc,t=1,i;Up_Infor();8/36printf(输入员工数量:);scanf(%d,&n);while(t){printf(#######################################################\n);printf(##欢迎进入职工工资管理系统:##\n);printf(##1.录入员工信息##\n);printf(##2.职工总工资进行排序##\n);printf(##3.文件保存到硬盘上##\n);printf(##4.查询员工信息##\n);printf(##5.修改员工信息##\n);printf(##6.查看所有员工信息##\n);printf(##7.添加员工信息##\n);printf(##8.删除员工信息##\n);printf(##9.退出程序##\n);printf(####\n);printf(##请选择对应的编号(1—7)##\n);printf(#######################################################\n);scanf(%d,&c);getchar();if(c1||10c){printf(\t输入错误,请重新输入:\n);continue;}switch(c){case1:Input_Infor();Cal_Wages();break;case2:Sort_Wage();break;case3:Save_Infor();printf(\t按任意键继续!\n);getchar();break;case4:Search_Worker();break;case5:Modify_Worker();break;9/36case6:for(i=0;in;i++)Print_Worker(i);break;case7:Input_worker(i);break;case8:delet_worker();break;case9:t=0;printf(\t谢谢使用!\n);printf(\t按任意键返回!);break;}}}图1-32.----------------------------------------//读文件voidUp_Infor(){inti;FILE*pk;pk=fopen(D:\\worker.txt,at+);for(i=0;i100;i++){10/36fscanf(pk,%-10s%-8s\t%-10d%-10d%-10d%-10d\t\n,Worker_Infor[i].workernum,Worker_Infor[i].workername,Worker_Infor[i].basicwage,Worker_Infor[i].allowance,Worker_Infor[i].Bonus,Worker_Infor[i].totalwage);if(strcmp(Worker_Infor[i].workernum,stop)==0)break;}fclose(pk);}3.------------------------------//员工信息的录入voidInput_Infor(){charc;inti;if(n==0)i=0;elsei=n-1;printf(\t请输入职工工资信息!\n);while(1){printf(\t请输入第%d位职工编号:,i+1);//gets(Worker_Infor[i].workernum);scanf(%s,Worker_Infor[i].workernum);getchar();printf(\t工号为%s职工的姓名:,Worker_Infor[i].workernum);gets(Worker_Infor[i].workername);printf(\t%s职工基本工资:,Worker_Infor[i].workername);while(1)11/36{scanf(%d,&Worker_Infor[i].basicwage);if(Worker_Infor[i].basicwage=0)break;elseprintf(\t输入错误,请重试!);}printf(\t%s职工的津贴:,Worker_Infor[i].workername);while(1){scanf(%d,&Worker_Infor[i].allowance);if(Worker_Infor[i].allowance=0)break;elseprintf(\t输入错误,重新输入:);}printf(\t%s职工的奖金:,Worker_Infor[i].workername);while(1){scanf(%d,&Worker_Infor[i].Bonus);if(Worker_Infor[i].Bonus=0)break;elseprintf(\t输入错误,重新输入:);}i++;n=i;getchar();printf(\n是否继续输入:(Y/N)或者(y/n):);scanf(%c,&c);if(c=='n'||c=='N')break;}}12/36图1-44.-----------------------------------//对员工工资排序voidSort_Wage(){inti,j;intWorker_temp;Cal_Wages();for(i=0;in;i++){for(j=i+1;jn;j++)if(Worker_Infor[j].totalwage=Worker_Infor[i].totalwage){Worker_temp=Worker_Infor[i].totalwage;13/36Worker_Infor[i].totalwage=Worker_Infor[j].totalwage;Worker_Infor[j].totalwage=Work