C++基础学生管理系统

C++基础学生管理系统:完整攻略

简介

学生管理系统是程序开发中常见的一个小型项目,用于对学生信息、成绩等进行管理。本篇攻略将介绍如何使用C++编写一个简单的学生管理系统。

功能分析

根据需求,我们将实现以下功能:

  1. 添加学生信息(包括姓名、学号、性别、年龄、身份证号、联系电话、家庭住址等);
  2. 查询所有学生信息;
  3. 按条件查询学生信息(可以按学号、姓名、年龄等条件查询);
  4. 修改学生信息;
  5. 删除学生信息。

前期准备

在开始开发之前,我们需要安装开发环境。本篇攻略使用Visual Studio Code作为开发工具,使用MinGW作为编译器,同时还需要安装C/C++插件。

代码实现

1. 添加学生信息

用户需要输入学生信息,然后将学生信息保存到文件中。代码示例:

#include <iostream>
#include <fstream>
using namespace std;

struct Student 
{
    string name;    // 姓名
    string id;      // 学号
    string gender;  // 性别
    int age;        // 年龄
    string id_card; // 身份证号
    string phone;   // 联系电话
    string address; // 家庭住址
};

void add_student() 
{
    Student stu;
    cout << "请输入学生信息:" << endl;
    cout << "姓名:";
    cin >> stu.name;
    cout << "学号:";
    cin >> stu.id;
    cout << "性别:";
    cin >> stu.gender;
    cout << "年龄:";
    cin >> stu.age;
    cout << "身份证号:";
    cin >> stu.id_card;
    cout << "联系电话:";
    cin >> stu.phone;
    cout << "家庭住址:";
    cin >> stu.address;

    ofstream out("students.txt", ios::app);
    out << stu.name << " " << stu.id << " " << stu.gender << " " << stu.age << " " << stu.id_card << " " << stu.phone << " " << stu.address << endl;
    out.close();
}

2. 查询所有学生信息

从文件中读取所有学生信息,并输出到屏幕上。代码示例:

void show_all_students() 
{
    ifstream in("students.txt");
    string line;
    while (getline(in, line)) 
    {
        cout << line << endl;
    }
    in.close();
}

3. 按条件查询学生信息

根据用户输入的条件,从文件中查询学生信息,并输出到屏幕上。代码示例:

void find_students() 
{
    cout << "请输入查询条件(学号/姓名/年龄):";
    string cond;
    cin >> cond;
    ifstream in("students.txt");
    string line;
    while (getline(in, line)) 
    {
        stringstream ss(line);
        string id, name, gender, id_card, phone, address;
        int age;
        ss >> name >> id >> gender >> age >> id_card >> phone >> address;
        // 根据条件查询
        if (cond == id || cond == name || cond == to_string(age)) 
        {
            cout << line << endl;
        }
    }
    in.close();
}

4. 修改学生信息

从文件中读取所有学生信息,根据学号查询到对应的学生,然后让用户修改信息,最后将修改后的结果保存到文件中。代码示例:

void update_student() 
{
    string sid;
    cout << "请输入要修改的学生学号:";
    cin >> sid;
    ifstream in("students.txt");
    string line;
    bool found = false;
    Student stu;
    while (getline(in, line)) 
    {
        stringstream ss(line);
        ss >> stu.name >> stu.id >> stu.gender >> stu.age >> stu.id_card >> stu.phone >> stu.address;
        if (stu.id == sid) 
        {
            found = true;
            break;
        }
    }
    in.close();
    if (!found) 
    {
        cout << "找不到该学生!" << endl;
        return;
    }
    cout << "学生信息如下:" << endl;
    cout << "姓名:" << stu.name << endl;
    cout << "学号:" << stu.id << endl;
    cout << "性别:" << stu.gender << endl;
    cout << "年龄:" << stu.age << endl;
    cout << "身份证号:" << stu.id_card << endl;
    cout << "联系电话:" << stu.phone << endl;
    cout << "家庭住址:" << stu.address << endl;

    cout << "请输入修改后的信息:" << endl;
    cout << "姓名:";
    cin >> stu.name;
    cout << "学号:";
    cin >> stu.id;
    cout << "性别:";
    cin >> stu.gender;
    cout << "年龄:";
    cin >> stu.age;
    cout << "身份证号:";
    cin >> stu.id_card;
    cout << "联系电话:";
    cin >> stu.phone;
    cout << "家庭住址:";
    cin >> stu.address;

    ofstream out("students.tmp", ios::app);
    ifstream in2("students.txt");
    while (getline(in2, line)) 
    {
        stringstream ss(line);
        string id;
        ss >> name >> id >> gender >> age >> id_card >> phone >> address;
        if (id != sid) 
        {
            out << line << endl;
        }
    }
    in2.close();

    out << stu.name << " " << stu.id << " " << stu.gender << " " << stu.age << " " << stu.id_card << " " << stu.phone << " " << stu.address << endl;
    out.close();
    remove("students.txt");
    rename("students.tmp", "students.txt");

    cout << "修改学生信息成功!" << endl;
}

5. 删除学生信息

从文件中读取所有学生信息,根据学号查询到对应的学生,然后将该学生从列表中删除。代码示例:

void delete_student() 
{
    string sid;
    cout << "请输入要删除的学生学号:";
    cin >> sid;
    ifstream in("students.txt");
    string line;
    bool found = false;
    Student stu;
    while (getline(in, line)) 
    {
        stringstream ss(line);
        ss >> stu.name >> stu.id >> stu.gender >> stu.age >> stu.id_card >> stu.phone >> stu.address;
        if (stu.id == sid) 
        {
            found = true;
            break;
        }
    }
    in.close();
    if (!found) 
    {
        cout << "找不到该学生!" << endl;
        return;
    }
    ofstream out("students.tmp", ios::app);
    ifstream in2("students.txt");
    while (getline(in2, line)) 
    {
        stringstream ss(line);
        string id;
        ss >> name >> id >> gender >> age >> id_card >> phone >> address;
        if (id != sid) 
        {
            out << line << endl;
        }
    }
    in2.close();

    out.close();
    remove("students.txt");
    rename("students.tmp", "students.txt");

    cout << "删除学生信息成功!" << endl;
}

总结

本篇攻略介绍了如何使用C++编写一个简单的学生管理系统,并实现了添加、查询、修改、删除等功能。在开发过程中,需要注意代码的优化以及错误处理。如有任何疑问或建议,请留言讨论。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++基础学生管理系统 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Linux折腾记(八):使用GCC和GNU Binutils编写能在x86实模式运行的16位代码

    Linux折腾记(八)的主题是如何使用GCC和GNU Binutils编写能在x86实模式运行的16位代码。针对这个主题,我们可以分为以下几步。 步骤1:准备工作 在开始编写代码之前,我们需要安装在Ubuntu系统上安装GCC和GNU Binutils。可以使用以下命令进行安装: sudo apt-get update sudo apt-get instal…

    C 2023年5月23日
    00
  • Windows 2003 服务器安全设置图文教程

    针对“Windows 2003 服务器安全设置图文教程”的完整攻略,我给出如下的详细讲解。 Windows 2003 服务器安全设置图文教程攻略 为什么需要进行安全设置 Windows 2003服务器上的安全设置非常重要,它无论是对个人用户,还是企业用户,都拥有不可忽视的重要性。 首先,Windows 2003服务器安全设置可以保障服务器的安全稳定性,避免网…

    C 2023年5月22日
    00
  • C语言学习基础知识分享

    C语言学习基础知识分享 一、学习前的准备 1. 了解计算机基础知识 在你开始学习C语言之前,你需要了解计算机的基础知识。例如,你需要了解操作系统、计算机硬件、编程语言等基本概念。这可以帮助你更好地理解C语言,并更有效地编写代码。 2. 确定学习目标 在学习C语言之前,你需要清楚自己的学习目标。例如,你是为了学习编程基础知识还是为了理解算法和数据结构等高级主题…

    C 2023年5月23日
    00
  • Java如何将String转换成json对象或json数组

    将String转换为JSON对象或JSON数组是Java开发中常见的操作。这里为大家提供基于Jackson库的两种示例,其中第一种示例将String转换为JSON对象,第二种示例将String转换为JSON数组。 1. 将String转换为JSON对象 1.1 引入依赖 首先需要引入Jackson库的依赖,以Maven为例,在项目的pom.xml文件中添加以…

    C 2023年5月23日
    00
  • json实现jsp分页实例介绍(附效果图)

    下面就来详细讲解一下“json实现jsp分页实例介绍(附效果图)”的完整攻略。 1. 基本介绍 这个示例主要是基于jsp和json技术实现的分页功能。通过jsp实现数据的展示以及分页的管理,通过json来实现前后台数据的交互,即ajax异步刷新数据,实现页面的无刷新分页。 2. 具体步骤 2.1 实现数据的获取和展示 首先,我们需要在jsp页面中实现数据的获…

    C 2023年5月23日
    00
  • C++实现算法两个数字相加详解

    C++实现算法两个数字相加详解 在C++中,实现两个数字相加的算法可以使用基本的加法运算符和关键字。以下是实现该算法的示例方法。 实现步骤 声明两个数字变量 a 和 b。 将这些变量的值设置为所需的数字。 使用加法运算符将这些数字相加,将结果存储在另一个变量中,命名为 result。 将结果打印到控制台。 下面是示例代码 int a = 20; int b …

    C 2023年5月23日
    00
  • Java深入讲解异常处理try catch的使用

    Java深入讲解异常处理try catch的使用 在Java中,异常处理是非常重要的一部分。通过异常处理,我们可以及时发现并解决程序中的错误,保证程序的正常运行。其中,try catch语句是最常用的异常处理方式之一。本文将详细讲解Java中异常处理try catch的使用,帮助读者更好地理解和掌握异常处理的方法。 try catch语句的基本用法 Java…

    C 2023年5月23日
    00
  • asp生成不需要数据库的中奖码

    对于“asp生成不需要数据库的中奖码”的问题,我将提供完整的攻略。 首先,我们需要定义一个用来生成中奖码的函数。这个函数需要满足以下要求: 需要生成固定长度的中奖码。 每个中奖码由字母和数字组成。 中奖码不能重复。 下面是一个示例代码,用于生成6位长度的中奖码: Function GenerateCode() Dim code Dim i Randomize…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部