《C语言编写 学生成绩管理系统》

/* (程序头部凝视開始)
* 程序的版权和版本号声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名: 学生成绩管理系统
* 作 者: 刘江波
* 完毕日期: 2012 年 6 月 23 日
* 版 本 号: v.623

* 对任务及求解方法的描写叙述部分
* 程序头部的凝视结束
*/

#include "stdio.h"#include"string"/*定义学生结构体*/struct Student{char ID[20];char Name[20];float Mark1;float Mark2;float Mark3;float Average;};/*声明学生数组及学生数量*/struct Student students[1000];int num=0;/*求平均值*/float Avg(struct Student stu){return (stu.Mark1+stu.Mark2+stu.Mark3)/3;}/*通过学号返回数组下标*/int Student_SearchByIndex(char id[]){int i;for (i=0;i<num;i++){if (strcmp(students[i].ID,id)==0){return i;}}return -1;}/*通过姓名返回数组下标*/int Student_SearchByName(char name[]){int i;for (i=0;i<num;i++){if (strcmp(students[i].Name,name)==0){return i;}}return -1;}/*显示单条学生记录*/void Student_DisplaySingle(int index){printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");printf("-------------------------------------------------------------\n");printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[index].ID,students[index].Name,students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);}/*插入学生信息*/void Student_Insert(){while(1){printf("请输入学号:");scanf("%s",&students[num].ID);getchar();printf("请输入姓名:");scanf("%s",&students[num].Name);getchar();printf("请输入成绩:");scanf("%f",&students[num].Mark1);getchar();printf("请输入成绩:");scanf("%f",&students[num].Mark2);getchar();printf("请输入成绩:");scanf("%f",&students[num].Mark3);getchar();students[num].Average=Avg(students[num]);num++;printf("是否继续?(y/n)");if (getchar()=='n'){break;}}}/*改动学生信息*/void Student_Modify(){//float mark1,mark2,mark3;while(1){char id[20];int index;printf("请输入要改动的学生的学号:");scanf("%s",&id);getchar();index=Student_SearchByIndex(id);if (index==-1){printf("学生不存在!\n");}else{printf("你要改动的学生信息为:\n");Student_DisplaySingle(index);printf("-- 请输入新值--\n");printf("请输入学号:");scanf("%s",&students[index].ID);getchar();printf("请输入姓名:");scanf("%s",&students[index].Name);getchar();printf("请输入成绩:");scanf("%f",&students[index].Mark1);getchar();printf("请输入成绩:");scanf("%f",&students[index].Mark2);getchar();printf("请输入成绩:");scanf("%f",&students[index].Mark3);getchar();students[index].Average=Avg(students[index]);}printf("是否继续?(y/n)");if (getchar()=='n'){break;}}}/*删除学生信息*/void Student_Delete(){int i;while(1){char id[20];int index;printf("请输入要删除的学生的学号:");scanf("%s",&id);getchar();index=Student_SearchByIndex(id);if (index==-1){printf("学生不存在!\n");}else{printf("你要删除的学生信息为:\n");Student_DisplaySingle(index);printf("是否真的要删除?(y/n)");if (getchar()=='y'){for (i=index;i<num-1;i++){students[i]=students[i+1];//把后边的对象都向前移动}num--;}getchar();}printf("是否继续?(y/n)");if (getchar()=='n'){break;}}}/*按姓名查询*/void Student_Select(){while(1){char name[20];int index;printf("请输入要查询的学生的姓名:");scanf("%s",&name);getchar();index=Student_SearchByName(name);if (index==-1){printf("学生不存在!\n");}else{printf("你要查询的学生信息为:\n");Student_DisplaySingle(index);}printf("是否继续?(y/n)");if (getchar()=='n'){break;}}}/*按平均值排序*/void Student_SortByAverage(){int i,j;struct Student tmp;for (i=0;i<num;i++){for (j=1;j<num-i;j++){if (students[j-1].Average<students[j].Average){tmp=students[j-1];students[j-1]=students[j];students[j]=tmp;}}}}/*显示学生信息*/void Student_Display(){int i;printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");printf("-------------------------------------------------------------\n");for (i=0;i<num;i++){printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[i].ID,students[i].Name,students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);}}/*将学生信息从文件读出*/void IO_ReadInfo(){FILE *fp;int i;if ((fp=fopen("Database.txt","rb"))==NULL){printf("不能打开文件!\n");return;}if (fread(&num,sizeof(int),1,fp)!=1){num=-1;}else{for(i=0;i<num;i++){fread(&students[i],sizeof(struct Student),1,fp);}}fclose(fp);}/*将学生信息写入文件*/void IO_WriteInfo(){FILE *fp;int i;if ((fp=fopen("Database.txt","wb"))==NULL){printf("不能打开文件!\n");return;}if (fwrite(&num,sizeof(int),1,fp)!=1){printf("写入文件错误!\n");}for (i=0;i<num;i++){if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1){printf("写入文件错误!\n");}}    fclose(fp);}/*主程序*/void main(){int choice;IO_ReadInfo();while(1){/*主菜单*/printf("\n------ 学生成绩管理系统------\n");printf("1. 添加学生记录\n");printf("2. 改动学生记录\n");printf("3. 删除学生记录\n");printf("4. 按姓名查询学生记录\n");printf("5. 按平均成绩排序\n");printf("6. 退出\n");printf("请选择(1-6):");scanf("%d",&choice);getchar();switch(choice){case 1:Student_Insert();break;case 2:Student_Modify();break;case 3:Student_Delete();break;case 4:Student_Select();break;case 5:Student_SortByAverage();Student_Display();break;case 6:exit(0);break;}IO_WriteInfo();}}


转载于:https://www.cnblogs.com/mfrbuaa/p/4006735.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能顶刊TPAMI2019最新《多模态机器学习综述》

来源&#xff1a;专知摘要&#xff1a;”当研究问题或数据集包括多个这样的模态时&#xff0c;其特征在于多模态。【导读】人工智能领域最顶级国际期刊IEEE Transactions on Pattern Analysis and Machine Intelligence(IEEE TPAMI,影响因子为 9.455)&#xff0c;2019年1月最新…

Python数据类型--字典

Python中的字典 存储数据时不保持元素的顺序通过任意键值查找集合中值信息的过程叫做映射&#xff0c;Python中通过字典实现映射。字典是一个键值对的集合。 – 该集合以键为索引&#xff0c;同一个键信息对应一个值。 >>> passwd {"China": "BigC…

编程基本功训练:流程图画法及练习

对于“程序设计”的工作&#xff0c;很多刚開始学习的人的理解就是“写代码”。相同&#xff0c;新手们苦恼的问题是&#xff0c;他们仅仅会“写代码”。当接到一个新的任务&#xff0c;不少人总是在第一时间就爬到键盘上去敲代码。敲着敲着&#xff0c;就把自己绕糊涂了。头晕…

python简单练习 -统计文本词频并用柱状图显示

函数功能&#xff1a;统计文本中单词频率&#xff0c;并用柱状图显示前10个最高的单词 这里统计的是函数所在文件本身 import turtlecount 10 data [] words [] # y yScale 6 # X xScale 30def drawLine(t, x1, y1, x2, y2):t.penup()t.goto(x1, y1)t.pendown()t.goto(x…

今日《科学》封面:纳米级清晰度看大脑是怎样一种体验?

来源&#xff1a;药明康德微信团队摘要&#xff1a;在最新出版的《科学》杂志上&#xff0c;由麻省理工学院&#xff08;MIT&#xff09;和霍华德休斯医学研究所&#xff08;HHMI&#xff09;的科学家们领衔的一支团队&#xff0c;成功对果蝇的完整大脑进行了成像&#xff0c;清…

java的System.getProperty()方法能够获取的值

java.version Java 执行时环境版本号 java.vendor Java 执行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装文件夹 java.vm.specification.version Java 虚拟机规范版本号 java.vm.specification.vendor Java 虚拟机规范供应商 java.vm.spec…

Python中class的简单介绍

类的定义 class classname[(父类名)]: – 成员函数及成员变量_ init _ 构造函数&#xff1a;初始化对象_ del_ 析构函数&#xff1a;销毁对象定义类的成员函数时&#xff0c;必须默认一个变量代表类定义的对象本身&#xff0c;这个变量的名称可自行定义&#xff0c;下面的程序…

中国演绎太空生命传奇

来源&#xff1a;人民日报海外版摘要&#xff1a;人类不仅在努力增加对地球家园的认识&#xff0c;而且推进航天科技发展&#xff0c;进入浩渺的太空&#xff0c;探索宇宙的奥秘。在太空中绽放的花朵嫦娥四号搭载的微型生物圈载荷手绘图搭载探空火箭进入太空的两只小狗“小豹”…

FL2440移植linux内核常用命令(command)

Host Ubuntu系统:sudo ifconfig eth0 192.168.1.2打补丁(补丁和内核在同一目录下/home/chris/temp)&#xff1a;cd /home/chris/temp/linux-3.0patch -p1 < ../linux-3.0-s3c2440.patch开发板u-boot:setenv bootargs root/dev/nfs rw nfsroot192.168.1.2:/home/chris/nfs_wo…

C++预处理指令#define,#if,#endif等

转载自&#xff1a;“https://www.cnblogs.com/xiehongfeng100/p/4594849.html”&#xff0c;原文写的更加详细&#xff0c;还有代码解释&#xff0c;建议看原文。 本文主要记录了C/C预处理指令&#xff0c;常见的预处理指令如下&#xff1a; #空指令&#xff0c;无任何效果 …

李伯虎院士:新一代人工智能引领下的智造制造初步实践

来源&#xff1a;电能革命由中国智能制造百人会主办的“2018智造百强榜高峰会暨2019中国智能制造百人会年会上”于2019年1月11日在北京科技会堂举行。中国工程院院士/国家制造强国战略咨询委员会委员李伯虎做“新一代人工智能引领下的智造制造初步实践”的演讲。以下为演讲的速…

js中的escape的用法汇总

js对文字进行编码涉及3个函数&#xff1a;escape,encodeURI,encodeURIComponent&#xff0c;相应3个解码函数&#xff1a;unescape,decodeURI,decodeURIComponent 1、 传递参数时需要使用encodeURIComponent&#xff0c;这样组合的url才不会被#等特殊字符截断。 …

Python中Turtle绘图函数-绘制时钟程序

Turtle常用的一些函数&#xff0c; 参考博客&#xff1a;http://blog.csdn.net/zengxiantao1994/article/details/76588580 时钟代码设计 我们可以通过main函数查看整个时钟代码的设计设计指针&#xff08;Init()&#xff09;并显示指针&#xff1a;设计指针的方向(turtle.m…

5G的未来投资机会在哪里?

来源&#xff1a;网易智能日前&#xff0c;为了更好地以资本助推5G产业发展&#xff0c;中国移动投资公司与中国移动研究院联合发布了《洞见5G&#xff0c;投资未来——中国5G产业发展与投资报告》&#xff0c;分析了5G对生产和生活带来的变革&#xff0c;研判5G产业建设的投资…

C语言查找算法

/** 查找(数组) 1> 顺序查找 &#xff1a; 就是遍历数组每一个元素同该元素比较&#xff0c;但是问题是效率比较低 2> 折半查找 &#xff1a; 条件是数组必须是有顺序的 */ #include <stdio.h> #define n 2 int main() { // 折半查找 /* 思路&#xff1a;将该元素同…

python在windows系统中安装pandas,numpy

进入python的安装目录的sripts文件夹下&#xff0c; 在该文件夹下进入命令行&#xff0c;在命令行输入pip install pandas 等待成功安装 转载自&#xff1a;https://www.cnblogs.com/xuqiulin/p/6623154.html

华为5G首席科学家童文 | 5G:万物连接平台 智能世界基石

华为5G首席科学家、华为Fellow童文博士来源&#xff1a;华为2019年是5G产业进入全面商用的关键一年&#xff0c;全球5G网络的部署已经启动。2018年6月&#xff0c;5G独立组网标准冻结&#xff0c;5G完成了第一阶段全功能eMBB标准化工作&#xff1b;12月6日, 中国三大运营商获得…

js处理日期的一些整理(js获取给定日期前一天的日期)

var date new Date();alert(date);//获取当前时间 alert(date.getFullYear());//获取当前年分 alert(date.getMonth());//获取月份&#xff08;获取当前月份要加1&#xff09; alert(date.getDate());//获取当前日期的几号 alert(date.getDay());//获取当前是星期几 alert(dat…

windows下配置tensorflow

我使用的是python3.6版&#xff0c;目前该版本可以使用tensorflow&#xff0c; 安装tensorflow&#xff0c;参考博客 &#xff1a;https://www.cnblogs.com/nosqlcoco/p/6923861.html 在pycharm下配置tensorflow&#xff0c;参考博客&#xff1a;https://www.cnblogs.com/yingc…

深度解密:软银孙正义如何成为美国硅谷最有权势之人

来源&#xff1a;腾讯科技摘要&#xff1a;据外媒报道&#xff0c;伊隆马斯克、杰夫贝索斯亦或是马克扎克伯格(&#xff0c;都不如日本亿万富翁孙正义那样&#xff0c;对AI驱动的未来有着最大胆的愿景。在孙正义看来&#xff0c;未来机器将控制着我们的生活方式。为了实现这个愿…