版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上C+程序设计课程设计报告学生选修课程系统设计一、需求分析计算机技术作为信息化的核心技术受到全社会的普遍重视。如今,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。深入掌握计算机专业知识、具有良好系统设计与分析能力的计算机高级专业人才在社会上深受欢迎。而系统设计与分析能力的培养需要通过实践训练才能获得。通过计算机对一些系统的管理已经成为一种系统、便捷的方式。本课程设计就是用C+设计学生选课系统的问题,实现对学生选课的管理操作。本课程设计的目的是设计一个学生选修课程系统的程序,用来实现对学生成绩的管理,其中包括学生信息的文件读入、添
2、加、查询、保存、删除以及相应的课程信息管理。程序设计了两个类,其中一个包含学生的学号、姓名、选课数以及选修总学分,另一个则包含了课程的信息,包括课程编号、课程名称、课程性质、课时等等。然后通过数组、向量、集合等来实现学生选课信息的记录、保存,删除等相关操作从而达到管理学生选课的。二、设计要求假定有n门课程,每门课程有课程编号、课程名称、课程性质、总学时、授课学时、实验学时、学分、开课学期等信息。学生可以按要求(如每个学生总学分不得少于20、没学期不能超过3门课程,每门课程不得超过50个人,但不能少于10否则该课程不开设)自由选课。使之能提供一些功能:1) 课程信息录入功能2) 课程信息浏览功能
3、3) 查询功能:(按课程性质查询、按课程学分查询,查询每个学生的选修信息、查询每门课程的选修信息等)4) 学生选修课程5) 修改课程或选课信息(根据课程编号或名称修改课程信息、根据学生姓名修改选课信息);6) 删除课程或选课信息(根据课程编号或名称删除课程信息、根据学生姓名删除选课信息);三、总体设计我们设计一个程序对学生选课信息进行保存,对学生的选课信息进行可执行操作,如添加、删除、查询等等。该程序包括以下功能模块: 1) 学生信息添加模块:能够输入学生基本信息并保存到文件中。2) 查看模块:显示所有可选修课程的信息。3) 查询:显示所有符合要求的课程信息。4) 选课:显示学生已选课程信息和
4、选课,删除已选课程信息。5) 退出系统。为了完善系统,我们还添加了一个登录界面。考虑到添加课程信息的功能只适合老师,因此我们设置了添加课程的权限设置(必须输入密码)。我们建立了两个文件用来保存学生信息和课程信息。(student.txt和subject.txt)该系统功能说明:1) 系统以菜单方式工作 2) 课程信息录入功能(课程信息用文件保存)输入 3) 课程信息浏览功能输出 4) 查询功能:(至少一种查询方式)算法 5) 按学分查询 6) 按课程性质查询 7) 学生选修课程(可选项) 四、详细设计该成序包含的主要函数功能说明:void XuanKeMenu(); / 选课主菜单函数int
5、find(int no); void Save(); void DL();/登录界面的函数void MainMenu();void output(); void Load(); /载入文件信息的函数void Load2();void quit();void add();void ChaXun();void chaxun1();void chaxun2();void xuanke();void tq1(); /提取选课编号的函数void tq2();void AddStuInfo();/添加学生信息的函数void SaveStuInfo(); /保存学生信息到文件中void del();/删除已
6、选课程信息的函数主要的数据结构表: 序号成员名数据类型字段含义1namchar姓名2numchar学号3zxfint总学分4cntint选课总数5namechar课程名称6numint课程编号7chachar 课程性质8Timeint课程总学时9time1int授课总学时10time2int实验(上机)总学时11xfint课程学分12kkxqchar开课学期五、程序代码#include<iostream>#include<vector>#include<set>#include<string>#include<conio.h>#def
7、ine N 10using namespace std;int F;class subject /建立一个课程类,保存课程信息public:int num;char name30;char cha20;int Time,time1,time2,xf;char kkxq20;S;class student /建立一个学生类,保存学生信息public:char nam10;char num15;int zxf;int cnt;Stu;vector <subject> v; /声明一个 指向课程信息的向量vector <student> z; /声明一个 指向学生信息的向量s
8、et <int> T; /建立一个 集合vector <set<int> > TT; /建立一个 向量集合set <int> :iterator it; /建立一个 迭代器void XuanKeMenu(); /声明一个 选课主菜单函数int find(int no);void Save();void DL(); /声明一个登录界面的函数void MainMenu();void output();void Load(); /声明载入文件信息的函数void Load2();void quit();void add();void ChaXun();v
9、oid chaxun1();void chaxun2();void xuanke();void tq1(); /声明提取信息的函数void tq2();void AddStuInfo(); /声明添加学生信息的函数void del();void AddStuInfo()FILE *fp;fp=fopen("d:student.txt","a");fseek(fp,0,2); /打开学生信息文件system("cls");cout<<endl<<endl<<endl<<endl<&l
10、t;endl;cout<<"tt*"<<endl;cout<<"tt* 学生选课系统 *"<<endl;cout<<"tt*"<<endl<<endl;cout<<"ttt请输入学号:"cin>>Stu.num;cout<<"ttt请输入姓名:"cin>>Stu.nam;St=Stu.zxf=0;fprintf(fp,"%s %s %d %dn"
11、,Stu.num,Stu.nam,St,Stu.zxf); /存入文件z.push_back (Stu); T.clear(); TT.push_back(T); /用向量指向学生信息fclose(fp);void add()string password1,password2;char password20;int _cnt=0;FILE *fp;fp=fopen("d:password","r");fscanf(fp,"%s",password); password2=password;fclose(fp);system(&quo
12、t;cls");cout<<endl<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 课 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 请输入密码:" /对添加课程进行权限设置char ch;while(ch=getch()if(ch=13) break;if(ch != 8) putchar
13、('*'); password1 += ch;_cnt+;elseif(_cnt)password1.erase(password1.end()-1);_cnt-;system("cls");cout<<endl<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 课 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cou
14、t<<"t 请输入密码:"int x=_cnt;while(x-)cout<<"*"if(password1 != password2) cout<<"nnttt 密码错误!"getch(); MainMenu(); A: system("cls");cout<<endl<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 课 程 信 息 *&quo
15、t;<<endl;cout<<"t *"<<endl<<endl;cout<<"ttt请输入课程编号:"cin>>S.num;cout<<"ttt请输入课程名称:"cin>>S.name;cout<<"ttt请输入课程性质:"cin>>S.cha;cout<<"ttt请输入总课时:"cin>>S.Time;cout<<"ttt请输入
16、授课学时"cin>>S.time1;cout<<"ttt请输入上机学时(实验学时):"cin>>S.time2;cout<<"ttt请输入学分:"cin>>S.xf;cout<<"ttt请输入开课学期:"cin>>S.kkxq;v.push_back(S);Save();cout<<endl<<"t 是否继续添加Y/N:"string s; cin>>s;if(s0='Y'
17、;|s0='y') goto A;else MainMenu();void Save() /保存已选的课程信息FILE *fp;fp=fopen("d:subject.txt","w");for(int i=0;i<v.size();i+)fprintf(fp,"%d %s %s %d %d %d %d %sn",vi.num,,vi.cha,vi.Time,vi.time1,vi.time2,vi.xf,vi.kkxq);fclose(fp);void SaveStuInfo() /保存学生信息F
18、ILE *fp;fp=fopen("d:student.txt","w");for(int i=0;i<z.size();i+)fprintf(fp,"%s %s %d %d",zi.num,zi.nam,t,zi.zxf);for(it=TTi.begin(); it!=TTi.end(); it+)fprintf(fp, " %d",*it);fprintf(fp,"n");fclose(fp);void quit() /退出函数exit(1);void ChaXun() /
19、查询主菜单函数system("cls");cout<<endl<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 课 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"tttt请选择查询方式:ntttt1学分查询ntttt2课程性质查询ntttt0返回主菜单nn"cout<<&qu
20、ot;tttt请选择0-2:"int choice;cin>>choice;if(choice>=0&&choice<3)if(choice=1) chaxun1();if(choice=2) chaxun2();if(choice=0) MainMenu();else ChaXun();void chaxun1() /按学分方式查询system("cls");int cnt=0;cout<<endl<<endl<<endl;cout<<"t *"<&
21、lt;endl;cout<<"t * 课 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 请输入学分:"int key;cin>>key;cout<<"t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 &q
22、uot;<<" "<<"授课"<<" "<<" 实验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"t 编号"<<" "<<" 名称 "<<"性质"<<"
23、; "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;for(int i=0;i<v.size();i+)if(cnt&&cnt%10=0)cout<<endl&
24、lt;<"t ="<< endl;cout<<"t 按任意键查看下一页" getch();system("cls");cout<<endl<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 课 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<&
25、quot;t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"授课"<<" "<<" 实验或 "<<" "<<"学分"<<" "<<"开课"
26、;<<endl;cout<<"t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" &q
27、uot;<<"学期"<<endl<<endl;if(vi.xf=key)cnt+;printf("t %3d%12s%8s%4d%6d%8d%8d%7sn",vi.num,,vi.cha,vi.Time,vi.time1,vi.time2,vi.xf,vi.kkxq);cout<<endl<<"t 是否继续查询Y/N:"string s; cin>>s;if(s0='Y'|s0='y') chaxun1();else
28、MainMenu();void chaxun2() /按课程性质查询system("cls");int cnt=0;cout<<endl<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 课 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 请输入课程性质:"char key20;cin&
29、gt;>key;cout<<"t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"授课"<<" "<<" 实验或 "<<" "<<"学分"<<" &qu
30、ot;<<"开课"<<endl;cout<<"t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学
31、分"<<" "<<"学期"<<endl<<endl;for(int i=0;i<v.size();i+)if(cnt&&cnt%10=0)cout<<endl<<"t ="<< endl;cout<<"t 按任意键查看下一页" getch();system("cls");cout<<endl<<endl<<endl;cout<&
32、lt;"t *"<<endl;cout<<"t * 课 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<
33、;"授课"<<" "<<" 实验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"&l
34、t;<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;if(!strcmp(vi.cha,key)cnt+;printf("t %3d%12s%8s%4d%6d%8d%8d%7sn",vi.num,,vi.cha,vi.Tim
35、e,vi.time1,vi.time2,vi.xf,vi.kkxq);cout<<endl<<"t 是否继续查询Y/N:"string s; cin>>s;if(s0='Y'|s0='y') chaxun2();else MainMenu();void tq1(char *str) /提取出选课时输入的课程编号string t=""int i=0,cont=0;while(stri)if(isalnum(stri) t += stri;elseint tmp=atoi(t.c_str()
36、;if(TTF.find(tmp)!=TTF.end() t=""i+; continue;zF.zxf += vfind(tmp).xf;TTF.insert(tmp); t=""cont+;i+;/int tmp=atoi(t.c_str();/cout<<t<<" "system("pause");if(TTF.find(tmp)=TTF.end()cont+;TTF.insert(tmp);zF.zxf += vfind(tmp).xf;zF.cnt += cont;void xua
37、nke() /选课函数:执行选课功能char str100;system("cls");cout<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 课 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 课程"<<" "<<" 课程 "&l
38、t;<"课程"<<" "<<" 总 "<<" "<<"授课"<<" "<<" 实验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"t 编号"<<" "
39、;<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;for(int i=0
40、; i<v.size(); i+)if(i&&i%10=0)cout<<endl<<"t ="<< endl;cout<<endl<<"t 请输入所选课程编号:" gets(str);if(strcmp(str,"") tq1(str);/,system("cls");cout<<endl<<endl;cout<<"t *"<<endl;cout<<&qu
41、ot;t * 课 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"授课"<<" "<<&q
42、uot; 实验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<&
43、lt;" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;printf("t %3d%12s%8s%4d%6d%8d%8d%7sn",vi.num,,vi.cha,vi.Time,vi.time1,vi.time2,vi.xf,vi.kkxq);cout<<endl<<"t ="
44、;cout<<endl<<"t 请输入所选课程编号:" gets(str);if(strcmp(str,"") tq1(str);SaveStuInfo();if(zF.zxf<60)cout<<"tt你所选课程的总学分少于60,是否继续选课!Y/N"string x; cin>>x;if(x0='y'|x0='Y') xuanke();else XuanKeMenu();else XuanKeMenu();int find(int no) /寻找函
45、数,找到想要的课程编号for(int i=0;i<v.size();i+)if(vi.num=no) return i;void display(int i)printf("t %3d%12s%8s%4d%6d%8d%8d%7sn",vi.num,,vi.cha,vi.Time,vi.time1,vi.time2,vi.xf,vi.kkxq);void XuanKeMenu() /选课菜单函数system("cls");int choice,l=0;cout<<endl<<endl;cout<<&q
46、uot;t *"<<endl;cout<<"t * 学 生 选 课 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 姓名:"<<zF.nam<<" 学号:"<<zF.num<<" 已选 "<<zF.cnt;cout<<"门课程"<<" 已选课程总学分:&q
47、uot;<<zF.zxf<< endl;cout<<"t ="<<endl;cout<<"t 已选课程信息:n"cout<<"t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"授课"<<&quo
48、t; "<<" 实验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<
49、"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;for(it=TTF.begin();it!=TTF.end();it+,l+)if(l&&l%10=0)cout<<endl<<"t ="<< endl;cout<<&quo
50、t;t 1 开始选课 2 删除已选课程 3 下一页 0 返回 请选择0/3:" cin>>choice; getchar();if(choice=1) xuanke();else if(choice=2) del();else if(choice=0) MainMenu();else if(choice=3) ;else XuanKeMenu();system("cls");cout<<endl<<endl;cout<<"t *"<<endl;cout<<"t *
51、 学 生 选 课 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 姓名:"<<zF.nam<<" 学号:"<<zF.num<<" 已选 "<<zF.cnt;cout<<"门课程"<<" 已选课程总学分:"<<zF.zxf<< endl;cout<<&qu
52、ot;t ="<<endl;cout<<"t 已选课程信息:n"cout<<"t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"授课"<<" "<<" 实验或 "<<"
53、; "<<"学分"<<" "<<"开课"<<endl;cout<<"t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<&quo
54、t;上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;display(find(*it);cout<<endl<<"t ="<< endl;cout<<"t 1 开始选课 2 删除已选课程 0 返回 请选择0/2:" cin>>choice; getchar();if(choice=1) xuanke();
55、else if(choice=2) del();else if(choice=0) MainMenu();else XuanKeMenu();void tq2(char *str) /提取函数:提前删除时输入的课程编号string t=""int i=0,cont=0;while(stri)if(isalnum(stri) t += stri;elseint tmp=atoi(t.c_str();set<int>:iterator _t=TTF.find(tmp);if(_t!=TTF.end()t=""TTF.erase(_t);zF.cn
56、t-;zF.zxf-=vfind(tmp).xf;i+;int tmp=atoi(t.c_str();set<int>:iterator _t=TTF.find(tmp);if(_t!=TTF.end()t=""TTF.erase(_t);zF.cnt-;zF.zxf-=vfind(tmp).xf;void del() /删除已选课程信息int m,l=0,k=0;char str100;system("cls");cout<<endl<<endl;cout<<"t *"<<
57、endl;cout<<"t * 学 生 选 课 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 姓名:"<<zF.nam<<" 学号:"<<zF.num<<" 已选 "<<zF.cnt;cout<<"门课程"<<" 已选课程总学分:"<<zF.zxf<
58、;< endl;cout<<"t ="<<endl;cout<<"t 已选课程信息:n"cout<<"t 课程"<<" "<<" 课程 "<<"课程"<<" "<<" 总 "<<" "<<"授课"<<" "<<&quo
59、t; 实验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"t 编号"<<" "<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<
60、;" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;for(it=TTF.begin();it!=TTF.end();it+,l+)if(l&&l%10=0)cout<<endl<<"t ="<< endl;cout<<"tttt请输入要删除的课程的编号:&q
61、uot;gets(str);if(strcmp(str,"") tq2(str);system("cls");cout<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 学 生 选 课 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 姓名:"<<zF.nam<<&qu
62、ot; 学号:"<<zF.num<<" 已选 "<<zF.cnt;cout<<"门课程"<<" 已选课程总学分:"<<zF.zxf<< endl;cout<<"t ="<<endl;cout<<"t 已选课程信息:n"cout<<"t 课程"<<" "<<" 课程 "<
63、;<"课程"<<" "<<" 总 "<<" "<<"授课"<<" "<<" 实验或 "<<" "<<"学分"<<" "<<"开课"<<endl;cout<<"t 编号"<<" "
64、<<" 名称 "<<"性质"<<" "<<"学时"<<" "<<"学时"<<" "<<"上机学时"<<" "<<"学分"<<" "<<"学期"<<endl<<endl;display(find
65、(*it);cout<<"tttt请输入要删除的课程的编号:"gets(str);if(strcmp(str,"") tq2(str);SaveStuInfo();XuanKeMenu();void Load() /载入函数:载入课程信息(文件此前已建立)FILE *fp1;bool f=1;fp1=fopen("d:subject.txt","r");if(fp1=NULL) f=0;while(f&&!feof(fp1)fscanf(fp1,"%d%s%s%d%d%d%d%
66、s",&S.num,S.name,S.cha,&S.Time,&S.time1,&S.time2,&S.xf,S.kkxq);v.push_back(S);fclose(fp1);void Load2() /载入学生信息(文件此前已建立)FILE *fp;fp=fopen("d:student.txt","r");while(!feof(fp)int x;fscanf(fp,"%s%s%d%d",Stu.num,&Stu.nam,&St,&Stu.zxf);z.
67、push_back(Stu); T.clear();for(int j=0;j<St;j+)fscanf(fp,"%d",&x),T.insert(x);TT.push_back(T);fclose(fp);void output() /显示函数:将课程信息输出到屏幕system("cls");cout<<endl<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 课 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 课程"<<" "
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年互联网医院五年质量提升报告
- 拉美电商快递行业市场前景及投资研究报告:热土纵横蓝海破浪
- 汉字部首演变与古代冶金工艺进步的关联性分析课题报告教学研究课题报告
- 2026年元阳县域紧密型医共体中医医院分院公开招聘编外人员的备考题库有完整答案详解
- 2026年江中食疗科技有限公司备考题库及答案详解一套
- 2026年威海市教育局直属学校引进急需紧缺人才备考题库及答案详解(易错题)
- 2025年夜间商业地产五年报告
- 2026年福州工业园区开发集团有限公司勘察设计分公司招聘备考题库(含答案详解)
- 温州市供销集团有限公司2025年公开招聘工作人员备考题库(含答案详解)
- 2026年乐平市市属国资控股集团有限公司面向社会公开招聘人员备考题库及答案详解参考
- 销售行业合同范本
- 2026年民用无人机操控员执照(CAAC)考试复习重点题库标准卷
- 英语试卷+答案黑龙江省哈三中2025-2026学年上学期高二学年12月月考(12.11-12.12)
- 2025天津大学管理岗位集中招聘15人参考笔试试题及答案解析
- 安全通道防护棚计算书
- 中文介绍迈克尔杰克逊
- 安徽绿沃循环能源科技有限公司12000t-a锂离子电池高值资源化回收利用项目(重新报批)环境影响报告书
- 厦深铁路福建段某标段工程投标施工组织设计
- 《汽车电器故障问题研究4600字(论文)》
- EN462全套中文版本欧标像质计
- GB∕T 20969.5-2021 特殊环境条件 高原机械 第5部分:高原自然环境试验导则 工程机械
评论
0/150
提交评论