学生管理系统中用户名密码初始设定
#include<stdio.h>#include<stdlib.h>
#include<string.h>
#define N 100
#define M 1
struct Date//出生年月日
{
int year;//年
char x;//分割线
int month;//月
char y;//分割线
int day;//日
};
struct Key
{
char name[20];
char password[20];
}key_[M];
struct Student
{
int num;//学号
char name[20];//姓名
char clas[20];//班级
struct Date bron;//出生年月日
char addr[20];//地址
int phone;//电话
}stud[N];
void input(struct Student stud[]);//验证用户名跟密码通过时可输入学生信息
void read();//从文件中读入学生信息
void load_find();//查找菜单
void dele();//删除学生信息
void add();//增加学生信息
void find_num();//按学号查询学生信息
void find_class();//按班级查询学生信息
void save(int);//存储学生信息
void load();//主菜单
void retur();//返回菜单
void craft(struct Key key_[]);//创建查询密码(默认为用户:123456 密码:123456),如果存在则跳过
void input(struct Student stud[])//写入学生信息
{
int i,m;
char n,a,b,*p1,*p2,*p3,*p4;
FILE*fp;
system("cls");
printf("(注意! 使用此项功能时会覆盖原有的学生信息!)\n");
printf("是否继续执行操作? Y/N\n");
scanf("%s",&n);
system("cls");
if(n=='Y'||n=='y')
{
if((fp=fopen("D:pass.txt","rb"))==NULL)
{
printf("无法找到此文件\n");
exit(0);
}
printf("请输入用户名跟密码\n");
printf("\n");
printf("用户名:");
scanf("%s",&a);
printf("密码:");
scanf("%s",&b);
system("cls");
fread(&key_[M],sizeof(struct Key),1,fp);
p1=&a;
p2=&b;
p3=&key_[M].name;
p4=&key_[M].password;
if(strcmp(p2,p4)==0&&strcmp(p1,p3)==0)
{
fclose(fp);
printf("请输入学生人数:");
scanf("%d",&m);
if(m>0&&m<=N)
{
for(i=0;i<m;i++)
{
printf("学号:");
scanf("%d",&stud[i].num);
printf("姓名:");
scanf("%s",stud[i].name);
printf("班级:");
scanf("%s",&stud[i].clas);
printf("出生年月日:");
scanf("%d%c%d%c%d",&stud[i].bron.year,&stud[i].bron.x,&stud[i].bron.month,&stud[i].bron.y,&stud[i].bron.day);
printf("地址:");
scanf("%s",&stud[i].addr);
printf("电话:");
scanf("%d",&stud[i].phone);
printf("\n");
}
fclose(fp);
save(m);
}
else
{
fclose(fp);
printf("输入人数不正确(可存储最大人数为100人) .\n");
exit(0);
}
}
else
{
fclose(fp);
load();
}
}
else
{
system("cls");
load();
}
}
void read()//从文件中导出学生信息
{
int i;
FILE*fp;
system("cls");
if((fp=fopen("D:stud.txt","rb"))==NULL) //打开文件stud.dat
{
printf("无法找到此文件\n");
retur();
}
printf("学生信息如下:\n");
for(i=0;i<N;i++)
{
fread(&stud[i],sizeof(struct Student),1,fp);
if(strlen(stud[i].name)==0)
break;
else
{
printf("学号:%d",stud[i].num);
printf("姓名:%s",stud[i].name);
printf("班级:%s",stud[i].clas);
printf("出生年月日:%d%c%d%c%d",stud[i].bron.year,stud[i].bron.x,stud[i].bron.month,stud[i].bron.y,stud[i].bron.day);
printf("地址:%s",stud[i].addr);
printf("电话:%d",stud[i].phone);
printf("\n");
}
}
fclose(fp);
retur();
}
void load_find()//查找菜单
{
int i;
system("cls");
printf("1---按学号查询\n");
printf("2---按班级查询\n");
printf("0---返回主菜单\n");
scanf("%d",&i);
if(i==1)
find_num();
else if(i==2)
find_class();
else if(i==0)
{
system("cls");
load();
}
else
{
printf("输入有误!");
exit(0);
}
}
void dele()//删除学生信息
{
int i,j,Num;
char n,m;
FILE*fp;
system("cls");
printf("是否执行删除操作? Y/N\n");
getchar();
scanf("%c",&m);
system("cls");
if(m=='Y'||m=='y')
{
if((fp=fopen("D:stud.txt","rb"))==NULL) //打开文件stud.dat
{
printf("无法找到此文件\n");
retur();
}
printf("修改前学生信息如下:\n");
for(i=0;i<N;i++)
{
fread(&stud[i],sizeof(struct Student),1,fp);
if(strlen(stud[i].name)==0)
break;
else
{
printf("学号:%d",stud[i].num);
printf("姓名:%s",stud[i].name);
printf("班级:%s",stud[i].clas);
printf("出生年月日:%d%c%d%c%d",stud[i].bron.year,stud[i].bron.x,stud[i].bron.month,stud[i].bron.y,stud[i].bron.day);
printf("地址:%s",stud[i].addr);
printf("电话:%d",stud[i].phone);
printf("\n");
}
}
printf("\n");
fclose(fp);
printf("请输入想要删除学生的学号:");
scanf("%d",&Num);
for(i=0;i<N;i++)
{
if(strlen(stud[i].name)==0)
break;
else if(Num==stud[i].num)
{
for(j=i;j<N;j++)
{
stud[j]=stud[j+1];
}
}
}
if((fp=fopen("D:stud.txt","wb"))==NULL) //新建文件stud.txt
{
printf("无法打开此文件\n");
exit(0);
}
for(i=0;i<N;i++)
if(fwrite(&stud[i],sizeof(struct Student),1,fp)!=1)
printf("数据存储错误\n");
fclose(fp);
system("cls");
printf("信息修改完毕!\n");
printf("\n");
printf("当前学生信息如下:\n");
for(i=0;i<N;i++)
{
fread(&stud[i],sizeof(struct Student),1,fp);
if(strlen(stud[i].name)==0)
break;
else
{
printf("学号:%d",stud[i].num);
printf("姓名:%s",stud[i].name);
printf("班级:%s",stud[i].clas);
printf("出生年月日:%d%c%d%c%d",stud[i].bron.year,stud[i].bron.x,stud[i].bron.month,stud[i].bron.y,stud[i].bron.day);
printf("地址:%s",stud[i].addr);
printf("电话:%d",stud[i].phone);
printf("\n");
}
}
printf("\n");
printf("是否继续删除? Y/N\n");
getchar();
scanf("%c",&n);
if(n=='Y'||n=='y')
dele();
else
{
system("cls");
load();
}
}
else
{
system("cls");
retur();
}
}
void add()
{
}
void find_num()//按学号查询学生信息
{
int i,a;
FILE*fp;
printf("请输入所查学生学号:\n");
if((fp=fopen("D:stud.txt","rb"))==NULL) //打开文件stud.dat
{
printf("无法找到此文件\n");
exit(0);
}
scanf("%d",&a);
for(i=0;i<N;i++)
{
fread(&stud[i],sizeof(struct Student),1,fp);
if(a==stud[i].num)//判断学号是否存在
{
printf("学号:%d",stud[i].num);
printf("姓名:%s",stud[i].name);
printf("班级:%s",stud[i].clas);
printf("出生年月日:%d%c%d%c%d",stud[i].bron.year,stud[i].bron.x,stud[i].bron.month,stud[i].bron.y,stud[i].bron.day);
printf("地址:%s",stud[i].addr);
printf("电话:%d",stud[i].phone);
printf("\n");
}
}
fclose(fp);
retur();
}
void find_class()//按班级查询学生信息
{
char c,*p1,*p2;
int i;
FILE*fp;
if((fp=fopen("D:stud.txt","rb"))==NULL) //打开文件stud.dat
{
printf("无法找到此文件\n");
exit(0);
}
printf("请输入班级");
scanf("%s",&c);
for(i=0;i<N;i++)
{
fread(&stud[i],sizeof(struct Student),1,fp);
p1=&stud[i].clas;
p2=&c;
if(strcmp(p1,p2)==0)
{
printf("学号:%d",stud[i].num);
printf("姓名:%s",stud[i].name);
printf("班级:%s",stud[i].clas);
printf("出生年月日:%d%c%d%c%d",stud[i].bron.year,stud[i].bron.x,stud[i].bron.month,stud[i].bron.y,stud[i].bron.day);
printf("地址:%s",stud[i].addr);
printf("电话:%d",stud[i].phone);
printf("\n");
}
}
fclose(fp);
retur();
}
void save(int m)//存储学生信息
{
FILE *fp;
int i;
if((fp=fopen("D:stud.txt","wb"))==NULL) //新建文件stud.txt
{
printf("cannot open this file\n");
exit(0);
}
for(i=0;i<m;i++)
if(fwrite(&stud[i],sizeof(struct Student),1,fp)!=1)
printf("数据存储错误\n");
fclose(fp);
printf("信息存储完毕!\n");
retur();
}
void load()//主菜单
{
int choice;
struct Student *p=stud;
printf("********简陋的学生信息管理系统*******\n");
printf("* 1-信息输入 *\n");
printf("* 2-导入学生信息 *\n");
printf("* 3-查询学生信息 *\n");
printf("* 4-增加学生信息 *\n");
printf("* 5-删除学生信息 *\n");
printf("* 0-退出程序 *\n");
printf("*************************************\n");
printf("(请选择0-5)\n");
scanf("%d",&choice);
switch(choice)
{
case 1:input(p);break;
case 2:read();break;
case 3:load_find();break;
case 4:add();break;
case 5:dele();break;
case 0:exit(0);break;
default:printf("输入错误请重新选择");break;
}
}
void retur()//返回主菜单
{
int a;
printf("返回上层菜单请按1 结束程序请按0:\n");
scanf("%d",&a);
if(a==1)
{
system("cls");
load();
}
else if(a==0)
exit(0);
else
system("cls");
retur();
}
void craft(struct Key key_[])//创建查询密码(默认为用户:123456 密码:123456),如果存在则跳过
{
FILE *fp;
if((fp=fopen("D:pass.txt","rb"))==NULL)
{
key_[M].name[20]="123456";
key_[M].password[20]="123456";
if((fp=fopen("D:pass.txt","wb"))==NULL)
{
printf("cannot open this file\n");
exit(0);
}
if(fwrite(&key_[M],sizeof(struct Key),1,fp)!=1)
printf("数据存储错误\n");
fclose(fp);
}
else
{
fclose(fp);
}
}
int main()
{
struct Key *p1=key_;
craft(p1);
load();
return 0;
}
本来想如果首次打开则默认用户名跟密码都是123456 结果发现craft那好像存不进去 望大大们看下问题出在哪!