数据结构实训之学生信息管理系统

2023-05-16


 
  在CODE上查看代码片 派生到我的代码片
  1. /*   
  2. Copyright (c)2016,烟台大学计算机与控制工程学院   
  3. * All rights reserved.   
  4. * 文件名称:项目1.cpp   
  5. * 作    者:泮春宇
  6. * 完成日期:2016年1月1日   
  7. * 版 本 号:v1.0    *问题描述:学生信息管理系统 *输入描述:无   *程序输出:测试数据   

 我的学生信息管理系统包括基于管理员的操作和基于学生的操作。管理员的操作应包括录入学生信息,查询信息,修改信息,删除信息等;学生的操作只有查询信息。

以顺序表SeqList存储集合,在此基础上完成对集合的操作。

类包括俩个一个为student类:其中包括学生的学号,姓名,年龄,以及各科的成绩,总成绩及平均成绩等。

第二个类为SeqList:其中包括一个student类的数组和一个数组大小的size;以及对顺序表的插入和删除操作。

管理员账号为:boss

管理员密码为:10086


系统的功能结构,用文字描述系统要完成的功能,用结构框图表示各个功能之间的关系

 


 

ADT  SeqList{

数据对象D:D是具有数值的常量C和没有数值的变量V;

数据关系:R={<(V或者C)P(V或者C)>|V,C∈D, <(V或者C)P(V或者C)>表示由运算符P结合起来的表达式E}

基本操作:

Void chang(int  n)

初始条件:list类型的数组存在;

操作结果:修改list中的数据

void  del(int n)

初始条件:list类型的数组存在;

操作结果:删除一个list数组中的元素。

Void erfeng(datatype a[],int key,int n)

初始条件:list类型的数组存在;

操作结果:对datatype类型的数组进行排序。

void Find(datatype& item)

初始条件:list类型的数组存在;

操作结果:将datatype类型的数组显示在显示器上。

void kecheng(int n)

初始条件:list类型的数组存在;

操作结果:对list类型的数组查找其课程数据项。

void luru(int n)

初始条件:list类型的数组存在;

操作结果:将数据写入list类型的数组

void paixu1(datatype array[],int k,int length)

初始条件:list类型的数组存在;

操作结果:datatype类型的数组array中的数据进行排序。

 

 

void xianshi(int n)

初始条件:list类型的数组存在;

操作结果:将liste类型的数组中的数据进行显示。

} ADT

 

                 只有一个工程如图4.1


 

 


共有俩个类,一个为SeqList如图4.2.1;另一个为student,如图4.2.2

              

                            

 函数调用;

                      

                            

class student

{

private:

       int num;     //学号

       int grade[5];     //成绩数组

       float sum;     //总成绩

       float ping;    //平均成绩

       char name[20];   //姓名

       int age;        //年龄

public:

       student(){}

       void setnum(int nu){num=nu;}         建立学号

       int getnum(){int n;n=num;return n;}       得到学号

       void setgrade(int a,int b){grade[b]=a;}     建立成绩

       int getgrade(int n){inta;a=grade[n];return a;}   得到成绩

       void setname(char *na){strcpy(name,na);}     建立姓名

       char *getname(){char *na;na=name;returnna;}   得到姓名

       void setage(int a){age=a;}              建立年龄

       int getage(){int a;a=age;return a;}      得到年龄

       friend class SeqList;        

       float getping();                     获得平均成绩

       int getsum();                         获得总成绩

       student (student &s);

};


 

 删除函数模块设计

void SeqList::del(int n)

{

      system("cls");

      int i,j;

      int c;

      printf("\n输入你要删除的学生学号 :\n");

      printf("num:");

    cin>>c;

      for(i=0;i<list.size;i++)

            if(list.data[i].getnum()==c) break;

            for(j=i;j<list.size;j++)

                  list.data[j]=list.data[j+1];

            printf("\t\t你已经删除 %d的信息\n",c);

            list.size--;

            duoyu2();

}

 

 

 

 

 

 


输入模块设计

voidSeqList::luru(int n)         //luru函数

{    

       system("cls");

   int j,num,age,grade[5],k=0;                  //输入5科成绩

       char ch[20];

       do

       {  k=0;

              system("cls");

              printf("\n输入学生信息:\n");

              printf("\n学号: ");

              scanf("%d",&num);

              for(inti=0;i<=list.size;i++)

                     if(list.data[i].getnum()==num)

            k=1;

           if(k==0)

          {

                           

                            list.data[size].setnum(num);

                            printf("\n姓名: ");

                            cin>>ch;

                            list.data[size].setname(ch);

                            printf("\n年龄: ");

                            cin>>age;

                            list.data[size].setage(age);

                            printf("注:(成绩1为数学,成绩2为计算机,成绩3为英语,成绩4为语文,成绩5为思修 \n");

                            for(j=0;j<5;j++)              //输出5科成绩

                            {                

                                   printf("\n成绩%d: ",j+1);

                                   cin>>grade[j];

                                   list.data[size].setgrade(grade[j],j);

                            }

                            list.size++;

                     }

                      else if(k==1)

                             printf("此学号已存在,请查实后再输入!!");

                     printf("\n如要继续输入学生信息,请选择(y/n): ");

                     scanf("%s",ch);       //判断是否要继续

                    

       }

       while(strcmp(ch,"y")==0||strcmp(ch,"Y")==0);

       paixun(list.data,list.size);

       guanliyuan(n);

}

 

修改函数模块设计

voidSeqList::change(int a)

{

       int n,i,j;

       int k=0;

       int num,grade[5];

       char name[20],ch[5];

       printf("请输入要修改的学生学号:");

       cin>>n;

       for(i=0;i<list.size;i++)

       {

              if(list.data[i].getnum()==n)

              {

                    

                     printf("\n你确定要修改学号吗?(y/n): ");

                     scanf("%s",ch);

                     if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)    //判断是否要继续

                     {

                            printf("\n学号:");

                            cin>>num;

                            list.data[i].setnum(num);

                            k=1;

                     }

                     printf("\n你确定要修改学生姓名吗?(y/n): ");

                     cin>>ch;

                     if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)     //判断是否要继续

                     {

                            printf("\n名字:");

                            cin>>name;

                            list.data[i].setname(name);

                            k=1;

                     }

                     printf("\n你确定要修改学生成绩吗?(y/n): ");

                     scanf("%s",ch);

                     printf("\n");

                     if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)   //判断是否要继续

                     {

                            printf("注:(成绩1为数学,成绩2为计算机,成绩3为英语,成绩4为语文,成绩5为思修 \n");

                            for(j=0;j<5;j++)

                            { 

                                   printf("成绩%d:",j+1);

                                   cin>>grade[j];

                                   list.data[size].setgrade(grade[j],j);

                                   printf("\n");

                                   k=1;

源代码

#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>


const MaxListSize=100;

class student
{
private:
	int num;      //姓名
	int grade[5];//学号
	float sum;//总分
	float ping;//平均
	char name[20];//成绩
	int age;//年龄
public:
	student(){}//学生
	void setnum(int nu){num=nu;}//建立名字
	int getnum(){int n;n=num;return n;}//得到名字
	void setgrade(int a,int b){grade[b]=a;}//建立学号
	int getgrade(int n){int a;a=grade[n];return a;}//输入学号
	void setname(char *na){strcpy(name,na);}//建立名字
	char *getname(){char *na;na=name;return na;}
	void setage(int a){age=a;}//年龄
	int getage(){int a;a=age;return a;}//得到年龄
	friend class SeqList;//班级成绩
	float getping();//平均
	int getsum();//总成绩
	student (student &s);//学生个人成绩
};

int student::getsum()
{
	int sum=0;
	for(int i=0;i<5;i++)
		sum=sum+grade[i];
	return sum;
}

float student::getping()
{
	float sum=0;
	for(int i=0;i<5;i++)
		sum=sum+grade[i];
	sum=sum/5;
	return sum;
	
}

student::student (student &s)
{
	num=s.num;
	age=s.age;
	strcpy(name,s.name);
	for(int i=0;i<5;i++)
		grade[i]=s.grade[i];
}

typedef student datatype;

class SeqList 
{
private:
	datatype data[MaxListSize];
public:
	int size;
	int ListSize(){	return size;};//建立数组
	void Find(datatype& item);//找到
	void Find3(datatype& item);//找到
	void Insert(datatype& item,int pos);//删除
	void ClearList();
	void luru(int n);//录入成绩
	void xianshi(int n); //学号
	void xinming(int n);//姓名查询
    void xuehao(int a);//学号
    void kecheng(int n);//
	void change(int a);//修改成绩
	void del(int n);//删除成绩
	void paixu1(datatype array[],int k,int length);//
	void Find1(datatype& item,int j);返回管理员
	datatype erfeng(datatype a[],int key,int n);
	void duoyu1();//返回目录
	void Find2(datatype& item);//返回目录2
	void zong(int n);//总目录
};


void SeqList::Find1(datatype& item,int j)
{
    printf("学号:%d",item.getnum());
    printf(" 姓名:%s",item.getname());
	printf(" 年龄:%d",item.getage());
	printf(" 成绩%d:%d",j,item.getgrade(j));
	printf("\n");
}

void SeqList::Find2(datatype& item)
{
    printf("学号:%d",item.getnum());
    printf(" 姓名:%s",item.getname());
	printf(" 年龄:%d",item.getage());
	printf(" 总成绩:%d",item.getsum());
	printf(" 平均成绩:%.2f",item.getping());
	printf("\n");
}

void paixun(datatype array[],int length)  //希尔排序  >快速排序 《插入排序 简单
{
    int d = length/2;   //设置希尔排序的增量
	int i ;
	int j;
	student temp,t;
	while(d>=1)
	{
		for(i=d;i<length;i++)
		{
			temp=array[i];//分组
			j=i-d;
			while(j>=0 && array[j].getnum()>temp.getnum())//排序
			{
				t=array[j];
				array[j+d]=t;
				j=j-d;
			}
			array[j+d]=temp;
		}
		d= d/2;    //缩小增量
	}
}

void SeqList::Find(datatype& item)
{
    printf("学号:%d",item.getnum());
    printf(" 姓名:%s",item.getname());
	printf(" 年龄:%d",item.getage());
	for(int j=0;j<5;j++)
		printf(" 成绩:%d",item.getgrade(j));
	printf(" 总成绩:%d",item.getsum());
	printf(" 平均成绩:%.2f",item.getping());
}

void SeqList::Find3(datatype& item)
{
    printf("学号:%d",item.getnum());
    printf(" 姓名:%s",item.getname());
	printf(" 年龄:%d",item.getage());
	for(int j=0;j<5;j++)
		printf(" 成绩:%d",item.getgrade(j));
	printf(" 总成绩:%d",item.getsum());
	printf(" 平均成绩:%.2f",item.getping());
}

void SeqList::ClearList ()
{
	size =0;
}

SeqList list;
void guanliyuan(int n);
void guanliyuanmain(int n);
void guanliyuan_denglu(int n);
void duoyu1();
void xianshi1(int n);
void duoyu2();
void paixun(datatype array[],int length);
void studentmain(int n);
void zhu();
void main()
{
	int a;
	do                              
	{
		system("cls");
		list.ClearList();
		printf("\n\n\n");
		printf("\t\t\t    欢迎使用学生信息查询系统       \n ");
		printf("\t\t\t******************************\n");
		printf("\t\t\t*                            *\n");
		printf("\t\t\t*    1.管理员登陆            *\n");
		printf("\t\t\t*    2.学员登录              *\n");
		printf("\t\t\t*    3.退出                  *\n");
		printf("\t\t\t*                            *\n");
		printf("\t\t\t******************************\n\n");
		printf("\t\t\t请输入你要操作的序号:\n");
		printf("\t\t\t你要输入的序号是:");
		scanf("%d",&a);
		if(a<0||a>3)               
			printf("您输入的有误,请重新输入!!!");
		switch(a)
		{
		case 1:guanliyuan_denglu(0);break;   
		case 2:studentmain(1);break;            
		case 3:exit(0);break;               
		}  
	}
	while(a!=0);             
}

void zhu()
{
	int a;
	do                              
	{
		system("cls");
		printf("\n\n\n");
		printf("\t\t\t    欢迎使用学生信息查询系统       \n ");
		printf("\t\t\t******************************\n");
		printf("\t\t\t*                            *\n");
		printf("\t\t\t*    1.管理员登陆            *\n");
		printf("\t\t\t*    2.学员登录              *\n");
		printf("\t\t\t*    3.退出                  *\n");
		printf("\t\t\t*                            *\n");
		printf("\t\t\t******************************\n\n");
		printf("\t\t\t请输入你要操作的序号:\n");
		printf("\t\t\t你要输入的序号是:");
		scanf("%d",&a);
		if(a<0||a>3)              
			printf("您输入的有误,请重新输入!!!");
		switch(a)
		{
		case 1:guanliyuan_denglu(0);break;   
		case 2:studentmain(1);break;             
		case 3:exit(0);break;               
		}  
	}
	while(a!=0); //0 3 退出
	
}

void guanliyuan_denglu(int n)
{
	system("cls");//清屏
	char z[10],sun[10]={'\0'},c;
	int i=0;
	printf("\t\t\n\n\n\n");
	printf("\t\t\t    欢迎使用学生信息查询系统       \n ");
	printf("\t*************************************************************\n\n\n");
	printf("\t\t\t     请输入管理员账号:");
	scanf("%s",&z);
	printf("\t\t\t     请输入管理员密码:");
	while(1)
	{
		c=getch();
		
		if(c != '\r')
		{
			printf("*");
			sun[i]=c;
			i++;
			
		}
		else break;
		
	}
	if(strcmp("boss",z)==0&&strcmp("10086",sun)==0)
		guanliyuan(n);
	else 
	{
		printf("\t\t\t您输入的有误!!!");
		
	}	
}

void guanliyuan(int n)             
{
	int a;                
	do
	{	
		system("cls");
		printf("\n\n\n");
		printf("\t\t\t        欢迎使用学生信息查询系统       \n ");
		printf("\t\t\t**************************************\n");
		printf("\t\t\t*                                    *\n");
		printf("\t\t\t*          1.录入系统                *\n");
		printf("\t\t\t*          2.查询系统                *\n");//有序 折半查找算法
        printf("\t\t\t*          3.修改系统                *\n");
		printf("\t\t\t*          4.删除系统                *\n");
		printf("\t\t\t*          5.返回主菜单              *\n");
		printf("\t\t\t*          6. 退出                   *\n");
		printf("\t\t\t*                                    *\n");
		printf("\t\t\t**************************************\n\n");
		printf("\t\t\t请输入你要操作的序号:\n");
		printf("\t\t\t你要输入的序号是:");
		scanf("%d",&a);
		if(a<0||a>6)               
			printf("您输入的有误,请重新输入!!!");
		switch(a)
		{
		case 1:list.luru(n);break;   
		case 2:guanliyuanmain(n);break;
		case 3:list.change( n);break;
		case 4:list.del(n);break;
		case 5:zhu();break;
		case 6:exit(0);break;            
		}
	}
	while(a!=0);                      
	system("cls"); 
}

void guanliyuanmain(int n) //学生                    
{
	   int a;                 
	   do
	   {
		   system("cls");
		   printf("\n\n\n");
		   printf("\t\t\t       欢迎使用学生信息查询系统       \n ");		   
		   printf("\t\t\t*************************************\n"); 
		   printf("\t\t\t*                                   *\n");
		   printf("\t\t\t*        1.查询全班信息             *\n");
		   printf("\t\t\t*        2.查询个人信息             *\n");
		   printf("\t\t\t*        3.返回上一级菜单           *\n");
		   printf("\t\t\t*        4.返回主菜单               *\n");
		   printf("\t\t\t*        5.退出                     *\n");
		   printf("\t\t\t*                                   *\n");	   
		   printf("\t\t\t*************************************\n\n");
		   printf("\t\t\t请输入你要操作的序号:\n");
		   printf("\t\t\t你要输入的序号是:");
		   scanf("%d",&a);
		   if(a<0||a>4)            
			   printf("您输入的有误,请重新输入!!!");
		   switch(a)
		   {
			   
		   case 1:list.xianshi(n);break;
		   case 2:xianshi1(n);break;
		   case 3:guanliyuan(n);break;
		   case 4:zhu();break;            
		   case 5:exit(0);break;              
		   }
	   }
	   while(a!=0);	                           
}

void SeqList::luru(int n)        
{	
	system("cls");
	int j,num,age,grade[5],k=0;                 
	char ch[20];
	do
	{   k=0;
	system("cls");
	printf("\n输入学生信息:\n");
	printf("\n学号: ");
	scanf("%d",&num);
	for(int i=0;i<=list.size;i++)
		if(list.data[i].getnum()==num)
			k=1;
		if(k==0)
		{
			
			list.data[size].setnum(num);
			printf("\n姓名: ");
			cin>>ch;
			list.data[size].setname(ch);
			printf("\n年龄: ");
			cin>>age;
			list.data[size].setage(age);
			printf("注:(成绩1为高数,成绩2为计算机,成绩3为英语,成绩4为数据结构,成绩5为思修 \n");
			for(j=0;j<5;j++)             
			{ 			
				printf("\n成绩%d: ",j+1);
				cin>>grade[j]; 
				list.data[size].setgrade(grade[j],j);
			}
			list.size++;
		}
		else if(k==1)
			printf("此学号已存在,请查实后再输入!!");
		printf("\n如要继续输入学生信息,请选择(y/n): ");
		scanf("%s",ch);       
		
	}
	while(strcmp(ch,"y")==0||strcmp(ch,"Y")==0);
	paixun(list.data,list.size);
	guanliyuan(n);
}

void SeqList::xianshi(int n)
{
	system("cls");
	int i;
	for(i=0;i<list.size;i++)
	{
		Find(list.data[i]);
		printf("\n");
	}
	if(n==1)
		duoyu1();
	else if(n==0)
		duoyu2();
}

void xianshi1(int n)
{
	int a;
	do
	{	
		system("cls");
		printf("\n\n\n");
		printf("\t\t\t      欢迎使用学生信息查询系统       \n ");
		printf("\t\t\t**************************************\n");
		printf("\t\t\t*                                    *\n");
		printf("\t\t\t*          1.按姓名查找              *\n");
		printf("\t\t\t*          2.按学号查找              *\n");
		printf("\t\t\t*          3.按课程名查找            *\n");
		printf("\t\t\t*          4.按总成绩查找            *\n");
		printf("\t\t\t*          5.返回主菜单              *\n");
		printf("\t\t\t*          6. 退出                   *\n");
		printf("\t\t\t*                                    *\n");
		printf("\t\t\t**************************************\n\n");
		printf("\t\t\t请输入你要操作的序号:\n");
		printf("\t\t\t你要输入的序号是:");
		scanf("%d",&a);
		if(a<0||a>6)               
			printf("您输入的有误,请重新输入!!!");
		switch(a)
		{
		case 1:list.xinming(n);break;   
		case 2:list.xuehao(n);break;
		case 3:list.kecheng(n);break;
		case 4:list.zong(n);break;
		case 5:zhu();break;
		case 6:exit(0);break;
		}
	}while(a!=0);
}

void SeqList::xinming(int n)
{
	system("cls");
	char key[20];
	printf("请输入姓名:");
	scanf("%s",key);
	for(int i=0;i<list.size;i++)
	{
		if(i>list.size)
			printf("无该人,请确认后在输入!");
		else if(strcmp(list.data[i].getname(),key)==0)
			Find(list.data[i]);
	}
	if(n==1)
		duoyu1();
	else if(n==0)
		duoyu2();
}

datatype SeqList::erfeng(datatype a[],int key,int n)  //二分法
{
	int low=0,high=n-1;
	int mid;
	while(low<=high)
	{
		mid=(low+high)/2;
		if(a[mid].getnum()==key)
			return a[mid];
		else if(a[mid].getnum()<key)
			low=mid+1;
		else high=mid-1;
	}
	guanliyuanmain(0);
	printf("无该学生!!");
}

void SeqList::xuehao(int a)
{
    system("cls");
	int n;
	student stu;
	printf("请输入学号:");
	cin>>n;
	stu=erfeng(list.data,n,list.size);
	Find(stu);
	getch();
	if(n==1)
		duoyu1();
	else if(n==0)
		duoyu2();
}

void SeqList::kecheng(int n)
{
   	system("cls");
	int key,j;
	student stu[100];
	printf("请输入课程代号:");
	printf("(1为高数,2为计算机,3为英语,4为数据结构,5为思修) \n");
	cin>>key;
	if(key>5||key<1)
		printf("输入错误!!");
	else 
		for(j=0;j<list.size;j++)
		{
			stu[j]=list.data[j];
			
		}
		paixu1(stu,key,list.size);
		if(n==1)
			duoyu1();
		else if(n==0)
			duoyu2();
}

void SeqList::zong(int n)
{
	system("cls");
	int j;
	student stu[100];
	for(j=0;j<list.size ;j++)
        stu[j]=list.data[j];
	paixu1(stu,9,list.size);

	getch();
	if(n==1)
		duoyu1();
	else if(n==0)
		duoyu2();
}

void SeqList::change(int a)
{
	int n,i,j;
	int k=0,l=0;
	int num,grade[5];
	char name[20],ch[5];
	printf("请输入要修改的学生学号:");
	cin>>n;
	for(i=0;i<list.size;i++)
	{
		if(list.data[i].getnum()==n)
		{
			printf("\n你确定要修改学号吗?(y/n): ");
			scanf("%s",ch);
			if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)    
			{
				printf("\n学号:");
				cin>>num;
				for(j=i;j<list.size;j++)
					if(list.data[j].getnum()==num)
						l=1;
					if(l==0)
					{
						list.data[i].setnum(num);
						k=1;
					}
					else 
					{
						k=8;
						printf("学生输入异常!");
						getch();
						break;
						duoyu2();
					}
			}
			printf("\n你确定要修改学生姓名吗?(y/n): ");
			cin>>ch;
			if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)     
			{ 
				printf("\n名字:"); 
				cin>>name;
				list.data[i].setname(name);
				k=1;
			}
				printf("\n你确定要修改学生年龄吗?(y/n): ");
			cin>>ch;
			if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)     
			{ 
				int age;
				printf("\n年龄:"); 
				cin>>age;
				list.data[i].setage(age);
				k=1;
			}
			printf("\n你确定要修改学生成绩吗?(y/n): ");
			scanf("%s",ch);
			printf("\n");
			if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)   
			{
				printf("注:(成绩1为高数,成绩2为计算机,成绩3为英语,成绩4为数据结构,成绩5为思修 )\n");
				for(j=0;j<5;j++)
				{  
					printf("成绩%d:",j+1); 
					cin>>grade[j];
					list.data[i].setgrade(grade[j],j);
					printf("\n"); 
					k=1;
				}	
			}
		}break;
	}
	system("cls");
	if(k==1)
		Find(list.data[i]);
	else if(k==0)
		printf("无该学生,或您没执行操作!!!");
	paixun(list.data,list.size);
	duoyu2();
}

void SeqList::del(int n)
{
	system("cls");
	int i,j;
	int c;
	int k=0;
	printf("\n输入你要删除的学生学号 :\n");
	printf("num:");
    cin>>c;
	for(i=0;i<list.size;i++)
		if(list.data[i].getnum()==c)  
		{
			k=1;
			break;
		}
		if(k==1)
		{
			for(j=i;j<list.size;j++)
				list.data[j]=list.data[j+1];
			printf("\t\t你已经删除 %d的信息\n",c);
			list.size--;
		}
		else if(k==0)
			printf("无该学生,请确认后再输入!!!");
		duoyu2();
}

void SeqList::paixu1(datatype array[],int k,int length)
{
    int d = length/2;   //设置希尔排序的增量
	int i ;
	int j;
	student temp,t;
	if(k==9)
	{
		while(d>=1)
		{
			for(i=d;i<length;i++)
			{
				temp=array[i];
				j=i-d;
				while(j>=0 && array[j].getsum()<temp.getsum())
				{
					t=array[j];
					array[j+d]=t;
					j=j-d;
				}
				array[j+d]=temp;
			}
			d= d/2;    //缩小增量
		}
		for(i=0;i<list.size;i++)
			Find2(array[i]);
	}
	else if(k!=9)
	{
		while(d>=1)
		{
			for(i=d;i<length;i++)
			{
				temp=array[i];
				j=i-d;
				while(j>=0 && array[j].getgrade(k)<temp.getgrade(k))
				{
					t=array[j];
					array[j+d]=t;
					j=j-d;
				}
				array[j+d]=temp;
			}
			d= d/2;    //缩小增量
		}
		for(i=0;i<list.size;i++)
			Find1(array[i],k);
	}
}

void studentmain(int n)
{
    int a;                 
	   do
	   {
		   system("cls");
		   printf("\n\n\n");
		   printf("\t\t\t       欢迎使用学生信息查询系统       \n ");		   
		   printf("\t\t\t*************************************\n"); 
		   printf("\t\t\t*                                   *\n");
		   printf("\t\t\t*        1.查询全班信息             *\n");
		   printf("\t\t\t*        2.查询个人信息             *\n");
		   printf("\t\t\t*        3.返回上一级菜单           *\n");
		   printf("\t\t\t*        4.退出                     *\n");
		   printf("\t\t\t*                                   *\n");	   
		   printf("\t\t\t*************************************\n\n");
		   printf("\t\t\t请输入你要操作的序号:\n");
		   printf("\t\t\t你要输入的序号是:");
		   scanf("%d",&a);
		   if(a<0||a>4)            //判断输入的是否大于4或小于0
			   printf("您输入的有误,请重新输入!!!");
		   switch(a)
		   {
			   //调用geren函数
		   case 1:list.xianshi(1);break;
		   case 2:xianshi1(1);break;
		   case 3:zhu();break;             
		   case 4:exit(0);break;             
		   }
	   }
	   while(a!=0);	                          
}

void SeqList::duoyu1()
{
	
	int a;
	do
	{
		printf("\n\n\n");
		printf("\t\t\t      欢迎使用学生信息查询系统       \n ");
		printf("\t\t\t**********************************\n");
		printf("\t\t\t*                                *\n");
		printf("\t\t\t*     1.返回学生菜单             *\n");
		printf("\t\t\t*     2.返回主菜单               *\n");
		printf("\t\t\t*     3.退出                     *\n");
		printf("\t\t\t*                                *\n");
		printf("\t\t\t**********************************\n\n\n");
		printf("\t\t\t请输入你要操作的序号:\n");
		printf("\t\t\t你要输入的序号是:");
		scanf("%d",&a);
		if(a<0||a>3)                                         
			printf("您输入的有误,请重新输入!!!");
		switch(a)
		{
		case 1:studentmain(1);break;
		case 2:zhu();break;
		case 3:exit(0);break;
		}
	}while(a!=0);
	system("cls");
}

void duoyu2()
{
	
	int a;
	do
	{
		printf("\n\n\n");
		printf("\t\t\t      欢迎使用学生信息查询系统       \n ");
		printf("\t\t\t**********************************\n");
		printf("\t\t\t*                                *\n");
		printf("\t\t\t*     1.返回管理员菜单             *\n");
		printf("\t\t\t*     2.返回主菜单               *\n");
		printf("\t\t\t*     3.退出                     *\n");
		printf("\t\t\t*                                *\n");
		printf("\t\t\t**********************************\n\n\n");
		printf("\t\t\t请输入你要操作的序号:\n");
		printf("\t\t\t你要输入的序号是:");
		scanf("%d",&a);
		if(a<0||a>3)                                         
			printf("您输入的有误,请重新输入!!!");
		switch(a)
		{
		case 1:guanliyuan(0);break;
		case 2:zhu();break;
		case 3:exit(0);break;
		}`
	}while(a!=0);
	system("cls");
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构实训之学生信息管理系统 的相关文章

随机推荐

  • word文档转html利器

    有需求 xff0c 就会有相应的技术出现 xff0c 以前知道word可以用来书写html网页 xff0c 那自然就可以转成html页面 xff0c 难道我们要用word开发html页面吗 xff1f 你可能会问 xff0c 我为什么要把w
  • 【RV1126/RV1109学习笔记】#RockX篇#(3)人脸检测

    文章目录 一 概述 二 流程 三 API说明 四 实现代码 一 概述 人脸检测是人脸识别 人脸属性分类 人脸编辑 人脸跟踪等任务必不可少的早期步骤 其性能直接影响到人脸识别等任务的有效性 尽管在过去的几十年里 不受控制的人脸检测取得了巨大的
  • 【RV1126/RV1109学习笔记】#RockX篇#(2)API说明

    文章目录 基础API 人脸相关API 基础API span class token comment brief 创建Rockx模块 param handle out 创建的模块的句柄 param m in RockX模块的枚举 ref Ro
  • 【问题解决】python安装bs4后,仍然报错 ModuleNotFoundError: No module named ‘bs4‘

    问题 我这里是windows上使用出现的问题 xff1a 代码中使用了 from bs4 span class token function import span BeautifulSoup span class token commen
  • 【问题解决】python报错 IndexError: list index out of range

    问题 list 遍历时报错 xff1a IndexError list index out of range 分析 可能是 xff1a list 下标 index 超出范围list 为空 解决 try span class token pu
  • 机械+固态双硬盘时机械硬盘卡顿问题解决

    机械 43 固态双硬盘时机械硬盘卡顿问题解决 参考文章 xff1a xff08 1 xff09 机械 43 固态双硬盘时机械硬盘卡顿问题解决 xff08 2 xff09 https www cnblogs com xia weiwen p
  • IDM下载百度资源出现403的解决方法

    IDM下载百度资源出现403的解决方法 参考文章 xff1a xff08 1 xff09 IDM下载百度资源出现403的解决方法 xff08 2 xff09 https www cnblogs com aucy p 9567375 html
  • _tcsrchr 的用法

    tcsrchr 查找字符串中某个字符最后一次出现的位置 两个参数 第一个参数 xff1a 字符串 第二个参数 xff1a 查找的字符 返回值 xff1a 指向最后一次在字符串中出现的该字符的指针 xff0c 如果要查找的字符再串中没有出现
  • 航模无人机中PWM信号频率浅谈

    航模中执行机构 xff1a 动力电调 xff0c 舵机等基本都是通过PWM信号来驱动的 xff0c 但不同的电机或电调输入的信号频率和占空比又是不一样的 xff0c 这个是由什么决定的呢 xff1f 今天就以我的理解来简单讲一讲 最早的航模
  • 公网IP TCP服务器调试

    在MCU上调试4G等模块时 xff0c 为了验证和平台TCP通信是否顺畅 xff0c 很多时候需要一个公网的IP环境能够直接和4G模块通信 xff0c 一些网络调试工具只能提供局域网内的TCP Server 博主找到一个好的网站提供这个功能
  • windows环境下安装opendr

    pip install opendr会报下面的错误 应该先安装glfw glfw是opengl的一个框架 xff0c pip install glfw 即可安装 下载 https github com polmorenoc opendr 后
  • DockerFile创建及案例

    DockerFile dockerfile是用来构建docker镜像的文件 xff0c 命令脚本参数脚本 xff01 构建步骤 编写一个dockerfile文件docker build 构建成为一个对象docker run 运行镜像dock
  • 结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程

    结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程 一 xff0c 实验目标 以fork和execve系统调用为例分析中断上下文的切换分析execve系统调用中断上下文的特殊之处分析fork子进程启动执行时进程上下文的特殊之
  • SPI、UART、RS232、RS485、IIC 5种嵌入式经典通信总线协议

    文章目录 一 UART1 通信基础 并行和串行并行通信串行通信 2 通信基础 单工和双工3 通信基础 比特率4 通讯基础 异步和同步5 UART硬件连接6 UART控制器串口控制器工作原理介绍 xff1a FIFO模式及其作用 7 IO操作
  • 基于Modbus协议的C#串口工具开发

    xff08 Tips 本人纯萌新小白一枚 xff0c 文章只为记录自己的编程历史 xff0c 温故而知新 xff0c 能帮助到大家倍感荣幸 xff0c 有错误的地方劳烦指点 xff01 xff09 不多废话直接进入主题 xff01 本文旨在
  • MySQL中的mysqldump命令使用详解

    MySQL 有很多可以导入数据的方法 xff0c 然而这些只是数据传输中的一半 xff0c 另外的一般是从 MySQL 数据库中导出数据 有许多的原因我们需要导出数据 一个重要的原因是用于备份数据库 数据的造价常常是昂贵的 xff0c 需要
  • xrdp完美实现Windows远程访问Ubuntu 16.04【包括多人桌面与原生桌面】

    xrdp完美实现Windows远程访问Ubuntu 16 04 前言 xff1a 在很多场景下 xff0c 我们需要远程连接到Linux服务器 本文是Ubuntu xff0c 传统的连接主要分为两种 第一种 xff1a 通过SSH服务 xf
  • 蓝牙协议栈(Bluetooth stack)简介

    1 前言 本文只要对蓝牙协议栈做一个简单介绍 xff0c 包含hci层 acl链路 1 l2cap层 xff0c sdp服务及几个常见的profile xff0c 让初学蓝牙协议栈的人 对整个蓝牙协议栈有一个整体框架的了解 2 HCI层 H
  • 树莓派新手入门教程

    原文 xff1a http www ruanyifeng com blog 2017 06 raspberry pi tutorial html 作者 xff1a 阮一峰 日期 xff1a 2017年6月15日 树莓派 xff08 Rasp
  • 数据结构实训之学生信息管理系统

    Copyright c 2016 烟台大学计算机与控制工程学院 All rights reserved 文件名称 xff1a 项目1 cpp 作 者 xff1a 泮春宇 完成日期 xff1a 2016年1月1日 版 本 号 xff1a v1