微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用C++实现数据的管理功能

本文主要讲述了通过C++实现对数据的增加删除查询以及按规则排序。


1554188612236924.jpg

这里,我用学生数据管理来举个栗子:

要求实现以下功能


1、信息录入:录入学生成绩信息(包括学生学号、姓名、各门课程的成绩等);

2、信息查询:输入学号,查询学生各门课程的成绩,并显示

3、排序:按各门课程的成绩平均分进行排序,并显示

4、信息删除修改——输入学号,删除该学生的成绩信息。

分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。

2、建立一个文件,将每位学生的信息写入文件中并能显示于屏幕上。

3、完成上述信息查询(学生学号、姓名等)、排序、信息删除修改功能

#include <iostream>
#include <string.h>
using namespace std;
#define MAX 100
class CStudent
{private:    char *name;              // 姓名
    bool sex;                // 性别
    CDate date;              // 出生日期,类对象作数据成员
    public:    static int num;          // 学生人数
    CStudent();    void InputData();    
    friend void Sort();      // 排序
    friend void FindName();  // 按姓名查询
    friend void Statistic(); // 按性别统计
    friend void display();   // 显示全部信息} stu[MAX];
    int CStudent::num=0;    //static 初始化
    CStudent::CStudent() {} //构造函数// 输入信息
void CStudent::InputData()
{    
    int p;    char s[41];    
    cout<<请输入学生信息(NO.<<num<<):\n;    
    cout<<姓名:;    cin>>s;
    name=new char[strlen(s)+1];    
    strcpy(name,s);    
    cout<<性别(1-男,0-女):;    
    cin>>p;    
    if (p)  sex=true;    
    else sex=false;    cin>>date;//操作符重载->istream &operator>>(istream &in,CDate &d)
    cout<<endl;
}// 排序 根据data从小到大排序
void Sort()
{    
    int i,j,p,num;    char *tn;    bool ts;
    CDate td;
    num=CStudent::num;    
    for(i=1; i<num; i++)
    {
        p=i;        
    for(j=i+1; j<=num; j++)            
    if (stu[j].date<stu[p].date) p=j;//找到当前未排序元素中年龄最小的对象的下标
        if (p==i) continue;        //下面交换stu[i]和stu[p]
        tn=stu[i].name;
        stu[i].name=stu[p].name;
        stu[p].name=tn;
        ts=stu[i].sex;
        stu[i].sex=stu[p].sex;
        stu[p].sex=ts;
        td=stu[i].date;
        stu[i].date=stu[p].date;
        stu[p].date=td;
    }
}// 按姓名查询
void FindName()
{    
    char name[41];    
    int i,num;    
    cout<<请输入姓名:;    
    cin>>name;
    num=CStudent::num;    
    for(i=1; i<=num; i++)        
    if (strcmp(stu[i].name,name)==0) break;    
    if (i>num)
    {        
    cout<<查无此人!<<endl<<endl;        
    return;
    }    //如果查到了,显示学生信息
    cout<<姓名:<<stu[i].name<<endl;    
    cout<<性别:;    if (stu[i].sex)        
    cout<<男<<endl;    else
    cout<<女<<endl;    
    cout<<生日:<<stu[i].date<<endl;    
    cout<<endl;
}// 按性别统计
void Statistic()
{    
    int i,num,s1,s0;
    num=CStudent::num;
    s1=0;
    s0=0;    for(i=1; i<=num; i++)        
    if (stu[i].sex==1)s1++;        
    else s0++;    
    cout<<男生人数:<<s1<<endl;    
    cout<<女生人数:<<s0<<endl;    
    cout<<endl;
}// 显示全部信息
void display()
{    
    int i,num;
    num=CStudent::num;    for(i=1; i<=num; i++)
    {        
    cout<<stu[i].name<<\t;        
    if (stu[i].sex)            
    cout<<男;        
    else cout<<女;        
    cout<<\t<<stu[i].date<<endl;
    }    
    cout<<endl;
}
    int main1()
{    char *menu[]= { ,输入信息,排序,按姓名查询,按性别统计,显示全部信息,退出 };    
    int i,p;    bool end;
    end=false;    while(!end)
    {        for(i=1; i<7; i++)            
    cout<<i<<  <<menu[i]<<endl;        
    cin>>p;        
    switch(p)
        {        
    case 1:                          // 输入信息
            CStudent::num++;
            stu[CStudent::num].InputData();            break;        
    case 2:                          // 排序
            Sort();            break;        
    case 3:                          // 按姓名查询
            FindName();            break;        
    case 4:                          // 按性别统计人数
            Statistic();            break;        
    case 5:                          // 显示全部信息
            display();            break;        
    case 6:                          // 退出
            end=true;            break;
        }
    }    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐