实训—学生成绩管理系统

//*********************************************************************
/*

 *Copyright(c) 2015,烟台大学计算机与控制工程学院
 *All rights reserved.
 *项目名称:学生成绩管理系统
 *作    者:徐群壮
 *完成日期:2015.12.25
 *版 本 号:v1.0
 *描述:
    <span style="white-space:pre">	</span>学生成绩管理是学校教务部门日常工作的重要组成部分,其处理信息量大,本项目是对学生成绩管理的简单模拟,用菜单选择的方式完成下列功能:输入学生数据,输出学生数据,学生数据查询,添加学生数据,修改学生数据,删除学生数据。
<span style="white-space:pre">	</span>本项目的实质是完成对学生成绩信息的建立、查找、插入、修改、删除等功能,可以首先定义项目的数据结构,然后将各个功能写成一个函数完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结果

*/
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

mian.cpp代码如下:

#include "main.h"
void add_stu()     //学生信息录入函数
{

    char sign='y';          //首先定义sing='y' 是否继续添加
    system("cls");             //清屏函数  系统中调用,更好的视觉体验
    while(sign!='n'&&sign!='N')          //其实只有当输入N或n时才跳出循环
    {
        cout<<"           ----学生纪录添加----"<<endl; //以下录入学生信息
        cout<<"学号"<<endl;
        cin>>per[i].num;
        cout<<"姓名"<<endl;
        cin>>per[i].name;
        cout<<"年龄"<<endl;
        cin>>per[i].age;
        cout<<"英语成绩"<<endl;
        cin>>per[i].en;
        cout<<"计算机成绩"<<endl;
        cin>>per[i].ji;
        cout<<"是否继续添加?(y/n)"<<endl;
        cin>>sign;
        n++;
        i++;
        system( "cls "); //清屏函数  系统中调用,更好的视觉体验
    }
}
//*********************************************************************//
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
void scan_stu()                        //显示记录 系统的进行学生信息的浏览
{
    system("cls");   //清屏函数  系统中调用,更好的视觉体验
    char sign='y';
    cout<<"**************************************************************";
    cout<<endl;
    cout<<endl;
    cout<<"   学号        姓名        年龄        英语        计算机";
    cout<<endl;
    cout<<endl;
    cout<<"**************************************************************";
    cout<<endl;
    for(int a=0; a<n; a++)   //依次输出学生的信息。
    {

        cout<<"     "<<per[a].num<<"     ";
        cout<<"     "<<per[a].name<<"     ";
        cout<<"     "<<per[a].age<<"     ";
        cout<<"     "<<per[a].en<<"     ";
        cout<<"     "<<per[a].ji<<"     ";
        cout<<endl;
    }

    cout<<"是否需要修改?(y/n)"<<endl;
    cin>>sign;
    if(sign!='n'&&sign!='N')                    //选择是否在浏览后进行修改//
        change_stu();
    system("pause");   //系统等待,更好的用户操作
}

//*********************************************************************//


//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
//数据查询模块//
void que_stu()                     //不同方式下的系统查询功能。
{

    int m;    //定义选择查询的方式
    system("cls");  //清屏函数。
    cout<<"请选择查询方式:";
    cout<<endl;
    cout<<endl;
    cout<<"   1------姓名  "<<endl;
    cout<<"   2------学号  "<<endl;
    cout<<"   3------返回  "<<endl;
    cout<<endl;
    cout<<"请输入你要查询的方式"<<endl;
    cin>>m;
    while(m!=1&&m!=2&&m!=3)  // 当输入不符合要求时,需要提示信息,重新输入
    {
        cout<<"输入错误请重新查询"<<endl;
        cin>>m;
    }
    if(m==1)               //姓名查询
    {
        char s[20];           //定义一个存放名字信息的数组
        int i;
        system("cls");   //系统调用功能
        cout<<"请输入想查询的姓:"<<endl;
        scanf("%s",s);      //输入要查询的姓名
        for(i=0; i<n; i++)          //在已经有的结构体数组里挨个寻找
        {

            if(per[i].name[0]==s[0]&&per[i].name[1]==s[1])     //比较per[i].name与所输入的前俩个字符是否相同//
            {
                cout<<"学号:   "<<per[i].num<<endl;
                cout<<"姓名:   "<<per[i].name<<endl;
                cout<<"年龄:   "<<per[i].age<<endl;
                cout<<"英语:   "<<per[i].en<<endl;
                cout<<"计算机:"<<per[i].ji<<endl;
                cout<<endl;
            }
        }
    }
    if(m==2)           //采用学号的方式查询
    {
        char s[15];   // 存放学号的临时数组,用于和结构体数组里的学号进行比对
        int i=0;
        printf("请输入想查询的学号:");
        scanf("\t%s",s);   //输入要查询的学号
        while(strcmp(per[i].num,s)!=0&&i<n)i++;         //比较per[i].name与所输入学号是否相同//
        if(i==n)  // 如果一直循环查找到最后,都没有这个人,执行此功能
        {
            cout<<"通讯录里没有此人";
            cout<<endl;
            system("pause");
            return;
        }
        //如果找到此人的话,输出该学生的信息及成绩

        cout<<"学号:   "<<per[i].num<<endl;
        cout<<"姓名:   "<<per[i].name<<endl;
        cout<<"年龄:   "<<per[i].age<<endl;
        cout<<"英语:   "<<per[i].en<<endl;
        cout<<"计算机:"<<per[i].ji<<endl;
        cout<<endl;
    }

    if(m==3) //用户选择退出选项
    {
        cout<<"正在退出";
        cout<<endl;
        int p;
        int o;
        for(p=0; p<5; p++)
        {
            for(o=0; o<100000000; o++);
            {
                cout<<".";
            }
        }
    }
    system("pause");  //系统等待,更好的感觉
}
//*********************************************************************//

//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
//数据排序功能
void sort_stu()
{

    struct person temp;             //定义临时数组用于交换时存放数组信息用于后面的交换//
    int sum;             //总分=英语+计算机
    int s[100];   // 用来存放每个学生总分的数组
    //int i=0,n=0;
    int j,k,t;
    int m;   // 要输入的选择方式
    system("cls");
    cout<<"选择排序方式:"<<endl;
    cout<<endl;
    cout<<"     1------英语 "<<endl;
    cout<<"     2----计算机 "<<endl;
    cout<<"     3----  总分 "<<endl;
    cout<<"     4------返回 "<<endl;
    cout<<endl;
    cout<<"请输入你要排序的方式"<<endl;
    cin>>m;  // 输入排序方式
    system("cls");  // 清屏功能。
    while(m!=1&&m!=2&&m!=3&&m!=4)  // 如果输入的排序方式不符合要求需要重新输入
    {
        printf("输入错误请重新输入\n");
        scanf("%d",&m);
    }

    //按照英语成绩的高低排序
    if(m==1)
    {
        for(i=0; i<n-1; i++)                         //采用冒泡法进行排序//
        {
            k=i;
            for(j=i+1; j<n; j++)
                if(per[j].en>per[k].en)                              //排序//比较大小//
                    k=j;
            temp=per[k];
            per[k]=per[i];
            per[i]=temp;                  //当符合条件时进行数据交换//
        }
        cout<<"**************************************************************";
        cout<<endl;
        cout<<endl;
        cout<<"   学号        姓名        年龄        英语        计算机";
        cout<<endl;
        cout<<endl;
        cout<<"**************************************************************";
        cout<<endl;
        for(i=0; i<n; i++)  //输入经过排序好了之后的内容
        {
            cout<<"     "<<per[i].num<<"     ";
            cout<<"     "<<per[i].name<<"     ";
            cout<<"     "<<per[i].age<<"     ";
            cout<<"     "<<per[i].en<<"     ";
            cout<<"     "<<per[i].ji<<"     ";
            cout<<endl;
        }
        cout<<"**************************************************************";
        cout<<endl;

    }

    if(m==2)  // 采用学号进行排序
    {
        for(i=0; i<n-1; i++)  // 使用冒泡排序 ,经典算法
        {
            k=i;
            for(j=i+1; j<n; j++)
                if(per[j].ji>per[k].ji)
                    k=j;
            temp=per[k];
            per[k]=per[i];
            per[i]=temp;
        }
        cout<<"**************************************************************";
        cout<<endl;
        cout<<endl;
        cout<<"   学号        姓名        年龄        英语        计算机";
        cout<<endl;
        cout<<endl;
        cout<<"**************************************************************";
        cout<<endl;
        for(i=0; i<n; i++)  // 输入按照学号高低排序之后的学生的信息
        {
            cout<<"     "<<per[i].num<<"     ";
            cout<<"     "<<per[i].name<<"     ";
            cout<<"     "<<per[i].age<<"     ";
            cout<<"     "<<per[i].en<<"     ";
            cout<<"     "<<per[i].ji<<"     ";
            cout<<endl;
        }
        cout<<"**************************************************************";
        cout<<endl;


    }
    if(m==3)  // 按照学生的总分进行排序。
    {
        for(i=0; i<n; i++)
        {
            sum=0;
            sum=per[i].en+per[i].ji;
            s[i]=sum;                            // 第一个数组用于数组间信息操作
        }
        for(i=0; i<n-1; i++)
        {
            k=i;
            for(j=i+1; j<n; j++)
                if(s[j]>s[k])
                    k=j;
            t=s[k];
            s[k]=s[i];
            s[i]=t;                          //按照总分大小进行排序//
            temp=per[k];
            per[k]=per[i];
            per[i]=temp;            //随之使其数组相应顺序随总分大小一起排序//
        }
        cout<<"**************************************************************";
        cout<<endl;
        cout<<endl;
        cout<<"   学号        姓名        年龄        英语        计算机";
        cout<<endl;
        cout<<endl;
        cout<<"**************************************************************";
        cout<<endl;
        for(i=0; i<n; i++)  // 输出按照总分排序好的学生的信息。
        {
            cout<<"     "<<per[i].num<<"     ";
            cout<<"     "<<per[i].name<<"     ";
            cout<<"     "<<per[i].age<<"     ";
            cout<<"     "<<per[i].en<<"     ";
            cout<<"     "<<per[i].ji<<"     ";
            cout<<endl;
        }
        cout<<"**************************************************************";
        cout<<endl;
    }
    system("pause");  // 系统等待,用户更好的体验
}

//*********************************************************************//

//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//

// 学生信息修改功能
void change_stu()     // 用于学生信息修改的功能模块
{

    int m;  // 定义要选择的方式的变量
    cout<<"请选择修改方式:"<<endl;
    cout<<endl;
    cout<<"   1------姓名 "<<endl;
    cout<<"   2------学号 "<<endl;
    cout<<"   3------返回 "<<endl;
    cout<<endl;
    cout<<"请输入你要修改的方式";
    cin>>m;  // 输入要选择的方式
    while(m!=1&&m!=2&&m!=3)  // 如果输入有误的要继续输入。
    {
        cout<<"您的输入有误,请重新输入"<<endl;
        cin>>m;
    }
    if(m==1) // 选择用查询姓名的方式进行修改
    {
        char s[20];    // 定义一个临时的用来修改的姓名数组
        int i=0;
        cout<<"请输入想修改的姓名:"<<endl;
        scanf("\t%s",s);  // 输入要修改的姓名
        while(strcmp(per[i].name,s)!=0&&i<n) i++;        //进行比较 找到所需要的信息
        if(i==n)  // 比较到最后,都没有发现相匹配的内容
        {
            cout<<"通讯录中没有此人!"<<endl;
            return;
        }
        else // 成功找到后
        {
             // 用于重新修改该学生的信息
            cout<<"学号"<<endl;
            cin>>per[i].num;
            cout<<"姓名"<<endl;
            cin>>per[i].name;
            cout<<"年龄"<<endl;
            cin>>per[i].age;
            cout<<"英语成绩"<<endl;
            cin>>per[i].en;
            cout<<"计算机成绩"<<endl;
            cin>>per[i].ji;
        }
    }
    if(m==2)  // 选择用查询学号的方式来修改学生的信息
    {
        char s[15];  // 定义一个临时存取学号
        int i=0;
        printf("请输入想修改的学号:");
        scanf("\t%s",s);   //输入要修改的学生的学号
        while(strcmp(per[i].num,s)!=0&&i<n)i++; // 进行一一的比对
        if(i==n)  // 找到最后,依然没有找到该学生的学号
        {
            cout<<"通讯录中没有此人!"<<endl;
            return;
        }
        else  // 成功找到后
        {
             // 重新输入该学生的信息,达到修改的目的
            cout<<"学号: "<<endl;
            cin>>per[i].num;
            cout<<"姓名: "<<endl;;
            cin>>per[i].name;
            cout<<"年龄: "<<endl;
            cin>>per[i].age;
            cout<<"英语: "<<endl;
            cin>>per[i].en;
            cout<<"专业: "<<endl;
            cin>>per[i].ji;
        }
    }

}
//*********************************************************************//
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//


//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
//运用switch语句进行菜单选择//
int main()
{
    int n=0;
    logon();     //开始界面


    while(1)                       //循环使用主界面直到遇到结束命令
    {
        switch(menu_select())            // 函数的调用//
        {
        case 1:
            cout<<"     学生记录添加      "<<endl;
            cout<<endl;
            add_stu();
            break;
        case 2:
            cout<<"     学生信息浏览      "<<endl;
            scan_stu();
            break;
        case 3:
            cout<<"     学生信息查询      "<<endl;
            que_stu();
            break;
        case 4:
            cout<<"     排序功能      "<<endl;
            sort_stu();
            break;
        case 5:
            cout<<"     数据修改      "<<endl;
            change_stu();
            break;
        case 6:
            cout<<"     学生信息插入  "<<endl;
            add_stu();
            cout<<endl;
            break;
        case 0:
            cout<<"     谢谢使用,再见!     "<<endl;
            cout<<endl;
            system("pause");
            exit(0);
        }
    }
    system("pause");
    return 0;
}
main.h代码如下:

#ifndef MAIN_H_INCLUDED
#define MAIN_H_INCLUDED
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
typedef struct person                               //定义结构体
{
    char num[20];   //学号
    char name[15]; //姓名
    int age;      //年龄
    int en;      //英语成绩
    int ji;      //计算机成绩
} person;
person per[100];  //定义100

int i=0;//n作为实际的用量
int n=0;
void change_stu();  // 修改学生数据的函数
void cycle()//登录循环界面的体现
{
    int i;
    int j;
    for(i=0; i<5; i++)
    {
        for(j=0; j<300000000; j++);
        {
            cout<<".";
        }
    }
}
void logon()                                            //登陆函数 使系统更显完善
{
    cout<<"***************************************************************"<<endl;
    cout<<"*                                                             *"<<endl;
    cout<<"*                                                             *"<<endl;
    cout<<"*                   学生信息管理系统                          *"<<endl;
    cout<<"*                                                             *"<<endl;
    cout<<"*                                                             *"<<endl;
    cout<<"*                          烟台大学计算机与控制工程学院       *"<<endl;
    cout<<"*                                                             *"<<endl;
    cout<<"*                                                徐群壮       *"<<endl;
    cout<<"*                                          版本号:v1.0       *"<<endl;
    cout<<"*                                最后修改时间:15.12.25       *"<<endl;
    cout<<"*                                                             *"<<endl;
    cout<<"*                                                             *"<<endl;
    cout<<"***************************************************************"<<endl;
    cout<<endl;
    string user,passwd;  //用户登录账户和密码(已经设定好 账号:user 密码:123)
    while(1) // 账户登录 验证
    {
        cout<<"账户"<<endl;
        cin>>user;
        cout<<"密码"<<endl;
        cin>>passwd;
        if((user=="user")&&(passwd=="123"))
        {

            cout<<"用户登录中,请稍后"<<endl;
            cycle();
            break;
        }
        else
            cout<<"账户或密码输入有误请重新输入"<<endl;
    }


}

//*********************************************************************//

//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
int menu_select()                              //菜单选择系统函数
{
    int choice;
    system("cls");
    cout<<"*********************************************************";
    cout<<endl;
    cout<<endl;
    cout<<"               学生信息管理系统"<<endl;
    cout<<"*********************************************************";
    cout<<endl;
    cout<<endl;
    cout<<" 1. 添加学生数据    2. 显示学生数据 "<<endl;
    cout<<endl;
    cout<<" 3. 查询学生数据    4. 数据排序 "<<endl;
    cout<<endl;
    cout<<" 5. 修改学生数据    6. 插入学生数据"<<endl;
    cout<<endl;
    cout<<" 0. 退出程序"<<endl;
    cout<<endl;
    cout<<"请输入您的选择(0-6)"<<endl;
    cin>>choice;
    return choice;
}



#endif // MAIN_H_INCLUDED

用户登录界面:
实训—学生成绩管理系统_第1张图片

用户选择界面:

实训—学生成绩管理系统_第2张图片

添加信息模块:

实训—学生成绩管理系统_第3张图片

实训—学生成绩管理系统_第4张图片实训—学生成绩管理系统_第5张图片

显示模块:

实训—学生成绩管理系统_第6张图片

查询界面:

实训—学生成绩管理系统_第7张图片

查询模块:

实训—学生成绩管理系统_第8张图片

用学号查询:

实训—学生成绩管理系统_第9张图片

排序模块:

实训—学生成绩管理系统_第10张图片

实训—学生成绩管理系统_第11张图片

修改模块:

实训—学生成绩管理系统_第12张图片


实训—学生成绩管理系统_第13张图片

插入模块(尾插法):

实训—学生成绩管理系统_第14张图片


实训—学生成绩管理系统_第15张图片


你可能感兴趣的:(实训—学生成绩管理系统)