当前位置:   article > 正文

c++课程设计(学生课程学分信息管理)_(1)能从键盘输入某位学生的信息(不包含学分)。(2)给定学号,显示该学生的所完

(1)能从键盘输入某位学生的信息(不包含学分)。(2)给定学号,显示该学生的所完

总体需求

假设每位学生必须完成基础课50学分,专业课50学分,选修课24学分,人文类课程8学分,实践性课程20学分才能够毕业
因此,在管理学分时,要考虑每个学分所属于的课程类别。

功能需求

1)能够通过键盘输入某位学生的学分。//该需求涵盖在下面的需求中。所以不单独在菜单中设置选项
2) 给定学号,显示某位学生的学分完成情况。
3) 给定某个班级的班号,显示该班所有学生学分完成情况。
4) 给定某位学生的学号,修改该学生的学分信息。
5) 按照某类课程的学分高低进行排序。

界面样式

输入:
程序正常运行后屏幕上显示一个文字菜单(根据序号选定相应的操作项目),当用户选定操作项目所对应的序号时,根据应用程序的提示信息,从键盘上输入相应的数据。
输出:

  1. 应用程序正常运行后,要在屏幕上显示一个文字菜单。
  2. 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等

类设计

设计Student类
private:

姓名name,学号sid,班号cid,课程信息类Course
  • 1

public:

空构造函数:给所有私有属性赋默认值,string全部为“null”,int全部为0
Student(){
		name="null";
		sid="null";
		cid="null";
		course.setBasicCla(0);
		course.setCultureCla(0);
		course.setPracticeCla(0);
		course.setProfessionCla(0);
		course.setSelectCla(0);
	}
setRecord(int,int ,int,int,int);//重新设置课程学分
Course* getCourse()//返回课程信息对象指针
私有属性的set,get方法
void setName(string name)
void setSid(string sid)
void setCid(string cid)
string getName()
string getSid()
string getCid()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

设计Course类
private:

	int basicCla//基础课程学分
	int professionCla//专业课程学分
	int selectCla//选修课程学分
	int cultureCla//人文课程学分
	int practiceCla//实践课程学分
  • 1
  • 2
  • 3
  • 4
  • 5

public:

空构造函数,默认初始化int型为0
Course(){
		this->basicCla=0;
		this->professionCla=0;
		this->selectCla=0;
		this->cultureCla=0;
		this->practiceCla=0;
	}
set,get方法:
	int getBasicCla()//获取基础课程学分
	int getProfessionCla()//获取专业课程学分
	int getSelectCla()//获取选修课程学分
	int getCultureCla()//获取人文课程学分
	int getPracticeCla()//获取实践课程学分

	void setBasicCla()//设置基础课程学分
	void setProfessionCla()//设置专业课程学分
	void setSleectCla()//设置选修课程学分
	void setCultureCla()//设置人文课程学分
	void setPracticeCla()//设置实践课程学分
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

程序编写流程:

void ViewBySid(string sid,Student *students);//根据学号查询学生信息
void ViewCidAll(string cid,Student *students); //根据班号查询全班信息
void changeRecord(string sid,Student *students,int basicCla,int professionCla,int selectCla,int cultureCla,int practiceCla);//重新设置课程分数
void setStudents(Student* students);//文件数据读入
void updateStudents(Student *students);//文件数据更新
void sortByRecord(int num,Student *students);//按照分数排序
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

业务逻辑

创建一个对象数组用来读取文件中的数据。
setStudents中进行文件流的操作,对象数组的指针传到该方法中,将文件中的数据存储到这个对象数组中
输出功能菜单,if else,else if实现对应功能的调用
  • 1
  • 2
  • 3

设计功能菜单

1.给定学号,显示某位学生的学分完成情况。
用户界面输入学号,拿到学号后通过循环Student对象数组,该学号与Student[i].couse->getSid()比对,若比对成功,输出该学生的信息
2.给定某个班级的班号,显示该班所有学生学分完成情况。
同需求1一样,拿到班号后循环Student对象数组,然后将对应班号Student类的信息全部输出,即该班级所有学生信息
3.给定某位学生的学号,修改该学生的学分信息。
同需求1,拿到学号和学分修改信息(暂且功能为不能单独设置学分,必须传入所有课程学分),
循环数组找到对象,通过set方法更改
4.按照某类课程的学分高低进行排序。
定义一个指针数组,里边的指针元素一一指向对象数组中的对象,用排序算法(冒泡)进行排序,改变指针数组中指针的指向,然后遍历输出该数组

编写中可能遇到的问题**

问题1:c++输入和输出的问题
解决方案:
输入:

char filename[]="D://student.txt";
	char buff[1024]= {0};
	ifstream fin;
        fin.open(filename,ios::in);
        fin.getline(buff,1024);                //通过getline函数读取字符串
        cout<<buff<<endl;        
        fin.close();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

写出:

	char fname[] = "d:/file1.txt";
        char buff[1024]= {0};
        /***********  写文件  *************/
        //方式1 输出流ofstream对象调用fopen函数
        ofstream fout;
        fout.open(fname,ios::out);
        if(!fout)
        {
                cout<<"打开文件失败"<<fname<<endl;
        }
        fout<< "hello world !";  //通过左移运算符写入字符串
        fout.flush();
        fout.close();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

问题2:根据课程分数进行排序

for(int i=0;i<size-1;i++){
		for(int j=0;j<size-i-1;j++){
			Course *course=stus[j]->getCourse();
			Course *course2=stus[j+1]->getCourse();
			if(course->getProfessionCla() > course2->getProfessionCla()){
					Student *temp;
					temp=stus[j];
					stus[j]=stus[j+1];
					stus[j+1]=temp;
			}
		}
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

问题3:Student类中Course还是Course*属性:
必须是course属性,因为临时在方法中创建的对象给course指针,方法的消亡,对象也会消亡,每一次调用就会创建新的对象,所以应该将Course对象作为属性,而不是它的指针。
另外,getCourse类应该返回指针,实现引用传递

问题4:文件编码格式和输入流读入编码格式不同
解决方案:文件读入时是GBK编码格式,将txt文件中的数据转为GBK格式
使用工具notePad++

问题5:提取文件中的数字字符串转换为整型数据进行存储,比如basicCla为整型,但文件是字符串。
解决方案:basicStr是字符串 int basicCla=atoi(basicStr.c_str());

完整代码

Student类

#include <string>
#include "Course.h"
using namespace std;
class Student{
	private:
		string name;
		string sid;
		string cid;
		Course course;
	public:
	
		Student(){
			name="null";
			sid="null";
			cid="null";
		}
		
	
	
		void setRecord(int basicCla,int professionCla,int selectCla,int cultureCla//重新设置课程学分 
				,int practiceCla){
					course.setBasicCla(basicCla);
					course.setProfessionCla(professionCla);
					course.setSelectCla(selectCla);
					course.setCultureCla(cultureCla);
					course.setPracticeCla(practiceCla);
		}
		
		
		
		Course* getCourse(){//返回课程信息对象 
				return &course;
		}
		
		
		
		
		
		
		void setName(string name){
			this->name=name;
		}
		void setSid(string sid){
			this->sid=sid;
		}
		void setCid(string cid){
			this->cid=cid;
		}
		
	
		string getName(){
			return name;
		}
		string getSid(){
			return sid;
		}
		string getCid(){
			return cid;
		}
	
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

Course类

#include <string>
using namespace std;

class Course{
	private:
		int basicCla;//基础课程学分50
		int professionCla;//专业课程学分50
		int selectCla;//选修课程学分24
		int cultureCla;//人文课程学分8
		int practiceCla;//实践课程学分20
	public:
		
		Course(){
			this->basicCla=0;
			this->professionCla=0;
			this->selectCla=0;
			this->cultureCla=0;
			this->practiceCla=0;
		}
		
		int getBasicCla(){//获取基础课程学分
			return basicCla;
		}
		int getProfessionCla(){//获取专业课程学分
			return professionCla;
		}
		int getSelectCla(){//获取选修课程学分
			return selectCla;
		}
		int getCultureCla(){//获取人文课程学分
			return cultureCla;
		}
		int getPracticeCla(){//获取实践课程学分
			return practiceCla;
		}
		
		
		void setBasicCla(int basicCla){//设置基础课程学分
			this->basicCla=basicCla;
		}
		void setProfessionCla(int professionCla){//设置专业课程学分
			this->professionCla=professionCla;
		}
		
		void setSelectCla(int selectCla){//设置选修课程学分
			this->selectCla=selectCla;
		}
		
		void setCultureCla(int cultureCla){//设置人文课程学分
			this->cultureCla=cultureCla;
		}
		
		void setPracticeCla(int practiceCla){//设置实践课程学分
			this->practiceCla=practiceCla;
		}
		


		
		
		
				
	};

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64

main.cpp逻辑代码

#include <iostream>
#include <string>
#include "fstream"
#include "Student.h" 
#include "fstream"
#include <sstream>
#include<stdlib.h>

//数组长度函数  int sizeof(array) 
using namespace std;
const int size=5;

int main(){
	//函数声明 
	void ViewBySid(string sid,Student *students);
	void ViewCidAll(string cid,Student *students); 
	void changeRecord(string sid,Student *students,int basicCla,int professionCla,int selectCla,int cultureCla,int practiceCla);
	void setStudents(Student* students);
	void updateStudents(Student *students);
	void sortByRecord(int num,Student *students);
	
	
	
	
	//将文件中的数据存入对象数组中 
		Student students[size];
		setStudents(students);
		string strNum="";
		
		cout<<"菜单"<<endl;
		cout<< "1.查询某个学生信息"<<endl;
		cout<< "2.查询班级学生信息" <<endl;
		cout<< "3.修重置某个学生学分"<<endl;
		cout<< "4.根据学分排序" <<endl; 
		
		cout<<"请输入序号选择对应功能:" ;
 		strNum=cin.get();
 		
 		
		while(strNum!="esc") {
		int num=atoi(strNum.c_str());
 		//输入 
 		if(num==1){
 			cout<<"请输入学生的学号"<<endl;
			string sid;
			cin>>sid;
			ViewBySid(sid,students);
		 }else if(num==2){
		 	cout<<"请输入班级"<<endl;
			 string cid;
			 cin>> cid;
			 ViewCidAll(cid,students);
		 }else if(num==3){
		 	cout<<"请输入学号"<<endl;
			 string sid;
			 int basicCla;
			 int professionCla;
			 int selectCla;
			 int cultureCla;
			 int practiceCla;
			 cin>>sid;
			 cout<<"请输入基础课学分"<<endl;
			 cin>>basicCla;
			 cout<<"请输入专业课学分"<<endl;
			 cin>>professionCla;
			 cout<<"请输入选修课学分"<<endl;
			 cin>>selectCla;
			 cout<<"请输入文体课学分"<<endl;
			 cin>>cultureCla;
			 cout<<"请输入实践课学分"<<endl;
			 cin>>practiceCla;
			 changeRecord(sid,students,basicCla,professionCla,selectCla,cultureCla,practiceCla);
			 
			  
		 }else if(num==4){
		 	cout<<"输入下列序号选择排序的种类"<<endl; 
		 	cout<<"1.按照基础课程学分进行排序"<<endl;
		 	cout<<"2.按照专业课程学分进行排序"<<endl;
		 	cout<<"3.按照选修课程学分进行排序"<<endl;
		 	cout<<"4.按照文体课程学分进行排序"<<endl;
		 	cout<<"5.按照实践课程学分进行排序"<<endl;
		 	string orderNum;
		 	cin>>orderNum;
		 	int num=atoi(orderNum.c_str());
		 	sortByRecord(num,students);
		 }
 		updateStudents(students);
 		cout<<endl;
 		cout<<"继续输入序号使用其他功能,输入esc退出程序"<<endl; 
 		cin.get();
		cin>>strNum;
 	}
 	cout<<"谢谢使用!"<<endl; 
 		
                     
        
	
		
	
	
	
	return 0;
}

//传入学号,显示该学生的信息 
void ViewBySid(string sid,Student *students){
	for(int i=0;i<size;i++){
		if(sid==students[i].getSid()){
			Course *course=students[i].getCourse();
			cout<<students[i].getName()<<"  ";
			cout<<students[i].getSid()<<"  ";
			cout<<students[i].getCid()<<"  ";
			cout<<course->getBasicCla()<<"  ";
			cout<<course->getProfessionCla()<<"  ";
			cout<<course->getSelectCla()<<"  ";
			cout<<course->getCultureCla()<<"  ";
			cout<<course->getPracticeCla()<<"  ";
			break;
			
		}
	}
}

//传入班号,显示所有学生的信息 
void ViewCidAll(string cid,Student *students){
	for(int i=0;i<size;i++){
		if(cid==students[i].getCid()){
			Course *course=students[i].getCourse();
			cout<<students[i].getName()<<"  ";
			cout<<students[i].getSid()<<"  ";
			cout<<students[i].getCid()<<"  ";
			cout<<course->getBasicCla()<<"  ";
			cout<<course->getProfessionCla()<<"  ";
			cout<<course->getSelectCla()<<"  ";
			cout<<course->getCultureCla()<<"  ";
			cout<<course->getPracticeCla()<<"  "<<endl;
			
		}
	}
}


// 传入学号,修改学分信息
void changeRecord(string sid,Student *students,int basicCla,int professionCla,int selectCla,int cultureCla,int practiceCla){
		for(int i=0;i<size;i++){
		if(sid==students[i].getSid()){
			Course *course=students[i].getCourse();
			course->setBasicCla(basicCla);
			course->setProfessionCla(professionCla);
			course->setSelectCla(selectCla);
			course->setCultureCla(cultureCla);
			course->setPracticeCla(practiceCla);
		}
	}



} 
//将文件中信息存储到students对象数组中 

void setStudents(Student* students){
	char filename[]="D://student.txt";
		ifstream fin;
        fin.open(filename,ios::in);
        if(!fin){
        	cout<<"文件打开失败"; 
		}
		for(int i=0;i<size;i++){
			string str;
			fin>>str;
			students[i].setName(str);
			
			fin>>str;
			students[i].setSid(str);
			
			fin>>str;
			students[i].setCid(str);
			
			
			fin>>str;
			students[i].getCourse()->setBasicCla(atoi(str.c_str()));
			fin>>str;
			students[i].getCourse()->setProfessionCla(atoi(str.c_str()));
			fin>>str;
			students[i].getCourse()->setSelectCla(atoi(str.c_str()));
			fin>>str;
			students[i].getCourse()->setCultureCla(atoi(str.c_str()));
			fin>>str;
			students[i].getCourse()->setPracticeCla(atoi(str.c_str()));
 		
		}
		fin.close();
		
} 
//将数组信息更新到文件中 

void updateStudents(Student *students){
	 	char filename[] = "D://student.txt";
        char buff[1024]= {0};
        /***********  写文件  *************/
        //输出流ofstream对象调用fopen函数
        ofstream fout;
        fout.open(filename,ios::out);
        if(!fout)
        {
                cout<<"打开文件失败"<<filename<<endl;
        }
        
        
        
        
        for(int i=0;i<size;i++){
        	if(students[i].getName()==""){
        		fout<<"null"<<" ";
			}else{
				fout<<students[i].getName()<<" ";
			}
			if(students[i].getSid()==""){
        		fout<<"null"<<" ";
			}else{
				fout<<students[i].getSid()<<" ";
			}
			if(students[i].getCid()==""){
        		fout<<"null"<<" ";
			}else{
				fout<<students[i].getCid()<<" ";
			}
 			
 			
 			
 			
 			Course * course =students[i].getCourse();
 			fout<<course->getBasicCla()<<" ";
			fout<<course->getProfessionCla()<<" ";
			fout<<course->getSelectCla()<<" ";
			fout<<course->getCultureCla()<<" ";
			fout<<course->getPracticeCla()<<endl;
		}
        
        
        
        fout.flush();
        fout.close();

}


//对某类课程的分数进行排序    通过switch让用户进行数字选择,对应相应的课程 
void sortByRecord(int num,Student *students){
	Student *stus[5];
	for(int i=0;i<size;i++){
		stus[i]=&students[i];
	}
	
	if(num==1){//根据基础课程进行排序 
		for(int i=0;i<size-1;i++){
			for(int j=0;j<size-i-1;j++){
				Course *course=stus[j]->getCourse();
				Course *course2=stus[j+1]->getCourse();
				if(course->getBasicCla() > course2->getBasicCla()){
					
					Student *temp;
					temp=stus[j];
					stus[j]=stus[j+1];
					stus[j+1]=temp;
				}
			}
		}
		
	
		
	}else if(num==2){//根据专业课程进行排序 
		for(int i=0;i<size-1;i++){
			for(int j=0;j<size-i-1;j++){
				Course *course=stus[j]->getCourse();
				Course *course2=stus[j+1]->getCourse();
				if(course->getProfessionCla() > course2->getProfessionCla()){
					
					Student *temp;
					temp=stus[j];
					stus[j]=stus[j+1];
					stus[j+1]=temp;
				}
			}
		}
		
		
	}else if(num==3){//根据 选修课程进行排序 
		for(int i=0;i<size-1;i++){
			for(int j=0;j<size-i-1;j++){
				Course *course=stus[j]->getCourse();
				Course *course2=stus[j+1]->getCourse();
				if(course->getSelectCla() > course2->getSelectCla()){
					
					Student *temp;
					temp=stus[j];
					stus[j]=stus[j+1];
					stus[j+1]=temp;
				}
			}
		}
		
	}else if(num==4){//根据文体课程进行排序 
		for(int i=0;i<size-1;i++){
			for(int j=0;j<size-i-1;j++){
				Course *course=stus[j]->getCourse();
				Course *course2=stus[j+1]->getCourse();
				if(course->getCultureCla() > course2->getCultureCla()){
					
					Student *temp;
					temp=stus[j];
					stus[j]=stus[j+1];
					stus[j+1]=temp;
				}
			}
		}
		
		
	}else if(num==5){//根据实践课程进行排序 
		
		for(int i=0;i<size-1;i++){
			for(int j=0;j<size-i-1;j++){
				Course *course=stus[j]->getCourse();
				Course *course2=stus[j+1]->getCourse();
				if(course->getPracticeCla() > course2->getPracticeCla()){
					
					Student *temp;
					temp=stus[j];
					stus[j]=stus[j+1];
					stus[j+1]=temp;
				}
			}
		}
		
		
	}else{}
	for(int i=0;i<size;i++){
		Student stu=*stus[i];
			Course *course=stu.getCourse();
			cout<<stu.getName()<<"  ";
			cout<<stu.getSid()<<"  ";
			cout<<stu.getCid()<<"  ";
			cout<<course->getBasicCla()<<"  ";
			cout<<course->getProfessionCla()<<"  ";
			cout<<course->getSelectCla()<<"  ";
			cout<<course->getCultureCla()<<"  ";
			cout<<course->getPracticeCla()<<"  "<<endl;
		}
} 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/281308
推荐阅读
相关标签
  

闽ICP备14008679号