基于C++实现信息管理系统

基于c++设计的信息管理系统,供大家参考,具体内容如下

1、使用类+函数实现
2、使用STL容器的vector
3、fstream的文件存储方式
4、xls文件读入 写出
5、数据的四大功能增删改查
6、一定的输入容错能力

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <iostream>
#include <windows.h>
#include <vector>
#include <fstream>
#include <iterator>

#define Num 20
#define FALSE 0
#define TRUE 1
#define PATH "./file.xls"

using namespace std;

class LiangshanHeros
{

public:
    char name[Num]; //梁山好汉姓名
    int age;        //年龄
    char loc[Num];  //籍贯
    double bounty;   //悬赏金

public:

    LiangshanHeros()
    {
        age = 18;
        bounty = 6666;
    }

    LiangshanHeros(char* _name, int _age, char* _loc, double the_bounty)
    {
        strcpy(name, _name);
        age = _age;
        strcpy(loc, _loc);
        bounty = the_bounty;
    }

    ~LiangshanHeros()
    {

    }

public:
    char* getName();
    char* getLoc();
    double getBounty();
    int getAge();

public:
    int setName(char*);
    int setAge(int);
    int setLoc(char*);
    int setprice(double);

public:
    void showMenu();
};

class params : public LiangshanHeros {

public :
    params() {

    }
    ~params() {

    }

public:

    void InitSet();
    void showMensu();
};

char* LiangshanHeros::getName()
{

    return name;
}

char* LiangshanHeros::getLoc()
{

    return loc;
}

double LiangshanHeros::getBounty()
{

    return bounty;
}

int LiangshanHeros::getAge()
{

    return age;
}

int LiangshanHeros::setName(char* _name)
{
    if (strlen(_name) > 20 || strlen(_name) < 2)
    {
        cout << "重新输入梁山好汉姓名 长度[0 - 20]" << endl;
        return FALSE;
    }
    else
    {
        strcpy(name, _name);
        return TRUE;
    }

}

int LiangshanHeros::setAge(int _age)
{
    if (_age > 100 || _age < 0)
    {
        cout << "重新输入年龄 大小[0 - 100]" << endl;
        return FALSE;
    }
    else
    {
        age = _age;
        return TRUE;
    }

}

int LiangshanHeros::setLoc(char* _loc)
{
    if (strlen(_loc) > 20 || strlen(_loc) < 2)
    {
        cout << "重新输入梁山好汉籍贯 长度[0 - 20]" << endl;
        return FALSE;
    }
    else
    {
        strcpy(loc, _loc);
        return TRUE;
    }
}

int LiangshanHeros::setprice(double the_Bouney)
{
    if (the_Bouney < 0)
    {
        cout << "重新输入价格 大小[0 - &]" << endl;
        return FALSE;
    }
    else
    {
        bounty = the_Bouney;
        return TRUE;
    }
}

void setAll(LiangshanHeros* par)
{
    while (1)
    {
        cout << "输入梁山好汉姓名: " << endl;
        char n[Num] = { 0 };
        cin >> n;
        if (par->setName(n) == TRUE) break;
    }

    while (1)
    {
        cout << "输入年龄: " << endl;
        int a;
        cin >> a;
        if (par->setAge(a) == TRUE) break;
    }

    while (1)
    {
        cout << "输入梁山好汉籍贯: " << endl;
        char l[Num] = { 0 };
        cin >> l;
        if (par->setLoc(l) == TRUE) break;
    }

    while (1)
    {
        cout << "输入赏金: " << endl;
        double p;
        cin >> p;
        if (par->setprice(p) == TRUE) break;
    }
}

LiangshanHeros* set()
{
    LiangshanHeros* par = new LiangshanHeros;
    //do set
    setAll(par);
    return par;
}

void search(vector<LiangshanHeros*>& vec, char* name)
{
    int i = 0;
    int flag = 0;

    for (i = 0; i < vec.size(); i++)
    {
        if (strcmp(vec[i]->name, name) == 0)
        {
            cout << "查找成功 " << endl;
            cout << vec[i]->getName() << endl;
            cout << vec[i]->getAge() << endl;
            cout << vec[i]->getLoc() << endl;
            cout << vec[i]->getBounty() << endl;
            flag = 1;
        }
    }

    //case faild
    if (flag == 0)
    {
        cout << "查找失败" << endl;
    }

}

void deletePar(vector<LiangshanHeros*>& vec, char* name)
{
    int i = 0;
    int flag = 0;

    for (i = 0; i < vec.size(); i++)
    {
        if (strcmp(vec[i]->name, name) == 0)
        {
            cout << "查找成功 " << endl;
            cout << vec[i]->getName() << endl;
            cout << vec[i]->getAge() << endl;
            cout << vec[i]->getLoc() << endl;
            cout << vec[i]->getBounty() << endl;

            vec.erase(vec.begin() + i);

            //sp case
            i--;
            cout << "删除成功 " << endl;
            flag = 1;
        }
    }

    if (flag == 0)
    {
        cout << "未找到该梁山好汉" << endl;
    }
}

void change(vector<LiangshanHeros*>& vec, char* name)
{
    int i = 0;
    int flag = 0;

    for (i = 0; i < vec.size(); i++)
    {
        if (strcmp(vec[i]->name, name) == 0)
        {
            cout << "查找成功 " << endl;
            cout << vec[i]->getName() << endl;
            cout << vec[i]->getAge() << endl;
            cout << vec[i]->getLoc() << endl;
            cout << vec[i]->getBounty() << endl;
            cout << "请输入需要修改变量的值:" << endl;
            cout << "1.梁山好汉姓名  2.年龄 3.籍贯 4.赏金" << endl;
            int choice;

            while (1)
            {
                cin >> choice;
                if (choice > 4 || choice < 0) continue;
                else break;
            }

            cout << "输入修改后的值" << endl;

            switch (choice)
            {
            case 1:
            {
                while (1)
                {
                    cout << "输入梁山好汉姓名: " << endl;
                    char n[Num] = { 0 };
                    cin >> n;
                    if (vec[i]->setName(n) == TRUE) break;
                }
                break;
            }
            case 2:
            {
                while (1)
                {
                    cout << "输入年龄: " << endl;
                    int a;
                    cin >> a;
                    if (vec[i]->setAge(a) == TRUE) break;
                }
                break;
            }
            case 3:
            {
                while (1)
                {
                    cout << "输入梁山好汉籍贯: " << endl;
                    char l[Num] = { 0 };
                    cin >> l;
                    if (vec[i]->setLoc(l) == TRUE) break;
                }

                break;
            }
            case 4:
            {
                while (1)
                {
                    cout << "输入赏金: " << endl;
                    double p;
                    cin >> p;
                    if (vec[i]->setprice(p) == TRUE) break;
                }
                break;
            }

            }

            flag = 1;
        }
    }

    if (flag == 0)
    {
        cout << "未找到该梁山好汉" << endl;
    }
}

void inputFile(vector<LiangshanHeros*>& vec)
{
    ofstream ofs;
    ofs.open(PATH, ios::ate | ios::binary);
    int i = 0;

    if (vec.size() < 0)
    {
        cout << "还未录入数据" << endl;
        return;
    }

    for (i = 0; i < vec.size(); i++)
    {
        ofs << vec[i]->name << "\t" << vec[i]->age << "\t" << vec[i]->loc << "\t" << vec[i]->bounty;
        ofs << "\n";
    }

    cout << "数据录入成功 存储于 ./file.xls中" << endl;

    ofs.close();
}

void outputFile(vector<LiangshanHeros*>& vec)
{
    ifstream ifs;
    ifs.open(PATH, ios::binary | ios::in);
    if (ifs.fail()) {

        cout << "文件未创建 请先录入数据" << endl;
        return;
    }
    int i = vec.size();
    int age;
    double price;
    char loc[Num] = { 0 };
    char name[Num] = { 0 };

    //判断是否为文件结尾
    while (!ifs.eof())
    {
        LiangshanHeros* par = new LiangshanHeros;
        ifs >> par->name >> par->age >> par->loc >> par->bounty;
        vec.push_back(par);
    }

    cout << "file.xls 文件读入成功  数据已写入" << endl;

    ifs.close();
}

void showAllParam(vector<LiangshanHeros*>& vec)
{
    int i = 0;

    for (i = 0; i < vec.size(); i++)
    {
        cout << "这是 第" << i + 1 << "位梁山好汉 :" << endl;
        cout << "   姓名 :" << vec[i]->name << endl;
        cout << "   年龄 :" << vec[i]->age << endl;
        cout << "   籍贯 :" << vec[i]->loc << endl;
        cout << "   赏金 :" << vec[i]->bounty << endl;
        cout << endl;
    }
}

void LiangshanHeros::showMenu()
{
    HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);//句柄
    SetConsoleTextAttribute(hout, FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED);
    printf("\t基于梁山好汉的文件存储系统\n");
    SetConsoleTextAttribute(hout, FOREGROUND_INTENSITY | FOREGROUND_RED);
    printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");
    
    printf("\t丨 1.添加梁山好汉                \n");
    printf("\t丨 2.查找梁山好汉         \n");
    printf("\t丨 3.删除梁山好汉         \n");
    printf("\t丨 4.修改梁山好汉信息         \n");
    printf("\t丨 5.读取已存在信息                 \n");
    printf("\t丨 6.保存信息                \n");
    printf("\t丨 7.查阅所有信息                 \n");
    printf("\t丨 8.退出              \n");
    SetConsoleTextAttribute(hout, FOREGROUND_INTENSITY | FOREGROUND_RED);
    printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n\t");
    SetConsoleTextAttribute(hout, FOREGROUND_INTENSITY | FOREGROUND_BLUE);
    printf("输入您的选择(1-8):");
}

int main()
{
    system("mode con cols=135 lines=30");//控制台 宽度135 高度20

    HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);//句柄
    SetConsoleTextAttribute(hout, FOREGROUND_INTENSITY | FOREGROUND_RED);

    LiangshanHeros* par = new LiangshanHeros;
    par->showMenu();
    vector<LiangshanHeros*> vec;
    char name[Num] = { 0 };

    SetConsoleTextAttribute(hout, FOREGROUND_INTENSITY | FOREGROUND_RED);
    while (1)
    {
        int num;
        cin >> num;
        switch (num)
        {
        case 1:
        {
            vec.push_back(set());
            cout << "添加成功" << endl;
            break;
        }
        case 2:
        {
            printf("输入查找的梁山好汉名称:");
            cin >> name;
            search(vec, name);
            break;
        }
        case 3:
        {
            printf("输入删除的梁山好汉名称:");
            cin >> name;
            deletePar(vec, name);
            break;
        }
        case 4:
        {
            printf("输入查找的梁山好汉名称:");
            cin >> name;
            change(vec, name);
            break;
        }
        case 5:
        {
            outputFile(vec);
            break;
        }
        case 6:
        {
            inputFile(vec);
            break;
        }
        case 7:
        {
            showAllParam(vec);
            break;
        }
        case 8:
        {
            cout << "kill process .. " << endl;
            exit(0);
            break;
        }

        }
        system("pause");
        system("cls");
        par->showMenu();
    }
    return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C++使用文件实现学生信息管理系统

    C++实现文件实现学生信息管理系统,供大家参考,具体内容如下 功能如下: 添加学生信息(学生添加完成将直接保存进文件) 成绩信息(c语言,大学英语,高等数学) 个人信息(姓名.性别.学号.年龄) 显示学生信息 查询学生信息 按学号查询 按名字查询 按学号删除学生信息 修改学生信息 按学号对学生进行排序 类的设计: 表示成绩的Score类: class Score{ public: float cLauage;//c语言成绩 float math;//高数成绩 float english;//英语

  • C++实现简单的信息管理系统

    本文为大家分享C++实现简单的信息管理系统,小编之前在学习的时候也要做一些管理系统,在网上查了许多资料,现在我把资料分享给大家,希望能够帮助到大家. #include <stdio.h> #include <stdlib.h> #include "file.h" void savaList(Node *head)/**把用户录入的数据存储到文件里面去方便下次读取*/ { FILE *fp=fopen("data\\data.txt" ,&qu

  • C++实现简单的职工信息管理系统

    功能主模块描述 模块一:增加人员函数Add():增加职工基本信息. 模块二:删除人员函数Delete():删除指定的职工的基本信息以及薪酬. 模块三:修改人员函数Modify():修改指定的职工基本信息. 模块四:查询职工信息函数Search():查询指定的职工信息以及薪酬. 模块五:排序职工信息函数Sort():职工信息排序功能实现 模块六:基础数据设置函数Set():设置五类职位的基本薪酬. 模块七:数据存盘,载入函数Save()以及Load():储存职工基本信息,薪酬以及五类职位的基本薪酬

  • C++学生信息管理系统

    本文实例为大家分享了C++学生信息管理系统源码,供大家参考,具体内容如下 1. tea_list.c #include<stdio.h> #include<stdlib.h> #include<string.h> #include"teacher.h" int sq_tea ; PTEA head = NULL ; FILE *fp ; int tea_llopen(const char* path)//打开文件 { fp=fopen(path,&q

  • linux下C/C++学生信息管理系统

    一.简介 大学期间用vc++开发的简单的学生信息管理系统,主要有添加学生信息.删除学生信息.修改学生信息.查询学生信息.显示学生信息.综合统计(各课程平均成绩和合格率).总分排序和退出系统.设计: 二.详解 1.代码 (1)main.cpp #include<iostream> #include<fstream> #include<iomanip> //使用setw()函数 #include<windows.h> //使用system()函数 #includ

  • C++实现景区信息管理系统

    本文实例为大家分享了C++实现景区信息管理系统的具体代码,供大家参考,具体内容如下  1.1 建立主程序应用菜单选项 主程序应用菜单选项包含所实现的所有功能,并且对选项采用数字标识进行选择,对其他错误输入可以进行判别,提示输入错误. 1.2 导游线路图的创建级景区分布图的输出 用邻接链表存储景点分布图的信息,(带权无向)图的邻接链表.输出景区景点分布图(邻接矩阵).图中边的权值∞用32767表示. 1.3  输出导游线路图 景区旅游信息管理系统中制订旅游景点导游线路策略,首先通过遍历景点,给出一

  • C++利用链表实现图书信息管理系统

    C++利用链表实现一个简单的图书信息管理系统,供大家参考,具体内容如下 (1)图书信息包括ISBN号.书名.作者名.价格和数量等: (2)系统的主要功能包括:图书信息的创建.输出图书信息.查询图书信息.增加图书信息.删除图书信息. #include <stdio.h> #include <stdlib.h> #include <string.h> //创建结构体及其成员 typedef struct Node { int num;//编号 char name[20];/

  • C++实现学生信息管理系统

    C++的课设作业,分享出来,希望给初学者一些帮助. 该系统主要用到C++的继承,虚函数.所有学生的信息保存在一个异质链表中,并且链表也进行了封装 课设题目 设计一个学生管理系统,要求如下: 1.学生来自英语系,数学系.计算机系: a) 每个学生的公共信息部分包括:学号.姓名.年龄.系别,高数成绩.英语成绩.体育成绩: b) 英语系学生有综合英语.口语等课程成绩: c) 数学系学生有实变函数.泛函分析.微分几何等课程成绩: d) 计算机系学生有计算机组成原理.计算机体系结构.汇编语言等课程成绩.

  • C++实现高校人员信息管理系统

    高校人员信息管理系统设计,供大家参考,具体内容如下 一.问题描述及功能要求 1.问题描述 某高校有四类员工:教师.实验员.行政人员,教师兼行政人员:共有的信息包括:编号.姓名.性别.年龄等.其中,教师还包含的信息有:所在系部.专业.职称:实验员还包含的信息由:所在实验室.职务:行政人员还包含的信息有:政治面貌.职称等. 2.功能要求 (1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复

  • C++实现学生考勤信息管理系统

    学生考勤信息管理系统记录了学生的缺课情况,它包括: 缺课日期.第几节课.课程名称.学生姓名.学生学号.缺课类型(迟到.请假及旷课).系统具有以下功能: 1).录入学生的缺课记录: 2).修改某个学生的缺课记录: 3).查询某个学生的缺课情况: 4).统计 旷课学生姓名及旷课次数,按旷课次数由多到少排序: 5).统计 有学生旷课的课程及旷课人次(每次课时累加),按旷课人次由多到少排序: 重新修改了下,之前的4,5功能未实现. #include<iostream> #include<fstr

随机推荐