C语言成绩管理系统

因为这是很早的,忘记是自己写的还是抄的,里面存储有点问题,大家改一下就可以直接用

#include<stdio.h>
#include<stdlib.h>
#include<string.h>	//头文件
#include<windows.h>

#define LEN 20		//学号和姓名最大字符数,20
#define N 50		//最大的学生人数

int M = 0;//当前已经有的学生数量

//函数声明

void insert();  //录入学生信息
void modify();  //修改学生信息
void search();  //查询学生信息
void menu();    //主菜单函数
void save();    //保存学生信息
void jiguanbiao();  //输出学生籍贯信息
void xueji();   //查询学生学籍变化信息
void del();		//删除学生信息

//结构体保存学生信息
struct student {
	long int Id;  //学号
	char Name[LEN + 1];  //姓名
	char Sex[LEN + 1];  //性别
	int  Age;     //年龄
	char BirthPlace[LEN + 1];  //籍贯
	char YuanXi[LEN + 1];        //院系
	char ZhuanYe[LEN + 1];      //专业
	int  BanJi;      //班级
	char xueji[LEN + 1]; //学籍变化信息

} stu[N];

//主函数
int main() {

	while (1) {
		menu();
	}
	system("pause");
	return 0;

}


void menu() { //菜单函数

	int num;
	printf("\n");
	printf("——————————————————————————\n");
	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("请选择菜单编号:");
	scanf("%d", &num);
	switch (num) {

		case 1:
			printf("Input student number(M<=50):\n");
			scanf("%d", &M);
			insert();
			break;
		case 2:
			modify();
			break;
		case 3:
			search();
			break;
		case 4:
			del();
			break;
		case 5:
			jiguanbiao();
			break;
		case 6:
			save();
			break;
		case 7:
			xueji();
			break;
		case 8:
			printf("退出程序成功!\n");
			exit(0);
		default:
			printf("请在1-8之间选择\n");
			system("pause");//提示完成之后显示按任意键继续
	}
	system("cls");

}
void insert() { //添加学生信息
	int i;
	for (i = 1; i <= M; i++) {
		printf("请输入第%d个学生的学号:", i);
		scanf("%ld", &stu[i].Id);
		printf("请输入第%d个学生的姓名:", i);
		scanf("%s", stu[i].Name);
		printf("请输入第%d个学生的性别:", i);
		scanf("%s", stu[i].Sex);
		printf("请输入第%d个学生的年龄:", i);
		scanf("%d", &stu[i].Age);
		printf("请输入第%d个学生的籍贯:", i);
		scanf("%s", stu[i].BirthPlace);
		printf("请输入第%d个学生的学院:", i);
		scanf("%s", stu[i].YuanXi);
		printf("请输入第%d个学生的专业:", i);
		scanf("%s", stu[i].ZhuanYe);
		printf("请输入第%d个学生的班级:", i);
		scanf("%d",&stu[i].BanJi);
		printf("请输入第%d个学生的学籍(如入学、转专业、退学、降级、休学、毕业):", i);
		scanf("%s", stu[i].xueji);
	}
	printf("学生信息添加完毕!请立即保存数据信息到文件!");
	system("pause");
	system("cls");

}
void modify() { //修改学生信息

	int i, item;
	long int a;
	printf("请输入要修改学生的学号:\n");
	scanf("%ld", &a);
	for (i = 1; i <= M; i++) {
		if (stu[i].Id == a) {
			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("0.End of program!\n");
			while (1) {
				printf("please choose:");
				scanf("%d", &item);
				switch (item) {
					case 1:
						printf("Please input new name:\n");
						scanf("%s", stu[i].Name);
						break;
					case 2:
						printf("Please input sex:\n ");
						scanf("%s", stu[i].Sex);
						break;
					case 3:
						printf("Please input new age:\n");
						scanf("%d", &stu[i].Age);
						break;
					case 4:
						printf("Please input BirthPlace:\n");
						scanf("%s", stu[i].BirthPlace);
						break;
					case 5:
						printf("Please input new yuanxi:\n");
						scanf("%s", stu[i].YuanXi);
						break;
					case 6:
						printf("Please input new zhuanye:\n");
						scanf("%s", stu[i].ZhuanYe);
						break;
					case 7:
						printf("Please input new banji:\n ");
						scanf("%d", &stu[i].BanJi);
						break;
					case 8:
						printf("Please input new xueji:\n");
						scanf("%s", stu[i].xueji);
						break;
					default:
						printf("Input error!\n");
				}
				if (item == 0)
					break;
			}
		}
	}
	system("pause");
	system("cls");

}
void search() { //查找已知学号的学生信息
	long int b, term = -1;
	int i;
	printf("请输入要查找学生的学号:");
	scanf("%ld", &b);
	for (i = 1; i <= M; i++) {
		if (stu[i].Id == b) {

			printf("学号:%ld  姓名:%s  性别:%s  年龄:%d  籍贯:%s  学院:%s  专业:%s  班级:%d  学籍:%s  \n", stu[i].Id,
			       stu[i].Name,
			       stu[i].Sex,
			       stu[i].Age,
			       stu[i].BirthPlace,
			       stu[i].YuanXi,
			       stu[i].ZhuanYe,
			       stu[i].BanJi,
			       stu[i].xueji);
			term = -2;
		}
	}
	system("pause");
	system("cls");

	if (term != -2) {
		printf("Not found!\n");
	}
}
void jiguanbiao() { //按学号和专业输出学生籍贯表
	int i;
	printf("********************学生籍贯表*********************\n");
	printf("学号      姓名       籍贯\n");
	for (i = 1; i <= M; i++) {
		printf("%ld        %s         %s\n", stu[i].Id, stu[i].Name, stu[i].BirthPlace);
	}
	system("pause");
	system("cls");

}
void save() { //保存学生信息到文件
	int i;
	FILE *fp;
	fp = fopen("student.txt", "a+"); //在工程路径下创建名为“student.txt”的记事本
	for (i = 1; i <= M; i++) {

		fprintf(fp,"%ld\t%s\t%s\t%d\t%s\t%s\t%s\t%d\t%s \n", stu[i].Id, stu[i].Name, stu[i].Sex, stu[i].Age, stu[i].BirthPlace, stu[i].YuanXi, stu[i].ZhuanYe, stu[i].BanJi, stu[i].xueji);
	}
	fclose(fp);
	printf("学生信息保存成功!");
}
void xueji() { //查询学生学籍变化信息
	long int c,
	     t = -1;
	int i;
	printf("请输入要查询学生的学号:");
	scanf("%ld", &c);
	for (i = 1; i <= M; i++) {
		if (c == stu[i].Id) {
			printf("学号:%ld  姓名:%s   学籍:%s  \n", stu[i].Id, stu[i].Name, stu[i].xueji);
			t = -2;
		}
	}
	if (t != -2)
		printf("Not found!\n");
}

void del() { //删除学生信息

	long int d;
	int i, j;
	printf("请输入要删除学生的学号:");
	scanf("%ld", &d);

	for (i = 1; i <= M; i++) {
		if (stu[i].Id == d) {
			for (j = i + 1; j <= M; j++) {
				stu[j - 1] = stu[j];
			}
			M--;
			printf("已成功删除学生信息!\n");
			system("pause");
			system("cls");

			return;
		}
	}
	printf("没有找到要删除的学生信息!\n");
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉迷书籍海洋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值