学生管理系统 “萌新浅写一下”

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int len = 1;
//结构体定义
struct Student
{
	char name[10];
	char sex;
	int id;
	int age;
}student[500];

//判断id是否存在
int id_ser(int id){
	for(int i = 1; i <= len; i++){
		if(student[i].id == id){
			return 0;
		}
	}
	return 1;
}

//更新student.txt文件
void updat_file(){
	system("rm student.txt");//先删除文件
	system("touch student.txt");//再创建文件,用于文件的刷新
	system("clear");
	FILE *fp;
	fp = fopen("./student.txt","w");
	if(!fp){
		perror("");
	}
	for(int i = 1; i < len; i++){
		fprintf(fp, "姓名:%s ID:%d 性别:%c 年龄:%d\n", student[i].name, student[i].id, student[i].sex, student[i].age);
	}
	fclose(fp);
	printf("创建文件成功!\n");
	sleep(2);
	system("clear");
}

//添加学生信息
void add_stu(){
	int id;
	system("clear");
	printf("请输入要添加的学生姓名:");
	scanf("%s", student[len].name);
	while(1){
		printf("请输入要添加的学生id:");
		scanf("%d", &id);
		if(id_ser(id)){
			break;
		}
	}//由于信息是先存储在做比较,不能直接给student[len].id赋值
	student[len].id = id;
	getchar();//用于获取终端数据后的回车
	printf("请输入要添加的学生性别b/g:");
	while(1){
		scanf("%c", &student[len].sex);
		getchar();
		if(student[len].sex == 'b' || student[len].sex == 'g'){
			break;
		}else{
			printf("只能输入b/g\n");
		}
	}
	printf("请输入要添加的学生年龄:");
	scanf("%d", &student[len].age);
	len++;
	system("clear");
	printf("\n");
	printf("信息录入成功\n");
	printf("1.继续/2.返回主菜单\n");
	int choose;
	scanf("%d",&choose);
	if(choose == 1){
		add_stu();
	}
	system("clear");
}

//查询学生信息
void ser_stu(){
	system("clear");
	printf("请输入年想查找的姓名:");
	char name[10];
	int i, flat = 0;
	scanf("%s", name);
	for(i = 1; i <= len; i++){
		if(!strcmp(student[i].name, name)){
			printf("姓名:%s,学号:%d,性别:%c,年龄:%d\n",student[i].name,student[i].id,student[i].sex,student[i].age);
			break;
		}
	}
	sleep(4);
	system("clear");
	printf("1.继续/2.返回主菜单:\n");
	int choose;
	scanf("%d",&choose);
	if(choose == 1){
		ser_stu();
	}
	system("clear");
}

//删除学生信息
void del_stu(){
	system("clear");
	printf("请输入年想删除的姓名:");
	char del_name[10];
	int i, flat = 0;
	scanf("%s", del_name);
	for(i = 1; i <= len; i++){
		if(!strcmp(student[i].name, del_name)){
			flat = 1;
			break;
		}
	}
	for(int j = i; j<=len; j++){
		student[j] = student[j+1];
	}
	system("clear");
	if(flat = 1){
		len--;
		printf("删除成功\n");
	}else{
		printf("删除失败\n");
	}
	sleep(3);
	system("clear");
	printf("1.继续/2.返回主菜单:\n");
	int choose;
	scanf("%d",&choose);
	if(choose == 1){
		del_stu();
	}
	system("clear");
}

//更改学生信息
void upd_stu(){
	int i,flag = 0;
	char name[10],sex;
	system("clear");
	printf("请输入要修改的学生姓名:");
	scanf("%s", name);
	for(i = 1; i <= len; i++){
		if(!strcmp(student[i].name, name)){
			flag = 1;
			break;
		}
	}
	if(flag == 0){
		printf("该学生不在名单内\n");
		exit(0);
	}
	system("clear");
	printf("1.修改学生id\n");
	printf("2.修改学生性别\n");
	printf("3.修改学生age\n");
	printf("4.修改学生姓名\n");
	int ch,id;
	scanf("%d", &ch);
	switch(ch){
		case 1 : 
				while(1){
					printf("请输入要添加的学生id:");
					scanf("%d", &id);
					getchar();
					if(id_ser(id)){
						break;
					}
				}
				student[i].id = id;
				break;
		case 2 : 
				getchar();//用于获取终端数据后的回车
				printf("请输入要修改的学生性别b/g:");
				while(1){
					scanf("%c", &student[i].sex);
					if(sex == 'b' || sex == 'g'){
						break;
					}else{
						printf("只能输入b/g\n");
					}
				}
				break;
		case 3 : 
				printf("请输入要修改的学生年龄:");
				scanf("%d", &student[i].age);
				break;
		case 4 : 
				printf("请输入要修改的学生姓名:");
				scanf("%s", student[i].name);
				break;
		default: printf("请重新输入:");
				break;
	}
	system("clear");
	if(flag = 0){
		printf("修改失败\n");
	}else{
		printf("修改成功\n");
	}
	sleep(3);
	system("clear");
	printf("1.继续/2.返回主菜单:\n");
	int choose;
	scanf("%d",&choose);
	if(choose == 1){
		upd_stu();
	}
	system("clear");
}

//主界面
void window(){
	system("clear");
	printf("****************************\n");
	printf("      欢迎使用学生管理系统      \n");
	printf("****************************\n");
	printf("*                          *\n");
	printf("*      1.添加学生信息      *\n");
	printf("*      2.查询学生信息      *\n");
	printf("*      3.更改学生信息      *\n");
	printf("*      4.删除学生信息      *\n");
	printf("*      5.打印学生信息      *\n");
	printf("*      6.打印学生总个数    *\n");
	printf("*      7.打印学生文件      *\n");
	printf("*      8.退出              *\n");
	printf("*                          *\n");
	printf("****************************\n");
	printf("\n");
	printf("请输入想要的服务:");

}

//打印学生信息
void print_stu(){
	system("clear");
	for(int i = 1; i < len; i++){
		printf("姓名:%s,学号:%d,性别:%c,年龄:%d\n",student[i].name,student[i].id,student[i].sex,student[i].age);
	}
	printf("1.继续/2.返回主菜单:\n");
	int choose;
	scanf("%d",&choose);
	if(choose == 1){
		print_stu();
	}
	system("clear");
}

//计算学生人数信息
void num_stu(){
	system("clear");
	printf("1.总学生人数\n");
	printf("2.男学生人数\n");
	printf("3.女学生人数\n");
	int num,len_b = 0,len_g = 0;
	scanf("%d", &num);
	printf("\n\n\n");
	switch(num){
		case 1: printf("总学生人数:%d\n", len-1);break;
		case 2: 
				for (int i = 1; i <= len; ++i)
				{
					if(student[i].sex == 'b')
						len_b++;
				}
				printf("男学生人数:%d\n", len_b);
				break;
		case 3: 
				for (int i = 1; i <= len; ++i)
				{
					if(student[i].sex == 'g')
						len_g++;
				}
				printf("女学生人数:%d\n", len_b);
				break;
		default: 
				printf("输入错误\n");
				break;
	}
	sleep(3);
	system("clear");
	printf("1.继续/2.返回主菜单:\n");
	int choose;
	scanf("%d",&choose);
	if(choose == 1){
		num_stu();
	}
	system("clear");
}

int main(int argc, char const *argv[])
{
	while(1){
		window();
		int num;
		scanf("%d", &num);
		switch(num){
			case 1: add_stu(); break;
			case 2: ser_stu(); break;
			case 3: upd_stu(); break;
			case 4: del_stu(); break;
			case 5: print_stu(); break;  
			case 6: num_stu(); break;
			case 7: updat_file();break;
			case 8: exit(0);break;
			default : 
					system("clear");
					printf("请重新输入\n");
					break;
		}
	}
	return 0;
}

全部评论
大佬666
点赞 回复 分享
发布于 2022-07-31 09:57

相关推荐

LXXXXd:有点杂,想搞自动化的话没必要把法律的经历写上去
点赞 评论 收藏
分享
09-22 22:22
中山大学 Java
双尔:赌对了,不用经历秋招的炼狱真的太好了,羡慕了
点赞 评论 收藏
分享
评论
2
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务