C语言实现简单学生学籍管理系统
发布时间:2020-12-15 01:04:32 所属栏目:C语言 来源:网络整理
导读:本文实例为大家分享了C语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下 #includestdio.h #includestring.h #includestdlib.h #includeconio.h #define N 100 /*存储100个学生的学籍信息*/ int flag; /*标记是否登录*/ struct date /*出生日期
本文实例为大家分享了C语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #define N 100 /*存储100个学生的学籍信息*/ int flag; /*标记是否登录*/ struct date /*出生日期*/ { int year; int month; int day; }; struct student { char num[20];/*学号*/ char name[25];/*姓名*/ char sex[10];/*性别*/ struct date birthday;/*出生年月*/ int age;/*年龄*/ char addr[50];/*籍贯*/ char dept[50]; /*系别*/ char major[30]; /*专业*/ char classs[30]; /*班级*/ char phone[20];/*电话*/ }stu[N]; void login() /*登录*/ { void menu(); system("cls"); if(flag) { printf(" 已经登录!n"); printf("Press any key to continue…n"); getchar(); getchar(); system("cls"); menu(); } int load(); int n,i,m,w; FILE *fp; if((fp=fopen("D:file.txt","rb"))!=NULL) /*不是空文件*/ n=load(); /*打开文件*/ else n=0; struct student s; char password[20]; int d,q; printf("nt请选择登录身份:1.管理员 2.用户 [ ]bb"); scanf("%d",&d); if(d==1) { printf("nttt请输入密码:"); getchar(); int j=0; while(1) { password[j]=getch(); if(password[j]=='r') break; printf("*"); j++; } password[j]=' '; if(!strcmp(password,"930322")) /*判断密码是否正确*/ { flag=1; printf("nt登录成功!n"); printf("tPress [ Enter ] key to continue…"); getchar(); system("cls"); menu(); } if(!flag) { printf("tn密码错误!n"); printf("What do you want to do next? 1.继续登录 2.返回菜单 [ ]bb"); scanf("%d",&q); if(q==1) /*继续登录*/ { system("cls"); login(); } else if(q==2) /*返回主菜单*/ { system("cls"); menu(); } } } else { printf("nttt用户名:"); scanf("%s",s.name); printf("ttt密码:"); int j=0; while(1) { password[j]=getch(); if(password[j]=='r') break; printf("*"); j++; } password[j]=' '; flag=0; /*未登录时flag=0*/ for(i=0;i<n;i++) if(!strcmp(s.name,stu[i].name)&&!strcmp(s.name,password)) { flag=1; /*登录成功flag=1*/ break; } if(flag) { printf("nt登录成功!n"); printf("tPress any key to continue…n"); getchar(); getchar(); system("cls"); menu(); /*登录成功后返回主菜单*/ } else { m=0; /*设置m是为了避免陷入 登录失败时 跳不出登录界面*/ w=1; /*设置w是为了避免输出多次 “用户不存在”*/ int q; /*q为选项*/ do { if(w>0) printf("用户名不存在或密码错误!n"); /*第一次登录时输入不存在的用户时显示*/ printf("What do you want to do next? 1.继续登录 2.返回菜单 [ ]bb"); scanf("%d",&q); if(q==1) /*继续登录*/ { login(); m=1; } else if(q==2) /*返回主菜单*/ { system("cls"); menu(); m=1; } else { printf("选择错误!请重新选择:n"); w=0; } }while(m==0); } } } void printf_one(int k) /*输出一个学生的信息*/ { system("color 4e"); printf("学号:%sn",stu[k].num); printf("姓名:%sn",stu[k].name); printf("性别:%sn",stu[k].sex); printf("出生年月:%d/%d/%dn",stu[k].birthday.year,stu[k].birthday.month,stu[k].birthday.day); printf("年龄:%dn",stu[k].age); printf("籍贯:%sn",stu[k].addr); printf("系别:%sn",stu[k].dept); printf("专业:%sn",stu[k].major); printf("班级:%sn",stu[k].classs); printf("电话:%sn",stu[k].phone); } void printf_n(int n) /*浏览时输出所有学生的信息*/ { system("color 2e"); int j,i=1; for(j=0;j<n;j++) { printf("第%d个学生:n",i++); printf_one(j); printf("n"); } getchar(); } int load() /*打开文件,读取里面的数据*/ { FILE *fp; int i; if((fp=fopen("D:file.txt","rb"))==NULL) /*读入空文件,rb表示打开一个二进制文件,只允许读数据*/ { printf("n文件不存在!请输入:n"); return 0; } for(i=0;!feof(fp);i++) /*处理到文件结尾*/ fread(&stu[i],sizeof(struct student),1,fp); /*fread(buffer,size,cout,fp)将磁盘文件中的一批数据作为一个整体一次性读取出来,buffer指定数据块位置,sizeof数据块字节数,count读取次数,fp指向源磁盘文件*/ fclose(fp); return(i-1); } void input(int k) /*输入学生信息*/ { getchar(); printf("学号:"); gets(stu[k].num); printf("姓名:"); gets(stu[k].name); printf("性别:"); gets(stu[k].sex); printf("出生年月:"); scanf("%d/%d/%d",&stu[k].birthday.year,&stu[k].birthday.month,&stu[k].birthday.day); printf("年龄:"); scanf("%d",&stu[k].age); getchar(); printf("籍贯:"); gets(stu[k].addr); printf("系别:"); gets(stu[k].dept); printf("专业:"); gets(stu[k].major); printf("班级:"); gets(stu[k].classs); printf("电话:"); gets(stu[k].phone); } void save(int n) /*保存学生信息*/ { void exit(); FILE *fp; int i; if((fp=fopen("D:file.txt","wb"))==NULL) /*只打开或建立一个二进制文件,只允许写数据*/ { printf("nCan not open file!n"); exit(); } for(i=0;i<n;i++) if(stu[i].name[0]!=' ') if(fwrite(&stu[i],fp)!=1) /*将一批数据作为一个整体一次性写入磁盘文件*/ printf("文件写入错误!n"); fclose(fp); } void printf_back()/*添加学生信息后显示的“是浏览还是返回”*/ { int w,k=0; void browse(); void menu(); printf("nnt^_^.插入成功. ^_^nn"); do { printf("What do you want to do next?nnt1).浏览所有t2).返回: [ ]bb"); scanf("%d",&w); if(w==1) { system("cls"); browse(); } else if(w==2) { system("cls"); menu(); } else printf(" 选择错误!请重新选择!n"); }while(k==0); } void insert() /*添加学生信息*/ { int i,n,k,t; FILE *fp; if((fp=fopen("D:file.txt","rb"))==NULL) /*读入空文件,rb表示打开一个二进制文件,只允许读数据*/ { printf("How many people do you want to add(1-%d)?:",N-1); n=0; } else { n=load(); printf("How many student do you want to insert (1-%d)?:",N-n-1); } scanf("%d",&t); k=n+t; for(i=n;i<k;i++) { printf("n输入第 %d 个学生学籍信息.n",i-n+1); input(i); } save(k); /*保存所有学生的信息*/ printf_back(); } void deleter() /*删除*/ { void menu(); if(!flag) { printf("nnt请先登录!n"); printf("nt请按 Enter 键进入登录界面!"); getchar(); getchar(); login(); } else { struct student s; int i,w0,w1; n=load(); do { k=-1; //printf_n(n); /*删除之前先显示所有学生的信息*/ do { printf("nn请输入您想要删除的学生的姓名!nName:"); scanf("%s",s.name); for(i=0;i<n;i++) if(strcmp(s.name,stu[i].name)==0) { k=i; s=stu[i]; } if(k==-1) { int m; printf("nn没有这个学生的信息!n"); printf("What do you want to do next? 1.继续输入 2.返回主菜单 [ ]bb"); scanf("%d",&m); if(m==1) deleter(); else { k=0; menu(); } } }while(k==-1); printf_one(k); printf("nt确定删除?nt1).是 2).返回 [ ]bb");/*再次询问是否删除*/ scanf("%d",&w0); if(w0==1) { stu[k].name[0]=' '; save(n); } else break; printf("nt^_^.成功删除^_^.n"); printf("What do you want to do?nt1).继续 2).返回 [ ]bb"); scanf("%d",&w1); }while(w1==1); system("cls"); menu(); /*不再删除时返回主菜单,w1!=1*/ } } void search() /*查找*/ { void menu(); int w0,w1,w2; struct student s; FILE *fp; if((fp=fopen("D:file.txt","rb"))!=NULL) /*不是空文件*/ n=load(); do { printf("请选择查找类别: 1.姓名 2.学号 [ ]bb"); scanf("%d",&w1); if(w1<1||w1>2) { printf("输入错误!请重新输入!n"); w2=1; } else w2=0; /*这里要注意:不加这句话会陷入死循环,跳不出来*/ }while(w2==1); if(w1==1) /*按姓名查找*/ { do { k=-1; do { printf("n请输入您想要查找的学生的姓名!nName:"); scanf("%s",s.name); for(i=0;i<n;i++) if(strcmp(s.name,stu[i].name)==0) { k=i; s=stu[i]; } if(k==-1) /*没有找到*/ { int o; printf("nn没有这个学生的信息!n!"); printf("What do you want to do?nt1.继续 2.返回菜单 [ ]bb"); scanf("%d",&o); if(o==1) { system("cls"); search(); /*继续查找*/ } else { system("cls"); menu(); } } }while(k==-1); system("cls"); printf_one(k); /*找到以后输出这个学生的信息*/ printf("nWhat do you want to do next?nt1).继续 2).返回菜单 [ ]bb"); scanf("%d",&w0); }while(w0==1); system("cls"); menu(); /*不再查找时返回主菜单*/ } else /*按学号查找*/ { do { k=-1; do { printf("n请输入您想要查找的学生的学号!nNum:"); scanf("%s",s.num); for(i=0;i<n;i++) if(strcmp(s.num,stu[i].num)==0) /*找到了*/ { k=i; s=stu[i]; } if(k==-1) /*没有找到*/ { int o; printf("nn没有这个学生的信息!n!"); printf("What do you want to do?nt1.继续 2.返回菜单 [ ]bb"); scanf("%d",&o); if(o==1) { system("cls"); search(); /*继续查找*/ } else { system("cls"); menu(); } } }while(k==-1); system("cls"); printf_one(k); /*找到以后输出这个学生的学籍信息*/ printf("nWhat do you want to do?nt1).继续 2).返回菜单 [ ]bb"); scanf("%d",&w0); }while(w0==1); system("cls"); menu();/*不再查找时返回主菜单*/ } } int modify_data(int i) /*修改信息函数*/ { int c,w1; void menu(); do { puts("n请选择要修改的选项:nn1.学号 2.姓名 3.性别 4.出生日期 5.年龄 6.籍贯 7.系别 8.专业 9.班级 10.电话 11.所有信息 12.取消并返回"); printf("请选择?: [ ]bbb"); scanf("%d",&c); if(c>12||c<1) { puts("n选择错误!请重新选择!"); getchar(); } }while(c>12||c<1); do { switch(c) { case 1: printf("学号:"); scanf("%s",stu[i].num); break; case 2: printf("姓名:"); scanf("%s",stu[i].name); break; case 3: printf("性别:"); scanf("%s",stu[i].sex); break; case 4: printf("出生年月:"); scanf("%d/%d/%d",&stu[i].birthday.year,&stu[i].birthday.month,&stu[i].birthday.day); break; case 5: printf("年龄:"); scanf("%d",&stu[i].age);break; case 6: printf("籍贯:"); scanf("%s",stu[i].addr);break; case 7: printf("系别:"); scanf("%s",stu[i].dept);break; case 8: printf("专业:"); scanf("%s",stu[i].major);break; case 9: printf("班级:"); scanf("%s",stu[i].classs);break; case 10: printf("电话:"); scanf("%s",stu[i].phone);break; case 11: input(i); break; /*修改这个学生的所有信息*/ case 12: menu(); /*返回主菜单*/ } puts("nNow:n"); printf_one(i); /*输出 修改后 的这个学生的信息*/ printf("n确定?nnt1).是 2).不,重新修改 3).返回不保存 [ ]bb"); scanf("%d",&w1); }while(w1==2); return(w1); /*修改成功并选择1后返回1*/ } void modify() /*修改*/ { void menu(); if(!flag) { printf("nnt请先登录!n"); printf("nt请按 Enter 键进入登录界面!"); getchar(); getchar(); login(); } else { struct student s; int i,w0=1,w2=0; n=load(); do { k=-1; //printf_n(n); /*删除之前先显示所有学生的信息*/ do { printf("n请输入您想要修改的学生的姓名!nName:"); scanf("%s",s.name); for(i=0;i<n;i++) if(strcmp(s.name,stu[i].name)==0) /*与其中一个学生匹配*/ { k=i; s=stu[i]; } if(k==-1) /*没有找到输入的学生*/ { int o; printf("nn没有这个学生的信息!n"); printf("What do you want to do?nt1.继续 2.返回菜单 [ ]bb"); scanf("%d",&o); if(o==1) { system("cls"); modify(); /*继续修改*/ } else { system("cls"); menu(); } } }while(k==-1); system("cls"); printf_one(k); /*输出这个学生的信息*/ w1=modify_data(k); if(w1==1) /*判断是否修改成功修改*/ { printf("nt^_^.修改成功 ^_^.nn是否继续?nnt1).是 2).保存返回t[ ]bb"); scanf("%d",&w0); w2=1; } else { w0=0; if(w2==0) stu[k]=s; } if((w0!=1)&&(w2==1)) /*修改成功保存*/ save(n); }while(w0==1); system("cls"); menu();/*不再修改返回主菜单*/ } } void browse()/*浏览*/ { system("color 5f"); void menu(); int n; n=load(); printf_n(n); printf(" 共有 %d 个学生的记录.n",n); printf("nPress [ ENTER ] key to back..."); getchar(); system("cls"); menu(); /*返回主函数*/ } void exit() /*退出*/ { exit(0); } void face() /*访问页面*/ { system("color 4e"); printf("nt ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★nn"); puts("t ※※※※※※※※※※※※※※※※※※※※※※※※※※※"); puts("t ※※ ※※"); puts("t ※※ ※※"); puts("t ※※ 欢迎访问学生学籍管理系统! ※※"); puts("t ※※ ※※"); puts("t ※※ ※※"); puts("t ※※ ※※"); puts("t ※※ ※※"); puts("t ※※ 制作人:李远航 ※※"); puts("t ※※ 2013.6.20 ※※"); puts("t ※※ ※※"); puts("t ※※※※※※※※※※※※※※※※※※※※※※※※※※※"); printf("ntPress [ Enter ] key to continue……n"); getchar(); system("cls"); } void menu() /*主菜单*/ { system("color 2e"); printf("nttt欢迎使用学生学籍管理系统!n"); printf("n"); int n,w1; do { puts("tt★★★★★★★★ 菜单 ★★★★★★★★"); puts("tt★ 1.登 录 ★"); puts("tt★ 2.插 入 ★"); puts("tt★ 3.删 除 ★"); puts("tt★ 4.查 找 ★"); puts("tt★ 5.修 改 ★"); puts("tt★ 6.浏 览 ★"); puts("tt★ 7.退 出 ★"); puts("tt★★★★★★★★★★★★★★★★★★★★★"); printf("请选择服务种类(1-7) : [ ]bb"); scanf("%d",&n); if(n<1||n>7) { system("cls"); printf("选择错误! 请重新选择!n"); w1=1; } else w1=0; }while(w1==1); switch(n) { case 1: login(); break; /*登录*/ case 2: system("cls"); insert(); break; /*插入*/ case 3: system("cls"); deleter(); break; /*删除*/ case 4: system("cls"); search(); break; /*查找*/ case 5: system("cls"); modify(); break; /*修改*/ case 6: system("cls"); browse(); break; /*浏览*/ case 7: exit(); break; /*退出*/ } } int main() { face(); menu(); return 0; } 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。 您可能感兴趣的文章:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |