数据结构课程设计——英语四级考试报名管理

来源:互联网 发布:pc蛋蛋单双算法哪个准 编辑:程序博客网 时间:2024/04/28 21:58
  1. /*   * Copyright(c) 2017,烟台大学计算机学院   * All rights reserved.   * 文件名称:axiao13.cpp   * 作    者:李潇   * 完成日期:2017 年 12 月 21 日   * 版 本 号:v1.0   *   * 问题描述: 英语四级考试报名管理* 输入描述:考生信息输入* 程序输出:测试结果输出   */
  2. 1、头文件    hhh.h
  3. #ifndef HHH_H_INCLUDED#define HHH_H_INCLUDEDtypedef struct student{    char name[20];    char num[20];    char ID[20];}ElemType;typedef struct LNode        //定义单链表结点类型{    ElemType data;    struct LNode *next;     //指向后继结点}LinkList;void CreateListF(LinkList *&L);//创建链表void LocateElem(LinkList *L);//查找信息void ListChange(LinkList *&L);//修改信息void ListDelete(LinkList *&L);//删除信息void DispList(LinkList *L);//输出信息void SortList(LinkList *&L);void menu();void Display(LinkList *&L);int ListLength(LinkList *&);void WAITING();#endif // HHH_H_INCLUDED

  4. 外部函数   hhh.cpp
  5. #include <iostream>#include <malloc.h>#include <stdio.h>//使用putchar# include <time.h># include <windows.h>//修改运行窗口背景颜色#include <string.h>//使用strcmp#include "hhh.h"using namespace std;ElemType e;/*********************************************************** * 功能描述:采用尾插法增加考生信息 * 输入参数:该链表的总人数n * 输出参数:无 * 返回值  :无 * 其它说明:无 ************************************************************/  ///////////////////////////尾插法创建///////////////void CreateListF(LinkList *&L)//尾插法建立单链表{int i, n;///////n为报考人数LinkList  *p = L, *s;//////p始终是尾节点,s为要插入节点L = (LinkList *)malloc(sizeof(LinkList));p = L;putchar('\n');putchar('\n');cout << "请输入报考人数:";cin >> n;for (i = 0; i<n; i++)//循环建立数据节点s{putchar('\n');putchar('\n');s = (LinkList *)malloc(sizeof(LinkList));cout << "请输入姓名:";cin >> s->data.name;putchar('\n');putchar('\n');cout << "请输入准考证号:";cin >> s->data.num;putchar('\n');putchar('\n');cout << "请输入身份证号:";cin >> s->data.ID;//创建数据结点sp->next = s;p = s;p->next = NULL;putchar('\n');putchar('\n');WAITING();cout << "报名成功" << endl;}}/*********************************************************** * 功能描述:查询考生信息 * 输入参数:要查找的准考证号e.num * 输出参数:考生信息 * 返回值  :无 * 其他说明:无 ************************************************************/  /////////////////////查询考生信息(按元素值查找(准考证号))////////////void LocateElem(LinkList *L){    LinkList *p=L->next;    if(p==NULL)    {putchar('\n');putchar('\n');        cout<<"该考生不存在,请重新输入:";    }    else    {putchar('\n');putchar('\n');        cout<<"请输入要查找的考生的准考证号:";        cin>>e.num;        while(p!=NULL&&(strcmp(p->data.num,e.num)>0||strcmp(p->data.num,e.num)<0))        {            p=p->next;        }        if(p==NULL)        {putchar('\n');putchar('\n');            cout<<"该考生不存在,请重新输入:";        }        else        {WAITING();putchar('\n');putchar('\n');            cout<<"考生姓名:"<<p->data.name<<endl;putchar('\n');putchar('\n');            cout<<"考生身份证号:"<<p->data.ID<<endl;putchar('\n');putchar('\n');            cout<<"考生准考证号:"<<p->data.num<<endl;        }    }}/*********************************************************** * 功能描述:修改考生信息 * 输入参数:要修改的考生的姓名,身份证号 * 输出参数:修改成功 * 返回值  :无 * 其他说明:无 ************************************************************/  ///////////////////修改考生信息/////////////void ListChange(LinkList *&L){    LinkList *p=L;if (p->next == NULL){putchar('\n');putchar('\n');cout << "不存在该考生,请重新输入:";}    else    {putchar('\n');putchar('\n');        cout<<"请输入考生准考证号:";        cin>>e.num;        while(p!=NULL&&(strcmp(e.num,p->data.num)<0||strcmp(e.num,p->data.num)>0))        {            p=p->next;        }if (p == NULL){putchar('\n');putchar('\n');cout << "不存在该考生,请重新输入:";}        else        {            if((strcmp(p->data.num,e.num)==0))            {putchar('\n');putchar('\n');WAITING();                cout<<"找到该考生!"<<endl;putchar('\n');putchar('\n');                cout<<"请输入考生姓名:";                cin>>p->data.name;putchar('\n');putchar('\n');                cout<<"请输入考生身份证号:";                cin>>p->data.ID;putchar('\n');putchar('\n');                cout<<"请输入考生准考证号:";                cin>>p->data.num;putchar('\n');putchar('\n');                cout<<"修改成功!"<<endl;            }            else            {putchar('\n');putchar('\n');                cout<<"该考生不存在,请重新输入:";                ListChange(L);            }        }    }}/*********************************************************** * 功能描述:删除考生信息 * 输入参数:要删除的考生的准考证号e.num * 输出参数:删除成功 * 返回值  :无 * 其他说明:无 ************************************************************/ /////////////////////删除考生信息/////////void ListDelete(LinkList *&L){    LinkList *p=L,*q;    if(p->next==NULL)    {putchar('\n');putchar('\n');        cout<<"无考生信息"<<endl;    }    else    {putchar('\n');putchar('\n');        cout<<"请输入要删除的考生准考证号:";        cin>>e.num;        if(e.num<=0)        {putchar('\n');putchar('\n');            cout<<"输入有误,请重新输入:"<<endl;        }        while(p->next != NULL && (strcmp(p->next->data.num,e.num)>0||strcmp(p->next->data.num,e.num)<0))        {            p=p->next;        }        if (p->next==NULL)        {putchar('\n');putchar('\n');            cout<<"未找到该考生准考证号";        }        else        {            q=p->next;            if(q==NULL)            {putchar('\n');putchar('\n');                cout<<"未找到该考生准考证号";            }            e=q->data;            p->next=q->next;            free(q);putchar('\n');putchar('\n');WAITING();            cout<<"删除成功"<<endl;        }    }}/*********************************************************** * 功能描述:显示考生信息 * 输入参数:无 * 输出参数:考生信息 * 返回值  :无 * 其它说明:无 ************************************************************/ ////////////////显示考生信息///////////////////////////void DispList(LinkList *L){    LinkList *p=L->next;    if(p==NULL)    {putchar('\n');putchar('\n');        cout<<"不存在考生信息"<<endl;    }    else    {        for(p=L->next; p!=NULL; p=p->next)        {WAITING();putchar('\n');            cout<<"考生姓名:"<<p->data.name<<endl;putchar('\n');            cout<<"考生身份证号:"<<p->data.ID<<endl;putchar('\n');            cout<<"考生准考证号:"<<p->data.num<<endl;        }    }}/*********************************************************** * 功能描述:排序考生信息(根据准考证号或者四级成绩排序) * 输入参数:排序后的考生信息 * 输出参数:无 * 返回值  :无 * 其他说明:无 ************************************************************/  ///////////////考生信息排序/////////////////////////////void SortList(LinkList *&L){LinkList *p = L->next, *q, *r;if (p == NULL){putchar('\n');putchar('\n');cout << "\t\t\t无考生信息" << endl;}else{q = p->next;for (p = L->next; p != NULL; p = p->next){r = p;//////记录最小值for (q = p->next; q != NULL; q = q->next){if (strcmp(q->data.num, r->data.num) < 0)r = q;}if (r != p){ElemType tmp;tmp = p->data;p->data = r->data;r->data = tmp;}}WAITING();DispList(L);}}/*********************************************************** * 功能描述:菜单函数 * 输入参数:无 * 输出参数:无 * 返回值  :无 * 其他说明:无 ************************************************************/  void menu(){    system("color F0");cout << "\t\t\t\t\t     ¥    ¥" << endl;    cout<<"\t\t*********************· 四级考试报名系统·******************"<<endl;putchar('\n');time_t timep;time(&timep);cout << "\t\t\t     当前时间:" << ctime(&timep);putchar('\n');    cout<<"\t\t************************ 1.增加考生信息**********************"<<endl;putchar('\n');    cout<<"\t\t************************ 2.显示考生信息**********************"<<endl;putchar('\n');    cout<<"\t\t************************ 3.根据准考证号排序考生信息**********"<<endl;putchar('\n');    cout<<"\t\t************************ 4.查询考生信息**********************"<<endl;putchar('\n');    cout<<"\t\t************************ 5.修改考生信息**********************"<<endl;putchar('\n');    cout<<"\t\t************************ 6.删除考生信息**********************"<<endl;putchar('\n');    cout<<"\t\t************************ 7.安全退出**************************"<<endl;putchar('\n');    cout<<"\t\t请选择:";}/*********************************************************** * 功能描述:功能选择函数 * 输入参数:功能序号 * 输出参数:无 * 返回值  :无 * 其他说明:无 ************************************************************/  void Display(LinkList *&L){    while(true)    {        menu();        int x;        cin>>x;        switch(x)        {        case 1:            CreateListF(L);            break;        case 2:            DispList(L);            break;        case 3:            SortList(L);            break;        case 4:            LocateElem(L);            break;        case 5:            ListChange(L);            break;        case 6:            ListDelete(L);            break            ;        case 7:        {            cout<<"************************************************"<<endl;            cout<<"************************************************"<<endl;            cout<<"        欢迎再次使用                            "<<endl;            cout<<"************************************************"<<endl;            cout<<"************************************************"<<endl;            exit(0);            break;        }        }    }}int ListLength(LinkList *&L){LinkList *p = L->next;int i = 0;while (p != NULL){i++;p = p->next;}return i;}/*********************************************************** * 功能描述:延时函数 * 输入参数:无* 输出参数:正在处理,请稍后..... * 返回值  :无 * 其他说明:无 ************************************************************/  void WAITING(){putchar('\n');char str[20] = "正在处理,请稍后";cout << str;int count;for (count = 0; count < 5; count++)
    #include "hhh.h"/*********************************************************** * 功能描述:主函数 * 输入参数:无 * 输出参数:系统首页 * 返回值  :无 * 其他说明:无 ************************************************************/int main(){    LinkList *L;    Display(L);}

    {Sleep(200);cout << '.';}}


  6. 主函数   main.cpp
  7. #include "hhh.h"/*********************************************************** * 功能描述:主函数 * 输入参数:无 * 输出参数:系统首页 * 返回值  :无 * 其他说明:无 ************************************************************/int main(){    LinkList *L;    Display(L);}
  8. 运行结果:
原创粉丝点击