void mzfind(Books *as){ string name; cout<<"请输入需要咨询的课程名称"<<endl; cin>>name; for(int i=1;i <= as->number;i++){ if(as->ClassArray[i].name==name){ cout<<as->ClassArray[i].name<<endl<<"课程编号:"<<as->ClassArray[i].number<<endl<<"课程性质:"<<as->ClassArray[i].form <<endl<<"课程学分:"<<as->ClassArray[i].grade<<endl<<"课程学时:"<<as->ClassArray[i].time<<endl<<"课程授课学时:"<<as->ClassArray[i].finishtime<<endl<<"课程实验学时:"<<as->ClassArray[i].experience <<endl<<"输出完成"<<endl; } } system("pause"); system("cls"); }
时间: 2023-10-30 11:37:16 浏览: 35
这也是一段 C++ 代码,函数名为 mzfind,参数类型为 Books 指针。
代码主要功能是根据用户输入的课程名称查询该课程的详细信息,并输出到屏幕上。具体实现如下:
1. 提示用户输入需要查询的课程名称;
2. 循环遍历所有课程,如果找到输入的课程名称则输出该课程的详细信息;
3. 最后暂停程序并清除屏幕。
代码中同样使用了结构体和指针,具体实现需要查看完整代码。
相关问题
list<Book>lst; class Bookstore { private: list<Book> books; public: void WarehousingBook() {//入库书籍 cout << "请输入书名:"; string name; cin >> name; cout << "请输入作者:"; string author; cin >> author; cout << "请输入出版社:"; string publisher; cin >> publisher; cout << "请输入页数:"; int pages; cin >> pages; cout << "请输入最新入库时间(格式:年 月 日):"; int year, month, day; cin >> year >> month >> day; Time latestTime(year, month, day); cout << "请输入进货数量:"; int stock; cin >> stock; cout << "请输入价格:"; double price; cin >> price; list<Book>::iterator it; for (it = lst.begin(); it != lst.end(); it++){ if (it->name == name && it->author == author) { it->stock += stock; cout << "该书库里存在该书,入库成功!" << endl; return; } } Book b(name, author, publisher, pages, latestTime, stock, price); books.push_back(b); cout << "该书库里未存在该书,入库成功!" << endl; } 为什么实现不了
这段代码可能实现不了的原因是因为lst和books是两个不同的list对象,且在函数中只对lst进行了遍历和操作,而将新书籍添加到了books中。所以在函数结束后,books中的内容并没有被更新。如果想要实现添加新书籍的功能,需要将遍历和操作的对象改为books。同时,如果需要在多个函数中共享books这个list对象,需要将其定义为类的私有成员变量。修改后的代码如下所示:
```
class Bookstore {
private:
list<Book> books; // 书籍列表
public:
void WarehousingBook() { // 入库书籍
cout << "请输入书名:";
string name;
cin >> name;
cout << "请输入作者:";
string author;
cin >> author;
cout << "请输入出版社:";
string publisher;
cin >> publisher;
cout << "请输入页数:";
int pages;
cin >> pages;
cout << "请输入最新入库时间(格式:年 月 日):";
int year, month, day;
cin >> year >> month >> day;
Time latestTime(year, month, day);
cout << "请输入进货数量:";
int stock;
cin >> stock;
cout << "请输入价格:";
double price;
cin >> price;
list<Book>::iterator it;
for (it = books.begin(); it != books.end(); it++) {
if (it->name == name && it->author == author) {
it->stock += stock;
cout << "该书库里存在该书,入库成功!" << endl;
return;
}
}
Book b(name, author, publisher, pages, latestTime, stock, price);
books.push_back(b);
cout << "该书库里未存在该书,入库成功!" << endl;
}
};
```
void Cin(Books *abs){ int i = 0; int g; cout<<"添加几个课程?"<<endl; xiuf(&g); if(abs->number + g > 5){ cout<<"太多了,进不去了!!!"<<endl; system("pause"); system("cls"); }else{ for(i=0;i<g;i++){ abs->number++; cout<<"输入课程名字"<<endl; string mzl; cin>>mzl; abs->ClassArray[abs->number].name = mzl; cout<<"输入课程编号"<<endl; string numberl; cin>>numberl; abs->ClassArray[abs->number].number = numberl; cout<<"输入课程性质"<<endl; string forml; cin>>forml; abs->ClassArray[abs->number].form = forml; cout<<"输入课程学分"<<endl; int gradel; xiuf(&gradel); abs->ClassArray[abs->number].grade = gradel; cout<<"输入课程学时"<<endl; int timel; xiuf(&timel); abs->ClassArray[abs->number].time = timel; cout<<"输入课程授课学时"<<endl; int finishtimel; xiuf(&finishtimel); abs->ClassArray[abs->number].finishtime = finishtimel; cout<<"输入课程实验学时"<<endl; int experiencel; xiuf(&experiencel); abs->ClassArray[abs->number].experience = experiencel; cout<<"添加成功"<<endl; abs->ClassArray[abs->number].people = abs->number *10; system("pause"); system("cls"); ofstream out("kc.txt",ios::app);//app表示每次操作前均定位到文件末尾 if(out.fail()){ cout<<"error\n"; } out<<"课程名字:"<<mzl<<endl; out<<"课程编号:"<<numberl<<endl; out<<"课程性质:"<<forml<<endl; out<<"课程学分:"<<gradel<<endl; out<<"课程学时:"<<timel<<endl; out<<"课程授课学时:"<<finishtimel<<endl; out<<"课程实验学时:"<<experiencel<<endl; out.close(); }} }
这段代码定义了一个函数Cin,函数参数为一个指向Books类型的指针abs。
函数的作用是向Books类型的对象中添加课程信息。首先询问要添加几个课程,然后从标准输入流(cin)中读取课程的名称、编号、性质、学分、学时、授课学时和实验学时等信息,并存储到Books类型对象的ClassArray数组中。每次添加成功后,输出提示信息,并将课程信息写入到一个名为"kc.txt"的文件中。
如果要添加的课程数量超过了5个,则输出错误提示信息并暂停程序执行,如果没有超过,则通过循环依次添加每一个课程信息。在循环中,先将Books类型对象的number属性增加1,然后依次从标准输入流中读取课程的各项信息,存储到ClassArray数组中。读取课程学分和课程学时时,调用了函数xiuf来确保输入的是整数。最后,将添加成功的课程信息写入到文件中,并输出提示信息。
总体来说,该函数的作用是实现课程信息的录入和存储。