写在前面:源码资源下载地址:
https://mp.csdn.net/mp_download/manage/download/UpDetailed
学生管理系统需求:
基本框架:
重点分析 1、锁机制:
1、先将教师信息读入结构体中
2、循环遍历比较结构体中教师名字和输错3次密码的账户名字
3、类似于将该用户密码直接置为886
4、立即写入到文件中
5、写入完成
void mis_list()//被锁账户密码重置
{
int i;
fp = fopen("teacher.txt","r");
for(i=0;!feof(fp);i++)
{
fscanf(fp,"%s",teacher_arr[i].name);
fscanf(fp,"%s",teacher_arr[i].password);//1、先将教师信息读入结构体中
}
fp = fopen("mis_list.txt","a");
fprintf(fp,"当前被锁账户账号:%s ",NAME_TEST);
fprintf(fp,"该账号错输的密码:%s\n",PASSWORD_TEST);//将错误的账号和密码存储在教师结构体中
for(i=0;i<N;i++)
{
if(strcmp(teacher_arr[i].name,NAME_TEST) == 0)//2、循环遍历比较结构体中教师名字和输错3次密码的账户名字
{
strcpy(teacher_arr[i].password,"886");//3、类似于将该用户密码直接置为886
FILE *p;
p = fopen("teacher.txt","w");//4、立即写入到文件中
for(i=0;i<N;i++)
{
fprintf(p,"%s ",teacher_arr[i].name);
fprintf(p,"%s\n",teacher_arr[i].password);//5、写入完成
}
fclose(p);
}
}
fclose(fp);
}
分析难点就在于如何将输错3次的名字和密码存储起来?
这个最开始我也没想到,最后定义一个全局的字符型数组,将其存储起来即可。
if(count == 3)
{
strcpy(NAME_TEST,name);//将连续3次输入错误密码的人员账号和密码存储起来
strcpy(PASSWORD_TEST,password);
#ifdef DEBUG
printf("******\n");
printf("被锁账户名字:%s ",NAME_TEST);
printf("记录输错的密码:%s\n",PASSWORD_TEST);
printf("******\n");
记录编译日期和编译时间:
void TIME_TEST()
{
FILE *p;
p = fopen("build.txt","a");//打开文件方式为写入
fprintf(p,"当前调试时间为:%s\n",__DATE__);//将写入的结果打印到指定的文件中进行输出
fprintf(p,"当前调试时间为:%s\n",__TIME__);//将写入的结果打印到指定的文件中进行输出
fclose(p);//关闭文件
}
文件截图: