#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <time.h>
void admin();
void main1();
struct student
{
char name[20];
char num[20];
char kind[20];
int score;
}stu[199],t,stu_s[199];
void first()
{
FILE *fp;
if ((fp=fopen("library.txt","r"))==NULL)
{
fp=fopen("library.txt","w");
fclose(fp);
}
}
void getstu(int a)
{
system("CLS");
FILE *fp;
fp=fopen("library.txt","r");
int n=0,b=0,i=0;
for (n=0;!feof(fp);n++)
{
fscanf(fp,"%s%s%s%d",stu[n].name,stu[n].num,stu[n].kind,&stu[n].score);
}
n-=2;
printf("%-10s%-10s%-10s 次数\n",stu[0].name,stu[0].num,stu[0].kind,stu[0].score);
for (b=1;b<=n;b++)
printf("%-10s%-10s%-10s %d\n",stu[b].name,stu[b].num,stu[b].kind,stu[b].score);
printf("一共有%d个人\n",n);
fclose(fp);
printf("返回上一级请按Esc,删除请按D,修改请按E\n");
i=getch();
if(i!=27)
{
if(i=='D'||i=='D'){
printf("请输入要删除学生的学号");
scanf("%s",t.num);
if(strcmp(t.num,"学号")==0)printf("删除错误");
else
for(i=0;i<=n+2;i++)
{
if(strcmp(t.num,stu[i].num)==0)
{
if(!strcmp(stu[i].kind,"电科1801"))printf("这个无法删除");
else
{
fp=fopen("library.txt","w");
for (int m=0;m<n+1;m++)
if(m!=i)
fprintf(fp,"%-10s%-16s%-15s%d\n",stu[m].name,stu[m].num,stu[m].kind,stu[m].score);
fclose(fp);
}}
}}
if(i=='e'||i=='E'){
printf("请输入要修改的学生的学号");
scanf("%s",t.num);
if(strcmp(t.num,"学号")==0)printf("删除错误");
else
for(i=0;i<=n+2;i++)
{
if(strcmp(t.num,stu[i].num)==0)
{
if(!strcmp(stu[i].kind,"电科1801"))printf("这个无法删除");
else
{
fp=fopen("library.txt","w");
printf("请输入要修改完成的(姓名 学号 班级):\n");
scanf("%s%s%s",stu[n].name,stu[n].num,stu[n].kind);
for (int m=0;m<n+1;m++)
fprintf(fp,"%-10s%-16s%-15s%d\n",stu[m].name,stu[m].num,stu[m].kind,stu[m].score);
fclose(fp);
}
}
}
}
printf("任意键退出");
getch();
}
}
void plus()
{
system("CLS");
FILE *fp;
fp=fopen("library.txt","r");
int n=0,b=0,i=0;
for (n=0;!feof(fp);n++)
fscanf(fp,"%s%s%s%d",stu[n].name,stu[n].num,stu[n].kind,&stu[n].score);
fclose(fp);
fp=fopen("library.txt","a");
printf("请输入(姓名 学号 班级):\n");
scanf("%s%s%s",stu[n].name,stu[n].num,stu[n].kind);
stu[n].score=0;
fprintf(fp,"%-10s%-16s%-15s 0\n",stu[n].name,stu[n].num,stu[n].kind);
fclose(fp);
printf("写入完成\n");
printf("返回上一级请按Esc\n");
for (;i!=13&&i!=27;)
i=getch();
admin();
}
void star(int a)
{ int n=0,b=0,k,m,i=0;
system("CLS");
FILE *fp;
fp=fopen("library.txt","r");
for (n=0;!feof(fp);n++)
fscanf(fp,"%s%s%s%d",stu[n].name,stu[n].num,stu[n].kind,&stu[n].score);
fclose(fp);
n--;
b=rand()%n+1;
printf("恭喜名为%s学号是%s班级是%s的同学\n你被点了%d次\n",stu[b].name,stu[b].num,stu[b].kind,stu[b].score);
stu[b].score++;
for(i=n-1;i>0;i--)
{
m=0;
for( k=i;k>0;k--)
if(stu[m].score>stu[k].score)m=k;
t=stu[i];
stu[i]=stu[m];
stu[m]=t;
}
fp=fopen("library.txt","w");
for ( m=0;m<n;m++)
fprintf(fp,"%-10s%-16s%-15s %d\n",stu[m].name,stu[m].num,stu[m].kind,stu[m].score);
fclose(fp);
printf("返回上一级请按Esc或回车\n");
for (;i!=13&&i!=27;)
i=getch();
if(a==1)
admin();
else
main1();
}
void star_plus(int a)
{ int n=0,b=0,k,m,i=0,s=0;
char kind[20];
system("CLS");
printf("请输入\n");
scanf("%s",kind);
FILE *fp;
fp=fopen("library.txt","r");
for (n=0;!feof(fp);n++)
fscanf(fp,"%s%s%s%d",stu[n].name,stu[n].num,stu[n].kind,&stu[n].score);
for(i=n-1;i>0;i--)
{
m=0;
for( k=i;k>0;k--)
if(stu[m].score>stu[k].score)m=k;
t=stu[i];
stu[i]=stu[m];
stu[m]=t;
}
for( k=n;k>=0;k--)
if(strcmp(stu[k].kind,kind)==0)
{
s++;
stu_s[s]=stu[k];
}
if(s==0){
printf("没有这个班\n");
goto sss;
}
fclose(fp);
printf("%-10s%-10s%-10s 次数\n",stu[0].name,stu[0].num,stu[0].kind,stu[0].score);
for(i=1;i<=s;i++)
printf("%-10s%-10s%-10s %d\n",stu_s[i].name,stu_s[i].num,stu_s[i].kind,stu_s[i].score);
b=rand()%s+1;
printf("恭喜名为%s学号是%s班级是%s的同学\n你被点了%d次\n",stu_s[b].name,stu_s[b].num,stu_s[b].kind,stu_s[b].score);
stu[b].score++;
fp=fopen("library.txt","w");
for ( m=0;m<n;m++)
fprintf(fp,"%-10s%-16s%-15s %d\n",stu[m].name,stu[m].num,stu[m].kind,stu[m].score);
fclose(fp);
sss:
printf("返回上一级请按Esc或回车\n");
for (;i!=13&&i!=27;)
i=getch();
if(a==1)
admin();
else
main1();
}
void regist()
{
FILE *fp;
int zhanghao;
char password[20],password1[20],passwords[20];
char hit=0;
if ((fp=fopen("land.txt","r"))==NULL)
{
fp=fopen("land.txt","w");
fclose(fp);
}
system("cls");
fp=fopen("land.txt","a");
while(1)
{
printf("\n请按以下格式输入账户:\n手机号 密码\n");
printf(":");
scanf("%d %s",&zhanghao,password);
printf("再次输入密码:\n");
scanf("%s",password1);
if(strcmp(password,password1)==0)
{
int n=strlen(password),i;
for(i=0;i<n+1;i++)
{
if(password[i]=='\0')
{
passwords[i]='\0';
break;
}
passwords[i]=password[i]*2+1 ;
}
fprintf(fp,"%d %s\n",zhanghao,passwords);
break;
}
else
{
printf("两次输入密码不一致,继续创建按回车,退出按ESC");
hit=getch();
if(hit=27)
system("cls");
main1();
}
}
fclose(fp);
printf("创建成功,按任意键返回");
getch();
system("cls");
main1();
}
int match(int m,char a[20])
{
FILE*fp;
int n=0,i=0;
int zhanghao;
char password[20],passwords[20];
if ((fp=fopen("land.txt","r"))==NULL)
{
system ("cls");
printf("\n 还未存在用户!请新建账户");
getch();
system("cls");
main1();
}
for(;!feof(fp);)
{
fscanf(fp,"%d%s",&zhanghao,password);
if(m==zhanghao)
{
//解密
int n=strlen(password),i;
for(i=0;i<n+1;i++)
{
if(password[i]=='\0')
{
passwords[i]='\0';
break;
}
passwords[i]=(password[i]-1)/2 ;
}
//
if(strcmp(a,passwords)==0)
return 1;
else
{
return -1;
}
}
}
return 0;
}
void log()
{
int zhanghao;
char password[20];
int i=2;
char hit=0;
system("cls");
printf("\n请输入账号:\n");
scanf("%d",&zhanghao);
printf("\n请输入密码:\n");
scanf("%s",password);
i=match(zhanghao,password);
if(i==1)
{
printf("登陆成功!按任意键继续");
getch();
admin();
}
else
{
if(i==-1)
{
printf("密码错误!");
getch();
log();
}
if(i==0)
printf("不存在此用户");
getch();
system("cls");
main1();
}
}
void main1()
{
system("CLS");
printf("******************欢迎使用点名系统****************\n");
printf("**************************************************");
printf("\n\n 1.用户注册\n\n");
printf("\n\n 2.用户登录\n\n");
printf("\n\n 3.直接点名\n\n");
printf("\n\n 4.按班级点名\n\n");
printf("\n\n 请输入序号选择,回车确定\n");
printf("*************************************************\n");
printf("******************西安邮电大学*****************\n");
printf("*******************电科1801********************\n");
int i=getch();
if(i==49)
regist();
if(i==50)
log();
if(i==51)
star(2);
if(i==52)
star_plus(2);
else
main1();
}
void admin()
{
system("CLS");
printf("**************************************************");
printf("\n\n 1.学生查询\n\n");
printf("\n\n 2.学生增加\n\n");
printf("\n\n 3.直接点名\n\n");
printf("\n\n 4.按班级点名\n\n");
printf("\n\n 请输入序号选择,回车确定\n");
printf("*************************************************\n");
printf("******************西安邮电大学*****************\n");
printf("*******************电科1801********************\n");
int i=getch();
if(i==49)
getstu(1);
if(i==50)
plus();
if(i==51)
star(1);
if(i==52)
star_plus(2);
else
admin();
}
void main()
{
srand( (unsigned)time( NULL ) );
first();
main1();
admin();
}
西安邮电大学课程设计:学生管理系统 带登录界面和点名系统
最新推荐文章于 2024-04-30 21:00:17 发布