#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(); /*打开文件*/elsen=0;struct student s;char password[20];int d,q;printf("\n\t请选择登录身份:1.管理员      2.用户     [ ]\b\b");scanf("%d",&d);if(d==1){printf("\n\t\t\t请输入密码:");getchar();int j=0;while(1){password[j]=getch();if(password[j]=='\r')break;printf("*");j++;}password[j]='\0';if(!strcmp(password,"930322")) /*判断密码是否正确*/{flag=1;printf("\n\t登录成功!\n");printf("\tPress [ Enter ] key to continue…");getchar();system("cls");menu();}if(!flag){printf("\t\n密码错误!\n");printf("What do you want to do next? 1.继续登录  2.返回菜单   [ ]\b\b");scanf("%d",&q);if(q==1) /*继续登录*/{system("cls");login();}else if(q==2) /*返回主菜单*/{system("cls");menu();}}}else{printf("\n\t\t\t用户名:");scanf("%s",s.name);printf("\t\t\t密码:");int j=0;while(1){password[j]=getch();if(password[j]=='\r')break;printf("*");j++;}password[j]='\0';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("\n\t登录成功!\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.返回菜单   [ ]\b\b");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("学号:%s\n",stu[k].num);printf("姓名:%s\n",stu[k].name);printf("性别:%s\n",stu[k].sex);printf("出生年月:%d/%d/%d\n",stu[k].birthday.year,stu[k].birthday.month,stu[k].birthday.day);printf("年龄:%d\n",stu[k].age);printf("籍贯:%s\n",stu[k].addr);printf("系别:%s\n",stu[k].dept);printf("专业:%s\n",stu[k].major);printf("班级:%s\n",stu[k].classs);printf("电话:%s\n",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]!='\0')if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) /*将一批数据作为一个整体一次性写入磁盘文件*/printf("文件写入错误!\n");fclose(fp);
}void printf_back()/*添加学生信息后显示的“是浏览还是返回”*/
{int w,k=0;void browse();void menu();printf("\n\n\t^_^.插入成功. ^_^\n\n");do{printf("What do you want to do next?\n\n\t1).浏览所有\t2).返回:  [ ]\b\b");scanf("%d",&w);if(w==1){system("cls");browse();}else if(w==2){system("cls");menu();}elseprintf("  选择错误!请重新选择!\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("\n\n\t请先登录!\n");printf("\n\t请按 Enter 键进入登录界面!");getchar();getchar();login();}else{struct student s;int i,n,k,w0,w1;n=load();do{k=-1;//printf_n(n); /*删除之前先显示所有学生的信息*/do{printf("\n\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 m;printf("\n\n没有这个学生的信息!\n");printf("What do you want to do next? 1.继续输入  2.返回主菜单    [ ]\b\b");scanf("%d",&m);if(m==1)deleter();else{k=0;menu();}}}while(k==-1);printf_one(k);printf("\n\t确定删除?\n\t1).是   2).返回  [ ]\b\b");/*再次询问是否删除*/scanf("%d",&w0);if(w0==1){stu[k].name[0]='\0';save(n);}elsebreak;printf("\n\t^_^.成功删除^_^.\n");printf("What do you want to do?\n\t1).继续   2).返回  [ ]\b\b");scanf("%d",&w1);}while(w1==1);system("cls");menu(); /*不再删除时返回主菜单,w1!=1*/}
}void search() /*查找*/
{void menu();int w0,k,i,n,w1,w2;struct student s;FILE *fp;if((fp=fopen("D:\\file.txt","rb"))!=NULL) /*不是空文件*/n=load();do{printf("请选择查找类别:  1.姓名  2.学号   [ ]\b\b");scanf("%d",&w1);if(w1<1||w1>2){printf("输入错误!请重新输入!\n");w2=1;}elsew2=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("\n\n没有这个学生的信息!\n!");printf("What do you want to do?\n\t1.继续    2.返回菜单  [ ]\b\b");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?\n\t1).继续    2).返回菜单   [ ]\b\b");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("\n\n没有这个学生的信息!\n!");printf("What do you want to do?\n\t1.继续    2.返回菜单  [ ]\b\b");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?\n\t1).继续   2).返回菜单   [ ]\b\b");scanf("%d",&w0);}while(w0==1);system("cls");menu();/*不再查找时返回主菜单*/}
}int modify_data(int i) /*修改信息函数*/
{int c,w1;void menu();do{puts("\n请选择要修改的选项:\n\n1.学号 2.姓名  3.性别  4.出生日期  5.年龄 6.籍贯 7.系别 8.专业 9.班级 10.电话   11.所有信息 12.取消并返回");printf("请选择?: [  ]\b\b\b");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确定?\n\n\t1).是  2).不,重新修改  3).返回不保存 [ ]\b\b");scanf("%d",&w1);}while(w1==2);return(w1); /*修改成功并选择1后返回1*/
}void modify() /*修改*/
{void menu();if(!flag){printf("\n\n\t请先登录!\n");printf("\n\t请按 Enter 键进入登录界面!");getchar();getchar();login();}else{struct student s;int i,n,k,w0=1,w1,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("\n\n没有这个学生的信息!\n");printf("What do you want to do?\n\t1.继续    2.返回菜单  [ ]\b\b");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("\n\t^_^.修改成功 ^_^.\n\n是否继续?\n\n\t1).是 2).保存返回\t[ ]\b\b");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("\n\t    ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★\n\n");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("\n\tPress [ Enter ] key to continue……\n");getchar();system("cls");
}void menu() /*主菜单*/
{system("color 2e");printf("\n\t\t\t欢迎使用学生学籍管理系统!\n");printf("\n");int n,w1;do{puts("\t\t★★★★★★★★    菜单  ★★★★★★★★");puts("\t\t★               1.登  录               ★");puts("\t\t★               2.插  入               ★");puts("\t\t★               3.删  除               ★");puts("\t\t★               4.查  找               ★");puts("\t\t★               5.修  改               ★");puts("\t\t★               6.浏  览               ★");puts("\t\t★               7.退  出               ★");puts("\t\t★★★★★★★★★★★★★★★★★★★★★");printf("请选择服务种类(1-7) : [ ]\b\b");scanf("%d",&n);if(n<1||n>7){system("cls");printf("选择错误!  请重新选择!\n");w1=1;}elsew1=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;
}

C语言课程设计——学生学籍管理系统相关推荐

  1. 班级学籍管理系统c语言论文,c语言课程设计学生学籍管理系统论文.doc

    c语言课程设计学生学籍管理系统论文 PAGE PAGE 2 1. 课题的主要功能 1.1 需求分析. 程序的功能: 对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入.显示.修改.删 ...

  2. c语言综合设计作业学籍管理系统,C语言课程设计----学生学籍管理系统

    匿名用户 1级 2014-11-13 回答 #include #include #include structstud { longnum; charname[20]; doublescore; }; ...

  3. 湖北汽车工业学院c语言,湖北汽车工业学院c语言课程设计(学生学籍管理系统)...

    为肯跌的课做得准备 /*学生信息管理问题描述:已知程序要求管理的学生信息包括: 学号(不重复),班级,姓名,年龄,性别,出生日期,地址,电话,E-mail 等. 设计一程序,完成以下功能: (1) 能 ...

  4. c语言课程设计查找分数与删除元素,c语言课程设计学生成绩管理系统

    <c语言课程设计学生成绩管理系统>由会员分享,可在线阅读,更多相关<c语言课程设计学生成绩管理系统(31页珍藏版)>请在人人文库网上搜索. 1.河南理工大学计算机科学与技术学院 ...

  5. java学籍管理系统 课程设计,Java课程设计---学生学籍管理系统

    Java课程设计---学生学籍管理系统 设计报告设计报告 课题名称学生学籍管理系统 学院 专业班级计算机应用技术 091 学号 学生 指导教师 2011 年 7 月 7 日 1 学生 指导教师 课题名 ...

  6. C语言成绩统计源代码,C语言课程设计学生成绩管理系统+源码

    <C语言课程设计学生成绩管理系统+源码>由会员分享,可在线阅读,更多相关<C语言课程设计学生成绩管理系统+源码(25页珍藏版)>请在人人文库网上搜索. 1.简易教学管理系统的设 ...

  7. C语言学生成绩管理设计总结,C语言课程设计学生成绩管理系统个人总结

    C语言课程设计学生成绩管理系统个人总结 C语言课程设计--学生成绩管理系统 个人心得体会 (徐州工程学院 14计嵌1班 07组 张凯) 这一周以来的课程设计,不仅让我明白了C语言的确是一门很有用的,但 ...

  8. C语言课程信息管理系统课程设计,c语言课程设计学生信息管理系统.doc

    c语言课程设计学生信息管理系统 课程设计报告 课程名称: 高级语言程序设计课程设计 姓 名: 汤璞君 班级学号: BX1209 121003410937 指导教师: 吉顺如 完成日期: 2013.6. ...

  9. c语言学生档案管理课设作业,2019-2020年c语言课程设计学生档案管理系统实验报告.doc...

    2019-2020年c语言课程设计学生档案管理系统实验报告.doc 还剩 10页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: *********C 语 ...

最新文章

  1. 重装windows2003遇到的老问题:0X0000007B和显卡驱动安装不上。
  2. 高小明的云平台搭建系列之一——物理机装 ESXi 5.0
  3. 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数示例 )
  4. 阿里数据中台系列之Apsara Stack控制台用户角色权限及操作界面(一)
  5. Pytho-SyntaxError: Non-ASCII character '\xe7' in file解决方法
  6. python常用库 自动化办公类 —— PyPDF2(处理pdf文件)
  7. const常量与define宏定义的区别
  8. MATLAB字符串数组中查找指定子串
  9. ictclas4j java_java使用ictclas4j分词时出现NullPointerException错误 寻高手帮忙
  10. SpringMVC框架----请求参数的绑定
  11. fcm模糊聚类matlab实例_模糊控制
  12. python添加环境变量代码_Maya中的PYTHONPATH 环境变量
  13. 鸿蒙系统底部任务栏无响应,win10底部任务栏无响应两种修复方法
  14. autojs连连看脚本可视化
  15. 《全栈性能测试修炼宝典 JMeter实战》目录—导读
  16. 2020豆瓣电影首页热门电影+热门电视剧 API
  17. 大数据架构中的流式架构和Kappa架构
  18. WLAN领域AP集群化的关键 CAPWAP协议
  19. python中如何调用无参函数_python-无参函数
  20. oracle基础教学:如何设置外键

热门文章

  1. Redis基础知识之—— hset 和hsetnx 的区别
  2. 【联盟】三星大容量MLC FLASH 换代信息(小心现在自己计划的产品哦)
  3. Discovery Session
  4. 金融的财务的一些概念
  5. all resources based on handshake
  6. Electric shaver and clean: workable when power is low
  7. 纪念一下第一次在开源项目上commit:好神奇啊!
  8. rice university phd application result
  9. 能够显著降低焦虑的两种方法
  10. 龟兔赛跑的升级版本和在课业学习上的应用