学生成绩管理系统(C语言实现)
来源:互联网 发布:淘宝客的收入怎么提走 编辑:程序博客网 时间:2024/06/07 23:49
//学生成绩管理系统(C语言实现)
#include<stdio.h> #include<stdlib.h>#include<string.h>//C语言里面关于字符数组的函数定义的头文件,常用函数有strlen、strcmp、strcpy等等#include<conio.h>//用getchar()、getch()就要包含<conio.h>#include<dos.h> #define LEN sizeof(struct student)#define FORMAT "%d%10s%16d%13d%15d%19.2f\n"#define DATA stu[i].num,stu[i].name,stu[i].gaos_score,stu[i].cyy_socre,stu[i].English_score,stu[i].sumstruct student//定义结构体 {int num;//学号 char name[20];//姓名 int gaos_score;//高数成绩 由于在vc++里不能对浮点型进行初始化,故定义为int型而不是定义成float,double等 int cyy_socre;//C语言成绩 int English_score;//大英成绩 float sum;//总成绩 }stu[100];//由于不知道输入多少名学生信息,故直接定义足够大的数组长度 int main(){ //对各函数模板进行声明void show();//显示信息 void input();//输入信息 void search();//查询信息void del();//删除信息void modify();//修改信息void insert();//插入信息void order();//排序void number();//统计学生人数 void menu();//菜单 void bben();//版本信息 int n;bben();menu(); scanf("%d",&n);//输入选择功能的编号 while(n) { switch(n) { case 1: input();break; case 2: search();break; case 3: del();break; case 4: modify();break; case 5: insert();break; case 6: order();break; case 7: number();break; case 8: show();printf("请按任意键返回菜单!\n");break; default:break; } getch(); menu();//执行完功能再次显示菜单界面 scanf("%d",&n);//输入选择功能的编号 } return 0;}void bben(){int i,j;system("cls");printf("\n\n\n\n\n");printf(" * * \n");printf(" *** *** \n");printf(" ***** ***** \n"); printf(" ***************欢迎进入学生成绩管理系统***************\n");printf(" ** **\n");printf(" ** **\n");printf(" ** 版本1.2 **\n");printf(" ** **\n");printf(" ** **\n");printf(" ** 16网络工程x **\n");printf(" ** **\n");printf(" ** **\n");printf(" ** 某某某 **\n");printf(" ** **\n");printf(" ******************************************************\n");printf("\n\n\n\n\n\n\n"); system("pause");//画面停止 }void menu(){system("cls");//清屏 printf("\n\n\n\n\n ********************菜单********************\n");printf(" * *\n");printf(" * 0.退出 *\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(" * *\n");printf(" ********************************************\n");printf(" 请输入您要执行的序号(0--8):");}void show() { FILE *fp; int i,a=0; fp=fopen("data.txt","rb");//打开文件 while(!feof(fp))//判断文件指针*fp是否指向文件末尾 { if(fread(&stu[a] ,LEN,1,fp)==1) a++; } fclose(fp); printf("学号 姓名 高数 C语言 大学英语 总分\t\n"); for(i=0;i<a;i++) { printf(FORMAT,DATA);//将信息打印 }}void input()//录入学生信息模块 {int i,a=0,n;//a是记录的条数char ch[2];FILE *fp;//定义文件指针if((fp=fopen("data.txt","a+"))==NULL)//打开指定文件 a+:为读/写打开一个指定文件 第一次打开文件,寻找原本存在的学生信息并且显示出来 {printf("不能打开文件\n");return;} while(!feof(fp)){if(fread(&stu[a],LEN,1,fp)==1)a++; //记录当前条数 }fclose(fp);if(a==0)printf("不能记录!\n");else{system("cls");show(); } if((fp=fopen("data.txt","wb"))==NULL)//wb:(只写)为输出打开一个二进制文件 第二次打开文件,往文件里写入学生信息 { printf("不能打开文件\n"); return; } for(i=0;i<a;i++) fwrite(&stu[i],LEN,1,fp); printf("请输入y/n(提示,输入y继续输入,输入n结束输入):"); scanf("%s",ch); while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) { printf("学号");scanf("%d",&stu[a].num);for(i=0;i<a;i++)if(stu[i].num==stu[a].num){printf("该学号已存在,请按任何键继续!");getch();fclose(fp);return;}printf("姓名:");scanf("%s",stu[a].name);printf("高数:");scanf("%d",&stu[a].gaos_score);printf("C语言:");scanf("%d",&stu[a].cyy_socre);printf("英语:");scanf("%d",&stu[a].English_score);stu[a].sum=stu[a].gaos_score+stu[a].cyy_socre+stu[a].English_score;if(fwrite(&stu[a],LEN,1,fp)!=1){printf("不能保存!");getch();}else{printf("%s 已被保存!\n",stu[a].name);a++;}printf("是否继续y/n(提示,输入y继续输入,输入n结束输入):");scanf("%s",ch); } fclose(fp); printf("OK!请按任意键返回主菜单!\n");}void search()//查询学生信息 {FILE *fp;int snum,i,a=0;char ch[2];if((fp=fopen("data.txt","rb"))==NULL)//rb:(只读)以二进制形式 { printf("不能打开文件\n"); return;}while(!feof(fp)) {if(fread(&stu[a],LEN,1,fp)==1) a++; } fclose(fp);if(a==0){printf("没有记录!\n");return;}printf("请输入要查询学生的学号:");scanf("%d",&snum);for(i=0;i<a;i++)if(snum==stu[i].num){printf("已经找出该学生,是否要显示(y/n):");scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){printf("学号 姓名 高数 C语言 大学英语 总分\t\n");printf(FORMAT,DATA); break;}}if(i==a) printf("未能找到要查询的信息!\n");printf("请按任意键返回主菜单!\n");}void del()//删除学生信息 {FILE *fp;int snum,i,j,a=0;char ch[2];if((fp=fopen("data.txt","r+"))==NULL){ printf("不能打开文件\n"); return;}while(!feof(fp)) if(fread(&stu[a],LEN,1,fp)==1) a++; fclose(fp);if(a==0){printf("没有记录!\n");return;}printf("请输入要删除学生的学号:");scanf("%d",&snum);for(i=0;i<a;i++)if(snum==stu[i].num)break;printf("已经找到该学生,是否删除(y/n):");scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)//判断是否要进行删除 for(j=i;j<a;j++) stu[j]=stu[j+1];//将后一个记录移到前一个记录的位置 a--;//记录的总个数减1 if((fp=fopen("data.txt","wb"))==NULL) { printf("不能打开文件\n"); return; } for(j=0;j<a;j++)//将更改后的记录重新写入指定的磁盘文件中 if(fwrite(&stu[j] ,LEN,1,fp)!=1) { printf("不能保存!\n"); getch(); } fclose(fp); printf("修改成功!\n"); printf("请按任意键返回主菜单!\n");}void modify()//修改学生信息{FILE *fp;int snum,i,j,a=0;if((fp=fopen("data.txt","r+"))==NULL){printf("不能打开文件!\n");return;}while(!feof(fp)) //判断文件指针是否指到文件末尾if(fread(&stu[a],LEN,1,fp)==1)a++;if(a==0){printf("没有记录!\n");fclose(fp);return;} printf("请输入你想修改的信息的学生学号!\n"); scanf("%d",&snum); for(i=0;i<a;i++) if(snum==stu[i].num) break; printf("已经找到该学生,请进行修改!\n"); printf("姓名:");scanf("%s",stu[i].name);printf("高数:");scanf("%d",&stu[i].gaos_score);printf("C语言:");scanf("%d",&stu[i].cyy_socre);printf("英语:");scanf("%d",&stu[i].English_score);stu[i].sum=stu[i].gaos_score+stu[i].cyy_socre+stu[i].English_score;if((fp=fopen("data.txt","wb"))==NULL){printf("不能够打开文件!\n");return;}for(j=0;j<a;j++)if(fwrite(&stu[j],LEN,1,fp)!=1){printf("不能保存!\n");getch();}fclose(fp);printf("请按任意键返回主菜单!\n");}void insert()//插入学生信息 {FILE *fp;int i,j,k,snum,m=0;if((fp=fopen("data.txt","r+"))==NULL){printf("不能打开文件!\n");return; }while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;if(m==0){printf("没有记录!\n");fclose(fp);} printf("请选择你要插入的位置!(输入要插入的已存在的学号)\n");scanf("%d",&snum);for(i=0;i<m;i++)if(snum==stu[i].num)break;for(j=m-1;j>i;j--)//将i以后的数字依次推后一位 stu[j+1]=stu[j];printf("请输入新的信息!\n");printf("学号:");scanf("%d",&stu[i+1].num);for(k=0;k<m;k++)if(stu[k].num==stu[i+1].num){printf("学生信息已经成功插入,请按任意键继续!\n");getch();fclose(fp); } printf("姓名:");scanf("%s",stu[i+1].name);printf("高数成绩:");scanf("%d",&stu[i+1].gaos_score);printf("C语言成绩:");scanf("%d",&stu[i+1].cyy_socre);printf("英语成绩:");scanf("%d",&stu[i+1].English_score);stu[i+1].sum =stu[i+1].gaos_score+stu[i+1].cyy_socre+stu[i+1].English_score; if((fp=fopen("data.txt","wb"))==NULL){printf("不能够打开文件!\n");return;} for(k=0;k<m+1;k++) if(fwrite(&stu[k] ,LEN,1,fp)!=1){printf("不能够保存!\n");getch();}fclose(fp);printf("请按任意键返回主菜单!\n");}void order()//将成绩进行排序并输出 {FILE *fp;struct student t;int i,j,m=0;if((fp=fopen("data.txt","r+"))==NULL){printf("不能够打开文件!\n");return;}while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;fclose(fp);if(m==0){printf("没有记录!\n");return;}if((fp=fopen("data.txt","wb"))==NULL){printf("不能打开文件!\n");return;}for(i=0;i<m-1;i++)for(j=i+1;j<m;j++)if(stu[i].sum<stu[j].sum){t=stu[i];stu[i]=stu[j];stu[j]=t;}if((fp=fopen("data.txt","wb"))==NULL){printf("不能打开!\n");return; }for(j=0;j<m;j++)if(fwrite(&stu[j],LEN,1,fp)!=1) { printf("%s不能储存!\n"); getch(); } fclose(fp); show(); printf("请按任意键返回主菜单!\n");}void number()//统计学生数量 { FILE *fp; int m=0; if((fp=fopen("data.txt","r+"))==NULL) { printf("不能够打开文件!\n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++; if(m==0) { printf("不能够记录!\n"); fclose(fp); return; } printf("这个班共有%d个学生!\n",m); fclose(fp); printf("请按任意键返回主菜单!\n");}
阅读全文
2 0
- 学生成绩管理系统(C语言实现)
- 学生成绩管理系统 c语言实现
- C语言实现学生成绩管理系统
- C语言实现---学生成绩管理系统
- C语言实现学生成绩管理系统
- 学生成绩管理系统(C语言)
- 学生成绩管理系统(C语言)
- 学生成绩管理系统(C语言)
- 学生成绩管理系统(C语言)
- (C语言) 怎么用代码实现一个学生成绩管理系统
- 学生成绩管理系统课程设计(C语言,链表实现)
- C语言实现学生成绩管理系统设计
- C语言学生成绩管理系统
- C语言 学生成绩管理系统
- C语言--学生成绩管理系统
- 学生成绩管理系统 C语言
- C语言学生成绩管理系统
- C语言 学生成绩管理系统
- js去空格多种方式
- 基于Redis实现分布式锁
- 人脸旋转归一化 (根据特征点定位,dlib+opencv)
- 替换空格
- 阿里云Server2012 IIS8.0 404.17错误 解决方案
- 学生成绩管理系统(C语言实现)
- 4117:简单的整数划分问题
- 路径中“/” "\" "\\"的区别
- 欢迎使用CSDN-markdown编辑器
- MaxCompute常见错误汇总(更新ing)
- 阈值分割笔记
- js页面弹出一个带有输入框的弹窗,并判断点击的是确定还是取消按钮
- 中国人工智能大势将至未来已来
- 剑指offer