C++学生成绩管理系统_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > C++学生成绩管理系统

C++学生成绩管理系统

 2016/11/22 5:30:40  Sun_TW  程序员俱乐部  我要评论(0)
  • 摘要:#include<iostream>#include<fstream>#include<string.h>#include<conio.h>//用getch();usingnamespacestd;#define_CRT_SECURE_NO_WARNINGS//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌classStudent{public:charname[20];charId[20];intCnum
  • 标签:c++
# include <iostream>   
# include <fstream>   
# include <string.h>   
#include <conio.h>//用getch(); 
using namespace std; 
#define _CRT_SECURE_NO_WARNINGS 
 
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌   
class Student 

public: 
    char name[20]; 
    char Id[20]; 
    int Cnum;       //C++课程得分   
    int Mnum;       //汇编课程得分   
    int Enum;       //嵌入式操作系统课程得分   
    int sum;        //总分        
    Student * Next; 
    void Input() 
    { 
        cout << "\t\t请输入学生的姓名:";  cin >> name; 
        cout << "\t\t请输入学生的学号:";  cin >> Id; 
        cout << "\t\t请输入C++课程的成绩:";  cin >> Cnum; 
        cout << "\t\t请输入汇编课程的成绩:";  cin >> Mnum; 
        cout << "\t\t请输入嵌入式操作系统课程的成绩:";  cin >> Enum; 
        sum = Cnum + Mnum + Enum; 
    } 
    void ReadFile(istream & in)//函数完成的作用是,依次将标准输入流中的数据读入到变量 
    { 
        in >> name >> Id >> Cnum >> Mnum >> Enum >> sum; 
    } 
    void Show() 
    { 
        cout << "姓名:" << name << endl << "学号:" << Id << endl << "C++:" << Cnum << endl 
            << "汇编:" << Mnum << endl << "嵌入式操作系统:" << Enum << endl << "总成绩:" << sum << endl << endl << endl; 
    } 
}; 
 
//﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌   
class Studentmassage 

public: 
    Studentmassage(); 
    ~Studentmassage(); 
    void ShowMenu(); 
    void Find(); 
    void Save(); 
    void ModifyItem(); 
    void RemoveItem(); 
    void Swap(Student *, Student *); 
    void Sort(); 
    //void Unpass();   
    int ListCount(); 
    //void Average();  
    void delay() 
    { 
        int n = 1000000000; 
        while (n--) 
            ; 
    } 
    void Display() 
    { 
 
        for (Student * p = Head->Next; p != End; p = p->Next) 
            p->Show(); 
        delay(); 
        cout << "输入任意字符!继续……"; 
        getchar(); 
    } 
    void AddItem()//添加一个学生信息 
    { 
        End->Input(); 
        End->Next = new Student; 
        End = End->Next; 
        cout << "添加成功!" << endl; 
        cout << "输入任意字符!继续……"; 
        getchar(); 
    } 
private: 
    Student * Head, *End; 
    ifstream in; 
    ofstream out; 
    Student *FindItem(char * name) 
    { 
        for (Student * p = Head; p->Next != End; p = p->Next)//匹配成功则返回上一个指针,不成功就返回空   
        if (!strcmp(p->Next->name, name))return p; 
        return NULL; 
    } 
    Student *FindID(char * Id) 
    { 
        for (Student * p = Head; p->Next != End; p = p->Next)//匹配成功则返回上一个指针,不成功就返回空   
        if (!strcmp(p->Next->Id, Id))return p; 
        return NULL; 
    } 
}; 
 
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌   
Studentmassage::Studentmassage() 

    Head = new Student; 
    Head->Next = new Student; 
    End = Head->Next; 
    in.open("sort.txt"); 
    if (!in) 
        cout << "这是一个新系统,无学生信息。请先输入。" << endl; 
    else 
    { 
        while (!in.eof()) 
        { 
            End->ReadFile(in); 
            if (End->name[0] == '\0')break
            End->Next = new Student; 
            End = End->Next; 
        } 
        in.close(); 
        cout << "\t\t读取学生信息成功!" << endl; 
    } 

 
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌   
Studentmassage::~Studentmassage() 

    Save(); 
    for (Student * temp; Head->Next != End;) 
    { 
        temp = Head->Next; 
        Head->Next = Head->Next->Next; 
        delete temp; 
    } 
    delete Head, End; 

 
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌   
void Studentmassage::ShowMenu() 

    cout << "********************************************************************************" << endl; 
    cout << "〓〓〓〓〓〓〓〓〓〓  ☆   学 生 成 绩 管 理 系  统     ☆  〓〓〓〓〓〓〓〓〓〓" << endl; 
    cout << "〓〓〓〓〓〓〓★★★★★         ★★★★★★★         ★★★★★〓〓〓〓〓〓〓" << endl; 
    cout << "〓〓〓〓〓〓〓〓〓★  ☆          1.增加学生成绩        ☆  ★〓〓〓〓〓〓〓〓〓" << endl; 
    cout << "〓〓〓〓〓〓〓〓〓★  ☆          2.显示学生成绩        ☆  ★〓〓〓〓〓〓〓〓〓" << endl; 
    cout << "〓〓〓〓〓〓〓〓〓★  ☆          3.排序统计成绩        ☆  ★〓〓〓〓〓〓〓〓〓" << endl; 
    cout << "〓〓〓〓〓〓〓〓〓★  ☆          4.查找学生成绩        ☆  ★〓〓〓〓〓〓〓〓〓" << endl; 
    cout << "〓〓〓〓〓〓〓〓〓★  ☆          5.删除学生成绩        ☆  ★〓〓〓〓〓〓〓〓〓" << endl; 
    cout << "〓〓〓〓〓〓〓〓〓★  ☆          6.修改学生信息        ☆  ★〓〓〓〓〓〓〓〓〓" << endl; 
    cout << "〓〓〓〓〓〓〓〓〓★  ☆          0.安全退出系统        ☆  ★〓〓〓〓〓〓〓〓〓" << endl; 
 
    cout << "\n\t\t\n\t\t请选择:"; 

 
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌   
void Studentmassage::Find() 

    char name[20], Id[10]; 
    int x; 
    Student * p = NULL; 
    cout << "\n\t\t*********************************\n"; 
    cout << "\t\t※ 1.按学生的姓名查找\n\t\t※ 2.按学生学号查找"; 
    cout << "\n\t\t*********************************\n请选择:"; 
    cin >> x; 
    switch (x) 
    { 
    case 1:{cout << "\t\t请输入要查找的学生的姓名:"; cin >> name; 
        if (p = FindItem(name)) 
        { 
            p->Next->Show(); 
            delay(); 
            cout << "输入任意字符!继续……"; 
            getchar(); 
        } 
        else 
        { 
            cout << "\t\t没有找到该姓名的学生!" << '\n' << endl; 
            delay(); 
            cout << "输入任意字符!继续……"; 
            getchar(); 
        } 
    }break; 
    case 2: 
    { 
              cout << "\t\t请输入要查找的学生的学号:"; cin >> Id; 
              if (p = FindID(Id)) 
              { 
                  p->Next->Show(); 
                  delay(); 
                  cout << "输入任意字符!继续……"; 
                  getchar(); 
              } 
              else 
              { 
                  cout << "\t\t没有找到该学好的学生!" << '\n' << endl; 
                  delay(); 
                  cout << "输入任意字符!继续……"; 
                  getchar(); 
              } 
    }break; 
    } 
 

 
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌   
void Studentmassage::ModifyItem()     //修改信息   

    char name[20]; 
    Student * p = NULL; 
    cout << "\t\t请输入要修改的人的姓名:"; cin >> name; 
    if (p = FindItem(name)) 
    { 
        cout << "\t\t已找到学生的信息,请输入新的信息!" << endl; 
        p->Next->Input(); 
        cout << "修改成功!" << endl; 
        cout << "输入任意字符!继续……"; 
        getchar(); 
    } 
    else 
    { 
        cout << "\t\t没有找到!" << endl; 
        delay(); 
        cout << "输入任意字符!继续……"; 
        getchar(); 
    } 

 
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌   
void Studentmassage::RemoveItem()         // 删除信息   

    char name[20]; 
    Student * p = NULL, *temp = NULL; 
    cout << "\t\t请输入要删除的学生的姓名:" << endl; cin >> name; 
    if (p = FindItem(name)) 
    { 
        temp = p->Next; 
        p->Next = p->Next->Next; 
        delete temp; 
        delay(); 
        cout << "\t\t删除成功!" << endl; 
        cout << "输入任意字符!继续……"; 
        getchar(); 
    } 
    else 
    { 
        cout << "\t\t没有找到!" << endl; 
        delay(); 
        cout << "输入任意字符!继续……"; 
        getchar(); 
    } 

 
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌   
void Studentmassage::Swap(Student *p1, Student *p2)//交换两个combox变量的数据域   

    Student *temp = new Student; 
    strcpy(temp->name, p1->name); 
    strcpy(temp->Id, p1->Id); 
    temp->Cnum = p1->Cnum; 
    temp->Mnum = p1->Mnum; 
    temp->Enum = p1->Enum; 
    temp->sum = p1->sum; 
 
    strcpy(p1->name, p2->name); 
    strcpy(p1->Id, p2->Id); 
    p1->Cnum = p2->Cnum; 
    p1->Mnum = p2->Mnum; 
    p1->Enum = p2->Enum; 
    p1->sum = p2->sum; 
 
    strcpy(p2->name, temp->name); 
    strcpy(p2->Id, temp->Id); 
    p2->Cnum = temp->Cnum; 
    p2->Mnum = temp->Mnum; 
    p2->Enum = temp->Enum; 
    p2->sum = temp->sum; 

 
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌   
int Studentmassage::ListCount()//统计当前链表的记录总数,返回一个整数   

    if (!Head) 
        return 0; 
    int n = 0; 
    for (Student * p = Head->Next; p != End; p = p->Next) 
    { 
        n++; 
    } 
    return n; 

 
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌   
void Studentmassage::Sort()//对当前链表进行排序   

    cout << "Sorting..." << endl; 
    Student *p = NULL, *p1 = NULL, *k = NULL; 
    int n = Studentmassage::ListCount(); 
    if (n<2) 
        return; 
    for (p = Head->Next; p != End; p = p->Next) 
    for (k = p->Next; k != End; k = k->Next) 
    { 
        if (p->sum>k->sum) 
        { 
            Studentmassage::Swap(p, k); 
        } 
    } 
    delay(); 
    cout << "排序完成!" << endl; 
    getchar(); 
    return; 

 
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌   
void Studentmassage::Save() 

    out.open("sort.txt"); 
    for (Student *p = Head->Next; p != End; p = p->Next) 
        out << p->name << "\t" << p->Id << "\t" << p->Cnum << "\t" 
        << p->Mnum << "\t" << p->Enum << "\t" << p->sum << '\n'; 
    out.close(); 

 
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌   
int main() 

    int x, i = 0; 
    bool quit = false; 
    cout << "\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§" << endl; 
    for (i = 0; i<3; i++) 
        cout << "\t\t◎\t\t\t\t\t\t  ◎" << endl; 
    cout << "\t\t◎★★★★【  欢迎进入学生成绩管理系统  】★★★★◎" << endl; 
    for (i = 0; i<3; i++) 
        cout << "\t\t◎\t\t\t\t\t\t  ◎" << endl; 
    cout << "\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n" << endl;; 
    Studentmassage Grade; 
    cout << "按任意键开始……"; 
    getchar(); 
    while (1) 
    { 
        system("cls"); 
        Grade.ShowMenu(); 
        cin >> x; 
        switch (x) 
        { 
        case 0:quit = true; break; 
        case 1:Grade.AddItem(); break; 
        case 2:Grade.Display(); break; 
        case 3:Grade.Sort(); break; 
        case 4:Grade.Find(); break; 
        case 5:Grade.RemoveItem(); break; 
        case 6:Grade.ModifyItem(); break; 
        } 
    } 
    return 0; 
上一篇: C++中 ifstream和ofstram详解 下一篇: 没有下一篇了!
发表评论
用户名: 匿名