zoukankan      html  css  js  c++  java
  • 考试报名管理

    考试报名系统是对考试报名管理的简单模拟,用菜单选择方式完成下列功能:输入考生信息;输出考生信息;查询考生信息;添加考生信息;修改考生信息;删除考生信息。每条考生信息由准考证号、姓名、性别、年龄、报考类别等信息组成。
           要求:定义一个专用的类型 ElemType,用于描述考生信息,数据结构用一个类描述,命名为List,包括数据、关系和基本操作;数据结构的存储结构分别用顺序和链式两种结构实现,所定义的数据结构在不改或稍加改动的情况下,可用于第二个项目。

    单链表:

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #define SIZE 1005
    using namespace std ;
    typedef struct Student{
    	int IdCard ;
    	char name[SIZE] ;
    	char gender[SIZE] ;
    	int age ;
    	char ExamType[SIZE] ;
    	struct Student *next ;
    }Elemtype;
    Elemtype *Stu;
    void MenuChoose();
    class List{
    	
    public :
    	void InitList(Elemtype *&L) ; 
    	void CreatList(Elemtype *L, int n );
    	void DisplayList(Elemtype *&L);
    	void FindList(Elemtype *&L, int n); 
    	void InsertList(Elemtype *&L, int i , Elemtype &e) ;
    	bool DeleteList(Elemtype *&L , int i ,Elemtype &e) ;
    	void AlterList(Elemtype *&L , int i , Elemtype &e); 
    };
    void List::InitList(Elemtype *&L)
    {
    	L = (Elemtype*)malloc(sizeof(Elemtype));
    	L->next = NULL  ;
    	return ;
    }
    
    void List::CreatList(Elemtype *L,int n )
    {
    	Elemtype *p, *r ;
    	r = L;
    	for(int i = 0; i < n; i++)
    	{
    		p = (Elemtype*)malloc(sizeof(Elemtype));
    		
     		printf("请输入第 %d 名学生的学号
    ",i+1);
    		cin >> p->IdCard ;
    		printf("请输入第 %d 名学生的姓名
    ",i+1);
    		cin >> p->name ;
    		printf("请输入第 %d 名学生的性别
    ",i+1);
    		cin >> p->gender ;
    		printf("请输入第 %d 名学生的年龄
    ",i+1);
    		cin >> p->age ;
    		printf("请输入第 %d 名学生的报考类型
    ",i+1);
    		cin >> p->ExamType ;
    		p->next = NULL ;
    		if(L->next ==NULL)
    		{
    			L->next = p ;
    		}
    		else
    		{
    			r->next = p ;
    		}
    		r = p ;
    	}
    }
    void List::InsertList(Elemtype *&L, int i , Elemtype &e)
    {
    	Elemtype *p = L->next ,*s ;
    	if(i <= 0)
    		return ;
    	int j = 1 ;
    	while(j < i && p!=NULL)
    	{
    		j++ ;
    		p = p->next ;
    	}
    	if(p == NULL)
    	{
    		return ;
    	}
    	else
    	{
    		s = (Elemtype *)malloc(sizeof(Elemtype));
    		s->IdCard = e.IdCard ;
    		strcpy(s->name,e.name);
    		strcpy(s->gender,e.gender);
    		s->age = e.age ;
    		strcpy(s->ExamType,e.ExamType);
    		
    		s->next = p->next ;
    		p->next = s ;
    		
    	}
    	return ;
    }
    void List::AlterList(Elemtype *&L ,int i ,Elemtype &e)
    {
    	Elemtype *p = L ;
    	int j = 0  ;
    	while(j < i && p!=NULL)
    	{
    		j++ ;
    		p = p->next ;
    	}
    	if(p == NULL)
    	{
    		return ;
    	}
    	p->IdCard = e.IdCard ;
    	strcpy(p->gender,e.gender);
    	strcpy(p->name,e.name);
    	strcpy(p->ExamType,e.ExamType) ;
    	p->age = e.age ;
    	return ;
    }
    void List::FindList(Elemtype *&L, int n)
    {
    	int i = 1;
    	Elemtype *q = L->next;
    	while(i < n && q != NULL)
    	{
    		i++;
    		q = q->next;
    	}
    	if(q == NULL)
    		return ;
    	else
    	{
    		printf("学号 : %d 
    ",q->IdCard);
    		printf("姓名 : %s 
    ",q->name) ;
    		printf("性别 : %s 
    ",q->gender) ;
    		printf("年龄 : %d 
    ",q->age);
    		printf("报考类型 : %s",q->ExamType);
    		printf("
    ");
    	}
    	return ;
    }
    
    bool List::DeleteList(Elemtype *&L ,int i ,Elemtype &e)
    {
    	Elemtype *p = L , *q;
    	int j = 0  ;
    	while(j < i - 1 && p!=NULL)
    	{
    		j++ ;
    		p = p->next  ;
    	}
    	if(p ==NULL)
    	{
    		return false ;
    	}
    	else
    	{
    		q = p->next ;
    		if(q==NULL)
    		{
    			return false ;
    		}
    		e.IdCard = q->IdCard ;
    		strcpy(e.name,q->name);
    		strcpy(e.gender,q->gender);
    		strcpy(e.ExamType,q->ExamType) ;
    		e.age = q->age ;
    		p->next = q->next ;
    		free(q);
    		return true  ;
    	}
    }
    void List::DisplayList(Elemtype *&L)
    {
    	Elemtype *p = L->next ;
    	int i = 1 ;
    	cout<<endl;
    	while(p)
    	{
    		printf("第 %d 名学生信息 : 
    ",i) ;
    		printf("学号 : %d 
    ",p->IdCard);
    		printf("姓名 : %s 
    ",p->name) ;
    		printf("性别 : %s 
    ",p->gender) ;
    		printf("年龄 : %d 
    ",p->age);
    		printf("报考类型 : %s",p->ExamType);
    		printf("
    ");
    		p = p->next ;
    		i++ ;
    	}
    	return ;
    }
    
    void Menu()
    {
    	cout<<endl<<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<<"*************************************"<<endl;
        return ;
    }
    
    void input_Student(Elemtype &e)
    {
    	printf("请输入学生的学号
    ");
    	cin >> e.IdCard ;
    	printf("请输入学生的姓名
    ");
    	cin >> e.name ;
    	printf("请输入学生的性别
    ");
    	cin >> e.gender ;
    	printf("请输入学生的年龄
    ");
    	cin >> e.age ;
    	printf("请输入学生的报考类型
    ");
    	cin >> e.ExamType ;
    	cout<<endl;
    	e.next = NULL ;
    	return ;
    }
    
    int main()
    {
    	Menu();
    	List a ;
    	int n ;
    	Elemtype e ;
    	a.InitList(Stu);
    	int i ;
    	int num  ;
    	printf("功能选择 : 
    ");
    	while(scanf("%d",&n) && n)
    	{
    		if(n==1)
    		{		
    			printf("你需要输入多少学生
    ");
    			cin >> num  ;
    			a.CreatList(Stu,num);
    		}	
    		else if(n==2)
    		{
    			printf("你要查找第几个学生
    ");
    			cin >> num; 
    			a.FindList(Stu,num);			
    		}	
    		else if(n==3)
    		{
    			printf("你要修改第几名学生信息 :");
    			cin >> i;
    			printf("请输入修改后的信息
    ");
    			input_Student(e);
    			a.AlterList(Stu,i,e);
    		}
    		else if(n==4)
    		{
    			printf("你要删除第几名学生信息 :");
    			cin >> i;
    			a.DeleteList(Stu,i,e);
    		}
    		else if(n==5)
    		{
    			printf("你要在第几个序号后插入 :");
    			cin >> i;
    			printf("请输入插入学生的信息
    ");
    			input_Student(e);
    			a.InsertList(Stu,i,e);
    		}
    		else if(n==6)
    		{
    			a.DisplayList(Stu);
    			cout<<endl;
    		}		
    		else
            {
                cout<<"ERROR"<<endl;
            }
            Menu();
            printf("功能选择 : 
    ");
    	}
    	return 0 ;
    }
    

      

    顺序表

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<cstring>
    #define  MaxSize 100
    #define SIZE 100
    using namespace std;
    
    typedef struct Student{
    	// 考生信息;
    	int IdCard ;
    	char name[SIZE] ;
    	char gender[SIZE] ;
    	int age ;
    	char ExamType[SIZE] ;
    
    }ElemType;
    
    typedef struct 
    {
    	ElemType data[MaxSize];
    	int length;
    }SqList;
    SqList *Stu;
    
    class list{
    	
    public :
    	void InitList(SqList *&L) ; // 初始化
    	void CreatList(SqList *&L, ElemType a[], int n);// 创建学生信息;
    	void DispList(SqList *L);// 输出学生信息;
    	void FindList(SqList *L, int n);
    	bool ListEmpty(SqList *L);
    	bool ListInsert(SqList *&L, int i, ElemType e);
    	bool ListDelete(SqList *&L, int i, ElemType &e);
    	bool AlterList(SqList *L, int i, ElemType &e); //  修改 第i位置上的学生信息 ;
    };
    
    void list::InitList(SqList *&L)
    {
    	L = (SqList *)malloc(sizeof(SqList));
    	L->length = 0;
    }
    
    bool list::ListEmpty(SqList *L)
    {
    	return (L->length == 0);
    }
    
    void list::FindList(SqList *L, int n)
    {
    	if(n < 1 || n > L->length)
    		return ;
    	printf("第 %d 名学生信息 : 
    ", n - 1) ;
    	printf("学号: %d 
    ", L->data[n - 1].IdCard);
    	printf("姓名: %s 
    ", L->data[n - 1].name);
    	printf("性别: %s 
    ", L->data[n - 1].gender);
    	printf("年龄: %d 
    ", L->data[n - 1].age);
    	printf("报考类型: %s 
    ", L->data[n - 1].ExamType);
    
    }
    
    void list::DispList(SqList *L)
    {
    	int i;
    	if(ListEmpty(L))
    		return ;
    	for(i = 0; i < L->length; ++i)
    	{
    
    		printf("第 %d 名学生信息 : 
    ", i + 1) ;
    		printf("学号: %d 
    ", L->data[i].IdCard);
    		printf("姓名: %s 
    ", L->data[i].name);
    		printf("性别: %s 
    ", L->data[i].gender);
    		printf("年龄: %d 
    ", L->data[i].age);
    		printf("报考类型: %s 
    ", L->data[i].ExamType);
    
    	}
    	printf("
    ");
    }
    
    bool list::AlterList(SqList *L, int i, ElemType &e)
    {
    		if(i<1 || i>L->length)
    			return false ; 
    		L->data[i - 1].age = e.age ;
    		strcpy(L->data[i - 1].ExamType,e.ExamType) ; 
    		L->data[i - 1].IdCard = e.IdCard ; 
    		strcpy(L->data[i - 1].gender,e.gender )  ; 
    		strcpy(L->data[i - 1].name,e.name) ;  
    		return true ; 
    }
    
    bool list::ListInsert(SqList *&L, int i, ElemType e)
    {
    	int j;
    	if(i < 1 || i > L->length + 1)
    		return false;
    	i--;  //将逻辑序号转化为物理序号 
    	for(j = L->length - 1; j >= i; j--)  //注意边界条件 
    	{
    		L->data[j + 1] = L->data[j];
    	}
    	L->data[i] = e;
    	L->length++;  //注意!!!!!! 
    	return true;
    }
    
    bool list::ListDelete(SqList *&L, int i, ElemType &e)
    {
    	int j;
    	if(i < 1 || i > L->length)
    		return false;
    	i--;
    	e = L->data[i];
    	for(j = i; j < L->length - 1; j++)  //注意边界条件 
    	{
    		L->data[j] = L->data[j + 1];
    	}
    	L->length--;
    	return true;
    }
    
    void list::CreatList(SqList *&L, ElemType a[], int n)
    {
    	L = (SqList *)malloc(sizeof(SqList));
    	for(int i = 0; i < n; ++i)
    	{
    		L->data[i] = a[i];
    	}
    	L->length = n;
    }
    void input_Student(ElemType &e)
    {
    	printf("请输入学生的学号
    ");
    	cin >> e.IdCard ;
    	printf("请输入学生的姓名
    ");
    	cin >> e.name ;
    	printf("请输入学生的性别
    ");
    	cin >> e.gender ;
    	printf("请输入学生的年龄
    ");
    	cin >> e.age ;
    	printf("请输入学生的报考类型
    ");
    	cin >> e.ExamType ;
    	cout<<endl;
    	return ;
    }
    void Menu()
    {
    	cout<<endl<<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<<"*************************************"<<endl;
        return ;
    }
    
    int main()
    {
    	Menu();
    	list a;
    	int n ;
    	ElemType e ;
    	ElemType stu[SIZE] ;
    	a.InitList(Stu);
    	int i ;
    	int num  ;
    	printf("功能选择 : 
    ");
    	while(scanf("%d",&n) && n)
    	{
    		if(n==1)
    		{		
    			printf("你需要输入多少学生
    ");
    			cin >> num  ;
    			for(int i = 0 ; i<num ;i++)
    			{
    				printf("请输入学生的学号
    ");
    				cin >> stu[i].IdCard ;
    				printf("请输入学生的姓名
    ");
    				cin >> stu[i].name ;
    				printf("请输入学生的性别
    ");
    				cin >> stu[i].gender ;
    				printf("请输入学生的年龄
    ");
    				cin >> stu[i].age ;
    				printf("请输入学生的报考类型
    ");
    				cin >> stu[i].ExamType ;
    								
    			}
    			a.CreatList(Stu,stu,num);
    		}	
    		else if(n==2)
    		{
    			printf("你要查询第几名学生的信息:
    ");
    			cin >> n;
    			a.FindList(Stu,n);	
    		}	
    		else if(n==3)
    		{
    			printf("你要修改第几名学生信息 :");
    			scanf("%d",&i);
    			printf("请输入修改后的信息
    ");
    			input_Student(e);
    			a.AlterList(Stu,i,e);
    		}
    		else if(n==4)
    		{
    			printf("你要删除第几名学生信息 :");
    			scanf("%d",&i);
    			a.ListDelete(Stu,i,e);
    		}
    		else if(n==5)
    		{
    			printf("你要在第几个序号后插入 :");
    			scanf("%d",&i);
    			printf("请输入插入学生的信息
    ");
    			input_Student(e);
    			a.ListInsert(Stu,i,e);
    		}
    		else if(n==6)
    		{
    			a.DispList(Stu);
    			cout<<endl;
    		}		
    		else
            {
                cout<<"ERORR"<<endl;
            }
            Menu();
            printf("功能选择 : 
    ");
    	}
    
    	return 0 ;
    }
    

      

  • 相关阅读:
    traversal outlook folders
    vba get contact name in outlook
    merge all worksheets in current directory
    pandas Dataframe more filter
    Dataframe swap columns
    【数据分析&数据挖掘】数组的数据类型
    【数据分析&数据挖掘】数组的创建
    【数据分析&数据挖掘】矩阵的运算
    【数据分析&数据挖掘】矩阵的创建
    【python基础】装饰器
  • 原文地址:https://www.cnblogs.com/mjn1/p/11278343.html
Copyright © 2011-2022 走看看