课程设计---学生信息管理系统

/*
*烟台大学计算机与控制工程学院
/*
 *Copyright (c) 2015,烟台大学计算机与控制工程学院
 *All rights reserved.
 *文件名称:lulu.cpp
 *作者:芦亚茹
 *完成日期:2015年12月31日
 *版本号:v1.o
 *
 *问题描述:学生信息管理系统
*/

#include <iostream>
#include <cstring>
#include <algorithm>
#include<conio.h>
#include "xinxi.h"
using namespace std;
int main()
{
    Dis();
    int n;
    List s;
    while( cin>>n)
    {
        switch(n)//主界面中的各按键选择
        {
        case 1:
            //system("cls");
            s.CreateList();

            system("cls");
            Dis();
            break;
        case 2:

            s.LocateElem();
            system("pause");
            system("cls");
            Dis();
            break;
        case 3:
            s.Listchange();

            Dis();
            break;
        case 4:
            s.ListDelete();
            system("pause");
            system("cls");
            Dis();
            break;
        case 5:
            s.ListInsert();
            system("pause");
            system("cls");
            Dis();
            break;
        case 6:
            s.DispList();
            system("pause");
            system("cls");
            Dis();
            break;
        case 7:
            system("cls");
            cout<<endl<<endl<<endl;
            cout<<"                 谢谢使用"<<endl;
            cout<<"                   再见"<<endl<<endl<<endl;
            return 0;
            break;
        case 8:
            cout<<endl<<endl;
            cout<<"                 这个程序做起来真累"<<endl;
            cout<<endl<<endl;
            cout<<"                 老师"<<endl;
            cout<<"                 浓浓师生情"<<endl;
            system("pause");
            system("cls");
            Dis();
            break;
        default:
            system("cls");
            cout<<"输入错误!请重新输入:"<<endl;
            break;
        }

    }
    return 0;
}


#ifndef HEAD_H_INCLUDED
#define HEAD_H_INCLUDED
using namespace std;
typedef struct student
{
    int num;
    char name[20];
    char sex;
    int age;
    char zhuanye[20];
    int tel;
    student *next;
} ElemType;
class List
{
private:
    ElemType *head;               //链表头指针
public:
    void CreateList();            //建立
    void DispList();              //显示
    void ListInsert();            //插入
    void LocateElem();            //查找
    void Listchange();            //修改
    void ListDelete();            //删除
    List()
    {
        head=NULL;
        }
};
/************************ 
功能描述:建立学生信息函数 
输入参数:要录入的学生学号以及信息 
输出参数:无
其他说明:无 
*************************/
void List::CreateList()//建立,录入学生信息
{
    ElemType *head1,*p;
    cout<<"请输入学生信息以”0“结束输入"<<endl;
    head=head1=new ElemType;
    while(cin>>head1->num&&head1->num)
    {
        cin>>head1->name>>head1->sex>>head1->age>>head1->zhuanye>>head1->tel;
        p=new ElemType;
        head1->next=p;
        head1=p;
    }
    head1->next=NULL;
}
/************************ 
功能描述:浏览学生信息函数 
输入参数:无 
输出参数:全部学生信息
其他说明:无 
*************************/
void List::DispList()    
{
    ElemType *head1;
    head1=head;
    while(head1->next!=NULL)
    {
        cout<<"————————————————————————"<<endl;
        cout<<"学    号: "<<head1->num<<endl;
        cout<<"姓    名:  "<<head1->name<<endl;
        cout<<"性    别: "<<head1->sex<<endl;
        cout<<"年    龄:  "<<head1->age<<endl;
        cout<<"专    业: "<<head1->zhuanye<<endl;
        cout<<"电    话: "<<head1->tel<<endl;
        head1=head1->next;
    }
}
void List::ListDelete()      //删除某个学生
{
    int D_num;
    ElemType *p1,*p2;
    cout<<"请输入要删除的学生的学号,以0结束删除操作:"<<endl;
    while(cin>>D_num&&D_num!=0)
    {
        p1=head;
        bool f=false;       //寻找成功的标志
        while(D_num!=p1->num&&p1!=NULL)
        {
            p2=p1;
            p1=p1->next;
        }
        if(D_num==p1->num)
        {
            f=true;
            if(p1==head)head=p1->next;   //删除头结点
            else p2->next=p1->next;
            cout<<"删除成功!"<<endl;
        }
        if(!f)
        {
            cout<<"查无此人,或该学生信息已被删除!"<<endl;
        }
        cout<<"请输入要删除的学生的学号,以0结束删除操作:"<<endl;
    }

}
/************************ 
功能描述:插入学生信息函数 
输入参数:要插入的学生学号以及信息 
输出参数:插入后的信息 
其他说明:无 
*************************/
void  List::ListInsert()      
{
    ElemType *p0,*p1,*p2;
    cout<<"请输入一个要插入的学号以”0“结束输入"<<endl;
    p1=head;
    p0=new ElemType;
    while(cin>>p0->num&&p0->num)
    {

        cout<<"请输入该学生的其他信息"<<endl;
        cout<<"姓    名:";
        cin>>p0->name;
        cout<<"性    别:";
        cin>>p0->sex;
        cout<<"年    龄:";
        cin>>p0->age;
        cout<<"专    业: ";
        cin>>p0->zhuanye;
        cout<<"电    话: ";
        cin>>p0->tel;
        while(p0->num>p1->num&&p1->next->num!=0)//p1指向倒数第二个节点
        {
            p2=p1;
            p1=p1->next;
        }
        if(p0->num<=p1->num)
        {
            if(head==p1)head=p0;//插在表头
            else p2->next=p0;//插在表中间
            p0->next=p1;
            cout<<"该学生信息已录入"<<endl;
            cout<<"请输入一个要插入的学号以”0“结束输入"<<endl;
            p0=new ElemType;
        }
        else//插在表尾
        {
            p0->next=p1->next;
            p1->next=p0;
            //cout<<p1->next->num<<"************"<<endl;
            cout<<"该学生信息已录入"<<endl;
            cout<<"请输入一个要插入的学号以”0“结束输入"<<endl;
            p0=new ElemType;
        }

    }
}
/************************ 
功能描述:查找学生信息函数 
输入参数:要查找的学生学号 
输出参数:查找后的信息 
其他说明:无 
*************************/

void List::LocateElem()
{
    int b;
    ElemType *p;
    while(1)
    {
        bool f=false;
        cout<<"请输入要查找的学号以”0“结束查找:"<<endl;
        cin>>b;
        if(b==0)
            break;
        p=head;
        while(p!=NULL)
        {
            if(b==p->num)
            {
                cout<<"____________________"<<endl;
                cout<<"学    号: "<<p->num<<endl;
                cout<<"姓    名:  "<<p->name<<endl;
                cout<<"性    别: "<<p->sex<<endl;
                cout<<"年    龄:  "<<p->age<<endl;
                cout<<"专    业: "<<p->zhuanye<<endl;
                cout<<"电    话: "<<p->tel<<endl;
                f=true;
                break;
            }
            else
            {
                p=p->next;
            }
        }
        if(!f)
        {
            cout<<"查找失败,此学生不存在!"<<endl;
        }
    }
}
/************************ 
功能描述:修改学生信息函数 
输入参数:要修改的学生学号以及信息 
输出参数:修改后的信息 
其他说明:无 
*************************/
void List::Listchange()      
{
    int C_num;
    ElemType *p;
    while(1)
    {
        cout<<"请输入一个要修改学生信息,否则输入”0“结束修改"<<endl;
        cin>>C_num;
        if(C_num==0)
            break;
        p=head;
        bool f=false;
        while(p->next!=NULL)
        {
            if(C_num==p->num)//所输入学号与原有学号相同时,开始修改学生信息
            {
                f=true;
                cout<<"请重新输入学生信息:"<<endl;
                cout<<"姓    名:";
                cin>>p->name;
                cout<<"性    别:";
                cin>>p->sex;
                cout<<"年    龄:";
                cin>>p->age;
                cout<<"专    业: ";
                cin>>p->zhuanye;
                cout<<"电    话: ";
                cin>>p->tel;
                //cin>>p->num>>p->name>>p->sex>>p->age>>p->zhuanye>>p->tel;
                break;
            }
            else
            {
                p=p->next;
            }
        }
        if(!f)//如果未查找到要修改的学生信息,可选择插入该学生信息
        {
            cout<<"未查找到此学生信息,是否插入该学生信息?"<<endl;
            cout<<"1.是                                2.否"<<endl;
            int m;
            cin>>m;
            if(m==1)//p指向 0(即最后一个) 节点
            {
                //找到倒数第二个节点,
                p=head;
                while(p->next->num!=0)
                    p=p->next;
                //p指向倒数第二个节点
                ElemType *p1=new ElemType;
                p1->next=p->next;
                p->next=p1;
                cout<<"请输入该学生的其他信息:"<<endl;
                p1->num=C_num;
                cout<<"姓    名:";
                cin>>p1->name;
                cout<<"性    别:";
                cin>>p1->sex;
                cout<<"年    龄:";
                cin>>p1->age;
                cout<<"专    业: ";
                cin>>p1->zhuanye;
                cout<<"电    话: ";
                cin>>p1->tel;
                break;

            }

        }
    }
}
/************************ 
功能描述:主菜单函数 
输入参数:要选择的功能按键 
输出参数:进入相对应的功能 
其他说明:无 
*************************/
void Dis()
{
    cout<<endl<<endl<<endl;
    cout<<"      ◇◇◇◇◇◇◇欢迎使用学生管理系统◇◇◇◇◇◇◇"<<endl;
    cout<<"                     1.创建学生信息                      "<<endl;
    cout<<"                     2.查找学生信息                      "<<endl;
    cout<<"                     3.修改学生信息                      "<<endl;
    cout<<"                     4.删除学生信息                      "<<endl;
    cout<<"                     5.插入学生信息                      "<<endl;
    cout<<"                     6.显示所有学生信息                  "<<endl;
    cout<<"                     7.退出                              "<<endl;
    cout<<"                     8.关于                              "<<endl;
    cout<<"请输入您要选择的服务项目:";
}


#endif // HEAD_H_INCLUDED

部分运行结果:

课程设计---学生信息管理系统_第1张图片课程设计---学生信息管理系统_第2张图片a

课程设计---学生信息管理系统_第3张图片

你可能感兴趣的:(课程设计---学生信息管理系统)