要不这样吧,六个月后我学差不多了,我在你写个 :big 我来顶一顶{:1_1:}{:1_1:} 学java的,我也无解 我是来回复的 顶一下 挣鱼币 看到楼主的,我打算自己写写这个当做练习了 比我好多了,我是自学的,好多东西一头雾水,有时候很简单的问题要弄几个小时才明白呢 求鱼币~~~~~~ 支持下 顶一下 看到困难了{:10_261:} 只能用c++? {:5_109:} @FishC 用c++编写一个程序任务:学生信息管理系统设计
学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:
1、系统以菜单方式工作
2、学生信息录入功能(学生信息用文件保存)--输入
3、学生信息浏览功能--输出
4、学生信息查询功能--算法按学号查询、按姓名查询
5、学生信息的删除与修改(可选项) 卷帘红尘亦爱她 发表于 2023-12-24 20:27
@FishC 用c++编写一个程序任务:学生信息管理系统设计 ...
当然可以!下面是一个简单的C++程序,用于实现你描述的学生信息管理系统。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct Student {
string id;
string name;
int age;
string gender;
string birthdate;
string address;
string phone;
string email;
};
// 函数声明
void displayMenu();
void addStudent();
void viewStudents();
void searchStudentsById();
void searchStudentsByName();
bool deleteStudent();
bool modifyStudent();
int main() {
int choice;
do {
displayMenu();
cin >> choice;
cin.ignore();// 忽略输入缓冲中的换行符
switch (choice) {
case 1:
addStudent();
break;
case 2:
viewStudents();
break;
case 3:
searchStudentsById();
break;
case 4:
searchStudentsByName();
break;
case 5:
if (!deleteStudent())
cout << "学生信息删除失败!" << endl;
break;
case 6:
if (!modifyStudent())
cout << "学生信息修改失败!" << endl;
break;
case 0:
cout << "感谢使用学生信息管理系统,再见!" << endl;
break;
default:
cout << "无效的选择,请重新输入!" << endl;
}
cout << endl;
} while (choice != 0);
return 0;
}
void displayMenu() {
cout << "====== 学生信息管理系统 ======" << endl;
cout << "1. 录入学生信息" << endl;
cout << "2. 浏览学生信息" << endl;
cout << "3. 按学号查询学生信息" << endl;
cout << "4. 按姓名查询学生信息" << endl;
cout << "5. 删除学生信息" << endl;
cout << "6. 修改学生信息" << endl;
cout << "0. 退出系统" << endl;
cout << "请输入选项:";
}
void addStudent() {
Student newStudent;
cout << "学号:";
getline(cin, newStudent.id);
cout << "姓名:";
getline(cin, newStudent.name);
cout << "年龄:";
cin >> newStudent.age;
cin.ignore();
cout << "性别:";
getline(cin, newStudent.gender);
cout << "出生年月:";
getline(cin, newStudent.birthdate);
cout << "地址:";
getline(cin, newStudent.address);
cout << "电话:";
getline(cin, newStudent.phone);
cout << "E-mail:";
getline(cin, newStudent.email);
// 将学生信息写入文件
ofstream outFile("students.txt", ios::app);// 打开文件以追加写入数据
outFile << newStudent.id << ' '
<< newStudent.name << ' '
<< newStudent.age << ' '
<< newStudent.gender << ' '
<< newStudent.birthdate << ' '
<< newStudent.address << ' '
<< newStudent.phone << ' '
<< newStudent.email << endl;
outFile.close();// 关闭文件
cout << "学生信息录入成功!" << endl;
}
void viewStudents() {
ifstream inFile("students.txt");
if (!inFile) {
cout << "无法打开学生信息文件!" << endl;
return;
}
string line;
while (getline(inFile, line)) {
cout << line << endl;
}
inFile.close();
}
void searchStudentsById() {
string targetId;
cout << "请输入要查询的学号:";
getline(cin, targetId);
ifstream inFile("students.txt");
if (!inFile) {
cout << "无法打开学生信息文件!" << endl;
return;
}
string line;
bool found = false;
while (getline(inFile, line)) {
size_t pos = line.find(targetId);
if (pos != string::npos) {
cout << line << endl;
found = true;
}
}
if (!found) {
cout << "未找到该学号对应的学生信息!" << endl;
}
inFile.close();
}
void searchStudentsByName() {
string targetName;
cout << "请输入要查询的姓名:";
getline(cin, targetName);
ifstream inFile("students.txt");
if (!inFile) {
cout << "无法打开学生信息文件!" << endl;
return;
}
string line;
bool found = false;
while (getline(inFile, line)) {
size_t pos = line.find(targetName);
if (pos != string::npos) {
cout << line << endl;
found = true;
}
}
if (!found) {
cout << "未找到该姓名对应的学生信息!" << endl;
}
inFile.close();
}
bool deleteStudent() {
string targetId;
cout << "请输入要删除的学号:";
getline(cin, targetId);
ifstream inFile("students.txt");
if (!inFile) {
cout << "无法打开学生信息文件!" << endl;
return false;
}
ofstream outFile("temp.txt");// 创建一个临时文件存放其他学生的信息
string line;
bool found = false;
while (getline(inFile, line)) {
size_t pos = line.find(targetId);
if (pos == string::npos) {
outFile << line << endl;
} else {
found = true;
}
}
inFile.close();
outFile.close();
// 删除旧的学生信息文件,并将临时文件重命名为新的学生信息文件
if (remove("students.txt") != 0 || rename("temp.txt", "students.txt") != 0) {
cout << "删除学生信息失败!" << endl;
return false;
}
if (found) {
cout << "学生信息删除成功!" << endl;
} else {
cout << "未找到该学号对应的学生信息,无法删除!" << endl;
}
return found;
}
bool modifyStudent() {
string targetId;
cout << "请输入要修改的学号:";
getline(cin, targetId);
fstream file("students.txt");
if (!file) {
cout << "无法打开学生信息文件!" << endl;
return false;
}
ofstream tempFile("temp.txt");
string line;
bool found = false;
while (getline(file, line)) {
size_t pos = line.find(targetId);
if (pos != string::npos) {
cout << "原信息:" << line << endl;
Student modifiedStudent;
modifiedStudent.id = targetId;
cout << "新姓名(不修改请直接回车):";
getline(cin, modifiedStudent.name);
cout << "新年龄(不修改请直接回车):";
cin >> modifiedStudent.age;
cin.ignore();
cout << "新性别(不修改请直接回车):";
getline(cin, modifiedStudent.gender);
cout << "新出生年月(不修改请直接回车):";
getline(cin, modifiedStudent.birthdate);
cout << "新地址(不修改请直接回车):";
getline(cin, modifiedStudent.address);
cout << "新电话(不修改请直接回车):";
getline(cin, modifiedStudent.phone);
cout << "新E-mail(不修改请直接回车):";
getline(cin, modifiedStudent.email);
if (modifiedStudent.name.empty()) {
size_t endPos = line.find(' ', pos + 1);
modifiedStudent.name = line.substr(pos + targetId.length() + 1, endPos - pos - targetId.length() - 1);
}
if (modifiedStudent.age == 0) {
size_t startPos = line.find_last_of(' ') + 1;
size_t endPos = line.find(' ', startPos);
modifiedStudent.age = stoi(line.substr(startPos, endPos - startPos));
}
if (modifiedStudent.gender.empty()) {
size_t startPos = line.find_last_of(' ') + 1;
size_t endPos = line.find(' ', startPos);
modifiedStudent.gender = line.substr(startPos, endPos - startPos);
}
if (modifiedStudent.birthdate.empty()) {
size_t startPos = line.find_last_of(' ') + 1;
size_t endPos = line.find(' ', startPos);
modifiedStudent.birthdate = line.substr(startPos, endPos - startPos);
}
if (modifiedStudent.address.empty()) {
size_t startPos = line.find_last_of(' ') + 1;
size_t endPos = line.find(' ', startPos);
modifiedStudent.address = line.substr(startPos, endPos - startPos);
}
if (modifiedStudent.phone.empty()) {
size_t startPos = line.find_last_of(' ') + 1;
size_t endPos = line.find(' ', startPos);
modifiedStudent.phone = line.substr(startPos, endPos - startPos);
}
if (modifiedStudent.email.empty()) {
size_t startPos = line.find_last_of(' ') + 1;
modifiedStudent.email = line.substr(startPos);
}
cout << "修改后的信息:" << modifiedStudent.id << ' '
<< modifiedStudent.name << ' '
<< modifiedStudent.age << ' '
<< modifiedStudent.gender << ' '
<< modifiedStudent.birthdate << ' '
<< modifiedStudent.address << ' '
<< modifiedStudent.phone << ' '
<< modifiedStudent.email << endl;
tempFile << modifiedStudent.id << ' '
<< modifiedStudent.name << ' '
<< modifiedStudent.age << ' '
<< modifiedStudent.gender << ' '
<< modifiedStudent.birthdate << ' '
<< modifiedStudent.address << ' '
<< modifiedStudent.phone << ' '
<< modifiedStudent.email << endl;
found = true;
} else {
tempFile << line << endl;
}
}
file.close();
tempFile.close();
// 删除旧的学生信息文件,并将临时文件重命名为新的学生信息文件
if (remove("students.txt") != 0 || rename("temp.txt", "students.txt") != 0) {
cout << "修改学生信息失败!" << endl;
return false;
}
if (found) {
cout << "学生信息修改成功!" << endl;
} else {
cout << "未找到该学号对应的学生信息,无法修改!" << endl;
}
return found;
}
这个程序使用了一个结构体`Student`来表示学生信息。主要功能包括学生信息录入、浏览、查询、删除和修改。学生信息会保存在一个名为`students.txt`的文件中。
你可以根据需要自行扩展其他功能,比如按年龄查询、按性别查询等。另外,由于这只是一个简单的示例程序,没有进行输入验证、异常处理等,在实际应用中需要添加这些功能以提高系统的健壮性。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
1
[2]