C语言课程设计指导书_第1页
C语言课程设计指导书_第2页
C语言课程设计指导书_第3页
C语言课程设计指导书_第4页
C语言课程设计指导书_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C 语 言 课 程 设 计 指 导 书第二版刘跃峰 李天博 陆继远编江苏大学电气学院2007.5课程设计目标一、课程设计目标C语言课程设计的目的是通过课程设计的综合训练,培养学生实际分析问题、编程和动手能力,最终目标是通过这种形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。本课程设计具有如下特点:(1)重点在于C语言的基本特征上,涵盖了C语言的重要基础知识。(2)结合了实际应用的要求,使课程设计既涵盖知识点,又接近工程实际需要。通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练自己实际分析问题的能力以及编程能力,并养成良好的编程习惯。(3)每个课程设计均

2、给出要求与算法,为学生创造独立思考的条件。学生在吃透要求与算法的前提下,完全可以设计出自己的应用程序。(4)有些课程设计还提出了一些改进措施或要求,可以供有兴趣的同学扩充自己的设计。(5)课程设计分为基本部分与扩展部分,以满足不同学生的要求。(6)提供两个综合课程设计,以期进一步锻炼学生的动手能力。还可以将其分为几个子项目,让学生分工合作,以培养团队精神。另外,在实际编程中,为了提高编程质量,希望学生在书写代码时,对空行、空格和注释严格按要求处理,以建立良好的编程风格。二、课程设计结构C语言的组成是函数调用,所以课程设计的重点是函数。函数设计的难点是选择函数类型及其参数的传递方式。数据类型及程

3、序控制方式是C语言的基础;数组、指针和结构的使用技术是编程的核心技术,也是程序设计人员必备的知识,因此本课程设计特意加强这方面的训练。本课程设计共选择了六个设计课题,不使用一个独立的课题涵盖所有知识点,而是按层次逐步深入。这些课题及其简要说明如下:1、使用数组和指针统计成绩数组和指针是C语言的重要概念,数组与指针之间的关系又容易混淆。另外,字符串数组的使用方法与普通的数值型数组的用法也有所不同,它们与指针之间的关系也较特殊。该课题围绕以上问题展开,同时有意拓宽字符串数组的用途,引入多维字符串数组及数组指针。为了适应不同层次学生的需要,将它们分为几个不同的设计要求,以便灵活取舍。2、统计工资该课

4、程设计要求设计一个公司职员的数据结构,并使用结构指针数组存储职员信息,统计公司员工工资总额和平均工资,目的是深入了解函数参数类型和结构之间的关系。3、职工档案及简明信息生成该课程设计涉及到的知识点是结构数组及其指针的关系,尤其是结构数组的读取问题。因为要求使用菜单选择各项功能,这又涉及到函数类型及其参数传递问题。为了编制满足该课程设计要求的函数,需要进一步深入理解函数的性质。4、链表信息管理该课程设计的重点集中在链表,包括创建链表,使用链表存储结构信息,增加链表结点及删除链表结点等基本操作。5、简单通信录程序该课程设计可在链表程序的基础上,增加检索与排序,并且能够打开指定文件或修改指定文件,还

5、可将多个文件组成一个文件。6、学籍管理程序该课程设计是设计一个实用的小型学生成绩管理程序,要求不用链表,而用数组来设计。它具有排序和检索等功能,并且能够对指定文件操作,还可将多个文件组成一个文件。第一章 使用数组和指针统计成绩1.1 设计题目本课程设计主要练习数组和指针的使用。假定给定班级各科考试平均成绩的原始资料如下:数学:75物理:80外语:83政治:85体育:86人数:30要求统计出全班学期总平均成绩以及得分最低的科目和该科目的成绩。要求的输出结果如下:全班各科平均成绩如下:数学:75物理:80外语:83政治:85体育:86则统计结果如下:人数:30平均成绩:81最低分科目的成绩:75最

6、低分数的科目:数学1.2 设计要求对存放原始数据的要求如下:(1)使用整型数组a存放数学、物理、外语、政治、体育、人数、平均成绩、最低分数科目的成绩。(2)使用字符串数组name存放数学、物理、外语、政治、体育、最低分数的科目。(3)使用字符串数组MeanLow存放人数、平均成绩、最低分数科目的成绩、最低分数的科目。实现本设计功能的方法很多,在此给出3种难易程度不同的要求,以便加深对数组和指针知识的理解。1、使用数组实现使用数组和指针数组实现。2、使用分配的内存实现要求将数组a的内容存入到分配的内存中,使用指针实现对内存内容的存取和计算。3、将数组内容全部存入内存为字符分配内存,并将字符数组的

7、内容存入所分配的内存中,使用指针来实现。第二章 统计工资2.1 设计题目本课程设计要求设计一个公司职员的数据结构,并使用结构指针数组存储职员信息,统计公司员工工资总额和平均工资。2.2 设计要求设计要求实现如下功能:(1)使用结构指针数组设计一个公司职员的数据结构,使用下述的结构定义:typedef struct employeeint age;char *name;double salary;*PEMP;(2)在主函数里构造一个指针数组company,用来存放职工信息。(3)设计一个update函数,用来给company赋值。函数update(company, id, age, name,

8、salary)的四个参数为:company: 结构指针数组id: company的下标age: 年龄,整数类型salary: 薪水,实数(4)设计一个readin函数,直接采用调用update函数的方式进行赋值。例如:update(company, 2, 30, “LI MING”, 3000.0);(5)编写total函数对工资求和。这个函数应该能对全体职工和某一年龄段的职工的工资求和。(6)编写mean函数求平均工资。这个函数应该能对全体职工和大于某一年龄段的职工的工资求和并计算相应的平均值。2.3 算法分析为了简单起见,假设在主函数main中定义结构数组指针如下:PEMP company

9、num;下面说明几个函数的设计问题:(1)readin函数数组company属于main函数,它是不可见的,所以必须作为readin函数的参数。因为参数传递是传地址的方式,所以不需要返回值。以数据为例,这个函数的定义和使用方法如下:void reading(company)PEMP company;update(company, 2, 23, “张文”,3000.0);update(company, 1, 33, “王微”,2400.0);update(company, 2, 23, “李小”,3055.0);(2)total函数它也必须以数组company作为参数,而且要返回工资总额。可将它

10、的原型设计为:double total (PEMP *);total函数应该允许输入年龄范围,如果年龄不合理,应该允许重新输入。对输入数据进行判别,确保无误再进行计算。for( ; ; )printf(“输入年龄范围”);scanf(“%d%d”,&age1, &age2)if(age1age2)i=age1;age1=age2;age2=i; if(age1=0)&(age2=0)&(age2age1)break;(3)mean函数mean函数也必须以数组company作为参数,而且要返回平均工资。将它的函数原型设计为:double mean (PEMP *);mean函数应该允许输入年龄范

11、围。对输入字符进行判别,确保无误再进行计算,注意允许大小写。printf(“求某一年龄段以上的职工的平均工资n”);printf(“默认是全体职工的平均工资,要改变计算方式请输入Y/yn”);getchar();ch=getchar();if(ch=Y|ch=y)printf(“age:”);scanf(“%d”,&age);(4)申请内存在update函数中,需要申请内存空间。PEMP empIf(emp=(PEMP) malloc (sizeof(struct employee)=NULL)return;注意emp是指针,所以要使用sizeof(struct employee)。第三章 职

12、工档案及简明信息生成3.1 设计题目本设计要求使用头文件和菜单,并组成一个工程文件,对职工的档案进行管理并生成职工的简明信息。3.2 设计要求设计要求实现如下功能:(1)建立wkrs职工数据结构,结构含有姓名、序号、性别和年龄信息。(2)建立一个结构数组,以便存储10个职工信息。(3)设计一个readin函数,以便采用问答式输入10个职工的信息。(4)编写一个display函数,要求使用结构指针作为参数,用来输出结构数组的内容。(5)建立wks职工简明数据结构,结构中只含有姓名和年龄信息。(6)编制一个srt函数,根据wks结构建立的职工情况,把职工姓名和年龄信息抽出来,另外建一个只含职工姓名

13、和年龄的wkshort结构的数组。(7)编制一个delwk函数,可以从简明数据结构中删去指定的职工数据。如果数组中没有要删去的职工,则输出没有这个职工的信息;如果将内容全部删去,应该给出内容已空的提示信息。(8)将上述函数编制在一个文件里,共用一个头文件。(9)用一个简单的菜单提供上述操作。菜单信息为:1、输入数据2、显示原始数据3、制作简明数据4、删除简明数据5、结束退出Please Input 1-5: 3.3 算法分析1、结构数组根据要求,可以定义它们各自的数据结构及其结构数组如下:struct wkrschar num10;char name10;char sex3;int age;w

14、k10;struct wkrchar name10;int age;wkshort10;因为直接定义它们各自的结构数组,所以各个函数可以直接对这些数组进行操作。2、函数类型如上所述,因为直接定义了结构数组,所以以下函数均不需要参数,也不需要返回值。void reading();void disp();void delwk();void srt();int menu_select();3、结构指针显示数据的display函数,本身不需要使用结构指针,但题目要求使用结构指针实现,所以其原型可以设计为:void display(struct wkrs *);它的程序代码如下:void display

15、(struct wkrs *p)char *c4=“序号”,“姓名”,“性别”,“年龄”;int i;p=wk;printf(“n%8st%8st%6st%4sn”, c0,c1,c2,c3);for(i=0;inum,p-name,p-sex,p-age);printf(“n”);与普通数组一样,结构数组名即结构数组的首地址。结构作为参数传递时,也是传值方式。如果要修改普通的结构数据,必须使用传址方式。下面的disp函数可以完成同一功能,但不用参数。void disp()char *c4=“序号”,“姓名”,“性别”,“年龄”;int i;printf(“n%8st%8st%6st%4sn”

16、, c0,c1,c2,c3);for(i=0;inext=NULL;count=0;handle_menu(top);3删除全部数据后的处理因为在删除操作中,可能将全部记录删除。这时就必须在退出之前恢复初始值。算法如下:(1)首先判别是否有记录,没有就退出操作if(count=0)printf(“记录已经为空,请退出删除操作!”);return top;(2)对查找的方式进行判别while(1)cn=atoi(choose);if(cn!=1 & cn!=2)printf(“输入错误,重新选择1-2:”);gets(choose);else break;(3)删除指定数据,如果删除的是最后一个

17、,恢复到初始值。if(count=0)ASK(top);ASK(star);top-next=NULL;return top;第五章 实用的小型通讯录5.1 设计题目本课程设计是设计一个实用的小型通讯录程序,它是在链表程序的基础上,增加查询功能,并且能够打开指定文件或修改指定文件及将多个文件组成一个文件。5.2 设计要求5.2.1 功能设计要求本设计要求完成如下功能:1建立文件(1)存储文件可以使用默认文件名或指定文件名;(2)可以不保存输入记录,但需要确认是否保存输入记录;(3)如果已经有文件,只能在其后追加;(4)新增的记录可以不存入原文件中,也可以用原来的文件覆盖内存的内容;(5)可以将

18、两个文件合并到一个文件中。2文件的存取和显示(1)可以单独存取文件;(2)可以随时显示内存中记录的全部内容;(3)可以直接存取默认文件或指定文件。3删除记录(1)可以按“姓名”或“电话”方式删除记录并更新内存链表内容;(2)能给出被删除记录的信息;(3)如果已经是空表,删除时应给出提示信息并返回主菜单;(4)如果没有要删除的信息,输出没有找到的信息;(5)删除操作仅限于内存,只有执行存记录时,才能覆盖原记录。4查询记录(1)可以按“姓名”或“电话”方式查询记录;(2)能给出查询记录的信息;(3)如果查询的信息不存在,输出没有找到的信息。5整体功能(1)应该可以随时检索、删除或增加新记录,保存或

19、取消新的记录;(2)使姓名可由16位字符和数字组成;(3)使电话号码可由18位字符和数字组成;(4)将输出信息加上输出信息栏,例如:姓名电话李arry Li(86)-10-54546666(5)对存储的文件进行整理分类;(6)定义ASK宏,用于申请动态内存;(7)使用菜单实现功能的正确选择。6测试程序(1)应列出测试大纲对程序进行测试;(2)应保证能测试到程序的各种边缘情况。5.2.2 总体设计本课程设计对模块设计的要求如下:(1)要求使用多文件方式实现链表设计;(2)要求在各个文件内实现结构化设计;(3)每个模块作为一个单独的C文件,每个文件内的函数如表5-1所示,

20、表中给出了各个函数的功能说明;(4)宏和数据结构等放在头文件中,并使用条件编译。本设计由6个C文件(13个函数)和一个头文件组成,每个C文件都代表着某种特定的功能,它们的关系如表5-1所示。因为设计了文件连接功能,所以该程序包含文件的存、取过程。它的功能就是按输入顺序建立记录。如果原来没有记录文件,可重新建立一个文件;如果已经有记录,可以先把文件内容读入,然后把新记录追加到原来记录的尾部;也可以单独建立新文件,以后再使用连接功能拼装。由上述功能分析可以看到程序的全貌。因为它有并列选择,所以可以用选择菜单方便地实现。这个菜单具有多个选择项,用switch语句可以实现这些选择。表5-1 文件及函数

21、组成源文件函数名及其他成分功能letter.cmain总控函数menu_select菜单选择handle_menu菜单处理free_nodes释放top的内存空间quit结束运行new_addrBook新建通讯录sls_disp.cslstore输入信息display显示信息delete_record.cdelete_record删除记录find_record.cfind_record查询记录link_files.clink_files连接文件save_loadsave文件存储load文件读取letter.hASK(自定义宏)宏定义申请内存结构说明通讯录结构库函数及函数原型声明引用库函数及函数

22、5.2.3 函数设计因为采用链表方式记录,所以将它们的第一个结点作为参数传递。假设将数据结构自定义为ADDR,用它定义*top为第一个记录结构的指针,分别描述这些函数,并建立它们的函数原型。1文件存储操作函数函数原型:void save(ADDR *)功能:将记录存入指定文件sname参数:结构指针top返回值:void工作方式:从链表头部开始逐个存入文件。要求:报告是否有记录可存,是否能正常建立或打开文件,根据要求执行存入操作并报告存入记录的条数。2文件读取操作函数函数原型:ADDR *load(ADDR *)功能:将文件sname里的记录取入内存参数:结构指针top返回值:返回结构指针to

23、p工作方式:在内存里从top处开始构造链表并返回top。要求:报告是否有记录可读,是否能正常打开文件及读取记录的条数。3显示内存动态记录数据函数函数原型:void display (ADDR *)功能:显示内存里的记录参数:结构指针top返回值:void工作方式:从头部开始逐个显示记录内容。要求:报告是否有记录及记录条数和内容。4输入信息函数函数原型:ADDR *slstore (ADDR *) 功能:添加记录 参数:结构指针top 返回值:返回结构指针top 工作方式:从尾部开始逐个追加记录。 要求:如果内存已经存在记录,则将新记录追加在记录尾部。如果还没有建立记录链表,则建立链表并从尾部开

24、始追加记录。5删除记录函数函数原型:ADDR *delete_record(ADDR *)功能:删除内存链表中的指定结点参数:结构指针top返回值:返回结构指针top工作方式:根据给定的关键字,查找符合的结点并删除。要求:给出相关信息。6查询记录函数函数原型:void find_record(ADDR *)功能:查询内存链表中是否含有该信息的结点参数:结构指针top返回值:void工作方式:根据给定的关键字,查找符合的结点并给出它的完整信息。要求:给出相关信息。7连接文件函数函数原型:void link_files(void)功能:将一个文件的内容追加到另一个文件的尾部参数:void返回值:v

25、oid工作方式:根据给定的文件名,将第2个文件追加到第1个文件的尾部。要求:给出相关信息8新建通讯录函数函数原型:ADDR* new_addrBook(ADDR *)功能:新建通讯录链表的表头参数:当前通讯录链表的表头top返回值:新建通讯录链表的表头top工作方式:可将已改动通讯录保存,释放原通讯录所占空间并插入新的记录。要求:根据要求保存已改动通讯录,然后建立新的记录。9菜单处理函数函数原型:void handle_menu(ADDR *)功能:处理选择的菜单命令参数:结构指针top返回值:void工作方式:根据命令,调用相应函数。要求:给出结束信息。10菜单选择函数函数原型:void m

26、enu_select(void)功能:接收用户选择的命令代码参数:void返回值:int工作方式:返回命令代码的整数值。要求:只允许选择规定值,如果输入不合要求,则提醒用户重新输入。11释放内存空间函数函数原型:void free_nodes(ADDR *)功能:释放以top为头部的链表的内存空间参数:当前通讯录链表的表头top返回值:void工作方式:调用free函数释放链表的内存空间。要求:将计数器清零。12结束程序运行函数函数原型:void quit(ADDR *)功能:结束程序运行参数:void返回值:void工作方式:根据要求决定在退出之前是否将修改的记录存入文件。要求:结束运行之前

27、,询问是否对修改的记录进行存储。13主函数函数原型:void main(void)功能:控制程序参数:void返回值:void要求:管理菜单命令并进行初始化。14头部文件文件名称:letter.h功能:声明函数原型,包含文件及自定义宏和数据结构。要求:报告是否能正常打开文件执行存入操作及存入记录的条数。第六章 学生成绩管理程序6.1 设计题目本课程设计是设计一个实用的小型学生成绩管理程序,它要求不用链表,而用数组来设计这个程序。它有查询和检索等功能,并且能够对指定文件操作,也可将多个文件组成一个文件。6.2 设计要求6.2.1 功能设计要求本设计要求完成如下功能:1建立文件(1)可以使用默认文

28、件名或指定文件名将记录存储到文件;(2)文件保存成功返回0,失败返回-1;(3)设置保存标志savedTag作为是否已对记录进行存储操作的信息;(4)写同名文件将覆盖原来文件的内容; 2增加学生记录(1)可以在已有记录后面追加新的记录;(2)可以随时用它增加新的记录,它们仅保存在结构数组中;(3)可以将一个文件读入,追加在已有记录的后面;(4)如果已经采取用文件追加的方式,在没有保存到文件之前,将继续保持文件追加状态,以便实现连续文件追加操作方式;(5)如果没有记录存在,给出提示信息。3新建学生信息文件(1)用来重新建立学生信息记录;(2)如果已经有记录存在,可以覆盖原记录或者在原记录后面追加

29、,也可以将原有记录信息保存到一个指定文件,然后重新建立记录;(3)给出相应的提示信息。4显示记录(1)如果没有记录可供显示,给出提示信息;(2)可以随时显示内存中的记录;(3)显示表头。5文件存储(1)可以按默认名或指定名存储记录文件;(2)存储成功返回0,失败返回-1;(3)更新存储标志。6读取文件(1)可以按默认名字或指定名字将记录文件读入内存;(2)读取成功返回0,失败返回-1;(3)可以将指定或默认文件追加到现有记录的尾部;(4)可以将文件连续追加到现有记录并更新记录的名次;(5)更新存储标志。7删除记录(1)可以按“学号”、“姓名”或“名次”方式删除记录;(2)给出将被删除记录的信息

30、,经确认后再删除;(3)如果已经是空表,删除时应给出提示信息并返回主菜单;(4)如果没有要删除的信息,输出没有找到的信息;(5)应该更新其他记录的名次;(6)删除操作仅限于内存,只有执行存记录时,才能覆盖原记录。(7)更新存储标志。8修改记录(1)可以按“学号”、“姓名”或“名次”方式修改记录内容;(2)给出将被修改记录的信息,经确认后再修改;(3)如果已经是空表,删除时应给出提示信息并返回主菜单;(4)如果没有找到要修改的信息,输出提示信息;(5)应该同时更新其他记录的名次;(6)修改操作仅限于内存,只有执行存储操作时,才能覆盖原记录。(7)更新存储标志。9查询记录(1)可以按“学号”、“姓

31、名”或“名次”方式查询记录;(2)能给出查询记录的信息;(3)如果查询的信息不存在,输出提示信息。10对记录进行排序(1)可以按学号进行升序或降序排序;(2)可以按姓名进行升序或降序排序;(3)可以按名次进行升序或降序排序;(4)如果属于选择错误,可以立即退出排序;(5)更新存储标志。11头文件(1)使用条件编译定义头文件;(2)函数原型声明;(3)数据结果及包含文件。12测试程序(1)应列出测试大纲对程序进行测试;(2)应保证能测试到程序的各种边缘情况。6.2.2 总体设计本课程设计对模块设计的要求如下:(1)要求使用多文件方式实现设计;(2)要求在各个文件内实现结构化设计;(3)每个模块作

32、为一个单独的C文件,每个文件内的函数如表6-1所示,表中给出了各个函数的功能说明;(4)宏和数据结构等放在头文件中,并使用条件编译。本设计由5个C文件(17个函数)和一个头文件组成,每个C文件都代表着某种特定的功能,它们的关系如表6-1所示。程序包含文件的存、取过程。它的功能就是按输入顺序建立记录。如果原来没有记录文件,可重新建立一个文件;如果已经有记录,可以先把文件内容读入,然后把新记录追加到原来记录的尾部;也可以单独建立新文件,以后再使用读取文件的方法拼装。由上述功能分析可以看到程序的全貌。因为它有并列选择,所以可以用选择菜单方便地实现。这个菜单具有多个选择项,用switch语句可以实现这

33、些选择。表6-1 文件及函数组成源文件函数名及其他成分功能student.cmain总控函数menu_select菜单选择handle_menu菜单处理newRecords新建学生信息记录quit结束运行add_disp.cshowTable打印表头getIndex按升序排序的位置addRecord在表尾追加信息display显示信息que_remv_modi.cremoveRecord删除指定的记录findRecord查找指定的记录queryInfo查询指定学生的信息copyRecord复制记录modifyRecord修改指定学生的信息save_loadSave文件存储Load文件读取sor

34、t.csortInfo排序student.h常数提供常数结构说明学生成绩结构库函数及函数原型声明引用库函数及函数6.2.3 函数设计为一些函数设计两个返回值以区分其执行结果是否正确。每个学生信息资料用一个StuInfo结构来保存,用StuInfo数组全局变量records来保存一批学生的信息资料。其中用宏定义INITIAL_SIZE表示数组初始大小,当已经分配的数组大小不够用时,将增加数组的大小,INCR_SIZE为每次增加的大小。全局变量numStus表示数组中记录的学生数,arraySize是为数组分配的空间大小。全局变量saveTag是信息是否已保存的标志,当数组内容被保存到文件后,设为

35、“已保存”状态,当数组内容被修改之后,设为“未保存”状态。下面分别描述这些函数,并建立它们的函数原型。1文件存储操作函数函数原型:int saveRecords(void)功能:将记录存入默认文件stu_info或指定文件参数:void返回值:成功0,失败-1工作方式:数组records被保存至指定文件。要求:报告是否有记录可存,是否能正常建立或打开文件,根据要求执行存入操作并报告存入记录的条数。2文件读取操作函数函数原型:int loadRecords(void)功能:将默认文件stu_info或指定文件里的记录取入内存参数:void返回值:成功0,失败-1工作方式:records将为从指定

36、文件中读取出的记录。要求:报告是否有记录可存,是否能正常打开文件、是否覆盖已有记录以及读取记录的条数。3显示所有学生信息的函数函数原型:void display(void)功能:显示内存里的记录信息参数:void返回值:void工作方式:从头部开始逐个显示记录内容。要求:报告是否有记录及记录条数和内容。4增加信息函数函数原型:void addRecord(void)功能:增加记录参数:void返回值:void工作方式:从尾部开始逐个追加记录。要求:将新记录追加在记录尾部,并对记录进行计数。 5打印表头函数函数原型:void showTable(void)功能:打印表头参数:void返回值:vo

37、id工作方式:输出一行表头信息。要求:将表头按制表符打印要求。6输出在记录中按升序排序的位置函数原型:int getIndex(float sum)功能:找出总分为sum在第0至numStus-1个记录中按升序排序的位置参数:float,欲找出其位置的总分返回值:int,sum在第0至numStus-1个记录中按升序排序的位置工作方式:查找并计数。要求:输出位置整数。7删除记录函数函数原型:void removeRecord(void)功能:删除内存数组中的指定记录参数:void返回值:void工作方式:根据给定的关键字,查找符合的记录并删除。要求:将后面的记录前移,同时改变名次并给出相关信息。8查找指定记录函数函数原型:i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论