#include<stdio.h> #include<string.h> #include<stdlib.h> #define N 100 int iNumOfStu=0; struct score { float math; float english; float computer; }; struct student { int number; char name[20]; struct score sco; float average; }; struct student stu[N]; void print_menu(void);//输出菜单 void choosemenu(void);//菜单选择 void input_student1(int);//输入学生信息 void input_student2(void);//输入总函数 void input_student3(int &,int);//判断学号是否重复 void input_student4(int,int);//覆盖原信息 void sort_student3(student s[],int);//按照英语成绩排序 void sort_student4(student s[],int);//按照计算机成绩排序 void sort_student2(student s[],int);//按照数学成绩排序 void sort_student5(student s[],int);//按照平均成绩排序 float input_score2(int);//计算学生平均成绩 void print_student2(void);//显示表头 void print_student3(int);//显示学生信息 void print_student1(int);//显示全部学生资料 void sort_student1(void);//排序总函数 void menu(void);//菜单调度总函数 int search_student2(int);//按学号查询学生信息并输出 void search_student3(int);//按平均分最高查询并输出 void search_student1(void);//查询总函数 void delete_student2(int,int);//删除学生信息 void delete_student1(void);//删除总函数 void change_student2(int);//修改学生资料 void change_student1(void);//修改总函数 void input_score3(int);//统计成绩 void input_score1(void);//统计成绩总函数 void print_help(void);//输出帮助信息 void exit_student(void);//退出系统 void save_student(student *,int);//保存学生信息 void main() { menu(); } void save_student(student *s,int a)//保存学生信息 { FILE *fp; if((fp=fopen("d:\\学生信息.txt","wb"))==NULL) { printf("不能打开文件!\n"); } else { printf("保存信息到D盘\n"); fprintf(fp,"本班所有学生具体信息如下:\r\n"); fprintf(fp," 学号 姓名 数学成绩 英语成绩 计算机成绩 平均成绩\r\n"); for(int i=0;i<a;i++) { fprintf(fp,"%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[i].number,stu[i].name,stu[i].sco.math,stu[i].sco.english,stu[i].sco.computer,stu[i].average); fprintf(fp,"\r\n"); } fclose(fp); printf("信息保存成功!\n"); } } void exit_student(void)//退出系统 { exit(1); } void print_help(void)//输出帮助信息 { printf("本系统所能容纳的最大学生数为%d人\n学生信息保存在D盘根目录下,保存文件为“学生信息.txt”。\n感谢使用!\n",N); } void input_score1(void)//统计成绩总函数 { int c; c=search_student2(iNumOfStu); printf("学号:%d\n",stu[c].number); printf("姓名:%s\n",stu[c].name); input_score3(c); printf("新成绩录入成功!\n"); stu[c].average=input_score2(c); } void input_score3(int a)//统计成绩 { printf("数学新成绩:"); scanf("%f",&stu[a].sco.math); printf("英语新成绩:"); scanf("%f",&stu[a].sco.english); printf("计算机新成绩:"); scanf("%f",&stu[a].sco.computer); } void change_student2(int a)//修改学生资料 { printf("学号:%d----修改为:",stu[a].number); scanf("%d",&stu[a].number); getchar(); printf("姓名:%s----修改为:",stu[a].name); gets(stu[a].name); printf("数学成绩:%.2f----修改为:",stu[a].sco.math); scanf("%f",&stu[a].sco.math); printf("英语成绩:%.2f----修改为:",stu[a].sco.english); scanf("%f",&stu[a].sco.english); printf("计算机成绩:%.2f----修改为:",stu[a].sco.computer); scanf("%f",&stu[a].sco.computer); } void change_student1(void)//修改总函数 { int c; c=search_student2(iNumOfStu); getchar(); printf("是否要修改此学生信息?(“y”代表是)"); char d; scanf("%c",&d); if(d=='y'||d=='Y') { change_student2(c); stu[c].average=input_score2(c); printf("信息修改成功!\n"); } } void delete_student1(void)//删除总函数 { int c; c=search_student2(iNumOfStu); getchar(); printf("是否删除此条记录?(“y”代表是)"); char d; scanf("%c",&d); if(d=='y'||d=='Y') { delete_student2(c,iNumOfStu); printf("记录已删除!\n"); } } void delete_student2(int a,int b)//删除学生信息 { for(int i=a;i<b-1;i++) { stu[i]=stu[i+1]; } --iNumOfStu; } void search_student1(void)//查询总函数 { printf("1、按学号查询\n2、按平均分最高查询\n请选择:"); int c; scanf("%d",&c); switch(c) { case 1: { search_student2(iNumOfStu); break; } case 2: { search_student3(iNumOfStu); break; } default: break; } } void menu(void)//菜单调度总函数 { print_menu(); choosemenu(); } void sort_student1(void)//排序总函数 { printf("1、按数学成绩排序\n2、按英语成绩排序\n3、按计算机成绩排序\n4、按平均成绩排序\n请选择:"); int c; scanf("%d",&c); switch(c) { case 1: { sort_student2(stu,iNumOfStu); break; } case 2: { sort_student3(stu,iNumOfStu); break; } case 3: { sort_student4(stu,iNumOfStu); break; } case 4: { sort_student5(stu,iNumOfStu); break; } default: break; } } void print_student1(int a)//显示全部学生资料 { printf("本班所有学生具体信息如下\n"); print_student2(); for(int i=0;i<a;i++) { print_student3(i); } } void print_student3(int a)//显示学生信息 { printf("%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[a].number,stu[a].name,stu[a].sco.math,stu[a].sco.english,stu[a].sco.computer,stu[a].average); } void print_student2(void)//显示表头 { printf(" 学号 姓名 数学成绩 英语成绩 计算机成绩 平均成绩\n"); } void input_student4(int a,int b)//覆盖原信息 { stu[a]=stu[b-1]; --iNumOfStu; } void input_student3(int &a,int b)//判断学号是否重复 { if(a!=0) { int i=0; do { if(stu[a].number==stu[i].number) { printf("此学号代表的学生已录入\n1、覆盖原信息\n2、重新输入\n请选择:"); int c; scanf("%d",&c); switch(c) { case 1: { input_student4(i,iNumOfStu); a=iNumOfStu-1; printf("信息已替换!\n"); break; } case 2: { printf("请重新输入学生信息:\n"); input_student1(iNumOfStu-1); break; } default: break; } break; } ++i; } while(i<b-1); } } void print_menu(void)//输出菜单 { 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("====================================\n"); printf("请选择:"); } void input_student2(void)//输入总函数 { char end; printf("请输入学生信息(在最后一个学生信息录入完成后以“/”结束录入):\n"); for(int i=0;(end=getchar())!='/';i++) { input_student1(i); ++iNumOfStu; input_student3(i,iNumOfStu); } for(int j=0;j<iNumOfStu;j++) { stu[j].average=input_score2(j); } } void input_student1(int a)//输入学生信息 { printf("学号:"); scanf("%d",&stu[a].number); getchar(); printf("姓名:"); gets(stu[a].name); printf("数学成绩:"); scanf("%f",&stu[a].sco.math); printf("英语成绩:"); scanf("%f",&stu[a].sco.english); printf("计算机成绩:"); scanf("%f",&stu[a].sco.computer); } float input_score2(int a)//计算学生平均成绩 { return (stu[a].sco.math+stu[a].sco.english+stu[a].sco.computer)/3; } void search_student3(int a)//按平均分最高查询并输出 { int max=0; for(int i=0;i<a;i++) { if(stu[max].average<stu[i].average) { max=i; } } print_student2(); print_student3(max); } void sort_student2(student s[],int a)//按照数学成绩排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.math>stu[max].sco.math) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student3(student s[],int a)//按照英语成绩排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.english>stu[max].sco.english) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student4(student s[],int a)//按照计算机成绩排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.computer>stu[max].sco.computer) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student5(student s[],int a)//按照平均成绩排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].average>stu[max].average) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } int search_student2(int a)//按照学号查找学生并输出 { int num; int c; printf("请输入要查询的学号:"); scanf("%d",&num); for(int i=0;i<a;i++) { if(num==stu[i].number) { c=i; } } printf("此学生的信息是:\n"); print_student2(); print_student3(c); return c; } void choosemenu(void)//菜单选择 { int i; scanf("%d",&i); switch(i) { case 1: { input_student2(); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 2: { delete_student1(); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 3: { search_student1(); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 4: { change_student1(); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 5: { print_student1(iNumOfStu); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 6: { input_score1(); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 7: { sort_student1(); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 8: { save_student(stu,iNumOfStu); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 9: { print_help(); printf("按回车键返回主菜单"); getchar(); getchar(); menu(); break; } case 10: { exit_student(); } default: break; } } 运行结果: 源文件下载地址: http://115.com/file/clnq138g#一个简单的学生成绩管理系统.rar (请将此地址复制到浏览器地址栏中访问下载页面)
标签: 成绩查询系统
上传时间: 2019-06-08
上传用户:啊的撒旦
Py3爬取B站视频弹幕。。。。。。。。。。。。。
上传时间: 2019-12-17
上传用户:wine
简单设计拔河游戏机包含六个模块 1. 按键模块:定义输入输出及按键模块。 2. 按键消抖模块:给每个按键两个状态,保证按键产生的信号可以消除抖动稳定,给所定按键两个状态,一个前状态,一个后状态,当时钟时钟的脉冲沿来临时,将按键状态赋值给前状态,设置定时器,当计数计满后,前状态值赋给后状态,按键输出值为前状态和后状态的取反的并。 3. 时钟分频模块:将Basys3的100M系统时钟分频成为周期为10ms,100Hz频率 4. 比较模块:由分频后的时钟信号模块控制按键信号模块,之后进入比较模块,若A的脉冲数大于B,则Led向A代表方向移动,反之则向B代表方向移动,若相等则不动。由Led的位置决定使能端的开启与关闭,若移动至A或B的顶端,则使能端控制Led无法再移动。除此还要设计计数器并可以显示在数码管上记下获胜者的盘数。 5. LED移动模块:在选定一定的时间周期内,检测按键A与按键B的产生的脉冲个数,进行比较,若A的脉冲数量大于B,则Led向A方向移动,反之则向B方向移动,若相等则不动。 6. 译码模块:将得到的信号t转化为Led的显示,最后赋值给Led输出端口,并且由数码管显示胜利的一方 。
标签: verilog
上传时间: 2020-05-19
上传用户:lzj007
全国大学生电子设计竞赛2020年TI杯模拟电子系统设计专题邀请赛多种幅度调制信号发生电路(B 题)
上传时间: 2021-07-08
上传用户:st-15180703380
NS32F103x8(B) 软件硬件兼容STM32F103C8/CBT6,实际测试过,完全可以兼容。支持国产,国产加油!
标签: ns32f103x8 STM32
上传时间: 2021-10-31
上传用户:
5V USB扁口接口TP4055锂离子电池充电接口板ALTIUM设计硬件原理图+PCB文件,2层B板手设计,大小为33*18mm,,可以做为你的学习设计参考。TP4055 是一款完整的单节锂离子电池充电器,带电池正负极反接保护,采用恒定 电流/恒定电压线性控制。其 SOT 封装与较少的外部元件数目使得 TP4055 成为便携式应 用的理想选择。TP4055 可以适合 USB 电源和适配器电源工作。 由于采用了内部 PMOSFET 架构,加上防倒充电路,所以不需要外部检测电阻器和 隔离二极管。热反馈可对充电电流进行自动调节,以便在大功率操作或高环境温度条件 下对芯片温度加以限制。充满电压固定于 4.2V,而充电电流可通过一个电阻器进行外部 设置。当电池达到 4.2V 之后,充电电流降至设定值 1/10,TP4055 将自动终止充电。 当输入电压(交流适配器或 USB 电源)被拿掉时,TP4055 自动进入一个低电流状 态,电池漏电流在 2uA 以下。TP4055 的其他特点包括充电电流监控器、欠压闭锁、自 动再充电和一个用于指示充电结束和输入电压接入的状态引脚。
上传时间: 2021-11-22
上传用户:trh505
该文档为A、B、AB、D类音频功率放大器简介文档,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看………………
上传时间: 2021-11-28
上传用户:qdxqdxqdxqdx
基于ARM-FPGA的IRIG-B码产生器的研制这是一份非常不错的资料,欢迎下载,希望对您有帮助!
上传时间: 2021-12-30
上传用户:
随着光伏发电系统快速发展,以及电动汽车充电桩的普及,传统的剩余电流保护器无法满足实际需求。介绍了一款B型剩余电流保护器,采用磁调制剩余电流互感器和零序电流互感器采集剩余电流。根据GB/T 22794—2017标准要求,可识别1 kHz及以下的正弦交流、带和不带直流分量的脉动直流、平滑直流等剩余电流信号。经信号调理电路将电压信号送到单片机进行采集和判断。通过试验测试,该样机在测试精度和速度上均符合国家标准的相关要求。The rapid development of photovoltaic power generation systems and the popularity of electric vehicle charging piles make the traditional residual current protective devices unable to meet the actual demand.This paper proposed a type B residual current protective device,which uses the magnetically modulated residual current transformer and the zero sequence current transformer to acquire the residual current.According to the requirements of GB/T 22794—2017,the type B residual current protective device can detect sinusoidal AC residual current of 1kHz and below 1kHz,pulsating DC residual current with and without DC component,smooth DC residual current and so on.The signal processing circuit sends the voltage signal to the MCU for acquisition and judgment.Through experimental tests,the device meets the relevant requirements of national standards in terms of test accuracy and speed.
标签: 电流保护器
上传时间: 2022-03-27
上传用户:
表贴插装晶振、晶体Altium封装 AD封装库 2D+3D PCB封装库-6MB,Altium Designer设计的PCB封装库文件,集成2D和3D封装,可直接应用的到你的产品设计中。PCB库封装列表:CB Library : 晶振、晶体.PcbLibDate : 2020/6/8Time : 7:42:40Component Count : 38Component Name-----------------------------------------------OSC 455E-LIOSC 455E-WIOSC 1612-4POSC 2025-4POSC 3215-2POSC 3225-4POSC 4025-4POSC 5032-2POSC 5032-4POSC 6035-2POSC 6035-4POSC 7050-2POSC 7050-4POSC 8045-2POSC 8045-4POSC 8045-4P-COSC HC-49SOSC HC-49SMDOSC HC-49UOSC MC-146OSC MC-156OSC MC-306OSC MC-405OSC MC-406OSC UM-1OSC UM-5OSC-2x6-LIOSC-2x6-WI-AOSC-2x6-WI-BOSC-2x6-WSOSC-3x8-LIOSC-3x8-WI-AOSC-3x8-WI-BOSC-3x8-WSOSC-3x10-LIOSC-3x10-WI-AOSC-3x10-WI-BOSC-3x10-WS
标签: altium designer
上传时间: 2022-05-04
上传用户:canderile