当前位置:网站首页>学生管理系统(总结)
学生管理系统(总结)
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");
//相应代码块
}
总结
在学生管理系统的编写中,用到的最多的就是对链表的基本操作和对文件的写入和读出。刚开始可能写的会有点慢,但是由于很多功能都是类似的,所以框架起来了后会非常快。
注意对各种不合法输入的判断处理。
注意对文件打开方式的选择。
注意程序的逻辑的合理性和程序运行时的界面问题。
边栏推荐
- Machine learning -- detailed introduction of standardscaler (), transform (), fit () in sklearn package
- Go foundation 4
- Deep understanding of static keyword
- Browser access to swagger failed with error err_ UNSAFE_ PORT
- ~5 ccf 2021-12-2 序列查询新解
- 神经网络方法——美国波士顿房价(回归问题)
- Interviewer: tell me the difference between redis and mongodb? [easy to understand]
- [GYCTF2020]Ez_Express
- Idea hot deployment
- < T> Generic method demonstration
猜你喜欢
随机推荐
Numpy- array属性、改变形状函数、基本运算
Neural network method -- Boston house price (regression problem)
【代码源】每日一题 农田划分
A brief introduction to the interest of convolutional neural networks
Deep understanding of static keyword
Front page printing
OverTheWire-Bandit
作业7.21 约瑟夫环问题与进制转换
Idea practical tips --- now change pom.xml (red) to pom.xml (blue)
OC--对象复制
Database operation language (DML)
Interviewer: tell me the difference between redis and mongodb? [easy to understand]
Read and write mongodb database files
【代码源】每日一题 - 排队
¥1-2 例2.2 将两个集合的并集放到线性表中
The jar package has been launched on Alibaba cloud server and the security group has been opened, but postman still can't run. What should we do
In mysql, update and select are used together
sqli-labs Basic Challenges Less11-22
基本的网络知识
[HCTF 2018]admin

![[GYCTF2020]Node Game](/img/8d/7e6c2fb2a0359298fbcc1cd8544710.png)







![[De1CTF 2019]SSRF Me](/img/12/44c37cc713b49172a10579c9628c94.png)