使用C++实现学生管理系统

我在前面的博客中分别使用C语言的动态数组和链表实现了学生成绩管理系统,最近正好在学习C++,于是我便使用C++实现了学生成绩管理系统,算法和前面的C语言的动态数组实现的学生成绩管理系统差不多,只是在动态内存分配上使用了C++的New,而C语言中使用的是malloc,在排序中使用了插入排序

我的使用C语言实现的学生成绩管理系统:http://blog.csdn.net/u010105970/article/details/17752193

使用链表实现的学生成绩管理系统:http://blog.csdn.net/u010105970/article/details/25058379

插入排序:http://blog.csdn.net/u010105970/article/details/25464535

首先定义一个Student类

class Student//学生类
{
public:
	~Student();//析构函数
    void InputStudent(void);//输入学生信息
    void OutputStudent(void);//输出学生信息
    void DeleteStudent(void);//删除学生信息
    void SearchStudent(void);//查找学生信息
    void ChangeStudent(void);//修改学生信息
    void ScortByChinese(void);//对学生的语文成绩排序
    void ScortByMath(void);  //对学生的数学成绩排序
    void ScortByEnglish(void);//对学生的英语成绩排序
    void ScortByTotal(void);//对学生的总分排序
 
private:
    Student *St;     //学生类指针
    int Size;       //学生的人数    
    string Name;    //姓名
    int Age;        //年龄
    int No;         //学号
    float Score[3];//三科的成绩
    float Total;  //总分
    float Ave;   //平均分
};


然后通过各个成员函数操作Student类,算法和C语言的差不多我就不多解释


程序的全部代码

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

class Student//学生类
{
public:
	~Student();//析构函数
    void InputStudent(void);//输入学生信息
    void OutputStudent(void);//输出学生信息
    void DeleteStudent(void);//删除学生信息
    void SearchStudent(void);//查找学生信息
    void ChangeStudent(void);//修改学生信息
    void ScortByChinese(void);//对学生的语文成绩排序
    void ScortByMath(void);  //对学生的数学成绩排序
    void ScortByEnglish(void);//对学生的英语成绩排序
    void ScortByTotal(void);//对学生的总分排序
 
private:
    Student *St;     //学生类指针
    int Size;       //学生的人数    
    string Name;    //姓名
    int Age;        //年龄
    int No;         //学号
    float Score[3];//三科的成绩
    float Total;  //总分
    float Ave;   //平均分
};

//析构函数
Student::~Student()
{
	delete(St);
}

//输入学生的信息
void Student::InputStudent(void)
{
    int len;//学生的人数
    cout<<"请输入学生的人数:";
    cin>>len;

    system("cls");

    Size = len;

    St = new Student[Size];

    for(int i=0; i<len; i++)
    {
        cout<<"请输入第"<<i+1<<"个学生的姓名:";
        cin>>St[i].Name;

        cout<<"请输入第"<<i+1<<"个学生的年龄:";
        cin>>St[i].Age;

        cout<<"请输入第"<<i+1<<"个学生的学号:";
        cin>>St[i].No;

        cout<<"请输入第"<<i+1<<"个学生的语文成绩:";
        cin>>St[i].Score[0];

        cout<<"请输入第"<<i+1<<"个学生的数学成绩:";
        cin>>St[i].Score[1];

        cout<<"请输入第"<<i+1<<"个学生的英语成绩:";
        cin>>St[i].Score[2];

        St[i].Total = St[i].Score[0] + St[i].Score[1] + St[i].Score[2];

        St[i].Ave = St[i].Total / 3.0f;

        system("cls");
    }
}

//输出学生的信息
void Student::OutputStudent(void)
{
    cout<<"姓名  年龄   学号   语文   数学  英语  总分  平均分"<<endl;

    for(int i=0; i<Size; i++)
    {
        cout<<St[i].Name<<"  "<<St[i].Age<<"  "<<St[i].No<<"  "<<St[i].Score[0]<<"  "<<St[i].Score[1]<<"  "<<St[i].Score[2]<<"  "
               <<St[i].Score[2]<<"  "<<St[i].Total<<"  "<<St[i].Ave<<endl;
    }
}

void Student::DeleteStudent(void)//删除学生信息
{
    string str;
    cout<<"请输入你需要删除的学生的姓名:";
    cin>>str;

    int num;//标记姓名相等时的下标

    //寻找姓名相等时的下标
    for(int i=0; i<Size; i++)
    {
        //当姓名相等时
        if(str == St[i].Name)
        {
            num = i;
        }
    }

    //将后面的学生向前移
    for(int j=num+1; j<Size; j++)
    {
        St[j-1] = St[j];
    }

    Size -= 1;//学生人数减少一个 
}

void Student::SearchStudent(void)//查找学生信息
{
    string name;
    cout<<"请输入你需要查找的学生的姓名:";
    cin>>name;

    int i;

    for(i=0; i<Size; i++)
    {
        if(name == St[i].Name)
        {
            break;
        }
    }

    cout<<St[i].Name<<" "<<St[i].Age<<" "<<St[i].No<<" "<<St[i].Score[0]<<" "<<St[i].Score[1]<<" "
           <<St[i].Score[2]<<" "<<St[i].Total<<" "<<St[i].Ave<<endl;
}

void Student::ChangeStudent(void)//修改学生信息
{
     string name;
    cout<<"请输入你需要修改的学生的姓名:";
    cin>>name;

    int i;

    for(i=0; i<Size; i++)
    {
        if(name == St[i].Name)
        {
            break;
        }
    }
    
    cout<<"修改前学生的信息:"<<endl;
      cout<<St[i].Name<<" "<<St[i].Age<<" "<<St[i].No<<"  "<<St[i].Score[0]<<" "<<St[i].Score[1]<<" "
           <<St[i].Score[2]<<" "<<St[i].Total<<" "<<St[i].Ave<<endl<<endl;

    cout<<"请输入学生的姓名:";
    cin>>St[i].Name;

    cout<<"请输入学生的年龄:";
    cin>>St[i].Age;

    cout<<"请输入第个学生的学号:";
    cin>>St[i].No;

    cout<<"请输入学生的语文成绩:";
    cin>>St[i].Score[0];

    cout<<"请输入学生的数学成绩:";
    cin>>St[i].Score[1];

    cout<<"请输入第学生的英语成绩:";
    cin>>St[i].Score[2];

    St[i].Total = St[i].Score[0] + St[i].Score[1] + St[i].Score[2];

    St[i].Ave = St[i].Total / 3.0f;
}

void Student::ScortByChinese(void)//对学生的语文成绩排序
{
    //提供插入数组中的数据
    for(int i=1; i<Size; i++)
    {
        int j = i-1;

        //插入数组中的数据
        Student temp = St[i];

        while(temp.Score[0] > St[j].Score[0] && j>=0)
        {
            St[j+1]  = St[j];
			
			j--;
        }

        St[++j] = temp;
    }
}

void Student::ScortByMath(void)//对学生的数学成绩排序
{
	//提供插入数组中的数据
    for(int i=1; i<Size; i++)
    {
        int j = i-1;

        //插入数组中的数据
        Student temp = St[i];

        while(temp.Score[1] > St[j].Score[1] && j>=0)
        {
            St[j+1]  = St[j];
			
			j--;
        }

        St[++j] = temp;
    }
}

void Student::ScortByEnglish(void)//对学生的英语成绩排序
{
	//提供插入数组中的数据
    for(int i=1; i<Size; i++)
    {
        int j = i-1;

        //插入数组中的数据
        Student temp = St[i];

        while(temp.Score[2] > St[j].Score[2] && j>=0)
        {
            St[j+1]  = St[j];
			
			j--;
        }

        St[++j] = temp;
    }
}

void Student::ScortByTotal(void)//对学生的总分排序
{
	//提供插入数组中的数据
    for(int i=1; i<Size; i++)
    {
        int j = i-1;

        //插入数组中的数据
        Student temp = St[i];

        while(temp.Total  > St[j].Total && j>=0)
        {
            St[j+1]  = St[j];
	
			j--;
        }

        St[++j] = temp;
    }
}

void main()
{
    cout<<"================================================================================\n"<<endl;  
    cout<<"================================================================================\n"<<endl;  
    cout<<"*************************欢迎使用学生成绩管理系统*******************************\n"<<endl;  
    cout<<"-----------------------------------------------------------------制作人:梅沙小子\n"<<endl;  
    cout<<"********************************************************************************\n"<<endl;  
    cout<<"================================================================================\n"<<endl;  
    
    cout<<"请按任意将进入学生管理系统:"<<endl;  
    getchar();  
    system("cls");  
  
    cout<<"================================================================================\n\n";  
    cout<<"------------------------ 请选择要操作的命令:-----------------------------------\n\n";  
    cout<<"-------------------------- 1 输入学生信息--------------------------------------\n\n";  
    cout<<"-------------------------- 2 输出学生信息--------------------------------------\n\n";  
    cout<<"-------------------------- 3 删除学生信息--------------------------------------\n\n";  
    cout<<"-------------------------- 4 查找学生信息--------------------------------------\n\n";  
    cout<<"-------------------------- 5 修改学生信息--------------------------------------\n\n";  
    cout<<"-------------------------- 6 将学生的语文成绩按从大到小排----------------------\n\n";  
    cout<<"-------------------------- 7 将学生的数学成绩按从大到小排----------------------\n\n";  
    cout<<"-------------------------- 8 将学生的英语成绩按从大到小排----------------------\n\n";  
    cout<<"-------------------------- 9 将学生的总成绩按从大到小排------------------------\n\n";  
    cout<<"================================================================================\n\n";  
    
    int Item;//操作命令

    Student st;//学生对象

    while(1)  
   {  
        cout<<"请选择操作命令:";  
        cin>>Item;  
        system("cls");//清屏  
  
       switch(Item)  
        {  
            case 1://输入学生信息  
            {  
                st.InputStudent();  
            }  
            break;  
  
            case 2://输出学生信息  
            {  
                st.OutputStudent();  
            }  
            break;  
  
          case 3://删除学生信息  
            {  
                st.DeleteStudent();  
           }  
            break;  
  
            case 4://查找学生信息  
            {  
                st.SearchStudent();  
            }  
            break;  
  
            case 5://修改学生信息  
            {  
               st.ChangeStudent();   
            }              
            break;  
 
            case 6://对学生的语文成绩排序  
            {  
                st.ScortByChinese();  
               st.OutputStudent();  
            }  
            break;  
  
            case 7://对学生的数学成绩排序  
            {  
                st.ScortByMath();  
                st.OutputStudent();  
            }  
            break;  
  
            case 8://对学生的英语成绩排序  
            {  
                st.ScortByEnglish();  
                st.OutputStudent();  
            }  
            break;  
  
            case 9://对学生的总分排序  
            {  
                st.ScortByTotal();  
                st.OutputStudent();
            }  
            break;  
            default:  
            break;  
        }  
    }  
  
    system("pause");  
} 



  • 73
    点赞
  • 431
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
修正了已发现的所有错误.欢迎大家下载试用.. 一、项目名称:学校学生信息管理系统。 二、项目目标:实现对学校学生的信息管理——信息的建立和维护、信息的检索。 三、主要功能: 1.信息的输入:建立学生档案文件。 2.信息维护: 添加:增加新学生; 修改:学生信息的改变; 删除:学生减少。 3.信息处理 按要求检索学生信息; 按要求统计信息。 四、界面系统 1.系统管理员进入 (请输入密码) 2.一级菜单 (1 信息维护 2 信息检索 3 信息统计 4 退出) 3. 二级菜单 信息维护 (1 建立学生成绩文件 2 添加学生记录 3 删除学生记录 4 修改学生记录 5 返回上级菜单) 信息检索 (1 按班级查找 2 返回上级菜单) 信息统计 (1 成绩统计 2 返回上级菜单) 五、主要功能说明: 1.用口令(密码)形式验证管理员身份(可输入三次),合法者可进入,否则程序结束。 2.有关功能说明 1)建立学生成绩表(模块a) 建立新的学生成绩文件; 建立若干学生记录,包括姓名、学号、班级、课程编号、成绩。 2)添加学生记录(模块b) 在已存在的学生成绩文件中添加新记录。 3)删除学生记录(模块c) 在学生成绩文件中删除有三门课程不及格的学生记录; 删除前,逐条显示符合删除条件的学生姓名、成绩,确认后再删除。 4)修改学生信息(模块d) 输入学生学号,在学生成绩文件中找出该学生记录; 在屏幕上逐条显示该学生的各条记录; 每显示一条,询问是否修改,如果“Y”,输入修改后数据, 将文件原记录删除,保存新的记录; 5)按姓名和班级查找(模块e) 输入姓名显示相应信息。 6)信息统计(模块f) 同时按照班级和课程统计每门课程、每个班级的平均成绩,最高分、最低分; 在屏幕上先依次显示各门课程,对应的各个班级的统计数据。 7)退出信息管理系统,返回操作系统。
很抱歉,由于篇幅限制,不能在这里提供完整的代码。但是,我可以为您提供一个简单的示例,帮助您了解如何使用C++连接数据库并实现基本操作。以下是一个使用MySQL数据库和MySQL Connector/C++库的示例: ```c++ #include <iostream> #include <mysql_connection.h> #include <mysql_driver.h> #include <cppconn/exception.h> #include <cppconn/prepared_statement.h> #include <cppconn/resultset.h> using namespace std; using namespace sql; int main() { try { // 连接数据库 sql::Driver *driver; sql::Connection *con; driver = get_driver_instance(); con = driver->connect("tcp://localhost:3306", "root", "password"); con->setSchema("database_name"); // 插入学生信息 sql::PreparedStatement *pstmt; pstmt = con->prepareStatement("INSERT INTO students (name, age, gender) VALUES (?, ?, ?)"); pstmt->setString(1, "张三"); pstmt->setInt(2, 18); pstmt->setString(3, "男"); pstmt->executeUpdate(); // 查询学生信息 sql::Statement *stmt; sql::ResultSet *res; stmt = con->createStatement(); res = stmt->executeQuery("SELECT * FROM students"); while (res->next()) { cout << res->getString("name") << "\t" << res->getInt("age") << "\t" << res->getString("gender") << endl; } // 删除学生信息 pstmt = con->prepareStatement("DELETE FROM students WHERE name = ?"); pstmt->setString(1, "张三"); pstmt->executeUpdate(); // 关闭连接 delete res; delete stmt; delete pstmt; delete con; } catch (sql::SQLException &e) { cout << "SQLException: " << e.what() << endl; } return 0; } ``` 这个示例中,我们首先使用MySQL Connector/C++库连接到MySQL数据库,并指定要操作的数据库名称。然后,我们使用PreparedStatement对象向数据库中插入学生信息,使用Statement对象查询学生信息,以及使用PreparedStatement对象删除学生信息。最后,我们关闭连接并捕获任何可能发生的异常。 需要注意的是,这只是一个简单的示例,实际应用中还需要进行更多的错误处理和数据校验,以确保程序的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值