学生管理系统小项目用C语言实现(部分功能可能不是很完善)

学生信息管理系统

最近做了一个学生管理系统,大部分功能都还可以实现,若有可应该进修改的地方,请多多指教!

可实现以下功能
学生:
姓名 性别 学号 密码 语文 数学 英语
1、第一次登录强制修改密码。
2、查询成绩
3、修改密码
4、查看个人信息
5、三次密码错误锁定帐号,由教师解锁

教师:
姓名 性别 工号 密码
1、第一次登录强制修改密码。
2、添加学生(学生的学号自动生成)
单个添加
批量导入
3、删除学生
输入两人次学号确定
删除的学生要记录保存在已退学的文件中
4、查找学生
按姓名查找
按学号查找
5、修改学生信息
修改学生基础信息
修改学生成绩
6、录入学生成绩
单个录入
批量导入
7、重置学生密码
8、显示所有在校学生信息
9、显示所有退出学生信息
10、三次密码错误锁定帐号,由校长解锁

校长:
admin
1、第一次登录强制修改密码。
2、能重置自己的密码
3、能重置教师密码
4、添加教师
5、删除教师
6、显示所有在职教师
7、显示所有离职教师

主界面的头文件
interface.h

#ifndef INTERFACE_H
#define INTERFACE_H

//主界面
void interface_enum(void);

//教师界面
void teacher_enum(void);

//教师登录
void teacher_in(void);

//教师操作
void teacher_show(void);

//学生界面
void student_enum(void);

//学生登录
void student_in(void);

//学生操作
void student_show(void);

//管理员界面
void admin_enum(void);

//管理员登录
void admin_in(void);

//管理员操作
void admin_show(void);

#endif //INTERFACE_H

学生的头文件
student.h

#ifndef STUDENT_H
#define STUDENT_H

#define S_NAME 20    //学生姓名长度
#define S_NUMBER 20   //学生学号长度
#define S_PASS 20  //密码长度
#define S_COUNT 1000//学生人数

typedef struct Student  //学生结构体
{
   
    char name[S_NAME];  //姓名
    char sex; //性别
    char number[S_NUMBER]; //学号
    char password[S_PASS]; //密码 数字、字母、不允许符号、长度20以内;
    int chinese; //语文 判断数字
    int math; //数学 判断数字
    int english; //英语
	int sum;//总分
    int landing; //登陆的次数 第一次强制要求修改密码
    int Account_status;//账号状态 1正常 0锁定
}Student;

extern Student stu[S_COUNT];
extern Student s;

extern int s_count;

extern int s_position;

void sorce(void);//成绩

void Pass(void);//更改密码

void Allmessage(void);//显示信息

#endif //STUDENT_H

教师的头文件

#ifndef TEACHER_H
#define TEACHER_H
#define T_COUNT 300
#define T_NAME 20//教师姓名长度
#define T_NUMBER 20 //教师工号长度
#define T_PASS 20 //密码长度
typedef struct Teacher
{
   
    char name[T_NAME];  //姓名  
    char sex;            //性别
    char number[T_NUMBER];//工号
    char password[T_PASS];//密码
    int landing;          //登陆次数
    int Account_status;   //登陆状态
}Teacher;

extern Teacher tea[T_COUNT];
extern Teacher t;

extern int t_count;

extern int t_position;

bool t_add_stu(); //添加学生,返回false失败,返回true成功 

bool t_delete_stu();//删除学生 ,返回false 失败,返回true成功

bool t_search_stu();//查找学生,返回false 失败,返回true成功

bool t_modify_stu();//修改学生信息,返回false 失败,返回true成功

bool t_import_stu_score();//录入学生成绩,返回false 失败,返回true成功

bool t_reset_stu_pass();//重置学生密码,返回false 失败,返回true成功

void t_psearch_stu();//显示查找到的学生

void t_show_stu();//显示所有在校学生

void t_show_drop_stu();//显示退出学生

//void t_show_menu(); //显示教师菜单

void t_unlock(void);//给学生解锁


#endif//TEACHER_H

校长管理员的头文件


```c
#ifndef ADMIN_H

#define ADMIN_H



#define A_NAME 20  //管理员姓名长度

#define A_NUMBER 20 //管理员学号长度

#define A_PASS 20//管理员密码长度

//#define A_COUNT 10//管理员数量



typedef struct Admin  //管理员结构体

{
   

	char name[A_NAME];  //姓名

	char sex;    //性别

	char number[A_NUMBER];  //工号

	char password[A_PASS]; //密码 数字、字母、不允许符号、长度20以内;

	int landing;//登陆的次数 第一次强制要求修改密码

}Admin;



extern Admin adm;



//修改自己的密码

void a_change_password_myself(void);



//重置自己的密码

//void a_reset_password_myself(void);



//重置教师密码

void a_reset_password_teacher(void);



//添加教师

void a_add_teacher(void);



//删除教师

void a_delete_teacher(void);



//显示所有在职教师

void a_show_in_teacher(void);



//显示所有离职教师

void a_show_down_teacher(void);



//给教师解锁

void a_unlock(void);



#endif//ADMIN_H

主界面选项的实现

#include<stdio.h>
#include<getch.h>
#include<stdbool.h>
#include<stdlib.h>
#include"tool.h"
#include "interface.h"
#include"teacher.h"
#include"admin.h"

void interface_enum(void)
{
   
	printf("--------------主  界  面---------------\n\n");
	printf("          1.学   生   登   录                  \n\n");
	printf("          2.教   师   登   录                  \n\n");
	printf("          3.管  理  员 登  录                  \n\n");
	printf("          4.退   出   系   统                   \n\n");
	printf("---------- -无敌工作室出品------------\n");
}

void student_enum(void)
{
   
	printf("--------------同学您好,欢迎登录学生信息管理系统----------\n\n");
    printf("                   1.查 询 成 绩                      \n\n");
	printf("                   2.修 改 密 码                      \n\n");
	printf("                   3.查看个人信息                      \n\n");
	printf("                   4.返回首页面                        \n\n");
}

//学生登录
void student_in(void)
{
   
	int miscount=0;
	s_count=0;
	FILE *fwwp = fopen("student.txt","r");
	if(NULL==fwwp)
	{
   
		printf("文件打开失败!!!");
		return;
	}
	while(!feof(fwwp))
	{
   
		fscanf(fwwp,"%s %c %s %s %d %d %d %d %d\n",stu[s_count].name,&stu[s_count].sex,stu[s_count].number,stu[s_count].password,&stu[s_count].chinese,&stu[s_count].math,&stu[s_count].english,&stu[s_count].landing,&stu[s_count].Account_status);
		s_count++;
	}
	fclose(fwwp);
	char number[T_NUMBER];
	char password[T_PASS];
	printf("请输入你的学号:");
	scanf("%s",number);
	for(int i=0;i<S_COUNT;i++)
	{
   
		if(strcmp(stu[i].number,number)==0&&stu[i].sex!=0)
		{
   
			if(stu[i].Account_status==0)
			{
   
				printf("账号已锁定,请联系老师解锁!!");
				anykey_continue();
				return;
			}
			while(true)
			{
   
				printf("请输入你的密码:");
				scanf("%s",password);
				if(strcmp(password,stu[i].password)==0)
				{
   
					printf("登录成功!!!!");
					s=stu[i];
                    s.sum=s.chinese+s.math+s.english;
					s_position=i;
					anykey_continue();
					if(s.landing==0)
					{
   
						printf("\n第一次登录请更改你的密码:");
						while(true)
						{
   
							scanf("%s",password);
							if(islegal_pass(password))
							{
   
								strcpy(s.password,password);
								printf("修改成功!!");
								s.landing=1;
								anykey_continue();
								break;						
							}
							else
							{
   
								printf("输入有误请重新输入!!!\n");
								anykey_continue();
							}
						}				
					}
					student_show();
					return;
				}
				else
				{
   
					miscount++;
					if(miscount>=3)
					{
   
						stu[i].Account_status=0;
						printf("密码错误超过3次,账号已锁定,请联系教师解锁!!");
						FILE *fwp = fopen("student.txt","w");
						if(NULL==fwp)
						{
   
							printf("文件打开失败!!!");
							return;
						}
						for(int i=0;i<S_COUNT;i++)
						{
   
							if(stu[i].sex!=0)
							{
   
								fprintf(fwp,"%s %c %s %s %d %d %d %d %d\n",stu[i].name,stu[i].sex,stu[i].number,stu[i].password,stu[i].chinese,stu[i].math,stu[i].english,stu[i].landing,stu[i].Account_status);
							}
						}
						fclose(fwp);
						anykey_continue();
						return;
					}
				}
			}
		}
	}
}

//学生操作
void student_show(void)
{
   
	system("clear");
	while(true)
	{
   
		system("clear");
		student_enum();
		switch(getch())
		{
   
			case '1':sorce();
			break;
			case '2':Pass();
			break;
			case '3':Allmessage();
			break;
			case '4':
			{
   
				stu[s_position]=s;
				FILE *fwp = fopen("student.txt","w");
				if(NULL==fwp)
				{
   
					printf("文件打开失败!!!");
					return;
				}
				for(int i=0;i<S_COUNT;i++)
				{
   
					if(stu[i].sex!=0)
					fprintf(fwp,"%s %c %s %s %d %d %d %d %d\n",stu[i].name,stu[i].sex,stu[i].number,stu[i].password,stu[i].chinese,stu[i].math,stu[i].english,stu[i].landing,stu[i].Account_status);
				}
				fclose(fwp);
				return;
			}
			default:printf("输入有误,请重新输入!!!");
			break;
		}
	}
}

void teacher_enum(void)
{
   
   printf("--------------尊敬的老师欢迎登录学生管理系统----------- \n\n");
   
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值