// 登录成功,进入学生菜单 Student student = { id, password,{} }; int choice; do { studentMenu(); cin >> choice; switch (choice) { case 1: {// 查看可选课程 showCourseList(); break; } case 2: { // 选课 cout << "请输入要选的课程编号:" << endl; string code; cin >> code; for (size_t i = 0; i < courses.size(); i++) { if (courses[i].code == code) { // 找到课程,添加到已选课程列表 student.courses.push_back(courses[i]); cout << "选课成功!" << endl; break; } if (i == courses.size() - 1) { // 未找到课程 cout << "没有找到对应的课程,请重新输入!" << endl; } } break; } case 3: { // 查看已选课程 if (student.courses.empty()) { cout << "您还没有选课!" << endl; } else { cout << "已选课程:" << endl; for (size_t i = 0; i < student.courses.size(); i++) { cout << i + 1 << ". " << student.courses[i].name << "(编号:" << student.courses[i].code << ",地点:" << student.courses[i].location << ",学分:" << student.courses[i].credit << ")" << endl; } } break; } case 0: // 退出 break; default: cout << "无效的选择,请重新输入!" << endl; break; }代码内容
时间: 2024-04-07 16:27:59 浏览: 21
这段代码主要实现了学生登录成功后的菜单,包括查看可选课程、选课、查看已选课程等功能。
具体来说,程序会先根据学生的 id 和 password 创建一个 Student 对象,其中 courses 属性为空,表示未选课程。之后通过 do-while 循环显示学生菜单,让用户输入选择,然后根据用户的选择使用 switch 语句来调用对应的函数。
如果用户选择查看可选课程,程序会调用 showCourseList 函数来显示可选课程列表。如果用户选择选课,程序会让用户输入要选的课程编号,然后通过遍历 courses 列表来查找对应的课程,如果找到了课程则将其添加到学生的 courses 列表中,否则提示用户未找到对应的课程。如果用户选择查看已选课程,则会遍历学生的 courses 列表,逐个输出已选课程的信息。如果学生的 courses 列表为空,则提示用户还未选课。
如果用户输入的选择既不是 1、2、也不是 0,那么程序会输出无效的选择信息并重新显示学生菜单,直到用户输入 0 退出程序为止。
总的来说,这段代码的设计思路比较清晰,将不同的学生功能分别封装成不同的函数,通过 switch 语句来根据用户的选择调用对应的函数,使得代码结构更加清晰明了。同时,通过使用 Student 对象来存储学生信息和已选课程列表,也方便了学生功能的实现。
相关问题
bool studentLogin(vector<Student>& userInfos, string username, string password) { for (Student userInfo : userInfos) { if (userInfo.id == username && userInfo.password == password) { cout << "登录成功!" << endl; // 登录成功,进入学生菜单 Student student = { username, password,{} }; int choice; do { studentMenu(); cin >> choice; switch (choice) { case 1: {// 查看可选课程 showCourseList(); break; } case 2: { // 选课 cout << "请输入要选的课程编号:" << endl; string code; cin >> code; for (size_t i = 0; i < courses.size(); i++) { if (courses[i].code == code) { // 找到课程,添加到已选课程列表 student.courses.push_back(courses[i]); cout << "选课成功!" << endl; break; } if (i == courses.size() - 1) { // 未找到课程 cout << "没有找到对应的课程,请重新输入!" << endl; } } break; } case 3: { // 查看已选课程 if (student.courses.empty()) { cout << "您还没有选课!" << endl; } else { cout << "已选课程:" << endl; for (size_t i = 0; i < student.courses.size(); i++) { cout << i + 1 << ". " << student.courses[i].name << "(编号:" << student.courses[i].code << ",地点:" << student.courses[i].location << ",学分:" << student.courses[i].credit << ")" << endl; } } break; } case 0: // 退出 break; default: cout << "无效的选择,请重新输入!" << endl; break; } } else {cout<<"登录失败!!" 怎么修改
这段代码缺少大括号,应该在 `} else {` 后面添加大括号,形成完整的 if-else 结构。修改后的代码如下所示:
```
bool studentLogin(vector<Student>& userInfos, string username, string password) {
for (Student userInfo : userInfos) {
if (userInfo.id == username && userInfo.password == password) {
cout << "登录成功!" << endl;
// 登录成功,进入学生菜单
Student student = { username, password,{} };
int choice;
do {
studentMenu();
cin >> choice;
switch (choice) {
case 1: { // 查看可选课程
showCourseList();
break;
}
case 2: { // 选课
cout << "请输入要选的课程编号:" << endl;
string code;
cin >> code;
for (size_t i = 0; i < courses.size(); i++) {
if (courses[i].code == code) {
// 找到课程,添加到已选课程列表
student.courses.push_back(courses[i]);
cout << "选课成功!" << endl;
break;
}
if (i == courses.size() - 1) {
// 未找到课程
cout << "没有找到对应的课程,请重新输入!" << endl;
}
}
break;
}
case 3: { // 查看已选课程
if (student.courses.empty()) {
cout << "您还没有选课!" << endl;
}
else {
cout << "已选课程:" << endl;
for (size_t i = 0; i < student.courses.size(); i++) {
cout << i + 1 << ". " << student.courses[i].name << "(编号:" << student.courses[i].code <<
",地点:" << student.courses[i].location << ",学分:" << student.courses[i].credit << ")" << endl;
}
}
break;
}
case 0: // 退出
break;
default:
cout << "无效的选择,请重新输入!" << endl;
break;
}
} while (choice != 0);
return true;
}
}
cout << "登录失败!" << endl;
return false;
}
```
请用vs写一段完整能运行的代码,是关于选课系统的,他通过输入学生的账号密码或管理员来进入不同的菜单,,学生的账号是学号,密码是123;管理员的账号是114514,密码是1234,学生账号进入的菜单可以进行简单的选课。管理员端的菜单则可以增填课程。课程的信息有课程名称,课程编号,上课地点,学分
好的,以下是一份简单的选课系统代码,包含学生和管理员两种账号:
```c++
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 课程结构体
struct Course {
string name; // 课程名称
string code; // 课程编号
string location;// 上课地点
int credit; // 学分
};
// 学生结构体
struct Student {
string id; // 学号
string password;// 密码
vector<Course> courses; // 已选课程
};
// 管理员账号
const string ADMIN_ID = "114514";
const string ADMIN_PASSWORD = "1234";
// 学生账号
const string STUDENT_ID = "学号";
const string STUDENT_PASSWORD = "123";
// 课程列表
vector<Course> courses = {
{"高等数学", "001", "教学楼101", 4},
{"线性代数", "002", "教学楼102", 3},
{"大学英语", "003", "教学楼103", 2},
{"计算机基础", "004", "实验楼201", 3}
};
// 登录菜单
void loginMenu() {
cout << "请选择登录类型:" << endl;
cout << "1. 学生" << endl;
cout << "2. 管理员" << endl;
cout << "0. 退出" << endl;
}
// 学生菜单
void studentMenu() {
cout << "请选择操作类型:" << endl;
cout << "1. 查看可选课程" << endl;
cout << "2. 选课" << endl;
cout << "3. 查看已选课程" << endl;
cout << "0. 退出" << endl;
}
// 管理员菜单
void adminMenu() {
cout << "请选择操作类型:" << endl;
cout << "1. 查看课程列表" << endl;
cout << "2. 增加课程" << endl;
cout << "0. 退出" << endl;
}
// 显示课程列表
void showCourseList() {
cout << "---------------------" << endl;
cout << "课程列表:" << endl;
for (int i = 0; i < courses.size(); i++) {
cout << i+1 << ". " << courses[i].name << "(编号:" << courses[i].code <<
",地点:" << courses[i].location << ",学分:" << courses[i].credit << ")" << endl;
}
cout << "---------------------" << endl;
}
// 增加课程
void addCourse() {
Course course;
cout << "请输入课程名称:" << endl;
cin >> course.name;
cout << "请输入课程编号:" << endl;
cin >> course.code;
cout << "请输入上课地点:" << endl;
cin >> course.location;
cout << "请输入学分:" << endl;
cin >> course.credit;
courses.push_back(course);
cout << "课程添加成功!" << endl;
}
// 学生登录
void studentLogin() {
string id, password;
cout << "请输入学号:" << endl;
cin >> id;
cout << "请输入密码:" << endl;
cin >> password;
if (id == STUDENT_ID && password == STUDENT_PASSWORD) {
// 登录成功,进入学生菜单
Student student = {id, password, {}};
int choice;
do {
studentMenu();
cin >> choice;
switch (choice) {
case 1: // 查看可选课程
showCourseList();
break;
case 2: // 选课
cout << "请输入要选的课程编号:" << endl;
string code;
cin >> code;
for (int i = 0; i < courses.size(); i++) {
if (courses[i].code == code) {
// 找到课程,添加到已选课程列表
student.courses.push_back(courses[i]);
cout << "选课成功!" << endl;
break;
}
if (i == courses.size() - 1) {
// 未找到课程
cout << "没有找到对应的课程,请重新输入!" << endl;
}
}
break;
case 3: // 查看已选课程
if (student.courses.empty()) {
cout << "您还没有选课!" << endl;
} else {
cout << "已选课程:" << endl;
for (int i = 0; i < student.courses.size(); i++) {
cout << i+1 << ". " << student.courses[i].name << "(编号:" << student.courses[i].code <<
",地点:" << student.courses[i].location << ",学分:" << student.courses[i].credit << ")" << endl;
}
}
break;
case 0: // 退出
break;
default:
cout << "无效的选择,请重新输入!" << endl;
break;
}
} while (choice != 0);
} else {
cout << "学号或密码错误,请重新登录!" << endl;
}
}
// 管理员登录
void adminLogin() {
string id, password;
cout << "请输入管理员账号:" << endl;
cin >> id;
cout << "请输入密码:" << endl;
cin >> password;
if (id == ADMIN_ID && password == ADMIN_PASSWORD) {
// 登录成功,进入管理员菜单
int choice;
do {
adminMenu();
cin >> choice;
switch (choice) {
case 1: // 查看课程列表
showCourseList();
break;
case 2: // 增加课程
addCourse();
break;
case 0: // 退出
break;
default:
cout << "无效的选择,请重新输入!" << endl;
break;
}
} while (choice != 0);
} else {
cout << "管理员账号或密码错误,请重新登录!" << endl;
}
}
int main() {
int choice;
do {
loginMenu();
cin >> choice;
switch (choice) {
case 1: // 学生登录
studentLogin();
break;
case 2: // 管理员登录
adminLogin();
break;
case 0: // 退出
break;
default:
cout << "无效的选择,请重新输入!" << endl;
break;
}
} while (choice != 0);
return 0;
}
```
需要注意的是,这只是一份简单的示例代码,实际的选课系统可能需要更加完善的功能和安全性措施。