收藏 分销(赏)

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

上传人:二*** 文档编号:4540886 上传时间:2024-09-27 格式:DOC 页数:20 大小:84.54KB 下载积分:5 金币
下载 相关 举报
c语言课程设计学生信息管理系统.doc_第1页
第1页 / 共20页
本文档共20页,全文阅读请下载到手机保存,查看更方便
资源描述
题目名称: 学生信息管理系统 算法分析: 1用结构体标出信息系统的成员:学生学号,学生姓名,班级,成绩,排名 2 运用c语言的文献知识将系统的信息存放在c盘下的“zuoye.txt”的文献夹下 3 定义各个子函数(1)定义输入信息函数,将学生信息按一定格式用scanf函数输入(记录M个学生的信息); (2)定义输出函数,每两个表一页直到最后一个; (3)定义信息查询函数。a,定义按学号查询函数,假如输入的学号等于学生学号则输出要查询的信息;b,定义按姓名查询函数,假如输入的姓名字符串等于其中一个学生的姓名字符串则输出信息;c,定义按班级查找函数,假如输入的数字等于其中学生的班级数,则输出该信息;d,定义按成绩查找函数,假如输入的数字等于其中学生的成绩数,则输出该信息;e,定义查找总函数,输入一个数选择查找方式,1-4分别相应调用abcd四个函数。 (4)定义删除信息函数。输入的数字作为要删除的学生学号,输出要删除的学生信息后选择是否删除,删除后将第g+1个的信息赋给第g个,输出删除后的信息表。 (5)定义信息修改函数。输入的数字等于要修改的学生学号,输出要修改的学生信息后选择是否修改,用switch,case语句选择要修改的项目,输入n,y决定是否继续直到不继续修改,输出学生信息。 (6)定义信息记录函数。输入一个数字作为成绩,比较M个学生成绩是否等于输入的数字,记录相等的个数n输出。 (7)定义成绩排序函数。用冒泡排序法将M个学生的成绩按从大到小的顺序排列后输出。 4 定义主函数。调用读取文献函数,输入数字1-5分别相应调用修改学生信息函数,删除学生信息函数,查找学生信息函数,记录学生信息函数,学生成绩排行信息函数,0表达退出系统。最后调用保存文献函数。结束程序。 流程设计: 学生信息管理系统程序 用结构体说明各个成员 定义各个子函数 定义成绩排序函数 定义记录函数 定义删除信息函数 定义修改信息函数 定义输入输出函数 定义信息查询函数 用冒泡排序法将M个学生的成绩按从大到小排列 比较成绩数是否等于输入数 选择要删除的学号,判断是否删除 switch,case语句选择查询方式 选择要修改的信息1-4 定义按学号,姓名,班级,成绩的函数 计数,输出n 将第g+1个信息赋给第g个 判断是否继续修改直到不继续,结束 定义主函数,用switch case选择要调用的子函数 保存文献退出系统结束程序 代码设计: #include<stdio.h> #include<stdlib.h> #include<string.h> #define M 2 #define PAGE 2 /*学生信息结构体类型*/ typedef struct {int num; /*学号*/ char name[20]; /*姓名*/ int banji; /*班级*/ int chengji; /*成绩*/ int paiming; /*排名*/ }STUDENTS; int read_file(STUDENTS students[])/*文献的读取*/ { FILE *fp;/*定义一个文献指针变量*/ int i=0; if((fp=fopen("zuoye.txt","r"))==NULL)/*文献空判断,fopen打开一个文献*/ { printf("\n\n*****库存文献不存在!请创建"); return 0; } while(feof(fp)!=1)/*文献是否结束*/ { fread(&students[i],sizeof(STUDENTS),1,fp);/*读取文献*/ if(students[i].num==0)/*学号是否为零*/ break; else i++; } fclose(fp);/*关闭文献*/ return i; } void save_file(STUDENTS students[],int sum)/*保存文献*/ { FILE *fp; int i; if((fp=fopen("zuoye.txt","wb"))==NULL)/*判断文献是否为空*/ { printf("读文献错误!\n"); return; } for(i=0;i<sum;i++) if(fwrite(&students[i],sizeof(STUDENTS),1,fp)!=1)/*向文献写入的数据块不等于1*/ printf("写文献错误!\n"); fclose(fp); } /*输入模块*/ int input(STUDENTS students[]) { int i=0; printf("\n\n 录入学生信息 (最多%d人)\n",M); printf("----------------------------------------------------\n"); do { printf("\n 第%d人",i+1); printf("\n 学生学号:"); scanf("%d",&students[i].num); if(students[i].num==0) break; printf("\n 学生姓名:"); scanf("%s",students[i].name); printf("\n 班级:"); scanf("%d",&students[i].banji); printf("\n 成绩:"); scanf("%d",&students[i].chengji); printf("\n 排名:"); scanf("%d",&students[i].paiming); i++; }while(i<M); printf("\n --%d个学生信息输入完毕!--\n",i); printf("\n 按任意键返回主菜单!"); getchar(); return i; } /*输出模块*/ void output(STUDENTS students[]) {int i=0,j=0,page=1; printf("\n\n --学生信息表-- 第%d页\n\n",page);/*每两个一页*/ printf("学生学号----姓名-----班级----- 成绩-----排名\n"); printf("-------------------------------------------------------\n"); do { if(students[i].num!=0) { j++; if(j%PAGE!=0) { printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name, students[i].banji, students[i].chengji,students[i].paiming); printf("------------------------------------------------------\n"); } } else { printf("按任意键继续!"); getchar(); printf("\n\n --学生信息表-- 第%d页\n\n",++page); printf("学生学号----姓名-----班级----- 成绩-----排名\n"); printf("------------------------------------------\n"); { printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name, students[i].banji, students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); } } i++; }while(students[i].num<M); printf("按任意键返回主菜单!"); getchar( ); } /*学生信息查询*/ void find_by_num(STUDENTS students[],int sum) /*按学号查找*/ { int i,find_num; printf("\n 请输入要查找的学生学号:"); scanf("%d",&find_num); for(i=0;i<sum;i++) if(students[i].num==find_num) { printf("这是您所查找到的学生信息:\n"); printf("学生学号----姓名-----班级----- 成绩-----排名\n"); printf("------------------------------------------\n"); printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name, students[i].banji, students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); break; } else { printf("\n 未找到要查找的学生信息,按任意键返回!"); getchar(); } } void find_by_name(STUDENTS students[],int sum)/*按姓名查找*/ { int i; char find_name[20]; printf("\n 请输入要查找的学生姓名:"); scanf("%s",find_name); for(i=0;i<sum;i++); if(strcmp(students[i].name,find_name)==0) /*字符串比较相等返回0*/ {printf("这是您所查找到属于该学生的信息:"); printf("学生学号----姓名-----班级----- 成绩-----排名\n"); printf("------------------------------------------\n"); printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name, students[i].banji, students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); } else {printf("\n 未找到要查找的学生信息,按任意键返回!"); getchar(); } } void find_by_banji(STUDENTS students[],int sum)/*按班级查找*/ { int i; int find_banji; printf("\n 请输入要查找的学生班级:"); scanf("%d",&find_banji); for(i=0;i<sum;i++) if(students[i].banji==find_banji) {printf("这是您所查找到属于该班级的学生:"); printf("学生学号----姓名-----班级----- 成绩-----排名\n"); printf("------------------------------------------\n"); printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name, students[i].banji, students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); } else {printf("\n 未找到要查找的班级信息,按任意键返回!"); getchar(); } } void find_by_chengji(STUDENTS students[],int sum)/*按成级查找*/ { int i; int find_chengji; printf("\n 请输入要查找的学生成绩:"); scanf("%d",&find_chengji); for(i=0;i<sum;i++) { if(students[i].chengji==find_chengji) { printf("这是您所查找到有该成绩的学生:"); printf("学生学号----姓名-----班级----- 成绩-----排名\n"); printf("------------------------------------------\n"); printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name, students[i].banji, students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); } else {printf("\n 未找到要查找的学生信息,按任意键返回!"); getchar(); } } } void find(STUDENTS students[],int sum)/*定义查找总函数*/ { int choice; printf("\n 您要按照哪种方式查找? \n");/*用switch语句*/ printf("\n 1.按学生学号查找 \n"); printf("\n 2.按学生姓名查找 \n"); printf("\n 3.按学生班级查找 \n"); printf("\n 4.按学生成绩查找 \n"); printf("\n 0. 退出\n"); printf("\n 请选择(0-4): \n"); scanf("%d",&choice); switch(choice) { case 1: find_by_num(students,sum); break; case 2: find_by_name(students,sum); break; case 3: find_by_banji(students,sum); break; case 4: find_by_chengji(students,sum); break; case 0: break; } } /*删除信息模块*/ void del(STUDENTS students[]) { int i,g,sum; int del_num; printf("\n 请输入要删除的学生学号:"); scanf("%d",&del_num); for(i=0;i<sum;i++) if(students[i].num==del_num)/*通过学号判断*/ { printf("这是您所要删除学生信息:\n"); printf("学生学号----姓名-----班级----- 成绩-----排名\n"); printf("------------------------------------------\n"); printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name, students[i].banji, students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); printf("您确认要删除吗?"); printf("按任意键继续!"); getchar(); printf("已成功删除学生信息!"); } for(g=i;g<sum;g++) { students[g]=students[g+1]; printf("删除后的信息表:\n"); printf("学生学号----姓名-----班级----- 成绩-----排名\n"); printf("------------------------------------------\n"); printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name, students[i].banji, students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); } } /*信息修改模块*/ void modify(STUDENTS students[],int sum) {int i=0,choice,modify_num,flag; do { printf("请输入要修改的学生学号:"); scanf("%d",&modify_num); for(i=0;i<sum;i++) if(students[i].num==modify_num) { printf("\n\n --学生信息-- \n\n"); printf("学生学号----姓名-----班级----- 成绩-----排名\n"); printf("------------------------------------------\n"); printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name, students[i].banji, students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); printf("\n 您要修改哪一项?\n"); printf("\n 1.学生姓名\n"); printf("\n 2.学生班级\n"); printf("\n 3.成绩\n"); printf("\n 4.排名\n"); printf("\n 请选择(1-4):\n"); scanf("%d",&choice); switch(choice) { case 1: printf("\n 请输入修改后的学生姓名:"); scanf("%s",students[i].name); break; case 2: printf("\n 请输入修改后的学生班级:"); scanf("%s",students[i].banji); break; case 3: printf("\n 请输入修改后的成绩:"); scanf("%s",students[i].chengji); break; case 4: printf("\n 请输入修改后的排名:"); scanf("%d",&students[i].paiming); break; } printf("\n\n --学生信息-- \n\n"); printf("学生学号----姓名-----班级----- 成绩-----排名\n"); printf("------------------------------------------\n"); printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name, students[i].banji, students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); break; } else { printf("\n 该学生不存在!"); } printf("\n 修改成功!\n"); printf("您要继续修改吗?(Y/N)"); if (choice=='Y'||choice=='y') { flag=1; printf("\n 继续!\n"); } else flag=0; }while( flag==1); /*直到不修改结束循环*/ printf("\n 按任意键返回主菜单!"); getchar(); } /*学生信息记录模块*/ void count(STUDENTS students[],int sum) /*记录某个成绩的学生个数*/ { int i; int count_chengji; int n=0; printf("请输入一个成绩:\n"); scanf("%d",&count_chengji); for(i=0;i<sum;i++) { if(students[i].chengji==count_chengji)/*计数*/ n++; break; } printf("记录出属于该成绩的一共有%d个人\n",n); } /*成绩排序模块*/ void sort(STUDENTS students[],int sum) { STUDENTS t; int i,j; printf("\n\n --学生信息-- \n\n"); printf("学生学号----姓名-----班级----- 成绩-----排名\n"); printf("------------------------------------------\n"); for(i=1;i<sum;i++) { for(j=i+1;j<sum;j++) if(students[j].chengji>students[i].chengji)/*冒泡排序法*/ {t=students[j]; students[j]=students[i]; students[i]=t; } } for(i=0;i<sum;i++) { printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name, students[i].banji, students[i].chengji,students[i].paiming); printf("---------------------------------------------\n"); } } void main() { STUDENTS students[M]; int choice,sum; sum=read_file(students);/*文献读取*/ if (sum==0) {printf("请录入学生信息!*******\n"); sum=input(students);/*输入信息*/ } do { printf("\n\n\n *******学生信息管理系统******* \n\n"); printf(" 1.修改学生信息 \n\n"); printf(" 2.删除学生信息\n\n"); printf(" 3.查找学生信息\n\n"); printf(" 4.记录学生信息\n\n"); printf(" 5.学生成绩排行信息\n\n"); printf(" 0.退出系统\n\n"); printf(" 请选择\n\n"); scanf("%d",&choice); switch(choice) { case 1 : modify(students,sum); break; case 2 : del(students); break; case 3 : find(students,sum); break; case 4 : count(students,sum); break; case 5 : sort(students,sum); break; case 0 : break; } }while(choice!=0); /*直到选择退出系统*/ save_file(students,sum); } 运营结果:
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服