C语言下的学生管理系统(含密码加密和验证码)_第1页
C语言下的学生管理系统(含密码加密和验证码)_第2页
C语言下的学生管理系统(含密码加密和验证码)_第3页
C语言下的学生管理系统(含密码加密和验证码)_第4页
C语言下的学生管理系统(含密码加密和验证码)_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include <stdio.h>#include <string.h>#include <stdlib.h>#include <conio.h>#include <time.h>#define N 20void input();/增加学生信息void del();/删除学生信息void change();/修改学生信息void find();/查询学生信息void sorting();/排序void save();/保存到文件void read();/读取文件void stu_search();/学生查询信息void modify

2、();/学生修改自己密码struct score_stu/定义分数结构体 int score1; int score2; int score3; int sum;score;struct student /定义学生结构体 int no; char name20; char spwd20; int classnum; struct score_stu score; int age; int ranking;stuN,*p;void inputPasswd(char passwd)/隐藏密码 char s20; char temp2; int n; /strcpy(s," ")

3、; s0='0' while(1) while(1) n=getch(); if(n = 13)/13为回车'r' break; printf("*"); memset(temp,0,sizeof(temp);/将temp里面的数据用0替换 sprintf(temp,"%c",n);/将n打印成一个字符保存到temp里面 strcat(s,temp);/把temp所指字符串添加到s结尾处(覆盖s结尾处的'0') break; printf("n"); strcpy(passwd, s);

4、void captcha(char str,int n)/验证码 char a="1234567890abcdefghijkmnopqrstuvwxyzABCDEFGHIJLMNPQRSTUVWXYZ" int i,j,k; k=strlen(a);/k表示字符串的长度 srand(time(0);/随机数初始化 for(i=0;i<n;i+) j=rand()%k;/取0-58的随机数 stri=aj; stri='0'void admin()/管理员操作 int choose1; printf("tt1:增加学生信息t2:删除学生信息t3

5、:修改学生信息t4:查询学生信息t5:排序学生信息t6:退出程序n"); printf("tt"); scanf("%d",&choose1); printf("tt=n"); fflush(stdin); switch(choose1) case 1: input();break; case 2: del();break; case 3: change();break; case 4: find();break; case 5: sorting();break; case 6: printf("tt退出成

6、功!n"); exit(0); break; default : printf("tt你所选择的操作不是上述操作,请重新选择n"); admin(); break; void admin_login()/管理员登录 static int i=0; int j=3; char username10; char pwd10; char codeN,strN; printf("tt*欢迎进入管理员登录界面*n"); printf("tt请输入帐号:n"); printf("tt"); gets(username

7、); printf("tt=n"); printf("tt请输入密码:n"); printf("tt"); inputPasswd(pwd); printf("tt=n"); fflush(stdin); if(strcmp(username,"admin")=0) &&(strcmp(pwd,"admin")=0) while(1) captcha(code,4); printf("tt请输入验证码:%sn",code); printf(

8、"tt"); scanf("%s",str); printf("tt=n"); if(strcmp(code,str)=0) printf("ntt 您已成功登录 n "); printf("tt请选择你要执行的操作:n"); admin(); else j-; if(j=0) printf("tt错误次数过多,系统自动退出n"); exit(0); else while(i<2) printf("n 用户名和/或密码无效请重新输入 n "); i+

9、; admin_login(); printf("登录次数超限,自动退出!n"); exit(0); void student(int userNO)/学生操作 int x; printf("tt1:查询个人信息t2:修改密码t3:退出n"); printf("tt"); scanf("%d",&x); printf("tt=n"); switch(x) case 1:stu_search(userNO);break; case 2:modify(userNO);break; case

10、3:printf("tt退出成功!n"); exit(0);break; default:printf("tt你所选择的项目错误!重新选择!"); student(userNO);break; int student_login()/学生登录 static int j=0; int i; int k=3; int userNO; char pwd20; char codeN+1,strN+1; printf("tt*欢迎进入学生登录界面*n"); printf("tt请输入学号:n"); printf("

11、tt"); fflush(stdin); scanf("%d",&userNO); printf("tt=n"); printf("tt请输入密码:n"); printf("tt"); fflush(stdin); inputPasswd(pwd); printf("tt=n"); read(); for(i=0;i<N;i+) if(userNO = stui.no)&&(strcmp(pwd,stui.spwd)=0) while(1) captcha

12、(code,4); printf("tt请输入验证码:%sn",code); printf("tt"); scanf("%s",str); printf("tt=n"); if(strcmp(code,str)=0) printf("tt登录成功!n"); printf("tt请选择操作!n"); student(userNO); else k-; if(k=0) printf("tt错误次数过多,系统自动退出n"); exit(0); else whil

13、e(j<2) printf("tt登录失败,请重新登录!n"); j+; student_login(); printf("tt登陆次数超限!系统自动退出!"); exit(0); return userNO;void stu_ranking()/计算排名 int i,j; int count=1;read();for(i=0;stui.no!=0;i+)for(j=0;stuj.no!=0;j+)if(stui.score.sum<stuj.score.sum)count+;stui.ranking=count;count=1;save()

14、;void stu_search(int userNO)/学生查询个人信息 int i,x; read(); for(i=0;i<N;i+) if(userNO = stui.no) printf("tt学号t姓名t密码t班级t成绩一t成绩二t成绩三t总分t年龄t排名n"); printf("tt%dt%st%st%dt%dt%dt%dt%dt%dt%dnn",stui.no,,stui.spwd,stui.classnum, stui.score.score1,stui.score.score2,stui.score.score

15、3,stui.score.sum, stui.age,stui.ranking); printf("tt=n"); printf("tt请选择退出系统或返回主菜单n"); printf("tt1:返回主菜单t2:退出n"); printf("tt"); scanf("%d",&x); printf("tt=n"); switch(x) case 1:student(userNO);break; case 2:printf("tt退出成功!n");

16、exit(0); else printf("tt输入错误,系统自动返回主菜单!n"); student(userNO); void modify(int userNO)/学生修改个人密码 fflush(stdin); static int k=0; int i; char pwd_old20; char pwd_new20; char pwd_new120; read(); for(i=0;i<N;i+) if(userNO = stui.no) printf("tt请输入旧密码:n"); printf("tt"); gets(

17、pwd_old); printf("tt=n"); if(strcmp(pwd_old,stui.spwd)=0) printf("tt请输入新密码:n"); printf("tt"); gets(pwd_new); printf("tt=n"); printf("tt请再次输入新密码:n"); printf("tt"); gets(pwd_new1); printf("tt=n"); if(strcmp(pwd_new,pwd_new1)=0) prin

18、tf("tt修改完成!n"); strcpy(stui.spwd,pwd_new); printf("tt=n"); break; else while(1) k+; if(k=3) printf("tt错误次数过多,自动返回主菜单!n"); printf("tt=n"); student(userNO); else printf("tt输入两次密码不一致 请重新进入!n"); printf("tt=n"); modify(userNO); else printf("

19、;tt密码输入不正确!自动返回主菜单n"); printf("tt=n"); student(userNO); save(); student(userNO);void input()/增加学生信息 char ch; int i,n,count= 0; printf("tt请输入添加学生信息的条数:n"); printf("tt"); scanf("%d",&n); printf("tt=n"); if(n<1|n>N) printf("tt输入不合法,请

20、重新输入:n"); input(); printf("tt请添加学生信息:n"); printf("tt学号t姓名t密码t班级t成绩一t成绩二t成绩三t年龄n"); read(); for(i=0;i<N;i+) if(count = n) break; if(stui.no=0) fflush(stdin); printf("tt"); scanf("%d%s%s%d%d%d%d%d",&stui.no,,stui.spwd,&stui.classnum, &am

21、p;stui.score.score1,&stui.score.score2,&stui.score.score3,&stui.age); stui.score.sum=stui.score.score1+stui.score.score2+stui.score.score3; count+; save(); stu_ranking(); printf("tt=n"); printf("tt添加学生信息成功!n"); printf("tt是否继续?(Y/N)n"); fflush(stdin); printf(

22、"tt"); scanf("%c",&ch); if(ch='Y'|ch='y') input(); admin();void del()/删除学生信息 fflush(stdin); int i,j; char ch; int del_no; printf("tt请输入想要删除记录的ID:n"); printf("tt"); scanf("%d",&del_no); printf("tt=n"); read(); for(i=0

23、;stui.no!=0;i+) if(del_no = stui.no) for(j=i;j<N-1;j+) stuj=stuj+1; save(); stu_ranking(); printf("tt=n"); printf("tt删除信息成功!n"); printf("tt是否继续?(Y/N)n"); fflush(stdin); printf("tt"); scanf("%c",&ch); if(ch='Y'|ch='y') del(); ad

24、min();void change()/修改学生信息 fflush(stdin); int i; char ch; int change_no; printf("tt请输入想要修改记录的ID:n"); printf("tt"); scanf("%d",&change_no); printf("tt=n"); read(); printf("tt学号t姓名t密码t班级t成绩一t成绩二t成绩三t年龄n"); for(i=0;stui.no!=0;i+) if(change_no = stui

25、.no) printf("tt%dt%st%st%dt%dt%dt%dt%dn",stui.no,,stui.spwd, stui.classnum,stui.score.score1,stui.score.score2,stui.score.score3,stui.age); printf("tt请输入你要修改后的信息!n"); printf("tt=n"); printf("tt"); scanf("%d%s%s%d%d%d%d%d",&stui.no,stui.n

26、ame,stui.spwd,&stui.classnum, &stui.score.score1,&stui.score.score2,&stui.score.score3,&stui.age); stui.score.sum=stui.score.score1+stui.score.score2+stui.score.score3; save(); stu_ranking(); printf("tt=n"); printf("tt修改学生信息成功!n"); printf("tt是否继续?(Y/N)n&q

27、uot;); fflush(stdin); printf("tt"); scanf("%c",&ch); if(ch='Y'|ch='y') change(); admin();void find1()/按姓名查询 fflush(stdin); int i; char ch; int count=0; char find_name20; printf("tt请输入想要查询的学生姓名:n"); printf("tt"); gets(find_name); printf(&quo

28、t;tt=n"); read(); for(i=0;stui.no!=0;i+) if(strcmp(find_name,)=0) printf("tt学号t姓名t密码t班级t成绩一t成绩二t成绩三t总分t年龄t排名n"); printf("tt%dt%st%st%dt%dt%dt%dt%dt%dt%dn",stui.no,,stui.spwd, stui.classnum,stui.score.score1,stui.score.score2,stui.score.score3, stui.score.su

29、m,stui.age,stui.ranking); count+; if(count=0) printf("tt操作错误是否继续?(Y/N)n"); printf("tt"); scanf("%c",&ch); printf("tt=n"); if(ch='Y'|ch='y') find1(); else find(); else printf("tt查询学生信息成功!n"); printf("tt是否继续?(Y/N)n"); fflu

30、sh(stdin); printf("tt"); scanf("%c",&ch); printf("=tt=n"); if(ch='Y'|ch='y') find1(); else find(); void find2()/按成绩一查询 fflush(stdin); int i; char ch; int count=0; int score; printf("tt请输入你要查询的成绩一分数n"); printf("tt"); scanf("%d

31、",&score); printf("tt=n"); read(); printf("tt学号t姓名t密码t班级t成绩一t成绩二t成绩三t总分t年龄t排名n"); for(i=0;stui.no!=0;i+) if(stui.score.score1 = score) printf("tt%dt%st%st%dt%dt%dt%dt%dt%dt%dn",stui.no,,stui.spwd, stui.classnum,stui.score.score1,stui.score.score2,stui.

32、score.score3, stui.score.sum,stui.age,stui.ranking); count+; if(count=0) printf("tt操作错误是否继续?(Y/N)n"); fflush(stdin); printf("tt"); scanf("%c",&ch); printf("tt=n"); if(ch='Y'|ch='y') find2(); else find(); else printf("tt查询学生信息成功!n"); printf("tt是否继续?(Y/N)n"); fflush(stdin); printf("tt"); scanf("%c",&ch); printf("tt=n"); if(ch='Y'|ch='y') find2(); else find(); void find3()/按成绩二查询 f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论