C语言实训项目分析及源码 - 图文

更新时间:2024-01-25 20:06:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

防灾科技学院

实习报告书

实习题目: 学号: 专业: 实习时间: 指导教师: 考勤成绩: 任务完成: 实习日志: 指导 教师 评语 10 40 20 ### 网络工程 2015.5-2015.6 网络工程认识实习(C语言) 姓名: 系别: 实习地点: 杜春雷 孙晓玲 实习态度: 实习报告: 实习总成绩

### ### 北504 10 20 100 指导教师(签名): 2015年 7月 日 防灾科技学院 灾害信息工程系

2015年制

1 / 35

项目一 C语言实习

一、实习目的

本课程是网络工程专业的一门专业必修课程,是学生学习完C语言程序设计专业基础课程后,进一步学习其他专业课程前必须完成的一项实践教学环节。

本次实习通过1个综合性强、实用性强、趣味性强的应用实例,使学生进一步巩固C语言基本知识,掌握应用程序设计语言描述问题、分析问题和解决问题的方法和思想,为后继的面向对象程序设计、数据结构、Web应用技术、网络工程专业实习、网络工程生产实习、网络工程毕业实习课程等课程打下基础。

通过本课程的学习,使学生进一步明确学习目标、增强学习动力、培养学习兴趣。

二、实习任务概述

任务一:员工工资管理系统的设计与实现

本系统基于C语言,实现了一个小型的信息管理系统,主要包括以下功能: 1.信息的录入:

a) 首次进入系统,可以添加职工的工号、姓名、基本工资、津贴、员工奖金等数据录入操作。

b) 系统再次登录,可以从文件导入信息,也可以对文件内容进行修改,保存退出。

2.删除操作:对离职的员工信息要从系统里删除。 3.显示操作:将结构体中职工信息输出到屏幕上。

4.查询与修改操作:分别按职工工号和职工姓名查询,修改职工信息并保存。 5.统计与排序操作:分别统计所有员工的总工资,实现对总工资的排序。

三、实习所用软件简介

VC++6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC(Microsoft Foundation Class)类库。使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。

使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用

2 / 35

程序开发变得简单。

Visual C++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 系统开发思路(需求分析)

随着计算机技术的发展,企业管理越来越趋于自动化,而工资管理是企业管理的重要的组成部分,它与企业的财务管理、人才管理有着密切的联系。由于企业员工工资结构存在一定的规律性,工资放在时间上和操作上存在的一定

3 / 35

的重复性,这使得企业事业单位工资管理计算机的实现成为了可能。

1.2 数据结构设计 struct Worker {

char workernum[10]; char workername[20]; int basicwage; int allowance; int Bonus; int totalwage;

}Worker_Infor[100]; 1.3 系统设计与实现

1.3.1系统功能结构图及流程图

职工管理系统 员工信息的录入员工信息查询员工信息修改员工工资排序员工工资汇总数据文件保存 图1-1员工工资管理系统参考模块图.

4 / 35

按工号查询按姓名查询选择查询方式 选择修改内容

开始 主操作界面 录入N 继续? 主操作界面 选择1 职工信息 Y 选择2 职工总工资排序 选择3 录入数据文件保存 按姓名查找 选择4 查询员工信息 修改员工信息 按工号查找 退出,回到主页面 选择5 选择查询方式 选择修改选项 修改 选择6 查看所有员工信息 选择7 添加新的员工信息 选择8 删除员工信息 输入要删除的员工姓名 删除 选择9 5 / 35

退出程序 图1-2员工工资管理系统流程图.

1.3.2 主要函数设计

void Input_Infor()

函数功能:员工信息的录入

void Print_Worker(int i) 函数功能:员工工资的显示 void delet_worker() int Search_Name() int Search_Num()

函数功能:删除员工信息

函数功能:姓名查询

函数功能:工号查询

函数功能:查询主函数,调用姓名/工号查

int Search_Worker() 询

void Modify_Worker() 函数功能:修改员工信息 void Cal_Wages() 函数功能:计算总工资 void Sort_Wage() 函数功能:对员工工资排序 int Save_Infor() 函数功能:文件写操作 void Up_Infor() 函数功能:读文件

void Input_worker(int i) 函数功能:添加新的员工信息 void main() 函数功能:主函数选择进入界面 1.3.3 系统功能设计与实现

下面分别对该模块中的具体功能进行详细描述,主要功能实现的代码相应功能实现的界面截图。

1.---------------------------------------//主函数 void main() { printf

(\

6 / 35

int c,t=1,i; Up_Infor();

printf(\输入员工数量:\scanf(\while(t) {

printf (\欢迎进入职工工资管理系统: ##\\n\;printf (\录入员工信息 ##\\n\printf (\职工总工资进行排序 ##\\n\printf (\文件保存到硬盘上 ##\\n\printf (\查询员工信息 ##\\n\printf (\修改员工信息 ##\\n\printf (\查看所有员工信息 ##\\n\printf (\添加员工信息 ##\\n\printf (\删除员工信息 ##\\n\printf (\退出程序 ##\\n\printf(\printf (\请选择对应的编号(1—7) ##\\n\printf (\

scanf(\getchar();

if (c<1||10

switch(c) {

case 1:Input_Infor();Cal_Wages();break; case 2:Sort_Wage();break;

case 3:Save_Infor();printf (\

按任意键继

续!\\n\

case 4:Search_Worker();break; case 5:Modify_Worker();break;

case 6:for (i=0;i

case 9:t=0;printf (\谢谢使用!\\n\(\按任意键

返回!\

}

7 / 35

}

}

图1-3

2.----------------------------------------//读文件 void Up_Infor() {

fscanf(pk,\

int i; FILE *pk;

pk=fopen(\for (i=0;i<100;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,\

8 / 35

}

fclose(pk);

}

3.------------------------------//员工信息的录入 void Input_Infor() { char c; int i; if (n==0)i=0; else i=n-1;

printf (\请输入职工工资信息!\\n\ while (1) { printf (\请输入第%d位职工编号:\ //gets(Worker_Infor[i].workernum); scanf(\ getchar();

printf

(\

%s

名:\

gets(Worker_Infor[i].workername);

printf

(\

资:\

while(1) { scanf(\ if (Worker_Infor[i].basicwage>=0)

break;

else printf (\输入错误,请重试!\

}

9 / 35

}

printf (\职工的津贴:\while(1) { }

printf (\职工的奖金:\while(1) { } i++; n=i; getchar();

printf (\是否继续输入:(Y/N )或者 (y/n):\scanf (\

if (c=='n'||c=='N')break;

scanf(\if (Worker_Infor[i].Bonus>=0)

break;

scanf(\if (Worker_Infor[i].allowance>=0)

break;

else printf (\输入错误,重新输入:\

else printf (\输入错误,重新输入:\

}

10 / 35

图1-4

4.-----------------------------------//对员工工资排序 void Sort_Wage() {

int i,j; int Worker_temp; Cal_Wages(); for (i=0;i

for (j=i+1;j

if

(Worker_Infor[j].totalwage<=

Worker_Infor[i].totalwage)

11 / 35

{

Worker_temp=Worker_Infor[i].totalwage;

Worker_Infor[i].totalwage=Worker_Infor[j].totalwage; }

for (i=0;i

printf

}

Worker_Infor[j].totalwage=Worker_temp;

(\Worker_Infor[i].workername,Worker_Infor[i].basicwage,Worker_Infor[i].allowance,Worker_Infor[i].Bonus,Worker_Infor[i].totalwage);

}

图1-5

5.---------------//文件写操作,文件保存到硬盘上 int Save_Infor() {

12 / 35

int i; FILE *pk; Cal_Wages();

if ((pk=fopen(\{ }

for (i=0;i

printf (\文件打开失败!\return 0;

fprintf(pk,\

i].workernum,Worker_Infor[i].workername,Worker_Infor[i].basicwage,Worker_Infor[i].allowance,Worker_Infor[i].Bonus,Worker_Infor[i].totalwage);

} }

fclose(pk);

printf (\文件保存成功!\return 1;

13 / 35

图1-6

6.----------------- //查询员工信息 int Search_Worker() {

int i,m;

printf (\请选择查询方式:\\n1.按姓名查找\\n2.按员工工号查找\\n3.退出\\n\

}

6.1--------------------------------//姓名查询 int Search_Name() {

int i; char name[20];

printf (\请输入要查询的姓名:\scanf (\for (i=0;i

if (strcmp(name,Worker_Infor[i].workername)==0) {printf scanf (\switch(m) {

case 1:i=Search_Name();return i ;break; case 2:i=Search_Num();return i ;break; case 3:return -1; }

(\Worker_Infor[i].workername,Worker_Infor[i].basicwage,Worker_Infor[i].allowance,Worker_Infor[i].Bonus,Worker_Infor[i].totalwage);

return i;break;}

14 / 35

}

}

if (i==n) { }

//else return i;

printf (\没有找到该员工!\\n\

图1-7

6.2---------------------------//按工号查询 int Search_Num() {

int i; char num[20];

printf (\请输入要查询的工号:\scanf (\for (i=0;i

if (strcmp(num,Worker_Infor[i].workernum)==0)

15 / 35

{printf

(\Worker_Infor[i].workername,Worker_Infor[i].basicwage,Worker_Infor[i].allowance,Worker_Infor[i].Bonus,Worker_Infor[i].totalwage);

}

if (i==n) { }

//else return i;

}

printf (\没有找到该员工!\\n\return i;break;}

图1-8

7.--------------------------//修改员工信息 void Modify_Worker()

16 / 35

{

int i,m;

printf (\请查询您要修改的员工:\\n\i=Search_Worker(); getchar(); printf

(\

printf (\请选择您要修改的内容: ##\\n\printf (\员工号 ##\\n\printf(\员工姓名 ##\\n\printf (\员工的基本工资 ##\\n\printf (\员工的津贴 ##\\n\printf(\员工的奖金 ##\\n\printf(\退出 ##\\n\

printf

(\

scanf (\switch(m) {

case 1:printf (\请输入新的员工号:\

(\

case 2:printf (\请输入新的员工名:\

(\

case 3:printf (\请输入新的员工基本工资:\

(\

case 4:printf (\请输入新的员工津贴:

\

case 5:printf (\请输入新的员工奖金:\

(\

case 6:return;

17 / 35

}

}

printf (\修改后的员工的基本信息为:\\n\Print_Worker(i);

图1-9

8.---------------//查看所有员工信息void Print_Worker(int i) {

printf

(\Worker_Infor[i].workername,Worker_Infor[i].basicwage,Worker_Infor[i].allowance,Worker_Infor[i].Bonus,Worker_Infor[i].totalwage);

}

18 / 35

图1-10

9.-------------------//添加新的员工信息 void Input_worker(int i){ char c;

printf(\请输入职工工资信息:\\n\while(1){

printf(\第%d位职工的编号:\gets(Worker_Infor[i].workernum); printf(\

%s

名:\

gets(Worker_Infor[n].workername); printf(\

资:\

while(1){ }

19 / 35

scanf(\if(Worker_Infor[n].basicwage>=0)break; else printf(\输入错误请重试:\

printf(\职工的贴:\

while(1){

scanf(\ if(Worker_Infor[n].allowance>=0)break;

else printf(\输入错误请重试:\

}

printf(\

金:\

while(1){

scanf(\ if(Worker_Infor[n].Bonus>=0)break;

else printf(\输入错误请重试:\

} i++; n++; getchar();

printf(\是否想要输入下一个员工信息(Y/N):\ scanf(\

if(c=='N'||c=='n')break;

getchar();

}

}

20 / 35

图1-11

图1-12

10.----------------//删除员工信息 void delet_worker() {

21 / 35

);

int i,k=0; char name[20];

printf(\输入需要删除的员工姓名:\scanf(\for(i=0;i

if(strcmp(name,Worker_Infor[i].workername)==0);break;}

while(1){

strcpy(Worker_Infor[i].workername,Worker_Infor[i+1].workername

strcpy(Worker_Infor[i].workernum,Worker_Infor[i].workernum);

} }

Worker_Infor[i].allowance=Worker_Infor[i].allowance; Worker_Infor[i].basicwage=Worker_Infor[i+1].basicwage; Worker_Infor[i].Bonus=Worker_Infor[i+1].Bonus; Worker_Infor[i].totalwage=Worker_Infor[i+1].totalwage; Print_Worker(i); i++;

if(i==n-1)break;

22 / 35

图1-13

图1-14

1.4 结论

1.4.1 本次实习取得的成绩

第一次接触到这样多的代码的书写,不仅锻炼了自己的编程能力,而且学会了坚持的精神。通过这次的实训,我了解到了代码所具有的强大的功能;

23 / 35

熟悉了结构体的使用,对于函数的调用也有了一个比较深刻的认识,我觉得这将更有力于我将来的c语言的学习。

1.4.2系统存在的问题

本次实训我所写的员工工资管理系统大致上还是令人满意的。 1.4.3 总结

这次的c语言实训说真的令人印象深刻,我在刚开始的时候,由于以前

都没有写过这么久的代码,心里难免会有一种烦躁感。但是,随着管理系统的一点点成型,我的心里又不那么浮躁了,看着自己的付出有了回报,心里真的很开心。通过这段时间的学习,我发现以前的自己不那么注重手动上机练习,存在很大的学习漏洞。以前总觉得c语言不那么难,但是当发现自己不能将一个个的功能实现的时候,就觉得自己开始后悔没有好好掌握程序流程的学习。后来的日子,我慢慢赶了上来。虽然在实训的过程中不是那么一帆风顺,但是自己觉得真的学到了很多的东西,在发现问题、调试后来解决问题的过程中使我更加了解了c语言,也增加了我对c语言学习的信心。

24 / 35

项目二 综合布线

一、实习目的

通过实习使学生了解综合布线在生产实践和科学研究中的应用情况,使学生对生产过程中的网络和服务器等有初步的了解和认识,同时培育学生的现场安全生产意识及组织纪律观念。

二、实习要求

掌握综合布线的七个子系统的关系和区别。对七个子系统的实现进行整体连续操作。完成建筑物综合布线系统从设计、安装、检测到验收的过程。

三、实习内容及步骤

实验一、制作直通线、交叉线

直通线:又叫正线或标准线,两端采用568B做线标准,注意两端都是同样的线序且一一对应。直通线应用最广泛,不同设备之间,比如路由器和交换机、PC和交换机等。

交叉线:又叫反线,线序按照一端568A,一端568B的标准排列好线序,并用RJ45水晶头压好。交叉线一般用于相同设备的连接,比如交换机和交换机、电脑和电脑之间。

百兆双绞线只用8根双绞线的其中4跟,橙百线、橙线、绿白线、绿线。而千兆双绞线需要用到全部8根。

图2-1 电缆线序

实验步骤:

1、 使用网线钳中间的圆形剥线缺口,剥除双绞线外层绝缘外皮,把里

25 / 35

面的4对双绞线一一拆开,排序。

1) 用剥线器延双绞线头部30mm左右,旋转1圈剥除外皮,注意不要损

伤里面的8根线芯的绝缘层。

图2-2

2) 捋直弯曲的双绞线,排好线序把参差不齐的线头用网线钳的刀片剪

齐,让它长度一致为14mm。如图

图2-3

2、插入RJ45水晶头开始压接。

1)水晶头有卡子的一头向下,按线序1-8从左至右的顺序把双绞线插入水晶头的最顶部,8根双绞线一定要到达水晶头的8个金属刀片的上方,没有接触到刀片的话就无法导电通信。

图2-4

26 / 35

2)把连上水晶头的双绞线,插入到网线钳的8p压口中去。注意钳子的压口的方向,8个金属刀片的压口在外侧,水晶头压口在自己内侧,不要放反了。用力压紧。

图2-5

3)压接完毕的水晶头检查下是否合格。做好双绞线两头后,将两头分别插入测线器的RJ45接口。检测是否连通

图2-6

3、检测方法

直通线测试,测线器的子母端的指示灯按照1-1,2-2,3-3,4-4,5-5,6-6,7-7,8-8的顺序轮流同时闪烁,表明8根线全部正常。直通线可以使用。如有不亮或者亮度很暗的,表明指示灯对应的双绞线连通不正常。

百兆交叉线测试,测线器的子母端的指示灯按照

1-3,2-6,3-1,4-4,5-5,6-2,7-7,8-8的顺序轮流同时闪烁,表明正常。

27 / 35

千兆交叉线测试,测线器的子母端的指示灯按照1-3,2-6,3-1,4-7,5-8,6-2,7-4,8-5的顺序轮流同时闪烁,表明正常。

图2-7

实验二、配线架端接实验

实验步骤:

1、RJ45配线架端接:

(1)取一段3米长的网线,用剥线器延双绞线头部40mm左右,旋转1圈剥除皮注意不要损伤里面的8根线芯的绝缘层。

(2)剥去外皮后露出里面的4对双绞线。

(3)按照配线架上的线序标记,把对应颜色的双绞线分别打入配线架的模块中 去。打线过程中打线钳要保持水平,用力一次把线打入。把网线的两头分别打入 两个配线架的相对应的接口中去。注意不要把打线钳拿反,刀口上的剪子是减掉多余的线头用的。

(4)一端打完后的样子。两端都打完后在配线架的对应接口中插入直通跳线,一头连接测线器,测试端接后两个配线架是否能够通信。

2、110配线架端接:

28 / 35

(1)取2根3米长的网线,4根1米长的网线,剥开网线,露出4对双绞线。

(2)按照蓝橙绿棕的线序,蓝白、蓝、橙白、橙、绿白、绿、棕白、棕,把两根3米的网线,在110跳线架最左侧模块接口开始处分别把16根双绞线线芯放入对应的模块里。

(3)使用橡胶锤把110跳线架的模块砸入110配线架,用老虎钳或其他平面大又结实的工具垫一下,增大受力面积,防止损坏110跳线架。把两个模块都安装到110跳线架上。(注意110跳线架模块的正反,有颜色标记的一面面向自己,蓝色标记在左边第一个)

(4)把两根3米的网线的另外一端。用同样的方法打入另一个110跳线架。 (5)取2根1米长的网线,在110跳线架的模块上按顺序用打线钳打入,网线的另一头按568B标准制作水晶头。另一个110跳线架使用剩下的两条1米长的双绞线制作方法相同。

(6)用测线器测试4个相对应的RJ45接口,观察是否连通。

3、检测方法

测线器的子母端的指示灯按照1-1,2-2,3-3,4-4,5-5,6-6,7-7,8-8的顺序轮流同时闪烁,表明8根线全部正常。如有不亮或者亮度很暗的,表明指示灯对应的双绞线连通不正常。

实验三、光纤熔接实验

实验步骤:

(1)室外光缆中有两条钢筋加固,在剥去外层绝缘表皮前需要用老虎钳拉出其中的一条钢筋70cm,并剪断。

29 / 35

(2)用开缆刀在光缆7-10cm处,环切一圈,调整刀口深度继续环切,直到能看见里面白色的保护套管,注意不要切的太深,伤害里面的光芯。

(3)切断外层保护套以后,把外层保护套小心的取下,注意不要把里面的光纤 弄断,在向下切7-10cm,直到把70cm的外层保护套全部取下。把剩余的一根钢筋切断,留7cm的长度,留着把光缆放进光纤配线架的时候做固定用。

(4)用剥皮钳1.0缺口,剪断光缆的白色保护套管。也是一段一段的剪,一次5-7cm。直到剪够70cm。

(5)白色保护套管被切除后,光缆里边的玻璃光芯。上面的颜色是树脂,它有很多种颜色,和保护套管一样对光芯有一定的保护作用与标记作用。

(6)用光纤剥线钳,把上面的树脂剥掉。剥出5cm左右的玻璃芯。 (7)用棉球占少许酒精擦拭下,接下来就可以为熔接做准备了,再剥一根光缆准备做两根光缆的熔接实验。

(8)首先把光纤切割刀的刀片归位,拨到靠近自己的位置,上图没有归位。把剥好的光纤放到光纤切割刀上面去,上面是放单模光纤的,下面较粗的是放多模光纤的,有树脂的地方放在图片上红线的位置,最远不要超过中间的刻度,光纤的头部搭在靠近刀片的那一侧固定平台上。

(9)关好固定的盖子,用大拇指向前方快速拨动刀片,切断光芯,使光芯截面平整并有一个可以熔接的合适长度

(10)将切好的两根光芯分别放入光纤熔接机的两个固定装置里,光芯头部不要超过熔接机中间的两根针指向的位置(红圈所示)。

(11)盖上熔接机的两个固定装置,最后盖上盖子

(12)盖上盖子后会自动调整光芯的位置,可以通过显示器看到放大了的光芯的状态。如果位置安放不正确,切口不平,会再次提示请放入光纤,此时需要

30 / 35

从新剥树脂,从新切口,再次放入光纤。没有问题,按run键开始熔接。如果熔接成功会显示光纤的损耗值,小于0.05算成功。

四、综合布线工程设计作业

点数统计表的编制

31 / 35

图2-8

2.综合布线系统图的设计

点数统计表非常全面地反映了该项目的信息点数量和位置,但不能反映信息点的连接关系。而系统图直接决定网络应用的拓扑图。综合布线系统图一般在电气施工图册的弱电图纸部分的首页。

要求:

1.|X|: 代表网络设备和配线设备,口: 代表网络插座。 ---:代表缆线。 缆线型号标记正确。特别要标明是光缆还是电缆。光缆还要标明是室外光缆,还是室内光缆,再详细时还要标明是单模光缆还是多模光缆。

2.说明完整,系统图设计完成后,必须在图纸的空白位置增加设计说明。例如增加图形符号说明,对信息点总数和个别特殊需求给与说明等。

3.标题栏完整 一般在图纸右下角,标题栏至少要包括:建筑工程名称,项目名称,工种,图纸编号,设计人签字,审核人签字,审定人签字。 一般使用AutoCAD来制作 配线设备图形如下:

32 / 35

图2-9

3.信息点端口对应表的设计

33 / 35

图2-10

4.编制材料表

五、实习体会

两天的综合布线下来,让我对网络工程有了更清楚的认识,动手能力有了进一步的提升。不是仅仅作用于书本上的知识,让其变得非常有趣。

刚开始,自己还在为不能适应这种环境而担心,但后来在同学们的帮助下,自己慢慢的了解了综合布线,接着自己从中看到了很多的收获。在这里我能学习,又能找到快乐。充满了各种乐趣。

这次的综合布线说真的令人印象深刻,由于以前都没有做过这样的事,心里难免会有一种紧张感。但是,随着实验的深入,我的心里又不那么紧张了。通过这段时间的学习,我发现以前的自己不那么注重动手能力,存在很大的学习漏洞。就觉得自己开始后悔没有经常动手。虽然在布线的过程中不是那么一帆风顺,但是自己觉得真的学到了很多的东西,在发现问题、解决问题的过程中使我更加了解了综合布线。我相信综合布线对我们以后的实际生活也会有很大的帮助。

34 / 35

35 / 35

本文来源:https://www.bwwdw.com/article/ct9w.html

Top