版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
综合程序课程设计说明书课程设计名称:综合程序课程设计课程设计题目:学生成绩管理系统学院名称:信息工程学院专业:电子信息工程班级:学号:姓名:评分:教师:2023年3月3日由每位学生填写、由任教教师保存待查摘要该学生成绩管理系统可以对学生信息进行保存、查询、修改、排序等基本功能,对学生成绩进行了有效且便利的管理。本次是运用计算机中的VC6.0绿色版软件来完毕,运用了不同功能模块程序实现所需功能。成绩管理系统让老师和同学甚至家长们更加直观方便的了解到学生们的成绩,给生活带来不少便利,也增长了自身的实践动手能力。关键词:增长删除、修改排序、查询保存、管理系统、成绩查询。目录TOC\o"1-3"\h\u15109一、设计规定 4228521.基本规定 4173342.提高规定 48511二、实验内容 411447三、设计的原理 628165四、系统组成 720264五、概要设计 830821.信息维护 8205032.信息查询 8103413.信息排序: 982494、大约程序程序流程图 919053六、具体设计 107076七、调试结果与分析 12168141、调试方法与技巧 1249782、调试结果 1224495结论 1620237参考文献 1631943附录 17一、设计规定1.基本规定可以准的确现学生成绩管理系统的基本维护、记录、排序已经查询的功能。并且学生信息能以文献的形式进行保存、读取和管理。提高规定尽量增长新的功能模块,使得系统功能更加多样化,在程序中注意格式,排版整齐,记得标上注释,利于理解。二、实验内容学生成绩管理系统现有学生成绩信息,内容如下姓名学号语文数学英语政治张明明0167788290李成友0278918880张辉灿0368825687王露0456457767陈东明0567384770……请用C编写一系统,实现学生信息管理,软件的入口界面应涉及如下几个方面:(一)功能规定:(1)信息维护:规定:学生信息数据要以文献的形式保存,能实现学生信息数据的维护。此模块涉及子模块有:增长学生信息、删除学生信息、修改学生信息(2)信息查询:规定:查询时可实现按姓名查询、按学号查询(3)成绩记录:规定:A输入任意的一个课程名(如数学)和一个分数段(如60--70),记录出在此分数段的学生情况。(4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)(二)其它规定:(1)使用C或C++语言,源程序要有适当的注释,使程序容易阅读(2)采用文本菜单界面(3)学生可增长新功能模块三、设计的原理用数组或链表数据结构完毕一个学生成绩管理系统,此系统的具体功能规定如下:(1)信息维护功能1、增长学生信息:输入学生学号、姓名、性别、语文、数学、英语、政治四门课成绩,可插入一个或多个学生信息到当前编辑的班级数据中。2、删除学生信息:可按学号或者姓名删除一个或多个学生信息。3、修改学生信息:可按学号或者姓名修改学生语文、数学、英语、政治四门课任一门及多门科目成绩。4、学生信息每一班存为一个数据文献,数据文献可在程序中编辑和重新保存。5、用户输入学生信息可随时保存数据文献。(2)信息查询功能1、按某一学科分数段查询2、按学号查询学生信息;3、按姓名查询学生信息;(3)排序功能1、按学号输出一个班学生信息:学号、姓名、语文、数学、英语、政治成绩和总成绩到屏幕和文献。2、成绩排名按总成绩或各科成绩排序输出学生信息四、系统组成系统以如下几个模块组成:(一)学生信息增长及修改、删除模块增长学生的信息:学号、姓名、语文、数学、英语、政治四门成绩。当然也可以进行修改和删除。(二)文献保存功能模块可以将学生信息存为一个数据文献。用户输入的学生信息可随时保存数据文献。(三)查询功能模块在此模块里,用户可实现以下操作:1、按某科目分数段查询学生信息;2、按学号查询学生信息;3、按姓名查询学生信息;(四)文献读取功能模块在此模块中,用户可以装入文献中所有学生的信息。(程序中为data.txt文献)排序模块在此模块中,可以通过学号或者各类科目成绩或总分进行排序。程序开头与结尾需要定义两个类和一主函数,使得程序具有完整性。五、概要设计系统功能可分为三大类:信息维护、信息查询已经信息排序。如下三个系统层次结构图如图所示:文献保存文献读取1.信息维护文献保存文献读取信息维护信息维护信息增长修改信息信息增长修改信息删除信息删除信息图1.1信息维护功能概要图2.信息查询按学号查询信息查询按学号查询信息查询按姓名查询按姓名查询分数段查询成绩记录分数段查询成绩记录图1.2信息维护功能概要图排序3.信息排序:排序按各科成绩排序按总分排序按各科成绩排序按总分排序按学号排序按学号排序图1.3信息排序功能概要图了解大约功能,可以根据这些来拟定系统具体分支,可用1~7分别代表添加、删除、修改、查询、排序、保存、读取。4、大约程序程序流程图开始开始准备:各类头文献,用类定义重要使用的成员及函数,并且建立构造函数和解析函数准备:各类头文献,用类定义重要使用的成员及函数,并且建立构造函数和解析函数构造添加学生函数构造添加学生函数构造删除学生函数构造删除学生函数构造查询学生函数构造修改学生函数构造查询学生函数构造修改学生函数构造排序学生函数构造排序学生函数保存读取文献模块程序保存读取文献模块程序定义主函数,构造操作界面定义主函数,构造操作界面终止终止具体设计1、准备工作:一方面,导入std命名空间中所有名称,设max为100再准备头文献:#include<iostream>,#include<fstream>,#include<string>,#include<stdlib.h>,#include<iomanip>然后,定义两个类student和cla,分别定义了程序中重要使用的成员;建立构造函数和解析函数及声明各类函数。2、构造sadd()添加函数先定义所需的q,name,num,x,y,z,m。用DOS下的清屏命令,再输出给用户的提醒语句,用“q=newstudent(name1,num1,x1,y1,z1,m1);”建立新的student。运用链表判断输入的学号是否与头结点或后面的结点数据相同,若不同则用“stu=q;”增长学生信息。3、构造sremove()删除函数准备工作如上(2)同样,用while()函数找出要删除的学生信息相应结点,若找到则删除,在删除之前要拟定是否删除:“cout<<"拟定删除吗?[Y/N]"<<endl;”这里用if语句判断用户回答是“Y”还是“N”。删除时也要分是删除第一个结点还是后续结点。补缺后用delete删除p1。4、构造samend()修改函数大体和3同样,修改前的准备,拟定要修改的结点,最后用cin直接修改。5、构造ssearch()查询函数查询函数有多个分支,这里都用选择语句case来对不同的情况进行编程。在这里只需逻辑清楚,语法没有错误就能完毕,但也要注意括号的搭配和break的使用。在用for语句时要注意循环次数不能过大,应相应学生的人数。6、构造staxis()排序函数用case语句使输入的1~7数字分别相应函数pxh()(学号排序)、psx()(数学)、pyw()(语文)、pyy()(英语)、pAA()(总分)、返回、pzz()(政治)。这些排序函数定义内容几乎同样。一方面用for语句判断n(信息条数)为多少,假如头结点大于第二个的头结点则互换,再判断中间的结点大小则互换,最后依次反复。7、构造ssave()函数sload()函数(保存与读取)在这里注意链表规定即可。8、定义主函数产生操作界面也用case语句使1~8代表不同功能。(详见附录)七、调试结果与分析1、调试方法与技巧代码完毕后,保存代码并尝试运营程序,启动调试。往往会出现以下几种常见错误。1case语句中内容反复,没有用一函数替代,使程序过为繁琐。2括号没有匹配;3循环体的逻辑错误;4case语句中缺少了break,没有跳出循环。5错误使用了for语句,导致已经出现结果后(链表为空)依旧继续运营,导致问题,无法继续使用该系统。2、调试结果1、学生信息的添加、删除、修改。图2.1.1删除图2.1.2添加学生信息图2.1.3修改学生信息图2.1.4此时文献的内容按姓名查询。图2.2.13.按学号查询。图2.3.14、按成绩查询。图2.4.15、成绩排序。图2.5.1学号排序图2.5.2单科(数学)成绩排序图2.5.3总分排序6、保存:图2.6.17、读取:图2.7.18、退出:图2.8.1结论虽然过程有些磕磕绊绊,但最后成绩管理系统终于成功了。该系统可认为大家带来极大的便利,便于以后成绩的有效管理。以后大家像成绩排序,找出某个科目及格的学生也容易很多。该系统虽具有基本的功能,但还是存在一些局限性。例如增长删除学生信息时不能在界面上自动呈现增长或者删除的结果,需要操作者手动打开文献或者通过排序来间接查看结果。这次课设让大家学到了很多书本外的知识,锻炼了实践操作的能力。不仅熟悉了VC6软件,也让大家知道,纸上谈兵远远没有自己动手体验来的深刻。参考文献1.黄维通,贾续涵、《VisualC++面对对象与可视化程序设计(第三版)》、清华大学出版社、2023年06月版2.谭浩强、《C语言程序设计(第四版)》、清华大学出版社、2023年06月版附录#include<iostream>#include<fstream>#include<string>#include<stdlib.h>#include<iomanip>//用于程序的暂停属于c的运用方法usingnamespacestd;//导入std命名空间中所有名称。#definemax100;//设max为100classstudent//定义类student定义了程序中重要使用的成员{ public:student*next;//定义next指针 public:stringname;//姓名 longnum;//学号 intx,y,z,m;intlow,high;//数学,语文,英语,政治 intAA;//总分 voidplay() { cout<<name<<"学生的学号是"<<num<<",数学:"<<x<<",语文:"<<y<<",英语:"<<z<<",政治:"<<m<<",总分:"<<AA<<endl; }; student(stringsname,longsnum,intsx,intsy,intsz,intsm) { name=sname;num=snum;x=sx;y=sy;z=sz;m=sm; }};classcla//定义类2涉及建立构造函数和解析函数{ public:cla()//构造函数 { stu=0; sload(); } ~cla()//析构函数 { student*p; p=stu; while(p) { p=p->next; deletestu; stu=p; } stu=0; }//这一部分是对函数的声明 voidsadd();//添加 voidsremove();//删除 voidsamend();//修改 voidssearch();//查询 voidstaxis();//排序 voidssave();//保存 voidsload();//读取 //排序函数的声明 voidpxh(); voidpsx(); voidpyw(); voidpyy(); voidpzz(); voidpAA();//共有5个排序函数 private:student*stu;//头接点};voidcla::sadd()//此处构造了添加学生函数{ student*q; stringname1; longnum1; intx1,y1,z1,m1; system("cls");//调用DOS下的的清屏命令“cls” cout<<"\n**增长的学生**\n"<<endl; cout<<"请输入学生的(中间用空格间隔)"<<endl; cout<<"姓名学号数学成绩语文成绩英语政治成绩:"<<endl;cin>>name1>>num1>>x1>>y1>>z1>>m1; q=newstudent(name1,num1,x1,y1,z1,m1); q->next=0; q->AA=x1+y1+z1+m1; if(stu){ student*t; t=stu; if(t->num==num1){ cout<<"学号已存在,请重新输入"<<endl; return;} while(t->next) { if(t->num==num1) { cout<<"学号已存在,请重新输入"<<endl; return; } t=t->next; } t->next=q;} else { stu=q; } cout<<"输入完毕"<<endl;}voidcla::sremove()//删除{ system("cls"); intnum1; cout<<"\n**删除学生信息**\n"; cout<<"请输入想要删除学生的学号:"; cin>>num1;//查找要删除的结点 student*p1,*p2; p1=stu; while(p1) { if(p1->num==num1) break; else { p2=p1; p1=p1->next; } }//删除结点if(p1!=NULL)//若找到结点,则删除{ p1->play(); cout<<"拟定删除吗?[Y/N]"<<endl; charc; cin>>c; if(toupper(c)!='Y') return; if(p1==stu)//若要删除的结点是第一个结点 { stu=p1->next;//将第二个结点往上推,成为头结点。 deletep1; } else//若要删除的结点是后续结点 { p2->next=p1->next;//补缺 deletep1; } cout<<"找到学号为"<<num1<<"的学生,并删除\n"; } else//未找到结点 cout<<"未找到想要删除的学生!\n"; }voidcla::samend()//修改{ system("cls");longnum1;cout<<"\n**修改学生信息**\n";cout<<"输入要修改学生的学号";cin>>num1;//查找要修改的结点 student*p1,*p2;p1=stu; while(p1) { if(p1->num==num1) break; else { p2=p1;p1=p1->next; } }if(p1!=NULL){ cout<<"学号是"<<num1<<"的学生的信息"<<endl; cout<<"姓名"<<p1->name<<"数学"<<p1->x<<"语文"<<p1->y<<"英语"<<p1->z<<"政治"<<p1->m<<endl; cout<<"请输入修改后的信息:姓名数学成绩语文成绩英语政治成绩"<<endl; cin>>p1->name>>p1->x>>p1->y>>p1->z>>p1->m; p1->AA=p1->x+p1->y+p1->z+p1->m;//求总分 cout<<"修改成功"<<endl;}else//未找到接点cout<<"未找到!"<<endl;}voidcla::ssearch()//查询{ system("cls"); cout<<"\n**查询学生信息**\n"<<endl; cout<<"请输入查询方式:"<<endl; cout<<"1.按学号查询"<<endl; cout<<"2.按姓名查询"<<endl; cout<<"0.按科目分数段查询"<<endl; cout<<"3.返回"<<endl; charc; cin>>c; switch(c)//通过switch语句来选择排序函数{ case'0': { intx,y,z,m; longnum; charw; inthigh,low; cout<<"输入要查找成绩科目代表的数字(数语英政分别为a~d):"<<w<<endl; cin>>w;//查找要查询的结点 cout<<"最低分为:"<<endl; cin>>low; cout<<"最高分为:"<<endl; cin>>high; student*p1,*p2; p1=stu; switch(w) { case'a': cout<<"数学成绩在"<<low<<"-"<<high<<"分数段的学生为:"<<endl; while(p1!=NULL) { if(p1->x>=low&&p1->x<=high) { cout<<"姓名:"<<p1->name<<"数学:"<<p1->x<<"语文:"<<p1->y<<"英语:"<<p1->z<<"政治:"<<p1->m<<endl; } p2=p1; p1=p1->next; } cout<<"查询完毕\n"; break; case'b': cout<<"语文成绩在"<<low<<"-"<<high<<"分数段的学生为:"<<endl; while(p1!=NULL) { if(p1->y>=low&&p1->y<=high) { cout<<"姓名:"<<p1->name<<"数学:"<<p1->x<<"语文:"<<p1->y<<"英语:"<<p1->z<<"政治:"<<p1->m<<endl; } p2=p1; p1=p1->next; } cout<<"查询完毕\n"; break; case'c': cout<<"英语成绩在"<<low<<"-"<<high<<"分数段的学生为:"<<endl; while(p1!=NULL) { if(p1->z>=low&&p1->z<=high) { cout<<"姓名:"<<p1->name<<"数学:"<<p1->x<<"语文:"<<p1->y<<"英语:"<<p1->z<<"政治:"<<p1->m<<endl; } p2=p1; p1=p1->next; } cout<<"查询完毕\n"; break; case'd': cout<<"政治成绩在"<<low<<"-"<<high<<"分数段的学生为:"<<endl; while(p1!=NULL) { if(p1->m>=low&&p1->m<=high) { cout<<"姓名:"<<p1->name<<"数学:"<<p1->x<<"语文:"<<p1->y<<"英语:"<<p1->z<<"政治:"<<p1->m<<endl; } p2=p1; p1=p1->next; } cout<<"查询完毕\n"; break; } break; } case'1': { longnum1; cout<<"要查询的学号"<<endl; cin>>num1;//查找要查询的结点 student*p1,*p2; p1=stu; while(p1) { if(p1->num==num1) break; else { p2=p1;p1=p1->next; } }if(p1!=NULL) { cout<<"学号是"<<num1<<"的学生的信息"<<endl; cout<<"姓名:"<<p1->name<<"数学:"<<p1->x<<"语文:"<<p1->y<<"英语:"<<p1->z<<"政治:"<<p1->m<<endl; cout<<"查询完毕..."; } else//未找到接点cout<<"未找到!\n";//break; break; }case'2': { stringname1; cout<<"要查询的学生姓名"<<endl; cin>>name1;//查找要查询的结点 student*p1,*p2; p1=stu; while(p1) { if(p1->name==name1) break; else { p2=p1; p1=p1->next; } } if(p1!=NULL) { cout<<name1<<"的学生的信息"<<endl; cout<<"学号:"<<p1->num<<"数学:"<<p1->x<<"语文:"<<p1->y<<"英语:"<<p1->z<<"政治"<<p1->m<<endl; cout<<"查询完毕..."; } else//未找到接点 cout<<"未找到!\n"; break; }case'3':return;}}voidcla::pxh()//按学号排序函数的定义{ student*p1,*p2; intn; p1=stu;n=1; while(p1->next)//p1->next!=0 { n++;p1=p1->next; } cout<<"共有"<<n<<"条信息..."<<endl; inti; p1=stu; for(i=1;i<n;i++) { p1=stu; if(p1->num>p1->next->num)//假如头结点大于第二个的 { p2=p1->next; p1->next=p1->next->next; p2->next=p1;//头结点互换 stu=p2;//下一个学生 } p1=stu;//互换 while(p1->next->next)//中间的互换 { p2=p1;p1=p1->next; if(p1->num>p1->next->num) { p2->next=p1->next; p1->next=p1->next->next; p2->next->next=p1; p1=p2->next;//互换 } } } p1=stu;do{ p1->play(); p1=p1->next; }while(p1);}voidcla::psx()//按数学成绩排序函数的定义{ student*p1,*p2;intn; p1=stu; n=1; while(p1->next) { n++;p1=p1->next; } cout<<"共有"<<n<<"条信息..."<<endl; inti; p1=stu; for(i=1;i<n;i++){ p1=stu; if(p1->x>p1->next->x)//假如头结点大于第二个的 { p2=p1->next; p1->next=p1->next->next; p2->next=p1;//头结点互换 stu=p2; } p1=stu; while(p1->next->next)//中间的互换 { p2=p1; p1=p1->next; if(p1->x>p1->next->x) { p2->next=p1->next; p1->next=p1->next->next; p2->next->next=p1; p1=p2->next;//互换 }}} p1=stu; do{ p1->play(); p1=p1->next; } while(p1);} voidcla::pyw()//按语文成绩排序函数的定义 { student*p1,*p2; intn; p1=stu; n=1; while(p1->next) { n++;p1=p1->next;} cout<<"共有"<<n<<"条信息..."<<endl; inti; p1=stu; for(i=1;i<n;i++) { p1=stu; if(p1->y>p1->next->y)//假如头结点大于第二个的 { p2=p1->next; p1->next=p1->next->next; p2->next=p1;//头结点互换 stu=p2; } p1=stu; while(p1->next->next)//中间的互换 { p2=p1; p1=p1->next; if(p1->y>p1->next->y) { p2->next=p1->next; p1->next=p1->next->next; p2->next->next=p1; p1=p2->next;//互换 } }} p1=stu; do { p1->play();p1=p1->next; } while(p1); } voidcla::pyy()//按英语成绩排序函数的定义 { student*p1,*p2; intn; p1=stu; n=1; while(p1->next) { n++;p1=p1->next; } cout<<"共有"<<n<<"条信息..."<<endl; inti; p1=stu; for(i=1;i<n;i++) { p1=stu; if(p1->z>p1->next->z)//假如头结点大于第二个的 { p2=p1->next; p1->next=p1->next->next; p2->next=p1;//头结点互换 stu=p2; } p1=stu; while(p1->next->next)//中间的互换 { p2=p1; p1=p1->next; if(p1->z>p1->next->z){p2->next=p1->next; p1->next=p1->next->next; p2->next->next=p1; } p1=p2->next;//互换 } } p1=stu; do { p1->play(); p1=p1->next; } while(p1); } voidcla::pzz()//按政治成绩排序函数的定义 { student*p1,*p2; intn; p1=stu; n=1; while(p1->next) { n++;p1=p1->next; } cout<<"共有"<<n<<"条信息..."<<endl; inti; p1=stu; for(i=1;i<n;i++) { p1=stu; if(p1->m>p1->next->m)//假如头结点大于第二个的 { p2=p1->next;p1->next=p1->next->next; p2->next=p1;//头结点互换 stu=p2; } p1=stu; while(p1->next->next)//中间的互换 { p2=p1; p1=p1->next; if(p1->y>p1->next->y){p2->next=p1->next; p1->next=p1->next->next; p2->next->next=p1; p1=p2->next;//互换 } } } p1=stu; do { p1->play();p1=p1->next; } while(p1); } voidcla::pAA()//按总分排序的定义 {student*p1,*p2;intn; p1=stu;n=1; while(p1->next) { n++;p1=p1->next; } cout<<"共有"<<n<<"条信息..."<<endl; inti; p1=stu; for(i=1;i<n;i++) { p1=stu; if(p1->AA>p1->next->AA)//假如头结点大于第二个的 { p2=p1->next; p1->next=p1->next->next; p2->next=p1;//头结点互换 stu=p2; } p1=stu; while(p1->next->next)//中间的互换 { p2=p1; p1=p1->next; if(p1->AA>p1->next->AA) {p2->next=p1->next; p1->next=p1->next->next; p2->next->next=p1; p1=p2->next;//互换 } } } p1=stu; do{p1->play(); p1=p1->next;} while(p1);}voidcla::staxis()//排序函数的选择{ system("cls"); charc; cout<<"请选择以何种方式排序:"<<endl; cout<<"1……以学号排序"<<endl; cout<<"2……以数学成绩排序"<<endl; cout<<"3……以语文成绩排序"<<endl; cout<<"4……以英语成绩排序"<<endl; cout<<"5……以总分排序"<<endl; cout<<"6……返回"<<endl;cout<<"请选择(1-7)"<<endl; cout<<"7……以政治成绩排序"<<endl; cin>>c; switch(c) {case'1': cla::pxh(); break;//通过数据c来选择不同的排序函数 case'2': cla::psx(); break; case'3': cla::pyw(); break; case'4':pyy(); break; case'5': cla::pAA(); break; case'7': cla::pzz(); break; case'6':return; }}voidcla::ssave()//保存到文献 {system("cls"); charc; cout<<"\n保存学生信息,是否继续?[Y/N]:"; cin>>c; if(toupper(c)!='Y')return; ofstr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 抵押反担保合同的风险控制策略
- 物理治疗的临床应用
- 汽车海运运输合同范本
- 房地产营销合同书格式模板
- 《金色的草地》作业设计方案
- 肝癌并发低血糖护理
- 年产xxx水下作业工具项目建议书
- 腹膜水泥模板项目立项申请报告
- 年产xxx瓦锅项目投资分析报告
- 年产xx无碱玻璃球项目建议书
- 《“119”的警示》教学设计+学习任务单道德与法治2024-2025学年三年级上册统编版
- 2024年海南省中考数学试题卷(含答案解析)
- 油气开发地质学智慧树知到答案2024年中国地质大学(武汉)
- 腰椎术后脑脊液漏的护理
- (2024)全国青少年“学宪法、讲宪法”竞赛题库及答案
- 辽宁省2024年中考英语真题【附真题答案】
- 办公家具供货安装、保障实施及售后服务 投标方案(技术方案)
- 八年级上册(2024修订) 第四单元 整本书阅读 《红岩》导读课公开课一等奖创新教学设计
- 泊车辅助系统设计
- 第19讲 影响盐类水解的主要因素及盐类水解的应用 (教师版)【暑假弯道超车】2024年新高二化学暑假讲义+习题(人教版2019选择性必修1)
- 2024年湖南广电国家广电集团招聘笔试冲刺题(带答案解析)
评论
0/150
提交评论