⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 宿舍管理.cpp

📁 课程设计: 关于二叉树操作
💻 CPP
字号:
# include <stdio.h> 
# include <stdlib.h> 
# include <string.h> 
# include <conio.h> //(键盘和屏幕) 输出输入函数的头文件
# define N 20 

/*********************自定义函数声明部分**************************/ 
void showheader(); //声明显示表头部分 
int menu(); //声明主菜单函数 
int menu3(); //声明插入功能子菜单函数 

int menu5(); //声明查找功能子菜单函数 
int quanxian(); //声明用户权限管理函数 
void SavePass(); //密码显示为"*"的函数
struct student shuru(); //声明学生信息录入函数 
void display(struct student); //声明显示函数 
void sort(struct student stu[N],int); //声明排序函数 
void charu(struct student stu[N],int); //声明插入函数 

void chazhao1(struct student stu[N],int i); //声明按照学号查找函数 
void chazhao2(struct student stu[N],int i); //声明按照姓名查找函数 
void chazhao3(struct student stu[N],int i);//声明按照房间号查找


/*********定义结构体************/ 
struct student 
{ 
	/* 构造结构成员 */
	int ID; 
	char name[15]; 
	char sex; 
	int roomnum; 
	float score[3]; 
	char *getSex()
	{ 
		if(sex=='g') 
			return "女"; 
		else 
			return "男"; 
	} 
	
	float Ave() //求平均成绩
	{ 
		
		return (score[0]+score[1]+score[2])/3; 
		
	} 
	student() //初始化成绩为0
	{ 
		score[0]=0; 
		score[1]=0; 
		score[2]=0; 
	} 
	
}; 

/****************************主函数开始**************************/ 
void main() 
{ 
	struct student stu[N]; 
	int count=0,m=0,j; 
	char ch,ch1; 
	int choice,choice3,choice4; //菜单选项及子菜单选项 
	int user; 
	do //此循环体控制用户信息输入错误后是否重输 
	{ 
		
		user=quanxian(); //调用用户权限函数 
		system("cls");// 调用DOS下的清屏命令“cls”
		if(user==1) //此条件结构判断用户权限输入是否正确 
		{ 
			do //此循环体控制返回主菜单 
			{ ch1='n'; //如果用户将主菜单选择错误,可用此变量控制是否重输 
			choice=menu(); 
			system("cls"); 
			switch(choice) //此条件结构控制选择菜单功能后的操作 
			{ 
			case 1: //输入学生信息 
				{ 
					do //此循环体控制是否继续输入 
					{ printf("****************************** 学员信息录入 **********************************\n"); 
					printf("请输入第%d个学员的成绩:\n\n",count+1); 
					stu[count]=shuru(); //调用输入函数 
					printf("是否继续(y/n)"); 
					fflush(stdin);// 刷新标准输入缓冲区,把输入缓冲区里的东西丢弃
					ch=getchar(); 
					count++; 
					system("cls"); 
					}while(ch=='y'); 
					//system("pause"); 
					break; 
				} 
				
			case 2: //显示排序好的学生信息 
				{ 
					printf("****************************** 学员信息显示 **********************************\n"); 
					printf("\n排序后的成绩如下:\n"); 
					
					sort(stu,count);//调用排序函数 
					showheader(); 
					
					for(j=0;j<count;j++) 
					{ 
						display(stu[j]); //调用显示函数 
					} 
					
					system("pause"); 
					system("cls"); 
					break; 
				} 
				
			case 3://插入功能 
				{ 
					while(choice3!=3) //此循环体控制是否退出子菜单 
					{ 
						system("cls"); 
						choice3=menu3(); //调用子菜单函数 
						system("cls"); 
						if(choice3==1) //此条件结构控制子菜单选项 
						{ 
							do //此循环体判断是否继续插入 
							{ printf("****************************** 学员信息插入 **********************************\n"); 
							charu(stu,count); //调用插入函数 
							count++; 
							
							printf("是否继续插入?(y/n)"); 
							fflush(stdin); 
							ch=getchar(); 
							system("cls"); 
							}while(ch=='y'); 
						} 
						if (choice3==2) //此条件结构控制子菜单选项 
						{ 
							printf("\n\n插入学生信息后如下:\n"); 
                            sort(stu,count);//调用排序函数
							showheader(); 
							for(j=0;j<count;j++) 
							{ 
								display(stu[j]); //调用显示函数 
							} 
							system("pause"); 
						} 
						// 
					} 
					break; 
				} 
				
			case 4://查找功能 
				{ 
					while(choice4!=4) //控制是否继续查找 
					{ 
						system("cls"); 
						choice4=menu5(); //调用查找子菜单函数 
						system("cls"); 
						if(choice4==1) //控制按照学号查找 
						{ 
							chazhao1(stu,count);//调用按照学号查找的函数 
							system("cls"); 
						} 
						
						if(choice4==2) //控制按照姓名查找 
						{ 
							chazhao2(stu,count);//调用按照姓名查找的函数 
							system("cls"); 
						} 
						if(choice4==3) //控制按照房间查找 
						{ 
							chazhao3(stu,count);//调用按照房间查找的函数 
							system("cls"); 
						} 
						system("pause"); 
					} 
					break; 
				} 
			case 5://退出 
				{ 
					printf("确认退出?(y/n)"); //让用户确认是否退出 
					fflush(stdin); 
					ch=getchar(); 
					break; 
				} 
			default: 
				{ 
					printf("\a\a警告:您输入错误,是否重输!(y/n)"); 
					fflush(stdin); 
					ch1=getchar(); 
					system("cls"); 
					break; 
				} 
} 
}while(ch=='n'|| ch1=='y');//控制是否要退出系统 
} 
if(user==0) 
{ 
	printf("\a\a警告:您的用户名或密码输入有误!是否重输?(y/n)"); 
} 
fflush(stdin); 
ch=getchar(); 
system("cls"); 

}while(ch=='y'); 
} 

/*************************主函数结束*************************/ 

/*自定义输入函数*/ 
struct student shuru() 
{ 
	struct student stu; 
	printf("学号:"); 
	scanf("%d",&stu.ID); 
	printf("姓名:"); 
	scanf("%s",stu.name); 
	
	printf("性别(g/b):"); 
	fflush(stdin); 
	scanf("%c",&stu.sex); 
	printf("房间号:");
	scanf("%d",&stu.roomnum);
	
	printf("语文成绩:"); 
	scanf("%f",&stu.score[0]); 
	printf("数学成绩:"); 
	scanf("%f",&stu.score[1]); 
	printf("英语成绩:"); 
	scanf("%f",&stu.score[2]); 
	
	return stu; 
} 

/*自定义显示函数*/ 
void display(struct student stu) 
{ 
	int j; 
	
	
	printf("\t%d\t",stu.ID); 
	printf("%s\t",stu.name); 
	printf("%s\t",stu.getSex()); 
	printf("%d\t",stu.roomnum);
	for(j=0;j<3;j++) 
	{ 
		printf("%.2f\t",stu.score[j]); 
	} 
	
	printf("%.2f\t",stu.Ave()); 
	putchar('\n'); 
} 

/*自定义排序函数*/ 
void sort(struct student stu[N],int i) 
{ 
	
	int j,k; 
	struct student temp; 
	for(j=0;j<i;j++) 
	{ 
		for(k=0;k<i-j-1;k++) 
		{ 
			if((stu[k].ID)>(stu[k+1].ID)) 
			{ 
				temp=stu[k]; 
				stu[k]=stu[k+1]; 
				stu[k+1]=temp; 
			} 
		} 
	} 
	
} 

/*自定义插入函数*/ 
void charu(struct student stu[N],int k) 
{ 
	int i,l; 
	struct student in ; 
	
	in=shuru();//调用输入函数 
	for(i=0;i<k;i++) 
	{ 
		if(in.Ave()>stu[i].Ave()) 
			break; 
	} 
	for(l=k;l>i;l--) 
	{ 
		stu[l]=stu[l-1]; 
	} 
	stu[i]=in; 
} 



/*自定义主菜单函数*/ 
int menu() 
{ int choice; 
printf("\t\t****************************************************\n\n\t\t\t 欢迎进入学生宿舍管理查询系统 \n\n\t\t****************************************************\n\n"); 
printf("\t\t\t***************主菜单***************\n\n"); 
printf("\t\t\t\t1> 学生信息录入\n\n"); 
printf("\t\t\t\t2> 学生信息显示\n\n"); 

printf("\t\t\t\t3> 插入学生信息\n\n"); 

printf("\t\t\t\t4> 查找学生信息\n\n"); 

printf("\t\t\t\t5> 退出\n"); 
printf("\n\n请选择功能选项:"); 
scanf("%d",&choice); 

return choice; 
} 

/*自定义插入功能子菜单函数*/ 
int menu3() 
{ printf("\t*******************这里显示的是插入功能子菜单*******************\n\n"); 
printf("\t\t\t\t1、插入学生信息\n\n"); 
printf("\t\t\t\t2、显示插入后的学生信息\n\n"); 
printf("\t\t\t\t3、退出子菜单,返回上一级菜单\n\n"); 

printf("\n\n请选择功能选项:"); 
int choice3; 
scanf("%d",&choice3); 
return choice3; 
} 



/*自定义按照学号查找函数*/ 
void chazhao1(struct student stu[N],int i) 
{ 
	int select,j; 
	char ch; 
	printf("\t*******************您选择的是按照学号查找:*******************\n\n"); 
	do 
	{ 
		printf("\n\n请输入学号:"); 
		scanf("%d",&select); 
		for(j=0;j<i;j++) 
		{ 
			if(select==stu[j].ID) 
			{ 
				
				break; 
			} 
			
		} 
		if(j<i) 
		{ 
			showheader(); 
			display(stu[j]); 
		} 
		else 
		{ 
			printf("你查找的信息不存在\n"); 
		} 
		printf("是否继续查找?(y/n)"); 
		fflush(stdin); 
		ch=getchar(); 
		system("cls"); 
	}while(ch=='y'); 
} 

/*自定义按照姓名查找函数*/ 
void chazhao2(struct student stu[N],int i) 
{ 
	int j; 
	char name[15]; 
	
	char ch; 
	printf("\t*******************您选择的是按照姓名查找:*******************\n\n"); 
	do 
	{ 
		printf("\n\n请输入姓名:"); 
		scanf("%s",name); 
		
		for(j=0;j<i;j++) 
		{ 
			if(strcmp(name,stu[j].name)==0) 
			{ 
				break; 
			} 
		} 
		if(j<i) 
		{ 
			showheader(); 
			display(stu[j]); 
		} 
		else 
		{ 
			printf("你查找的信息不存在\n"); 
		} 
		
		printf("是否继续查找?(y/n)"); 
		fflush(stdin); 
		ch=getchar(); 
		system("cls"); 
	}while(ch=='y'); 
} 
//按照房间号查找
void chazhao3(struct student stu[N],int i)
{
	int j,room;
	char ch;
	printf("\t*******************您选择的是按照房间号查找:*******************\n\n"); 
	do 
	{ 
		printf("\n\n请输入房间号:"); 
		scanf("%d",&room); 
		
		for(j=0;j<i;j++) 
		{ 
			if(room==stu[j].roomnum) 
			{ 
				break; 
			} 
		} 
		if(j<i) 
		{ 
			showheader(); 
			display(stu[j]); 
		} 
		else 
		{ 
			printf("你查找的信息不存在\n"); 
		} 
		
		printf("是否继续查找?(y/n)"); 
		fflush(stdin); 
		ch=getchar(); 
		system("cls"); 
	}while(ch=='y'); 
	
}
/*自定义查找功能子菜单函数*/ 
int menu5() 
{ 
	printf("\t*******************这里显示的是查找功能子菜单*******************\n\n"); 
	printf("\t\t\t\t1、按照学号查找\n\n"); 
	printf("\t\t\t\t2、按照姓名查找\n\n"); 
	printf("\t\t\t\t3、按照房间号查找\n\n");
	printf("\t\t\t\t4、退出子菜单,返回上一级菜单\n\n"); 
	
	printf("\n\n请选择功能选项:"); 
	int choice4; 
	scanf("%d",&choice4); 
	return choice4; 
} 



/*自定义用户权限函数*/ 
char chrPass[20]; 
int quanxian() 
{ 
	char user[15]; 
	printf("\t\t*****************************************\n\n\t\t 欢迎您访问学生宿舍管理查询系统 \n\n\t\t*****************************************\n\n"); 
	printf("\n\t\t\t提示 用户名:hehe 密码:1982"); 
	printf("\n\t\t用户名:"); 
	scanf("%s",user); 
	
	printf("\t\t密 码:"); 
	SavePass(); 
	
	if((strcmp(chrPass,"1982")==0)&&(strcmp(user,"hehe")==0)) 
		return 1; 
	else 
		return 0; 
} 

/*密码显示为"*"的函数*/ 
void SavePass() 
{ 
	char chr; 
	int count; 
	count = 0; 
	while((chr=getch())!=13) 
	{ 
		chrPass[count] = chr; 
		printf("*"); 
		count++; 
	} 
	chrPass[count+1] = '\0'; 
} 

/*自定义表头函数*/ 
void showheader() 
{ printf("\n\n\t*********************************************************\n"); 
printf("\t学号\t姓名\t性别\t房间号\t语文成绩 数学成绩 英语成绩 平均分\n"); 
printf("\t*********************************************************\n"); 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -