学生管理系统(总结)


前言

介绍我在编写学生管理系统时遇到的问题


一、学生界面

1.需要实现的功能

在这里插入图片描述
对于学生界面的编写还是比较简单的,模块1、2、3、4都可以在学生登录学生管理系统后系统根据学生登录时输入的账号自行匹配学生的学号
1,成绩查询。
在相应的班级里查找学生的学号,在输出此学号所对应的成绩。

2,本班成绩输出
读取存储相应班级信息的文件,依次遍历输出

3,成绩分析
可以对本班成绩进行总分排序,然后对应输出此学号所对应的名次。
也可以求出本班各个科目的平均成绩,最高成绩和各个成绩分数段的人数。然后输出此学号的成绩和分析的信息。

2.相应菜单如下

char num[NUM_S];
	printf("请输入账号:\n");//对应学生账号,即学号
	scanf("%s", num);
	char password[PASS_S];//此账号对应的密码
	printf("请输入密码:\n");
	scanf("%s", password);
	struct count* Head = duqu_count();//查找输入的账号和密码是否合法
	while (Head) {
		if (strcmp(Head->num, num) == 0 && strcmp(Head->password, password) == 0) {
			int k = num[1]-'0';
			printf("***********************************\n");
			printf("********** 这里是学生系统    ******\n");
			printf("********** 1.成绩查询       *******\n");
			printf("********** 2.本班成绩查询   *******\n");
			printf("********** 3.成绩分析       *******\n");
			printf("********** 4.成绩申诉       *******\n");
			printf("********** 0.退出           *******\n");
			printf("***********************************\n");
//在下面代码的每种情况里实现相应功能即可
			printf("请输入:");
			char i[] = { 0 };
			scanf("%s", &i);
			if (i[0]-'1'==0) {
			//相应代码块
			}
			if (i[0]-'2'==0) {
			//相应代码块
			}
			if (i[0]-'3'==0) {
			//相应代码块
			}
			if (i[0]-'4'==0) {
			//相应代码块
			}
			if (i[0]-'5'==0) {
			//相应代码块
			}
			if (i[0] - '1' != 0 && i[0] - '2' != 0 && i[0] - '3' != 0 && i[0] - '4' != 0 && i[0] - '5' != 0} {
				printf("选择错误!\n");
			}

二、老师界面

1.需要实现的功能

在这里插入图片描述
这里对于老师模块,我设置的是根据老师登录的账号自动匹配他所对应的班级,所以在执行老师菜单的命令时,不需要得到老师的班级
1,对于模块1,给相对应班级的文件末尾追加信息即可。
2,对于模块2,3,将文件中的信息全部读取并保存,然后修改要修改的学号所对应的信息,在将这些内容写入文件即可。
3,对于模块4,5,7,和上边提到的学生模块的类似,不在赘述。(模块5和学生模块的输出本班成绩相同)
4,对于模块6,可以每次选择这个选项时就将文件中的内容复制到另一个文件里,复制成功后返回复制到的文件路径或者文件名即可。

2.相应菜单如下

	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("********** 0.退出            ******\n");
	printf("***********************************\n");
	printf("请输入:");
	char i[] = { 0 };
	scanf("%s", &i);
	if (i[0]-'1'==0) {
	//相应代码块
	}
	if (i[0]-'2'==0) {
	//相应代码块
	}
	if (i[0]-'3'==0) {
	//相应代码块
	}
	if (i[0]-'4'==0) {
	//相应代码块
	}
	if (i[0]-'5'==0) {
	//相应代码块
	}
	if (i[0]-'6'==0) {
	//相应代码块
	}
	if (i[0]-'8'==0) {
	//相应代码块
	}
	if (i[0] - '1' != 0 && i[0] - '2' != 0 && i[0] - '3' != 0 && i[0] - '4' != 0 && i[0] - '5' != 0 && i[0] - '6' != 0 && i[0] - '7' != 0 && i[0] - '8' != 0) {
		printf("选择错误!\n");
	}

三、管理员界面

在这里插入图片描述
其实管理员的很多功能是与老师重复的,只需要在相应的代码前加上管理员要进行操作的班级即可。(比如2,9)
管理员对于账户的操作也和老师对于学生信息的操作方法相同,不在多解释。(3,7可以仿照增加学生信息进行编写,4可以仿照删除学生信息进行编写,5可以仿照修改学生信息,6可以仿照查找学生信息,8可以仿照输出本班成绩进行编写)

2.相应菜单如下

	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("*******   9.手动重新输入学生信息******\n");
	printf("*******   0.退出********\n");
	printf("***********************************\n");
	printf("请输入:");
	char i[] = { 0 };
	scanf("%s", &i);
	if (i[0]-'1'==0) {
	//相应代码块
	}
	if (i[0]-'2'==0) {
	//相应代码块
	}
	if (i[0]-'3'==0) {
	//相应代码块
	}
	if (i[0]-'4'==0) {
	//相应代码块
	}
	if (i[0]-'5' == 0) {
	//相应代码块
	}
	if (i[0]-'6'==0) {
	//相应代码块
	}
	if (i[0]-'7'==0) {
	//相应代码块
	}
	if (i[0]-'8'==0) {
	//相应代码块
	}
	if (i[0]-'9'==0) {
	//相应代码块
	}
	if (i[0] - '1' != 0 && i[0] - '2' != 0 && i[0] - '3' != 0 && i - '4' != 0 && i - '5' != 0&& i - '6' != 0 && i - '7' != 0 && i - '8' != 0 && i - '9' != 0 ) {
		printf("选择错误!\n");
		//相应代码块
	}

总结

在学生管理系统的编写中,用到的最多的就是对链表的基本操作和对文件的写入和读出。刚开始可能写的会有点慢,但是由于很多功能都是类似的,所以框架起来了后会非常快。
注意对各种不合法输入的判断处理
注意对文件打开方式的选择。
注意程序的逻辑的合理性和程序运行时的界面问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

山河丘壑

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

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

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

打赏作者

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

抵扣说明:

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

余额充值