Linux_C练习:初步实现学生信息管理界面(不完善)

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

struct student
{
	char name[20];
	char sex;
	int  age; 
};

#include "exe2.h"

typedef struct student Stu;
int Index = 0;
extern void DeletInfo(Stu *s[]);

int  CheckOut(Stu *s[], int n)
{
	int flag = 0;
	if(s[n] -> sex - 'm' != 0 || s[n] -> sex - 'f' != 0)
	{
		flag = 1;
		printf("请重新录入,女为f男为m!\n");
	}
	if(s[n] -> age > 50 || s[n] -> age < 1)
	{
		flag = 1; 
		printf("请输入正确的年龄\n");
	}
	return flag;
}

int  CompareName(char *name1, char *name2)
{
	int min, i, max;
	int flag = 0;
	int length1 = strlen(name1);
	int length2 = strlen(name2);
	if(length1 > length2)
	{
		min = length1;
		max = length2;
	}else
	{
		min = length2;
		max = length1;
	}
	if(0 == length1)
	{
		return 2;
	}
	if(0 == length2)
	{
		return 1;
	}
	for(i = 0; i < min; ++i)
	{
		if(*name1 - *name2 > 0)
		{
			flag = 1;
			break;
		}else if(*name1 - *name2 < 0)
		{
			flag = 2;
			break;
		}
		name1++;
		name2++;
	}
	if(i == min - 1 && max ==length1 && flag == 0)
	{
		return 1; 
	}
	return flag;
}


int  CheckInfo(char name[])
{
	int i;
	int len = strlen(name);
	int flag = 0;
	for(i = 0; i < 8; ++i)
	{
		if(name[i] - ' ' != 0)
		{
			flag = 1;
		}
	}
	if(0 == flag || len > 8)
	{
		return 1; 
	}else
	{
		return 0;
	}

}

void Welcome()
{
	printf("\t\t***************************\n");
	printf("\t\t*******Welcome Baby!*******\n");
	printf("\t\t***************************\n");
	sleep(2);
}

int  Menu()
{
	int choice;
	printf("\t\t1、插入信息       2、查询信息\n");
	printf("\t\t3、修改信息       4、删除学生\n");
	printf("\t\t5、显示所有       6、退出系统\n");
	
	scanf("%d", &choice);
	return choice;
}

void InsertInfo(Stu *s[])
{
	int i = 0;
	int flag = 0;
	int check;
	char name[20];
	system("clear");
	for(i = 0; i < Index; ++i)
	{
		if(strcmp(s[i] -> name, "        ") == 0)
		{
			flag = 1;
			printf("1....");
			printf("请输入姓名\n");
			scanf("%s", name);
			strcpy(s[i] -> name, name);
			getchar();
			check = CheckInfo(s[i] -> name);
			if(1 == check)
			{
				printf("输入不合法姓名");
				memset(s[i] -> name, 0, 20);
				return;
			}
			for(i = 0; i < Index; ++i)
			{   printf("%s\n", s[i] -> name);
				if(strcmp(name, s[i] -> name) == 0)
				{
					printf("已经存在这名学生\n");
					return;
				}
			}
			printf("请输入性别\n");
			scanf("%c", &s[i] -> sex);
			getchar();
			printf("请输入年龄\n");
			scanf("%d", &s[i] -> age);
			getchar();
			if(CheckOut(s, i) == 1)
			{	
				memset(s[i] -> name, 0, 8);
            	s[i] -> sex = ' ';
				s[i] -> age = 0;
				return ;
			} 	
		}
	
	}
	
	if(flag != 1)
	{
		printf("2....");
		s[Index] = (Stu *)malloc(sizeof(Stu));
		if(NULL == s[Index])
		{
			printf("NULL ERROR");
			exit(1);
		}
		printf("请输入姓名\n");
		scanf("%s", s[Index] -> name);
		getchar();
		check = CheckInfo(s[Index] -> name);
		if(1 == check)
		{
			printf("输入不合法姓名");
			memset(s[Index] -> name, 0, 20);
			return;
		}
		for(i = 0; i < Index; ++i)
		{
			if(strcmp(s[Index] -> name, s[i] -> name) == 0)
			{
				printf("已经存在这名学生\n");
				return;
			}	
		}
		printf("请输入性别\n");
		scanf("%c", &s[Index] -> sex);
		getchar();
		printf("请输入年龄\n");
		scanf("%d", &s[Index] -> age);
		getchar();
		if(CheckOut(s, i) == 1)
		{
			memset(s[i] -> name, 0, 8);
            s[i] -> sex = ' ';
			s[i] -> age = 0;
			return ;
		} 	
		Index ++;
	}	
}


void QueryInfo(Stu *s[])
{
	int i, check;
	int flag = 0, flag1 = 0;
	char sname[20] = {0};
	system("clear");
	for(i = 0; i < Index; ++i)
	{
		if(strcmp(s[i] -> name,"        ") != 0)
		{
			flag1 = 1;
		}
	
	}
	if(Index == 0  || flag1 == 0) 
	{
		printf("没有学生信息\n");
		sleep(3);
		return;
	}
	printf("请输入查询学生的姓名\n");
	scanf("%s", sname);
	check = CheckInfo(sname);
	if(1 == check)
	{
		printf("输入不合法姓名");
		return;
	}
	for(i = 0; i < Index; ++i)
	{
		if(strcmp(s[i]->name, sname) == 0)
		{
			flag = 1;
			printf("姓名:%s\t性别:%c\t年龄:%d\n", s[i] ->name, s[i] ->sex, s[i] ->age);
			sleep(3);
		}
		
	}
	if(i == Index - 1 && flag == 0)
	{
		printf("%d", Index);
		printf("\t\t没有这名学生信息\n");
		sleep(3);
		return;
	}
}
/*修改指定学生信息*/
void ModifyInfo(Stu *s[])
{
	int i, check;
	char name[20] = {0};
	int flag = 0;
	system("clear");
	printf("%d\n", Index);
	printf("请输入要修改学生的姓名\n");
	scanf("%s", name);
	check = CheckInfo(name);
	if(1 == check)
	{
		printf("输入不合法姓名");
		return;
	}
	for(i = 0; i < Index; ++i)
	{
		if(strcmp(s[i]->name, name) == 0)
		{
			flag = 1;
			printf("原来信息:姓名:%s\t性别:%c\t年龄:%d\n", s[i] ->name, s[i] ->sex, s[i] ->age);
			printf("请输入更新的信息\n");

			printf("请输入姓名\n");
			scanf("%s", s[i] -> name);
			getchar();
			printf("请输入性别\n");
			scanf("%c", &s[i] -> sex);
			getchar();
			printf("请输入年龄\n");
			scanf("%d", &s[i] -> age);
			getchar();
			if(CheckOut(s, i) == 1)
			{
				memset(s[i] -> name, 0, 8);
            	s[i] -> sex = ' ';
				s[i] -> age = 0;
				return ;
			} 	
		
		}
	}
	if(i == Index - 1 && flag == 0)
	{
		printf("\t\t没有这名学生信息\n");
    }
}
/*删除指定学生信息*/
void DeletInfo(Stu *s[])
{
	int i, check;
	char name[20] = {0};
	int flag = 0;
	system("clear");
	printf("请输入要删除学生的姓名\n");
	scanf("%s", name);
	check = CheckInfo(name);
	if(1 == check)
	{
		printf("输入不合法姓名");
		return;
	}
	for(i = 0; i < Index; ++i)
	{
		if(strcmp(s[i]->name, name) == 0)
		{
			flag = 1;
			printf("\t\t原来信息:姓名:%s\t性别:%c\t年龄:%d\n", s[i] ->name, s[i] ->sex, s[i] ->age);
			memset(s[i] -> name, 0, 8);
            s[i] -> sex = ' ';
			s[i] -> age = 0;
		}
	}
	if(i == Index - 1 && flag == 0)
	{
		printf("\t\t没有这名学生信息\n");
	}
} 
/*显示所有学生信息*/
void ShowallInfo(Stu *s[])
{
	int i, j;
	 Stu *tmp;
	system("clear");
	if(Index == 1)
	{
		printf("\t\t姓名:%s\t性别:%c\t年龄:%d\n", s[0] ->name, s[0] ->sex, s[0] ->age);
		sleep(3);
	}else if(Index > 1)
	{
		for(i = 0; i < Index; ++i)
		{
			for(j = 0; j < Index - i - 1; ++j)
			{
				if(CompareName(s[j] -> name, s[j + 1] ->name) == 0)
				{
					tmp = s[j];
					s[j] = s[j + 1];
					s[j + 1] = tmp;
			
				}
			}
		}
		for(i = 0; i < Index; ++i)
		{
			if(strcmp(s[i] -> name,"\0") != 0)
			{
				printf("\t\t姓名:%s\t性别:%c\t年龄:%d\n", s[i] ->name, s[i] ->sex, s[i] ->age);
			}
		}
		sleep(2);	
	}else
	{
		printf("没有学生信息\n");
		return ;
	}

}



int main()
{
	int choice;
	Stu *student[20] = {0};
	Welcome();
	system("clear");
	while(1)
	{   choice = Menu();
		switch(choice)
		{
			case 1: InsertInfo(student);
					break;
			case 2: QueryInfo(student);
					break;
			case 3: ModifyInfo(student);
					break;
			case 4: DeletInfo(student);
					break;
			case 5: ShowallInfo(student);
					break;
			case 6: printf("*****************欢迎再次登陆,再见!********************\n");
			        exit(1);
					break;
			default: printf("*********************FBI WARNING*************************\n");		
					exit(1);
		}
	
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值