火车票管理系统——C语言程序设计实训报告

上传人:小*** 文档编号:145436675 上传时间:2022-08-29 格式:DOCX 页数:27 大小:255.75KB
收藏 版权申诉 举报 下载
火车票管理系统——C语言程序设计实训报告_第1页
第1页 / 共27页
火车票管理系统——C语言程序设计实训报告_第2页
第2页 / 共27页
资源描述:

《火车票管理系统——C语言程序设计实训报告》由会员分享,可在线阅读,更多相关《火车票管理系统——C语言程序设计实训报告(27页珍藏版)》请在装配图网上搜索。

1、实训报告C语言程序设计题 目: 学生成绩管理系统院 系: 信息科技学院专 业: 计算机科学与技术姓 名: 何荣荣学 号: 1751200204指导教师: 王小琼日 期: 2022年6月28日 桂林电子科技大学信息科技学院前 言课程设计环节是应用型本科院校非常重要的一个教学环节,是学完一门课后应用本课知识及以前的知识积累而进行的综合性、开放性的训练。通过课程设计,不仅能够使学生得到系统的技能训练,稳固和加强所学得专业理论知识,而且能够培养学生工程意识、创新能力、团队精神等综合素质,培养学生的设计能力和解决实际问题的能力。C语言由于其强大的功能,丰富的表达能力,高效的代码,良好的移植性和灵活性,自

2、1972年问世以来,经久不衰,即使现在出现了面向对象的程序设计方法和开发工具,但它仍然是人们学习程序设计的首选语言,用它训练和提高编程技术,以及开发应用程序等。我们通过?C语言程序设计?这门课程的学习,已经能编写解决小问题的程序,对程序的开发也有了初步的认识,还掌握了C 语言的根本语法,这一过程确确实实令我们感到欣喜,有点计算机可以完成自我任务的成就感。但是,对于程序设计而言,学习C 的步伐不应该停留于此。我们最终的目的应该是掌握开发大型综合程序的方法,即遵循软件工程的开发步骤和结构化程序设计思想,用C 语言开发出解决复杂问题的大型综合程序。可是对于多数学生来说,学习了C语言后,除了应付各种考

3、试之外,别无它用,对Turbo C语言丰富的函数知之甚少,加上DOS环境所限,因而对C语言兴趣不大,也感到C语言比拟难以掌握。本实训就是为了让学生在学完C语言后进一步了解C语言的知识,掌握C语言在软件开发方面的使用方法,希望通过此次实训,不仅能提高学生学习C语言的兴趣,更为今后学习其它专业知识及开发程序打下坚实的根底。本指导书中有些内容借鉴了互联网上相关程序的设计思想,在此对相关者表示衷心的感谢。由于时间、经验及水平的原因,不当、缺乏之处,请大家提出珍贵意见。编者目录1、问题定义42、系统设计421 总体设计422 详细设计73、程序测试84、详细程序145、归纳总结2651 开发经验2652

4、 实训中遇到的问题及解决方法2653 感想和心得体会276、参考资料27火车票管理系统此题目设计目的是训练学生的根本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和单链表的各种根本操作。本程序中涉及字符数组的使用、字符指针的使用、数据库的设计和文件使用等方面的知识。通过本程序的训练,使学生能对C语言的文件操作有一个更深刻的了解,掌握利用单链表存储结构实现对学生成绩管理的原理,为进一步开发出高质量的管理信息系统打下坚实的根底。1、问题定义该系统要求实现一个简单、实用的火车票管理程序,主要功能包括火车票数据的录入、查找、删除、显示、售票、退票等。所有火车票数据都要利用文件系统保存,以备系统

5、下次运行时使用。通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些根本算法思想的应用。本火车票管理系统应该具备如下功能:1) 录入班次:车次信息包括:班次、发车时间、起点站、终点站、行车时间、额定载量、已售票)2) 显示所有班次3) 查询班次4) 增加班次5) 售票6) 退票7) 修改班次8) 退票删除班次9) 退出2、系统设计21 总体设计采用模块化的程序设计方法,即将较大的任务按照一定的原那么分为一个个较小的任务,然后分别设计各个小任务。需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。可以用模块化层次结构图即模块图来分析其任务的划分,一般从上到下进行,最上面一层是主模块,

6、下面各层是其上一层模块的逐步细化描述。1调用录入班次6调用退票5调用售票4调用增加班次2调用显示所有班次3调用查询班次9调用退出8调用删除班次7调用修改班次火车票信息管理系统调用主菜单项选择项完成功能后返回主菜单车票管理系统软件的功能模块有:1提供菜单界面,方便用户对程序个功能进行选择,选择要实现的功能按enter键进入该功能。2接受用户输入的功能项,按enter键结束输入并将进入该系统,其需要的结果显示出来,方便用户查看。3完成每次功能,可保存用户的修改的信息,及时更新文件信息。下次查询时内容为最新信息。实时的信息更新比照等。一个名TICKET的结构体进行定义,包括num10 hour3;

7、min3 from10; to10; hours max; now;等结构体成员。然后对调用函数进行定义。int system_time()系统时间void NewMessage()新纪录录入函数void ShowTable1() void ShowTable2(int i) 线框调用1和2不用每次输void Display()显示所有函数void add()增加记录void save()保存函数void save()保存函数void load()按班次查询函数void search()查询函数void change()修改函数void quit()退出函数void Ticketorder()

8、售票函数void Ticketdelete()删除函数int menu_select()菜单函数int whether(int)判断时间是否超出函数void find(char s1,char s2)查询函数/s1为班次/s2为终点站void deletemessage()删除函数int findnum(char s1)班次查询函数void get(int,int)修改及增加班次char *menu菜单函数。该系统将这些信息均放在文件d:车票管理系统0中。最后定义main()函数,利用函数调用,实现程序的各种功能。将其放在系统文件d: 车票管理系统0中。程序分为多个小模块,通过调用实现各种功能

9、,增强了程序的可建设性。程序把每种功能分开实现,更简单,实用程序更易理解。22 详细设计主控main()函数执行流程判断键值,调用相应函数,完成相应功能开始登录,确定访问权限输入09中的一个数值,选择相应操作,并选择判断输入值结束否是登录框主界面选择窗口图2.2 主控函数执行流程图3、程序测试3.0菜单界面图3-0 菜单界面如上图所示,该程序为用户提供菜单界面,用户可以对程序的各种功能进行选择,方便用户使用。选择1-9并按enter键进行操作。如选择出错,系统将提出警告,并提醒用户重新进行选择。3.1 录入班次功能图3-1输入时的界面如上图所示,该功能实现录入班次信息。选择1按enter键进入

10、该功能,程序提醒用户输入车次.发车时间.起始站.终点站.行车时间.额定载量.已售票数,输入完毕后按enter键将完成录入班次结果,同时程序将再次提醒用户进行新的选择。3.2显示所有班次图3-2查询班次界面可以显示所有录入的信息。3.3查询所有班次功能图3-3选择查询方式的界面该功能将实现程序运行班次的查询。选择3并按enter键将实现该功能。分班次和终点站两种方式查询。3.4增加班次功能图3-4增加班次界面该功能将增加班次信息,帮助用户更新班次信息。选择4并按enter键将实现该功能,再按提示输入就行。按任意键返回主菜单。3.5售票功能图3-5-1选择售票功能界面图3-3-2订票的界面选择5按

11、enter键实现该功能,按任意键关闭程序。买票程序可提示买票成功否,且自动判断是否可卖。3.6退票功能图3-6退票界面选择6按enter键实现该功能,按任意键关闭程序。退票程序可提示退票成功否,且自动判断是否可退。3.7 修改班次功能图3-7修改界面选择7按enter键实现该功能,按任意键关闭程序。按提示操作修改班次。3.8 删除班次功能图3-8删除界面3.9 退出功能图3-9退出界面该功能可退出系统,选择9按enter键实现该功能4、详细程序#include /宏定义函数#include /字符串操作及内存操作函数#include /调用系统函数#include /时间库函数 #includ

12、e /输入输出函数#define N 1000 /宏定义多条记录typedef struct TICKET /定义新结构体TICKETchar num10; /车次编号char hour3; /时间:小时char min3; /时间:分钟char from10; /起始站char to10; /终点站float hours; /车程实际时间int max; /最大车载容量int now; /已售票数CLASS;int class_num=0; /初始班次总数为0 CLASS recordsN; / 多条记录int system_time(); /系统时间void NewMessage(); /

13、新纪录*录入函数*void ShowTable1(); /线框调用1,不用每次输 void ShowTable2(int i); /线框调用2,不用每次输 void Display(); /显示所有函数void add(); /增加记录void save(); /保存函数void load(); /按班次查询函数void search(); /查询函数void change(); /修改函数*void quit(); /退出函数*void Ticketorder(); /售票函数*void Ticketdelete(); /删除函数*int menu_select(); /菜单函数*int w

14、hether(int); /判断时间是否超出函数*void find(char s1,char s2); /查询函数/s1为班次/s2为终点站void deletemessage(); /删除函数int findnum(char s1); /班次查询函数void get(int,int); /修改及增加班次*char *menu=*欢送使用火车票查询系统*,n*1751200204 何荣荣*,n*MENU功能菜单*,n 1. 录入班次 ,n 2. 显示所有班次 ,n 3. 查询班次 ,n 4. 增加班次 ,n 5. 售票 ,n 6. 退票 ,n 7. 修改班次 ,n 8. 删除班次 ,n 9.

15、 退出 ;/*主函数*/void main()while(1) /菜单函数循环switch(menu_select() /菜单函数*case 1: NewMessage();break; /新纪录*录入函数*case 2: Display();break; /显示函数*case 3: search();break; /查找函数*case 4: add();break; /增加记录*case 5: Ticketorder();break; /*售票函数*case 6: Ticketdelete();break; /退票删除函数*case 7: change();break; /修改函数*case

16、 8: deletemessage();break; /选择调用删除函数case 9: quit();break; /退出函数*/*菜单函数*/int menu_select() /菜单函数*char s5; /定义要输入的数字功能int c,i; for(i=0;i11;i+)printf(%s,menui); /输出菜单各项 i=0; while(c9) /判断是否是1到9的命令printf(n); /输出换行 printf(*); printf(n请选择(1-9):);scanf(%s,s);c=atoi(s); /atoi将字符串转换成一个整数值 /输出菜单面return c; /返回

17、请求 /*录入函数*/void NewMessage() /*录入函数* int i=0,j=5,h;char s5;FILE *fp; /定义文件型指针变量if(fp=fopen(d:车票管理系统0.dat,rb)!=NULL) /fopen翻开文件 printf(车票信息已经存在请选择4增加功能!n);printf(任意输入那么返回菜单n);scanf(%s,s);i=1; /通过是1if(i=0) printf(请输入要录入班次总数:n);scanf(%d,&class_num); /指向班次指针for(i=0;iclass_num;i+) printf(请输入第%d个班次信息:n,i+

18、1);h=-1;for(;h!=i;) /循环输出printf(请输入班次:n);scanf(%s,recordsi.num);for(h=0;hi;h+)if(strcmp(recordsh.num,recordsi.num)=0) /判断字符串比拟是否相等, 待比拟的字符串 printf(输入错误!该班次已存在!n);break; /返回get(i,j); /修改及增加班次*j=5;save(); /调用保存函数/*显示所有函数*/void Display() /显示所有函数int i,j;load(); / 调用按班次查询函数ShowTable1(); /线框调用1,不用每次输 for(

19、i=0,j=0;iclass_num;i+,j+=2) /按班次顺序输出 printf(n|-|-|-|-|-|-|-|n);if(whether(i) /判断时间是否超出函数*printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.hour,recordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);else printf(|%10s| 已发车 |%10s|%10s|%8.1f|%8d|%8d|,records

20、i.num,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);ShowTable2(j); /线框调用2printf(n按任意键继续.n);getch(); /从控制台读取一个字符,但不显示在屏幕上/*打印表头*/void ShowTable1() /线框调用1,不用每次输int i=2;printf(*MESSAGE车程信息*n);printf(n|-|-|-|-|-|-|-|n); printf(n| 班次 | 发车时间 | 起点站 | 终点站 |行车时间|额定载量| 已售票 |n);/*打印表尾*/vo

21、id ShowTable2(int i) /线框调用2,不用每次输。printf(n|-|-|-|-|-|-|-|n);/*查找函数11*/void search() /查询调用int i;char s110=0,s210=0;printf(1. 按班次查询n);printf(2. 按终点站查询n);printf(3. 退出n);printf(请选择(1-3):n);scanf(%d,&i);load(); / 调用按班次查询函数switch(i) /多分枝选择语句 case 1: printf(请输入要查询的班次:n); /s1为班次scanf(%s,s1);find(s1,s2); /调用

22、查找函数222 2 break;case 2:printf(请输入要查询终点站:n); /s2为终点站scanf(%s,s2);find(s1,s2); /调用查找函数222 2 break; case 3: break;default : printf(输入错误!n);break;printf(按任意键继续.n);getch(); /从控制台读取一个字符,但不显示在屏幕上/*查询函数22*/void find(char s1,char s2)int i,h=0,m;ShowTable1(); /调用线框1if(s20=0)m=1; /1为无条件执行else m=0;for(i=0;iclas

23、s_num;i+)if(strcmp(s1,recordsi.num)=0|strcmp(s2,recordsi.to)=0) /判断字符串比拟是否相等, 待比拟的字符串 printf(n|-|-|-|-|-|-|-|n);printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.hour,recordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);h+=2;if(m=1)break;ShowTable2(h);

24、/调用线框2if(h=0)printf(要查找的班次不存在!n);/*增加函数*/void add() / /增加记录int i,j=5;load(); / 调用按班次查询函数printf(1. 增加班次n);printf(2. 返回n);printf(请选择(1-2)n);scanf(%d,&i);if(i=1)printf(1. 请输入要增加的班次:n);scanf(%s,recordsclass_num.num);for(i=0;iclass_num;i+)if(strcmp(recordsclass_num.num,recordsi.num)=0)/判断字符串比拟是否相等, 待比拟的字

25、符串 判断车次没重复 printf(输入错误!n);getch(); /从控制台读取一个字符,但不显示在屏幕上break;if(i=class_num) get(i,j); /修改及增加班次*class_num+; /使班次数加1save(); /调用保存函数/*售票函数*/void Ticketorder() /*售票函数*int i;char num10;printf(1. 售票n);printf(2. 返回n);printf(请选择(1-2):n);scanf(%d,&i);if(i=1)load(); / 调用按班次查询函数search(); /查找函数*printf(请输入要订票的班

26、次(假设无请输入0):n);scanf(%s,num);for(i=0;irecordsi.now&whether(i)=1) /判断时间是否超出函数*并且*没超出最大客量recordsi.now+; /使已售的printf(通向%s班次为%s的票订票成功!n,recordsi.to,recordsi.num);save(); /调用保存函数getch(); /从控制台读取一个字符,但不显示在屏幕上break;elseprintf(该班次已满或已发出!n);getch(); /从控制台读取一个字符,但不显示在屏幕上/*退票删除函数*/void Ticketdelete() /删除函数*int

27、i;char num10;printf(1. 退票n);printf(2. 返回n);printf(请选择(1-2)n:);scanf(%d,&i);if(i=1)load(); / 调用按班次查询函数printf(请输入要退票的班次:n);scanf(%s,num);i=findnum(num); /调用班次查询函数if(strcmp(num,recordsi.num)=0) /判断字符串比拟是否相等 待比拟的字符串 if(whether(i) /判断时间是否超出函数*printf(确定(Y/N)?);scanf(%s,num);if(num0=y|num0=Y) recordsi.now-

28、; /使已售票加1printf(退票成功!n);save(); /调用保存函数getch(); /从控制台读取一个字符,但不显示在屏幕上elseprintf(该班车已发出,无法退票!n);getch(); /从控制台读取一个字符,但不显示在屏幕上if(i=class_num)printf(输入错误!n);getch(); /从控制台读取一个字符,但不显示在屏幕上/*修改函数*/void change() /修改函数*char num10,s10;int h=0,j=13,i;load(); / 调用按班次查询函数printf(请输入要修改的班次:n);scanf(%s,num);i=findn

29、um(num); /调用班次查询函数 if(i=class_num)printf(输入错误,无此班次!n);getch(); /从控制台读取一个字符,但不显示在屏幕上elseprintf(确定修改(Y/N)?n);scanf(%s,s);if(s0=y|s0=Y)get(i,j); /修改及增加班次*save(); /调用保存函数/*删除函数*/void deletemessage() /删除班次信息int i,h=0;char num10;printf(1. 删除班次n);printf(2. 返回n);printf(请选择(1-2):n);scanf(%d,&i);if(i=1)printf

30、(请输入要删除的班次:n);scanf(%s,num);i=findnum(num); /调用班次查询函数if(i=class_num)printf(输入错误,无此班次!n);getch(); /从控制台读取一个字符,但不显示在屏幕上elseprintf(确定?(y/n)n);scanf(%s,num);if(num0=y|num0=Y)for(;iclass_num-1;i+) recordsi=recordsi+1;class_num-; /班次总数减1save(); /调用保存函数printf(删除成功!n);getch();/*按班次查询函数*/int findnum(char s1)

31、 /查找班次 int i,h=0;ShowTable1(); /线框调用1,不用每次输 for(i=0;iclass_num;i+)if(strcmp(s1,recordsi.num)=0) /判断字符串比拟是否相等,如果符合那么输出车次等信息 printf(|-|-|-|-|-|-|-|n);printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.hour,recordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.no

32、w);h+=2; /加2使输出的框架适宜break;ShowTable2(h); /调用框架2return i;/*保存函数*/void save() /保存函数FILE *fp1,*fp2; /文件行指针if(fp1=fopen(d:车票管理系统.dat,wb)=NULL) /翻开文件、为输出翻开一个二进制文件printf(文件翻开错误!n);exit(0); /程序正常退出if(fp2=fopen(d:车票管理系统0.dat,wb)=NULL) /翻开文件、为输出翻开一个二进制文件printf(文件翻开错误!n);exit(0); /程序正常退出fwrite(&class_num,size

33、of(int),1,fp2); /写入文件信息fwrite(records,sizeof(CLASS),class_num,fp1);fclose(fp1);fclose(fp2); /关闭文件/*按班次查询函数*/void load() /按班次查询函数FILE *fp1,*fp2;if(fp1=fopen(d:车票管理系统.dat,rb)=NULL)printf(文件翻开错误!n);getch(); /从控制台读取一个字符,但不显示在屏幕上 exit(0); /程序正常退出if(fp2=fopen(d:车票管理系统0.dat,rb)=NULL)printf(文件翻开错误!n);getch(

34、); /从控制台读取一个字符,但不显示在屏幕上 exit(0); /程序正常退出fread(&class_num,sizeof(int),1,fp2); /读入信息fread(records,sizeof(CLASS),class_num,fp1);/读入信息fclose(fp1);fclose(fp2); /文件关闭/*修改及增加班次*/void get(int i,int j) / 修改及增加班次* for(;)printf(请输入发车时间(xx xx)n);scanf(%s%s,recordsi.hour,recordsi.min);if(atoi(recordsi.hour)=0)&(

35、atoi(recordsi.min)=0)break;elseprintf(输入错误!n);getch(); /从控制台读取一个字符,但不显示在屏幕上printf(请输入起点站:n);scanf(%s,recordsi.from);printf(请输入终点站:n);scanf(%s,recordsi.to);printf(请输入行车时间:n);scanf(%f,&recordsi.hours);printf(请输入额定载量:n);scanf(%d,&recordsi.max);for(;)printf(请输入已售票数:n);scanf(%d,&recordsi.now);if(recordsi

36、.nowtm_hourtm_hour=atoi(recordsi.hour)&local-tm_minatoi(recordsi.min) /atoi将字符串转换成一个整数值return 1; else return 0;/*退出函数*/void quit() /退出函数*char s5; printf(确认退出?(Y/N)n);scanf(%s,s);if(s0=y|s0=Y)exit(0); /程序中止执行,返回调用过程.state 0-正常中止非0-非正常5、归纳总结51 开发经验通过对此题目的开发,体会到要掌握以下几点内容很重要:1. 大程序的设计风格。按“自顶向下,逐步细化,模块化的

37、方法进行程序设计。2. 编写主函数,并进行测试与调试。当被调函数又需要调用其他函数时,也要遵循逐步细化的原那么。C语言提供丰富的库函数,编程序时要善于使用库函数,防止不必要的劳动。3. 文件使用方法。文件使用完毕后应及时关闭。4. 函数的定义应明确内容。5. 主函数良好的调用会使代码更美观。52 实训中遇到的问题及解决方法在这次的实训中,主要遇到的问题是fread(&class_num,sizeof(int),1,fp2); /读入信息fread(records,sizeof(CLASS),class_num,fp1); /读入信息对文件的读入信息不理解,导致编码当初省去这部,使输出异常,然后

38、百度才知道需要添加函数fread()是读取num个对象(每个对象大小为size(大小)指定的字节数),并把它们替换到由buffer(缓冲区)指定的数组. 数据来自给出的输入流. 函数的返回值是读取的内容数量.的意思打代码过程中,其实重复利用了很多数据,很容易急躁,幸好有学长的指点,让我们活学活用,自己定义一个新的函数,然后后面需要就直接调用就好了。53 感想和心得体会通过将近两周的程序设计实习,我首先认识到自己编程水平的有限,还要当初有学好C语言这么课程,其次我也意识到编程是件很严谨的工作,一点点小的错误都会引起不可想象的连锁反响。实践出真知,我觉得这两个星期的学习,自己收获很大,对我自己来说

39、也是一种锻炼,不仅在一定程度上增长了我对编程的认识,我也学会了团队合作,学会了坐冷板凳一行一行敲代码。当然,我自己身上依然存在着不少的问题。比方对于一些难懂的代码,还是参考了网上的程序,比方录入数据的时候一开始不知道怎么让各组信息整齐地排列,以及如何完美的输入输出等。我们大学生学编程,实践真的是很好的方式,我非常感谢学校给我们安排这样一次珍贵的实习时机,让我们第一次面对问题、解决问题,在实战中真正地提高了自己对编程的理解和编程的能力,真心希望学校多给我们提供这样书本之外的考核和锻炼。指导老师王老师对我们的严格要求是我们更加努力完成作业,提高自己的打代码水平,并努力真正的成为计算机专业的技术性人才,再次真的非常感谢王老师的鼓励教导!6、参考资料1 谭浩强 C程序设计教程 北京 高等教育出版社 19922 耿国华 高级程序设计技术C语言版西安电子科技大学出版社 20223 王骞、陈宇、管马舟 程序设计经典300例4 Andrew Koenig Andrew Koenig ?C陷阱与缺陷?5 Brian W. Kernighan、Dennis M. Ritchie C程序设计语言 第2版新版

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!