freeparty 发表于 2015-2-12 21:46:49

我来帮忙顶一下。

haiouda 发表于 2015-2-12 23:07:30

这人东西呀,我倒是想帮你,可是心有余力不足呀;

要不这样吧,六个月后我学差不多了,我在你写个 :big

mhhnjuol 发表于 2015-2-13 08:33:42

我来顶一顶{:1_1:}{:1_1:}

彳山一几攵 发表于 2015-3-9 17:32:26

学java的,我也无解

不要叫我小六 发表于 2015-3-11 18:31:09

我是来回复的

d5zhao 发表于 2015-4-16 04:50:49

顶一下

zd0307 发表于 2015-4-16 04:58:38

挣鱼币

a2211455 发表于 2015-4-21 18:58:54

看到楼主的,我打算自己写写这个当做练习了

Anny黄 发表于 2015-4-21 22:35:47

比我好多了,我是自学的,好多东西一头雾水,有时候很简单的问题要弄几个小时才明白呢

Hugo101 发表于 2015-5-3 17:04:05

求鱼币~~~~~~

小小小菜菜菜 发表于 2018-12-20 15:31:42

支持下

X用户 发表于 2018-12-22 08:46:33

顶一下

扩展阅读 发表于 2018-12-24 11:43:57

看到困难了{:10_261:}

心驰神往 发表于 2020-11-4 10:08:54

只能用c++?

心驰神往 发表于 2020-11-4 10:09:26

{:5_109:}

卷帘红尘亦爱她 发表于 2023-12-24 20:27:09

@FishC 用c++编写一个程序任务:学生信息管理系统设计
学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:
1、系统以菜单方式工作
2、学生信息录入功能(学生信息用文件保存)--输入
3、学生信息浏览功能--输出
4、学生信息查询功能--算法按学号查询、按姓名查询
5、学生信息的删除与修改(可选项)

FishC 发表于 2023-12-24 20:27:45

卷帘红尘亦爱她 发表于 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]
查看完整版本: C++程序的一个课程设计