600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C语言编写学生信息管理系统

C语言编写学生信息管理系统

时间:2024-06-27 11:26:55

相关推荐

C语言编写学生信息管理系统

#include<stdio.h>#include<ctype.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<time.h>#define MAX_INDEX 100/*定义一个学生信息的结构体,由于C语言没有面向对象还是有点难受的*/typedef struct{char id[20];char name[20];char sex[5];int age;}STU;void return_menau();//返回主菜单void print_menau();//打印主菜单int select_menau();//接收键入的编号并返回编号以调用int get_student_info(STU stu[]);//先输入要录入个数,录入信息,返回个数void ls_info(STU stu[],int n);//列出所有学生的信息void search_info_by_name(STU stu[],int n);//通过名字查找学生信息void search_info_by_id(STU stu[],int n);//通过学号查找学生信息void change_info_by_id(STU stu[],int n);//搜学号找到该学生并修改ta的信息int del_by_id(STU stu[],int n);//通过学号删除改学生的信息int add_info(STU stu[],int n);//增加一位学生,并插入到某个位置void save_info(STU stu[], int n);//把学生信息保存到txt文件void load_info(STU stu[], int n);//从txt文件中读取学生信息int find_name(STU stu[],int n,char *s);//通过名字找到结构体数组中该学生的下标并返回下标int find_id(STU stu[],int n,char *s);//通过学号找到结构体数组中该学生的下标并返回下标void guess_student(STU stu[],int n);//给出学号猜学生的名字//调用函数列表void return_menau(){char mistake[20];//设立一个数组防止错误的键入printf("按回车键返回主菜单...\n");gets(mistake);return;}// 显示菜单void print_menau(){printf("###############主菜单##############\n");printf(" 1. 录入学生信息\n");printf(" 2. 查看所有学生信息\n");printf(" 3. 以姓名查找学生信息\n");printf(" 4. 以学号查找学生信息\n");printf(" 5. 以学号删除学生信息\n");printf(" 6. 以学号修改学生信息\n");printf(" 7. 增加一组学生信息\n");printf(" 8. 把学生信息保存到文件\n");printf(" 9. 从文件加载学生信息\n");printf(" 10. 小游戏:根据学号猜学生\n");printf(" 11. 退出程序\n");printf("###################################\n");return;}// 选择菜单编号int select_menau(){print_menau();printf("\n请输入你要选择的编号(1-10): ");int your_input;while(1){scanf("%d",&your_input);getchar();if(your_input>10 || your_input<1){system("cls");print_menau();printf("\n你输入的编号无效,请重新输入:");continue;}elsebreak;}return your_input;}//输入学生信息int get_student_info(STU stu[]){int i,n;system("cls");printf("\n请输入你要记录的学生的数量\n");scanf("%d",&n);system("cls");printf("请输入%d位学生的信息:\n",n);printf("请按以下顺序进行学生信息的输入\n");printf("学号 姓名 性别年龄\n");for(i=0;i<n;i++){scanf("%s",stu[i].id);scanf("%s",stu[i].name);scanf("%s",stu[i].sex);scanf("%d",&stu[i].age);getchar();//为了美观起见,每输入一个学生显示一个,最后不显示这一列if(i!=n-1)printf("学号 姓名 性别年龄\n");}printf("信息正在录入...\n");sleep(2);printf("你输入的信息已录入系统...\n");if(i==n){printf("信息全部录入了哈!");}else{printf("你输入的多了或者少了哦!老铁");}return n;}//显示学生信息void ls_info(STU stu[],int n){int i;system("cls");if(n == 0){printf("系统中暂无学生信息哦!\n请你先录入学生信息或者从文件读一波学生信息吧!");return;}printf("\n##################学生清单##################\n");printf("学号姓名性别年龄\n");printf("\n############################################\n");for(i=0;i<n;i++){printf("%-14s%-14s%-14s%-14d\n", stu[i].id, stu[i].name, stu[i].sex, stu[i].age);//每显示10个学生按回车向后翻页if ((i + 1) % 10 == 0){printf("---------------------------------------------\n");printf("每次显示10个学生的信息,按回车继续获得剩下的...\n");getchar();system("cls");printf("\n*******************学生清单*******************\n");printf("学号姓名性别年龄\n");printf("---------------------------------------------\n");}}printf("\n");return;}//按学生名字进行查询学生信息void search_info_by_name(STU stu[],int n){char temp[20];int i;system("cls");if(n==0){printf("系统中暂无学生信息哦!\n请你先录入学生信息或者从文件读一波学生信息吧!");return;}printf("请输入查找的学生的名字:\n");scanf("%s", temp);getchar();i = find_name(stu, n, temp);if(i > n - 1){printf("没有名字为%s的学生..\n",temp);}else{printf("嗱!这是你要的!\n");printf("%s\n",stu[i].id);printf("%s\n",stu[i].name);printf("%s\n",stu[i].sex);printf("%d\n",stu[i].age);}return;}//通过学号进行学生信息查询void search_info_by_id(STU stu[],int n){system("cls");if(n == 0){printf("系统中暂无学生信息哦!\n请你先录入学生信息或者从文件读一波学生信息吧!");return;}char s[20];printf("请输入你要查询的学生的学号:\n");scanf("%s",s);int flag = 0;for(int i=1;i<=n;i++){if(strcmp(stu[i].name,s)==0){flag = 1;printf("嗱!这是你要的!\n");printf("%s\n",stu[i].id);printf("%s\n",stu[i].name);printf("%s\n",stu[i].sex);printf("%d\n",stu[i].age);}}if(!flag){printf("你要查询的学号为%s的学生不存在!\n",s);}return;}// 通过学号进行学生信息的修改void change_info_by_id(STU stu[],int n){if(n == 0){printf("系统中暂无学生信息哦!\n请你先录入学生信息或者从文件读一波学生信息吧!");return;}system("cls");char s[20];int i;printf("请输入你要修改的学生的想学号:\n");scanf("%s",s);i = find_id(stu, n, s);if(i == n){printf("没有找到学号为%s的学生哇!\n",s);}else{printf("学号为%s的学生信息修改前为:\n",s);printf("%s\n",stu[i].id);printf("%s\n",stu[i].name);printf("%s\n",stu[i].sex);printf("%d\n",stu[i].age);printf("\n");printf("请输入要修改的信息:\n");printf("学号 姓名 性别年龄\n");scanf("%s", stu[i].id);scanf("%s", stu[i].name);scanf("%s", stu[i].sex);scanf("%d", &stu[i].age);getchar();}system("cls");printf("正在修改学号为%s的学生的信息...\n",s);sleep(2);system("cls");printf(" 修改成功\n");printf("修改后的信息为:\n");printf("%s\n",stu[i].id);printf("%s\n",stu[i].name);printf("%s\n",stu[i].sex);printf("%d\n",stu[i].age);return;}int del_by_id(STU stu[],int n){char s[20];int i;system("cls");if(n == 0){printf("系统中暂无学生信息哦!\n请你先录入学生信息或者从文件读一波学生信息吧!");return n;}printf("请输入你要删除的学生的学号:\n");\scanf("%s",s);getchar();i = find_name(stu, n ,s);if(i==n){printf("没有找到学号为%s的学生哇!\n", s);}else{printf("正在删除学号为%s的学生...\n",s);sleep(2);//此学生后面的学生都向前移动一位,来实现删除for(;i<n;i++){strcpy(stu[i].name,stu[i+1].name);strcpy(stu[i].id,stu[i+1].id);strcpy(stu[i].sex, stu[i + 1].sex);stu[i].age = stu[i + 1].age;}//学生的总数减一了哈!n--;printf("删除成功了哈!\n");}return n;}//增加学生int add_info(STU stu[],int n){system("cls");if(n == 0){printf("系统中暂无学生信息哦!\n请你先录入学生信息或者从文件读一波学生信息吧!");return n;}STU temp;int i;char s[20];printf("请输入你想要增加的学生的信息:\n");printf(" 学号 姓名 性别年龄\n");scanf("%s", temp.id);scanf("%s", temp.name);scanf("%s", temp.sex);scanf("%d", &temp.age);getchar();if(n>0){printf("请输入你想要查到哪个学生的后面,输入ta的姓名哈:\n");scanf("%s",s);getchar();i = find_name(stu, n , s);}else{i = 0;}printf("正在插入学生信息...");//利用该位置以后的学生都向后移动一位以实现增加学生for(int j=n-1;j>=i;j--){strcpy(stu[i + 1].id, stu[i].id);strcpy(stu[i + 1].name, stu[i].name);strcpy(stu[i + 1].sex, stu[i].sex);stu[i + 1].age = stu[i].age;}//增加当前输入的学生哈!strcpy(stu[i].id, temp.id);strcpy(stu[i].name, temp.name);strcpy(stu[i].sex, temp.sex);stu[i].age = temp.age;//学生总数加一了n++;printf("此学生信息插入成功!\n");return n;}//保存学生信息到txt文件void save_info(STU stu[], int n){system("cls");int i;FILE *fp;if((fp = fopen("D://学生信息管理系统.txt","wb")) == NULL){printf("无法打开学生信息系统文件!\n");exit(1);}printf("\n正在保存...\n");fprintf(fp, "%d", n);fprintf(fp, "\r\n");for(i=0;i<n;i++){fprintf(fp,"%-14s%-14s%-14s%-14d", stu[i].id, stu[i].name, stu[i].sex, stu[i].age);fprintf(fp, "\n");}fclose(fp);sleep(1);system("cls");printf("保存成功!\n");return ;}//从txt文件读取学生信息void load_info(STU stu[]){int i,n;FILE *fp;if ((fp = fopen("D://学生信息管理系统.txt", "rb")) == NULL){printf("无法打开学生信息系统文件!\n");exit(1);}fscanf(fp, "%d", &n);for (i = 0; i < n; i++)fscanf(fp, "%14s%14s%14s%14d", stu[i].id, stu[i].name, stu[i].sex, &stu[i].age);fclose(fp);printf("成功加载学生信息!\n");return ;}// 找名字并返回所在的位置,没有则返回总数以判断int find_name(STU stu[],int n,char *s){int i = 0;for(i=0;i<n;i++){if(strcmp(s,stu[i].name) == 0)return i;}return i;}// 找id并返回所在位置,没有则返回总数以判断int find_id(STU stu[],int n,char *s){int i = 0;for(i=0;i<n;i++){if(strcmp(s,stu[i].id) == 0)return i;}return i;}void guess_student(STU stu[],int n){srand(time(NULL));int random_number = int(rand()%n);printf("%d\n",random_number);printf("请你猜一下学号为%s的同学是谁\n",stu[random_number].id);printf("请输入0或1并敲回车,0表示揭晓答案,1表示继续猜,2表示不玩了\n");int choice;scanf("%d",&choice);getchar();if(choice==0)printf("%s\n", stu[random_number].name);else if(choice==1){guess_student(stu,n);}else{return;}}//main函数int main(int argc, char const *argv[]){STU stu[MAX_INDEX];int len = 0;while(1)//无限循环等到退出{system("cls");//利用switch语句进行编码的选择以调用函数switch(select_menau()){case 1:len = get_student_info(stu);break;case 2:ls_info(stu,len);break;case 3:search_info_by_name(stu,len);break;case 4:search_info_by_id(stu,len);break;case 5:len = del_by_id(stu,len);break;case 6:change_info_by_id(stu,len);break;case 7:len = add_info(stu,len);break;case 8:save_info(stu,len);break;case 9:load_info(stu);break;case 10:guess_student(stu,len);break;case 11:exit(0);break;}return_menau();}return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。