当前位置:网站首页>学生管理系统(总结)
学生管理系统(总结)
2022-07-25 09:21:00 【山河丘壑】
前言
介绍我在编写学生管理系统时遇到的问题
一、学生界面
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");
//相应代码块
}
总结
在学生管理系统的编写中,用到的最多的就是对链表的基本操作和对文件的写入和读出。刚开始可能写的会有点慢,但是由于很多功能都是类似的,所以框架起来了后会非常快。
注意对各种不合法输入的判断处理。
注意对文件打开方式的选择。
注意程序的逻辑的合理性和程序运行时的界面问题。
边栏推荐
猜你喜欢

最短路问题 Bellman-Ford(单源最短路径)(图解)

用kotlin怎么写Android切换界面

如何将Jar包部署到服务器,注:启动命令有无nohup有很大关系
![[De1CTF 2019]SSRF Me](/img/12/44c37cc713b49172a10579c9628c94.png)
[De1CTF 2019]SSRF Me

Idea practical tips --- now change pom.xml (red) to pom.xml (blue)

那天帮妹纸装了个数据库。。。就又帮她整理了篇快捷键

How can technologists start their personal brand? Exclusive teaching of top five KOLs

matplotlib数据可视化三分钟入门,半小时入魔?

Idea hot deployment

【代码源】每日一题 算的我头都大啦
随机推荐
对象数据如何转化成数组
Redis list 结构命令
数据分析之numpy基础包
Redis database foundation
那天帮妹纸装了个数据库。。。就又帮她整理了篇快捷键
OC--Foundation--集合
Week小结
How to write Android switching interface with kotlin
cf #785(div2) C. Palindrome Basis
Data query language (DQL)
Prim 最小生成树(图解)
@3-2 CCF 2020-12-2 期末预测之最佳阈值
[GKCTF 2021]easynode
~3 ccf 2022-03-2 出行计划
多态和接口
梦想启航(第一篇博客)
卷积神经网络的兴趣简单介绍
@3-1 CCF 2020-09-1 称检测点查询
OC--Foundation--字典
Analysis of five data structure principles of redis