版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业课 程 设 计 报 告课程名称 C#程序设计 课题名称 图书管理系统 专 业 信息管理与信息系统 班 级 信管 学 号 姓 名 指导教师 李峰 、赵锦元、谢雅 2015年 6 月 10 日湖南工程学院课 程 设 计 任 务 书课程名称 C#程序设计 课 题 图书管理系统 专业班级 信管1302班 学生姓名 刘洁 学 号 指导老师 李峰 审 批 任务书下达日期 2015 年 6 月 10 日任务完成日期 2015 年 6 月 27 日一、设计内容与设计要求1.课程设计目的
2、:全面熟悉、掌握计算机系统与系统软件基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,增强面向对象程序设计概念,熟悉C+语言编程,养成提供文档资料的习惯和规范编程的思想,为后继课程的实验以及课程设计打下较扎实的基础。进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程(数据结构、数据库和汇编语言等课程)的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的基础。2.课题题目1、学生成绩管理系统 2、职工信息管理系统3、图书管理系统程序系统4、教师工作量统计系统3.设计要求:主
3、要模块1、学生成绩管理系统 具有功能:1、显示统计数据2、查找学生成绩3、修改学生成绩 4、删除学生成绩5、插入学生成绩6、按平均分降序排列7、显示全部学生成绩8、退出本系统2、职工信息管理 具有功能:1、添加信息2、显示统计数据3、查找学生成绩4、 修改信息5、删除信息6、插入信息 7、显示全部信息8、退出本系统3、图书管理系统程序具有功能:1、浏览书籍信息2、修改书籍信息3、统计书记情况4、查询书的基本信息5、录入新书信息4、教师工作量统计系统具有功能:1、输入教师信息 2、查看教师信息 3、清空记录 4、退出程序 课程设计报告规范1、完成系统需求分析:包括系统设计目的与意义;系统功能需求
4、;输入输出的要求。2、完成系统概要设计:程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。3、完成系统详细设计:包括采用C+语言定义相关的数据类型;写出各模块的类C+码算法;画出函数的调用关系图。4、调试分析、设计体会、测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。5、关键源程序(带注释)6、其他1)设计正确,方案合理。2)界面友好,使用方便。3)程序精炼,
5、结构清晰。4)设计报告5000字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。5)实际操作过程中遇到的问题及解决方法:设计总结及心得体会.6)上机演示。二、进度安排第 16 周 星期一 14时:00分星期二 14时:00分 星期四 14时:00分星期五 14时:00分第 17 周 星期一 14时:00分星期二 14时:00分目 录 TOC o 1-3 h z u 1 系统需求分析1.1系统设计目的与意义全面熟悉、掌握计算机系统与系统软件基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手
6、能力,增强面向对象程序设计概念,熟悉C+语言编程,养成提供文档资料的习惯和规范编程的思想,为后继课程的实验以及课程设计打下较扎实的基础。进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程(数据结构、数据库和汇编语言等课程)的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的基础。1.2系统功能需求利用C+语言和access数据库的相关知识设计与开发一个图书管理系统的借书模块、还书模块和图书存储模块,具有读者编号、读者信息、书籍编号、书籍信息的输入功能;可以在数据库中查询和删除所保存的记录;在借书功能里,用户可以通过此功能是否借出检索的书籍,还书功能里,读者可以查看所接书籍
7、信息,并具有退出该系统模块的功能。1.3输入输出要求本系统是一个图书信息管理系统,采用VC+6.0 编译器作为开发环境,这个环境是我们在学习的C+平台。输入数据类型主要是char、int、float等数据类型,输入内容包括:图书编号、图书名、读者编号、读者名等数据。用户在输入图书信息保证输入数据格式的正确性,系统不会自动检测输入的数据是否正确可用。输出形式与输入形式类似,根据需要可以选择显示输入的各项内容,还可以修改、删除、查找、显示所有、保存等功能。2 总体设计2.1总体设计图本管理系统共分为五大功能:分别为借书功能、还书功能、图书维护、读者维护、退出系统,系统设置模块各功能性需求见下表所示
8、由图2.1所示图书管理系统借书还书图书维护读者维护退出系统新增图书图书查询图书删除新增读者读者查询读者删除 图2.1总体设计图 2.2 各函数之间的调用关系该模块完成了图书管理系统中新增图书、查询图书、删除图书信息、借书、还书以及读者信息录入的功能,其中在图书维护模块的功能中,又可实现新增图书、更改图书信息、删除图书、查询图书、显示全部图书、删除全部图书的功能。同样在读者维护模块中也有类似的新增读者、更改读者信息、删除读者、查询读者信息等功能。流程图如图2.2所示。还书图书管理系统借书图书信息处理新增图书更改图书信息删除图书查询图书显示全部图书删除全部图书退出读者信息处理1新增读者更改读者信息
9、删除读者查询读者显示全部读者删除全部读者退出图2.2各函数之间的调用关系2.3 数据结构及数据库数据结构是指同一数据元素类中各数据元素之间存在的关系。数据结构分别为逻辑结构、存储结构和数据的运算。数据的逻辑结构是从具体问题抽象出来的数学模型,是描述数据元素及其关系的数学特性的,有时就把逻辑结构简称为数据结构。而数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。图书管理系统程序利用C+语言编写,定义多个类,数据保存到access数据库实现数据保存和查询。Access数据库中存储了输入的图书信息,读者信息以及图书的借阅情况。2.4 C#语言的简介C#语言是在C、C+和Java基
10、础上重新构造的、语法与C+和Java都比较相似的基于。NET框架支持的一种完全面向对象的、类型安全的编程语言,也是。NET的首选编程语言。从开发效率来讲,C#为应用程序开发人员提供了快速的开发手段,但又不牺牲C+语言的特点和优点。从继承性来讲,C#在更高层次上重新实现了C和C+。从语法形式和易用性来讲,C#几乎综合了目前流行的所有高级语言的优点,提供了一种语法优雅、功能完善而又容易使用的外在表现形式。3 详细设计3.1 采用C+语言定义的相关数据类型C/C+ 数据类型C语言包含5个基本数据类型: void 空类型、int 整型、float 浮点类型、 double 双精度浮点类型、 char
11、字符类型,在图书管理系统这个程序中用到了其中的大多数。同时还用类和对象的方法来定义多个类,在这之前,曾采用结构体的方法来做个,但后来放弃了,因为采用数组或者结构体的方法定义多个事件,那样将会非常繁琐,代码重复比较大,因此,为了简化这些连接操作,在开发时设计个可重用的类,把对数据库的操作都封装在这个类中,需要用到时生成对象调用便可。这样就避免了在出现错误时,为了去修改错误而产生的庞大的工作量。3.2各模块的类C码算法3.2.1采用类建立一个读者类,实现对读者信息的描述 根据课设要求定义一个读者类,在类中,定义了读者的编号、姓名,建立数组来存储读者所借阅的书籍, 同时也建立多个成员函数像 addr
12、eade() 、borrowbook() 、disp()实现新增读者,存储读者借阅信息显示读者信息等功能 class Reader private:int tag; /删除标记 1:已删 0:未删int no; /读者编号char name10; /读者姓名int borbookMaxbor; /所借图书 public:Reader() char *getname() return name; /获取姓名int gettag() return tag; /获取删除标记 int getno() return no; /获取读者编号 void setname(char na) /设置姓名 strc
13、py(name,na);void delbook() tag=1; /设置删除标记 1:已删 0:未删3.2.2建立读者数据库,保存读者个人信息并实现查询功能、删除 在读者数据库中,通过构造函数,将reader.txt(输入的读者个人信息)读到read数组中,通过clear()函数来删除所有读者信息,不过在删除前会先用for循环来对数据库中的数据进行遍历,来查找读者是否存在。通过在析构函数中,将read写到reader.txt文件中,进行读者库的维护class RDatabase private: int top; /读者记录指针 Reader readMaxr; /读者记录public:RD
14、atabase() /构造函数,将reader.txt读到read中Reader s;top=-1;fstream file(reader.txt,ios:in); /打开一个输入文件while (1)file.read(char *)&s,sizeof(s);if (!file)break;top+;readtop=s;file.close(); /关闭 reader.txt 3.2.3建立图书类,实现对图书的描述,图书的编号,书名,借出,还入等同样根据课程设计要求,定义一个图书类,用来存储书籍的编号、名称,以及是否借阅的信息,通过delbook()、addbook()、borrowbook
15、()、retbook()等函数来实现对图书的删除、增加、是否借阅和还书信息的记录class Bookprivate: int tag; /删除标记 1:已删 0:未删int no; /图书编号char name20; /书名int onshelf; /是否再架 1:再架 2:已借public:Book()char *getname() return name; /获取姓名int getno() return no; /获取图书编号int gettag() return tag; /获取删除标3.2.4建立图书数据库,实现对图书的维护,查找,删除等同样在图书数据库中,也是通过构造函数,将read
16、er.txt(输入的图书信息)读到read数组中,通过clear()函数来删除所有图书信息,不过在删除前会先用for循环来对数据库中的数据进行遍历,来查找图书是否存在。通过在析构函数中,将read写到reader.txt文件中,进行图书库的维护class BDatabaseprivate: int top; /图书记录指针Book bookMaxb; /图书记录public:BDatabase()/构造函数,将book.txt读到book中 Book b;top=-1;fstream file(book.txt,ios:in);while (1)file.read(char *)&b,size
17、of(b);if (!file) break;top+;booktop=b;file.close();3.2.5系统目录的设置 根据课程设计的要求,系统目录设置为五个模块,第一个模块,借书模块;第二个模块,还书模块;第三个模块,图书维护模块;第四个模块,读者维护模块;第五个模块,退出系统。这五个模块简明而有效地实现了图书管理、读者管理、借阅功能,同时也实现了界面友好。cout endlendlttt欢迎使用图书管理系统n;cout endlendl1借书tttt 2还书n;cout endlendl3图书维护ttt 4读者维护n;cout endlendl0.退出n;cout endlendl
18、 choice;4系统调试与结果4.1程序运行结果 程序开始的主界面,分为借书还书,图书维护,读者维护。在程序开始执行时要先选择3图书维护,然后选择4进行读者维护 图4.1.1主界面进行图书维护、新增图书,按要求输入图书编号,图书名 图4.1.2新增图书输入5可以显示所增加的书籍 图4.1.3显示所增书籍输入2按要求即可修改书籍信息 图4.1.4更改图书信息其他操作均按照界面中的要求来运行,对于读者系统的操作也同图书系统一样 图4.1.5新增读者借书只需输入读者编码和图书编码 图4.1.6借书模块在借了书后,图书管理系统中将会记录借阅信息 图4.1.7借阅记录同样还书的方式也与借书一样 图4.
19、1.8还书模块 图4.1.9还书后图书属性4.2调试中出现的问题(1)在开始程序运行的时候,输入读者编号输入的是字母结果导致程序死循环,后来经过多次运行发现在读者编号不能用字母,只能用数字,因为我最初定义读者编号时是定义的整形。(2)由于刚开始时出现了输入读者编号出现死循环的错误,我又试了一下,同样在图书管理模块中图书编号也必须是输入数字才能运行。还有为了更好的使用循环,设计了for语句,结果不能执行,最后无奈只能使用函数系统另加函数,在主函数里调用。(3)上机操作调试程序额的时候,发现了许多由于自己的粗心写错了单词,比如void写成了viod,还有粗心将private写成了privacy,调
20、试的时候总是出现错误,后面一看才知道是自己的粗心造成的呀,还有就是有时候少些了分号或只打了半边括号,定义图书的时候忘了一项书号,结果最后无法输入,在打开文件的时候fp写错,经过很多的调试没成功,这也是个粗心错误。作为一个学计算机的,这种错误以后得避免才行,不然小粗心会造成自己以后编程中的大问题!(4)由于该系统程序的开发过程比较细致和复杂,需用到的各方面的知识都比较多,而初学者对学习特别是其中指针、数组和链表及输入流与输出流等比较陌生,且难以灵活运用,因而我们团队在整个开发过程经历一段很长的时间,且难以让其一次性地准确地调试和运行。(5)由于在程序中大量的使用switch语句,有时候输入相应的
21、指令却没有得到需要的结果,是因为在写case时没有写break语句,导致程序运行后得不到想要的结果。至于少加“;”的问题就不列举了5 使用说明 (1)运行程序到系统界面,先输入3进行图书维护或者输入4读者维护,然后按界面要求输入1新增图书和新增读者。一定要先输入图书信息和读者信息才能够进行借书、还书等其他操作。(2)如果需要更改、删除图书信息或者读者信息,可以在图书维护和读者维护中操作。(3)按0返回系统界面,之后可按需求进行借书还书操作,借书还书只需要记得图书编号和读者自身编号即可,图书编号与读者编号都可在图书维护和读者维护中查询到。(4)如果不记得自身的读者编号,可以在读者维护模块中通过姓
22、名查询的方式查询到,同样,不记得要借的书籍的图书编号,也可以在图书维护模块中通过图书名的方式查询到。同时,在图书维护模块中的显示功能里,可以了解到存储在数据库中的所有书籍和他们的编号。6 心得体会 通过这次课程设计,我深刻体会到这门课程并不是轻而易举就可也学好的,学习这门课程不仅需要细心严谨的态度,还需要充分发挥我们的想象力,让理论和实践充分的结合在一起,才能达到事半功倍的效果。细节决定成败这句话在程序设计中最恰当不过了,因为一个小小的错误代码就可以使你的整个的程序无法进行,有时候绞尽脑汁也没能找出错误所在,只好老老实实的从新进行编写工作。所以课程不仅理论性强,实际操作性更强,没有一个好的心态
23、很难学好这门课程。我们学习的不仅是科学的方法,还包括用什么样的态度去对待这门课程,并且让自理论性和实践性在自身得到充分的发挥,用细心严谨的态度去认识事物。在课程设计过程中,我们每个人选择一个课题,认真研究,根据课堂讲授内容,借助书本,自己动手实践。这样不但有助于我们消化课堂所讲解的内容,还可以增强我们的独立思考能力和动手能力;通过编写实验代码和调试运行,我们可以逐步积累调试C#程序的经验并逐渐培养我们的编程能力、用计算机解决实际问题的能力。通过这次课程设计使我充分的了解了对类和对象中基本原理的应用,知道了类对象的定义关系方法,同时也学会了编写简单的带有成员函数的程序。虽然此次的程序不是很完备,
24、但是总体还是一个比较能体现类和对象知识点能力的程序,当然只是相对于我这个初学者来说。通过这次的C#课程设计,我也深刻了解到这门学问的博大精深,要积极进取,不断学习,不断积累知识。同时也认识到自己的不足和缺点,做什么事都需要细心和耐心,并坚持下去,这样才还有一个比较满意的成果. 实践出真知,通过亲自动手,使我们掌握的知识不再是纸上谈兵。课程设计是一个把需求分析、程序编写、程序调试、撰写报告结合为一体的过程。在这个过程中,不仅锻炼了我们缜密的思维和坚持不解的毅力,更磨练了一个队伍的团结互助的精神。只有通过大家一起努力才能将课程设计的所有环节都顺利的完成。另外程序设计中我们遇到问题并解决问题的过程,
25、使得我们独自探索并解决问题的能力了有了一个提高,这有利于我们以后的学习。同时这整一个过程,也使我们对程序编写的整个过程有了一个统筹全局的思想,因为需求分析、程序编写、程序调试、撰写报告这些过程是环环相扣的,绝对不可能独立进行。课程设计是一个重要的教学环节。我们在一般情况下都能够重视实验环节,但是容易忽略实验的总结,忽略实验报告的撰写。通过这次实验让我们明白:作为一名大学生必须严格训练分析总结能力、书面表达能力。需要逐步培养书写科学实验报告以及科技论文的能力。只有这样,我们的综合素质才会有好的提高。7附录7.1源代码#include #include #include #include /输入/
26、输出文件流类using namespace std;const int Maxr=100; /最多的读者const int Maxb=100; /最多的图书const int Maxbor=5; /每位读者最多借五本书class Reader private:int tag; /删除标记 1:已删 0:未删int no; /读者编号char name10; /读者姓名int borbookMaxbor; /所借图书 public:Reader() char *getname() return name; /获取姓名int gettag() return tag; /获取删除标记 int get
27、no() return no; /获取读者编号 void setname(char na) /设置姓名 strcpy(name,na);void delbook() tag=1; /设置删除标记 1:已删 0:未删void addreader(int n,char *na) /增加读者 tag=0;no=n;strcpy(name,na);for(int i=0;iMaxbor;i+)borbooki=0;void borrowbook(int bookid) /借书操作for(int i=0;iMaxbor;i+) if (borbooki=0)borbooki=bookid;return;
28、int retbook(int bookid)/还书操作 for(int i=0;iMaxbor;i+) if(borbooki=bookid)borbooki=0;return 1;return 0;void disp() /读出读者信息 cout setw(5) no setw(10) name借书编号:;for(int i=0;iMaxbor;i+)if(borbooki!=0)cout borbooki |;cout endl;class RDatabase private: int top; /读者记录指针 Reader readMaxr; /读者记录public:RDatabase
29、() /构造函数,将reader.txt读到read中Reader s;top=-1;fstream file(reader.txt,ios:in); /打开一个输入文件while (1)file.read(char *)&s,sizeof(s);if (!file)break;top+;readtop=s;file.close(); /关闭 reader.txt void clear() /删除所有读者信息top=-1;int addreader(int n,char *na) /添加读者时先查找是否存在Reader *p=query(n);if (p=NULL) top+; readtop
30、.addreader(n,na); return 1;return 0;Reader *query(int readerid) /按编号查找for (int i=0;i=top;i+)if (readi.getno()=readerid & readi.gettag()=0)return &readi;return NULL;void disp() /输出所有读者信息 for (int i=0;i=top;i+) readi.disp();void readerdata(); /读者库维护RDatabase() /析构函数,将read写到reader.txt文件中fstream file(re
31、ader.txt,ios:out); for (int i=0;i=top;i+)if (readi.gettag()=0)file.write(char *)&readi,sizeof(readi);file.close();void RDatabase:readerdata() char choice;char rname20;int readerid;Reader *r;while (choice!=0)cout 读者维护:t1新增t2更改t3删除t4查找t5显示t6全删t0退出 choice;switch (choice) case 1:cout readerid;cout rname
32、;addreader (readerid,rname);break; case 2:cout readerid;r=query(readerid);if (r=NULL)cout 该读者不存在 endl; break;cout rname;r-setname(rname); break; case 3: cout readerid;r=query(readerid);if (r=NULL) cout 该读者不存在 delbook();break;case 4:cout readerid;r=query(readerid);if (r=NULL)cout 该读者不存在disp();break;c
33、ase 5:disp();break;case 6:clear();break;default:cout输入错误,请从新输入:;break;class Bookprivate: int tag; /删除标记 1:已删 0:未删int no; /图书编号char name20; /书名int onshelf; /是否再架 1:再架 2:已借public:Book()char *getname() return name; /获取姓名int getno() return no; /获取图书编号int gettag() return tag; /获取删除标记void setname(char na)
34、 /设置书名strcpy(name,na);void delbook() tag=1; /删除图书void addbook(int n,char *na ) /增加图书tag=0;no=n;strcpy(name,na);onshelf=1;int borrowbook() /借书操作if (onshelf=1)onshelf=0;return 1;return 0;void retbook() /还书操作onshelf=1;void disp() /输出图书cout setw(6) no setw(18) name setw(10)(onshelf=1? 在架:已借) endl;class
35、BDatabaseprivate: int top; /图书记录指针Book bookMaxb; /图书记录public:BDatabase()/构造函数,将book.txt读到book中 Book b;top=-1;fstream file(book.txt,ios:in);while (1)file.read(char *)&b,sizeof(b);if (!file) break;top+;booktop=b;file.close(); void clear() /全删top=-1; int addbook(int n,char *na) /增加图书Book *p=query(n);if
36、 (NULL=p)top+;booktop.addbook(n,na);return 1;return 0;Book *query(int bookid) /查找图书for (int i=0;i=top;i+)if (booki.getno()=bookid &booki.gettag()=0)return &booki;return NULL;void bookdata(); /图书库维护void disp() for (int i=0;i=top;i+) if (booki.gettag()=0) booki.disp();BDatabase() /析构函数,将book写到book.txt
37、文件中fstream file(book.txt,ios:out); for (int i=0;i=top;i+)if (booki.gettag()=0)file.write(char *)&booki,sizeof(booki);file.close();void BDatabase:bookdata() char choice;char bname40;int bookid;Book *b;while (choice!=0)cout 图书维护:t1新增t2更改t3删除t4查找t5显示t6全删t0退出 choice;switch (choice) case 1:cout 输入图书编号: bookid; cout 输入图书书名: bname;addbook(bookid,bname);break; case 2:cout 输入图书编号: bookid;b=query(bookid);if (b=NULL)cout 该图书不存在 endl; break;cout 输入新的书名: bname;b-setname(bname); break; case 3: cout 读入图书编号: booki
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 某电子厂来料检验细则
- 2026年10月梅岭街道锦旺社区招聘临时性公益性岗位2人考试模拟试题及答案解析
- 2027国家林业和草原局直属单位公开招聘应届毕业生282人(黑龙江19人)考试参考题库及答案解析
- 2026河北唐山弘慈医院招聘工作人员13名考试备考试题及答案解析
- 2026年10月广东珠海市教育局招聘直属学校事业编制教师178人考试参考题库及答案解析
- 2026天津市排球运动管理中心招聘高层次人才、急需紧缺人才2人笔试参考题库及答案解析
- 2026福建福州市江南智慧城市建设运营有限公司招聘3人笔试备考题库及答案解析
- 中国医学科学院基础医学研究所 北京协和医学院基础学院派遣人员招聘8人笔试备考题库及答案解析
- 2026年户外床行业洞察报告及未来五至十年发展趋势报告
- 2026年棕制品制造行业市场深度调研报告及未来五至十年技术路径与产业化前景
- 企业融资申请书范本及填写指南
- 藏羌碉楼营造技艺传承-洞察及研究
- DB35∕T 1036-2023 10kV及以下电力用户业扩工程技术规范
- 河北食品经营许可现场核查表及核查意见(食品销售)
- 数字智慧方案5445丨企业碳资产管理案例分享北京环境交
- 《奶牛的饲养管理》课件
- 中国文化概论教学课件
- 冷库储存生姜合同范例
- 气管切开套管的选择与更换
- GB/T 9799-2024金属及其他无机覆盖层钢铁上经过处理的锌电镀层
- 半球电压力锅说明书
评论
0/150
提交评论