请假管理系统源代码
#include
#include
#include
#include
#define select int
typedef struct // 账户信息{
char name[20]; //https://www.360docs.net/doc/629796133.html,
char pw[20]; //User.pw
} User;
typedef struct
{
char Num[20];
char n1[20];
char Class[20];
char time[100];
char reason[100];
char instructor[100];
} Leave;
typedef struct
{
char n1[20];
char Num[20];
// char name[20];
char Class[20];
char time[100];
char reason[100];
char instructor[100];
char suggest[100];
} TEACHER;
int check (char name[20])
{
int i=0;
User ru;
FILE *f =fopen("data.dat","rb"); rewind(f);
for(i=0; !feof(f); i++)
{
int d=i*sizeof(User); fseek(f,d,SEEK_SET);
fread(&ru,sizeof(User),1,f);
if(strcmp(name,https://www.360docs.net/doc/629796133.html,)==0) return 1;
}
return -1; }
int login(char name[20],char pw[20])
{
User us;
FILE *f =fopen("data.dat","rb"); while(!feof(f))
{ fread(&us,sizeof(User),1,f);
if(strcmp(name,https://www.360docs.net/doc/629796133.html,)==0)
{
if(strcmp(pw,us.pw)==0)return 1;
}
}
return -1;
}
int main()
{
char n[20];
char plog[20];
char nlog[20];
int c;
User u;
FILE *f =fopen("data.dat","ab"); if(f!=NULL)
{
fwrite(&u,sizeof(User),1,f);
fclose(f);
Login: system("color F0"); system("cls"); printf("\n\n");
printf("===========================================
=============================\n");
printf("|
|\n");
|\n");
printf("| ---------------------------- 学生请假系统-------
printf("|
|\n");
printf("===========================================
=============================\n");
printf("\n");
Sleep(1000); printf("\n"); printf(" 请输入帐号:"); scanf("%s",nlog); c=check(nlog); if(c==1)// 如果账户存在{
strcpy(n,nlog);// 复制登录帐号if(strlen(n)==9)// 如果是学生{ int a,i; select s=0;
printf("\n"); printf(" 请输入密码:");// 直接输入密码scanf("%s",plog);
for(a=2,i=0; i<4; i++,a--) {
if(login(nlog,plog)==-1)// 密码错误{
system("color F0"); char plog[20]= {}; // system("cls"); printf("\n");
n");
printf("*
*\n");
printf("\n\n"); if(a>0)
{
printf(" 请重新输入密码 (你还有 %d 次机会 ):",a); printf("\n\n"); scanf("%s",plog); if(login(nlog,plog)==1)
goto success2;
}
else
return 0;
}
}
if(login(nlog,plog)==1)
{
success2: system("color F0");
printf("\n\n");
printf(" 登 陆 成 功 ///////////////////////\n"); Sleep(1000); system("cls");
}
LEAVESYSTEM:
printf("\n\n");
printf("=========================================== =============================\n");
printf("|1.
提交
请
假申
请 |\n");
printf("|2.
查询请 假 批准状
态
登录数组初始化
密码错误!
|\n");
printf("| 如无需操作可直接关闭程序
|\n");
printf("===========================================
=============================\n");
printf("\n\n");
Sleep(1000);
printf(" 请输入您要执行的选项:");
scanf("%d",&s);
Sleep(1000); while(s!=1&&s!=2)
{ if(s!=1&&s!=2)
{ system("color 0c"); printf(" 选项不存在,请重新输入( 1/2 ):"); s=0;
scanf("%d",&s);
}
}
if(s==1)// 写入请假
{ system("color F0"); system("cls"); printf("\n\n");
printf("===========================================
=============================\n");
printf("|
|\n");
printf("| ----------------------------- 提交请假申请--------------- |\n");
printf("|
|\n");
printf("===========================================
=============================\n");
printf("\n\n");
Leave a;
Sleep(1000);
printf(" 请输入班级:\n");
scanf("%s",a.Class);
printf(" 请输入姓名:\n");
scanf("%s",a.n1);
printf(" 请详细输入请假时间:\n"); scanf("%s",a.time);
printf(" 请详细输入请假原因:\n"); scanf("%s",a.reason);
strcpy(nlog,a.Num);
strcpy(a.instructor,"0"); FILE *t=fopen("leave.dat","ab");
fwrite(&a,sizeof(Leave),1,t);// 讲以变量u 的地址开始的存区域的一个数据写到 f 指向的文件中,每个数据占sizeof(User)
fclose(t);
fflush(t);
// Sleep(1000);
printf("\n");
printf(" 保存成功///////////////////////\n");
printf(" 请不定时来查询你的假条申请状态!\n\n\n");
system("pause");
system("cls");
goto LEAVESYSTEM;
}
if(s==2)// 学生查询状态代码
{
system("color F0");
system("cls");
printf("\n\n");
printf("===========================================
=============================\n");
printf("|
|\n");
printf("| -------------------------- 查询请假批准状态-------------- |\n");
printf("|
|\n");
printf("===========================================
=============================\n");
Sleep(1000);
TEACHER b;
FILE *t=fopen("read.dat","rb");
while(1)
{
if(!(fread(&b,sizeof(TEACHER),1,t))) break;
if((strcmp(nlog,b.Num))==0)
{
printf(" ---
printf("| 学生%s 请假申--------------- \n");
请反馈信息:
\n",b.n1);
printf("| 班级:%s\n \n",b.Class);
printf("| 姓名:%s\n \n",b.n1);
printf("| 请假时间:%s\n
\n",b.time);
printf("|
请
假 原 因:
%s\n
\n",b.reason);
printf(" ------------------------------------------------------------- \n ")
;
Sleep(1000); printf("\n");
printf(" ------------------------------------------------------------- ------ \n") printf(" 申请状态 :%s\n",b.instructor);
printf(" 辅导员意见: %s\n",b.suggest);
printf(" -------------------------------------------------------------
------ \n")
system("pause"); Sleep(1000);
system("cls");
goto LEAVESYSTEM;
}
}
}
if(s==3)
{
goto Login;
}
}// 身份学生
if(strlen(n)==4)// 如果是辅导员
{
int a,i; select s; printf("\n");
printf(" 请输入密码 :");// 直接输入密码