总结学生管理系统

一. 登录

首先我们需要一个结构体来存放账号密码,另外创建一个文件存放所有账号和密码。
代码如下:

typedef struct Login {
	char id[6];
	char password[4];
	struct Login *next;
} login;

然后我们每次进行登录的时候就需要创立一个新链表将文件中的数据读入链表然后在进行比较。
代码如下:

void Student_login() {
Repeat:
	int flag = 0;
	char s[6];
	int i, j;
	FILE *fp = fopen("StudentTest.txt", "r");
	if (fp == NULL) {
		printf("未找到文件:\n");
		exit(1);
	}
	while (!(feof(fp))) {
		struct passport *p = (struct passport *)malloc(sizeof(struct passport));
		fscanf(fp, "%s %s", p->id, p->password);
		if (head1 == NULL) {
			head1 = p;
			tail1 = p;
		} else {
			tail1->next = p;
			tail1 = p;
		}
	}
	tail1->next = NULL;
	passport *q = (struct passport *)malloc(sizeof(struct passport));
	q = head1;

	printf("请输入你的账号:\n");
	scanf("%s", s);
	printf("请输入你的密码:\n");
	char t[4];
	scanf("%s", t);
	char a;
	while (q) {
		if (strcmp(s, q->id) == 0 && strcmp(t, q->password) == 0) {
			flag = 1;
			break;
		} else {
			q = q->next;
		}
	}
	if (flag == 1) {
		printf("登录成功!");
	} else {
		printf("账号密码有误,登录失败!\n");
		system("pause");
		system("cls");
		goto Repeat;
	}

}

二. 注册

如果我们没有账号,我们就需要先注册账号。
代码如下:

void logon() {
	login *a;
	a = (struct Login *)malloc(sizeof(struct Login));
	FILE *fp;
	char s[20];
	int cnt = 0;
	printf("欢迎来到学生管理系统注册界面!\n");
	Sleep(1000);
	fp = fopen("Login.txt", "r");
	if (fp == NULL) {
		printf("未找到文件:\n");
		exit(1);
	}
	while (!feof(fp)) {
		struct Login *p = (struct Login *)malloc(sizeof(struct Login));
		fscanf(fp, "%s %s\n", p->id, p->password);
		if (head2 == NULL) {
			head2 = p;
			tail2 = p;



		} else {
			tail2->next = p;
			tail2 = p;
		}
	}
	tail2->next = NULL;
	login *b = head2;
	printf("请输入您的用户名!\n");
	scanf("%s", &a->id);
	while (b) {

		if (strcmp(a->id, b->id) == 0) {
			cnt = 1;
			break;



		} else {
			b = b->next;
		}
	}
	if (cnt == 1) {
		printf("此用户名已经存在无法注册!");
		return;
	}

	else {
		printf("请输入密码:\n");
		scanf("%s", &a->password);
		char temp[4];
		printf("请重新输入密码:\n");
		scanf("%s", &temp);
		do {
			if (!strcmp(a->password, temp)) {
				fp = fopen("Login.txt", "a");
				fprintf(fp, "%s %s", a->id, a->password);
				printf("注册成功!请登录!\n");
				Sleep(1000);
				fclose(fp);
				return;
			} else {
				printf("两次密码不一致!请重新输入!\n");
				scanf("%s", &a->password);
				printf("请再次输入密码\n");
				scanf("%s", &temp);
			}
		} while (1);
	}
	system("cls");
}

记住一定要将账号密码写入文件中。

三.界面

当我们进入界面时,若出现用户“乱按”现象,为了防止系统崩溃,我们可以将选项定义为字符串。然后判断第一位的ASC||,同时利用goto语句,达到即使用户按错我们的程序依然不会崩溃。
代码如下:

int main() {
Repeat:
	menu1();
	char choose[100];
	char s;
	gets(choose);
	int i;
	i = strlen(choose);
	if (i == 1) {
		for (int j = 0; j < i; j++) {
			s = choose[j];
		}
		switch (s) {
			case 49:
				Teacher();
				break;
			case 50:
				Student1();
				break;
			case 51:
				Guanliyuan();
				break;
			default:
				printf("非法输入!请重新输入!\n");
				system("pause");
				system("cls");
				goto Repeat;
				break;
		}
	} else {
		printf("非法输入!请重新输入!\n");
		system("pause");
		system("cls");
		goto Repeat;
	}
}

四.成绩申诉

我们可以利用一个文件,将每次学生 的申诉写入文件中,然后我们将文件的内容在管理员界面读取出来。

学生成绩申诉代码如下:

void appeal() {

	system("cls");
	FILE *fp;
	fp = fopen("学生成绩申诉.txt", "a");
	char s[1000];
	printf("请给管理员留言!\n");
	scanf("%s", s);
	fprintf(fp, "%s", s);
	fclose(fp);
	printf("申诉成功!");
	system("pause");
	return;
}

管理员查看学生成绩申诉代码如下:

char s[1000];
FILE *fp;
fp = fopen("学生成绩申诉.txt", "r");
while (!feof(fp)) 
{
	fscanf(fp, "%s", &s);
	printf("%s", s);
}
printf("成功查看!");
system("pause");

五.总结

通过写这次学生管理系统时,我遇到了很多问题但是都解决了,然后通过本次学习到了链表的使用,以及文件的使用,同时也使自己的逻辑得到了提升。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园失物招领系统管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、论坛管理、公告信息管理、失物招领管理、失物认领管理、寻物启示管理、寻物认领管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 校园失物招领系统管理系统可以提高校园失物招领系统信息管理问题的解决效率,优化校园失物招领系统信息处理流程,保证校园失物招领系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 ,管理员权限操作的功能包括管理公告,管理校园失物招领系统信息,包括失物招领管理,培训管理,寻物启事管理,薪资管理等,可以管理公告。 失物招领管理界面,管理员在失物招领管理界面中可以对界面中显示,可以对失物招领信息的失物招领状态进行查看,可以添加新的失物招领信息等。寻物启事管理界面,管理员在寻物启事管理界面中查看寻物启事种类信息,寻物启事描述信息,新增寻物启事信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值