学生成绩管理系统的工程实现, 通过C++编程语言实现,可以记录、查询和删改学生成绩程序
上传时间: 2019-03-19
上传用户:YANG123
#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 (请将此地址复制到浏览器地址栏中访问下载页面) #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("新成绩录入成功!
标签: c语言
上传时间: 2019-06-09
上传用户:啊的撒旦
基于ASP.NET技术的大学生勤工助学平台设计与管理源码+课程设计说明文档i资料:勤工助学系统的设计与实现是一个针对校内学生申请勤工助学岗位以及各个环节审核的信息管理系统。系统的搭建是基于ASP.NET技术的,并把SQL Server作为数据库来存储数据使用。勤工助学系统的设计与实现包括了教师端和学生端两个模块组成。教师端又包括了学工处、系部、用人部门三种用户,学工处主要是负责岗位批次的管理、岗位申报审核管理、岗位遴选管理、教师管理、系部负责人主要是对本系的学生的岗位申请进行审核,用人部门主要是勤工助学岗位申报、用人接受管理。学生端主要包括了学生注册登录、申请勤工助学岗位、查询审核进度等功能。一、 系统需求分析(一) 需求概述本次课程设计的题目是大学生勤工助学平台网站设计与管理,系统内容要求是:该平台主要包括管理中心、个人中心、兼职须知、发布招聘、求职中心、勤工风采、勤工通告中心、勤工新闻中心等8个模块,校内勤工助学形式,为广大学子义务提供勤工助学岗位。本系统的使用者可以分为二方:第一方是系统管理方:一般在高校各部门中负责勤工助学管理的部门拥有对该系统的所有操作权限。具体包括岗位信息的管理(信息的发布、删除、修改)、岗位申请的审核以及系统用户的管理。第二方就是在校学生,由于勤工助学管理的特殊性,因此本系统对给予学生的操作权限极为有限,具体包括岗位信息的查看、岗位的申请。
标签: asp.net
上传时间: 2021-11-17
上传用户:
在水文监测系统设计与建设时,应根据采用的数据传输信道类型及其特性和项目需求,选择ASCII字符编码或HEX/BCD编码帧结构,从本规约规定的报文结构中选择适宜的报文正文,要素编码组合,确定适合于信道传输的单针报文长度。数据报文、查询命令以及设置(控制)命令报文应采用同一种编码结构,不得交叉使用
标签: 数据通信
上传时间: 2022-03-31
上传用户:
制导雷达是武器系统的重要组成设备,负责完成对来袭目标的探测、跟踪和识别,同时对拦截导弹实施全过程控制,直至摧毁来袭目标。本书从制导雷达系统工程设计要求出发,提出了制导雷达系统的设计方法,讨论了选择雷达工作体制,确定系统组成,分析计算机性能,确定系统各部分技术指标等关键问题,本书还专门讨论了制导雷达系统的精度分析,总体设计,可靠性维修设计和系统试验技术等内容。作为应用实例,本书针对两种典型的中近程防空武器系统的制导雷达和中远程防空导弹武器系统的多功能相控阵制导雷达,介绍了它们的设计原理,系统组成,系统工作过程和各主要分系统的关键技术,并讨论了固态有源相控阵技术和新一代防空导弹武器系统研制过程中的主要关键技术问题。
标签: 雷达
上传时间: 2022-05-20
上传用户:
作为一种全新的探测技术,激光雷达已广泛应用于大气、陆地、海洋探测、空中交会对接、侦察成像、化学试剂探测等领域。与传统雷达技术相比,激光雷达是一种通过发射特定波长的激光,处理并分析回波信号,实现目标探测的技术,具有高测量精度、精细的时间和空间分辨率,以及极大的探测距离等优点,目前已成为一种重要的探测手段。激光雷达探测系统需采用硬件电路实现系统的控制以及回波信号的处理、分析,从而实现目标距离、速度、姿态等参数的测量,因此研制高速、高精度、性能稳定、性价比高、保密性强的处理电路,对提升激光雷达探测系统的整体性能有着十分重要的意义。 激光雷达系统控制及信号处理电路有多种实现方案,传统的MCU实现方案较为普遍,但受线程的带宽限制,且难以提高系统的精度与复杂性;采用 FPGA、ARM或DSP实现信号处理架构,一定程度上提高了系统的带宽与复杂度,但成本较高,功耗较大,且开发周期较长。针对目前激光目标探测系统中,对系统控制复杂度,信号处理实时性,整体性能与功耗等要求,论文提出了一种基于 CPLD与MCU架构的电路改进方案。该方案采用高速并行的现场可编程PLD器件,完成相关电路的控制与回波信号的实时处理、分析;同时选用线程处理优势较强的MCU,实现相关信号的控制与高速串口的收发,完成PC软件终端的通信。 本文结合所提出的基于 CPLD与 MCU架构的硬件电路设计方案,选用了Altera的MAX II CPLD器件EPM240T100C5N,以及宏晶科技公司的增强型单片机STC12LE5A60S2,实现了激光雷达系统控制及信号处理等功能。文中详细介绍了实验系统的设备资源与硬件电路的模块化设计,完成了相关外设的驱动控制,并采用 CPLD与 MCU完成了回波信号的采集、处理与分析,最终通过与所设计PC软件终端的通信,实现与硬件电路板的实时数据上传。 目前板卡在100MHz主频下工作,可完成10kHz激光器的触发,并行实现回波信号的实时处理与分析,以及921600波特率下的高速串口通信。结合激光雷达实验系统,多次进行硬件电路的测试与实验,表明本文设计的激光雷达系统控制及信号处理硬件电路功能正常,性能稳定,且功耗低,保密性强,符合设计的需求,实验证明本文所提出方案的具有一定的可...
上传时间: 2022-05-28
上传用户:xsr1983
机器人是整合控制论、机械电子、计算机、材料和仿生学的产物,能实现环境感知、动态决策与规划、行为控制与执行等多种功能。机器人代表了科学技术的最高水平,在工业、农业、医学建筑业甚至军事等领域中均有重要用途]。宋健院士在国际自动控制联合会第14届大会报告中指出:“机器人学的进步和应用是20世纪自动控制最有说服力的成就,是当代最高意义上的自动化”2吗。现在,国际上对机器人的概念已经逐渐趋近一致。一般来说,人们都可以接受这种说法,即机器人是靠自身动力和控制能力来实现各种功能的一种机器。联合国标准化组织采纳了美国机器人协会(Robot Institute of America,RlA)于1979年给机器人的定义:一种可编程和多功能的,用来搬运材料、零件、工具的操作机;或是为了执行不同的任务而具有可改变和可编程动作的专门系统]。作为机器人研究领域的一个重要分支,双足机器人(Humanoid Robot)由于其广阔的应用空间一直是研究热点之一。所谓双足机器人,又称仿人机器人,是具有人形的机器人,是关节转动灵活,控制系统复杂,能完成高难度的动作的机器人。它是机械、自动控制技术、计算机技术、人工智能、微电子学、模式识别、通讯技术、传感器技术、仿生学等多学科和技术综合的结果,代表着一个国家高科技发展水平。研制与人类特征类似,具有人类智能、灵活性,并能与人类交流,不断适应环境的双足机器人一直是人类的努力的目标]。与传统机器人相比,双足机器人具有显著的优势,比一般机器人有更大的机动性、灵活性,同时也具有更广泛的应用领域。双足机器人的出现是控制科学、传感器技术、人工智能、材料科学等学科的技术进步,以及机器人使用范围的扩大和人类日常生活需要的产物。双足机器人在工农业生产、科学探测、军事侦察、生活服务与娱乐等很多方面都有广泛的应用前景。首先双足机器人在拓展人类的认知范围上发挥着重要作用,在外层空间、深海等人类尚不能到达的环境都有双足机器人的身影;其次双足机器人已经广泛应用在恶劣、危险条件下或其它不适合人类活动的环境中。双足机器人的迅速发展和广泛应用,对人类社会的生活和生产产生了深远的影响。也正是因为双足机器人的广泛的应用背景和商业价值,所以近年来,双足机器人成为机器人研究领域内的一个热点]。
上传时间: 2022-06-18
上传用户:
基于单片机AT89C51的电子血压计的设计设计的电子血压计是采用示波法测量原理, 以AT89C51 单片机为控制核心,辅以 US9111-006-D 型压力传感器与 MCU 之间模拟信号处理,通过 ADC0808 转换器完成数字 信号转换以及液晶显示、报警、自动关机等电路来实现家用电子血压计的设计。在本次设 计中,通过对模拟脉搏波的输入进行放大,通过 AD 转换器来进行模拟信号到数字信号的 转换,最后通过单片机进行处理,来完成显示、比较、储存、查询等功能。 关键词:血压计;传感器;液晶显示; AT89C51 单片机 设计系统最终要实现的 性能指标如下: 1) 显示范围:0-299mmHg 2) 测量范围:40-270mmHg 3) 脉率:40-200 次/分 4) 放气速率:2.3-6.0mmHg/ 5) 分辨率:1mmHg 6) 静态压力基本误差: 3mmHg 7) 动态压力基本误差: 5-8mmHg 8) 脉率误差:5% 9) 低电压显示:当电池电压低于 4.0-0.2V 时,显示低压符号 10) 记忆功能:能显示前次测量值 11) 自动关机:5min 在单片机控制系统中,软件是很重要的一部分。本设计编程采用的是汇编语言,用汇 编语言编程简单、开发快,指令执行的速度快,节省存储空间。本文主要介绍了基于 AT89C51 单片机的电子血压计的设计思路及方法,详细介绍了系统所实现的功能,系统的 设计方法,系统的总体构成,模块电路的设计步骤和系统的调试方法等内容。
上传时间: 2022-07-03
上传用户:
主要使用了页框和表格 其中有些小技巧可以值得学学:) 包括即时模糊查询以及筛选、还有记忆窗口位置,表格列的排序和列宽 纯代码的,未OCX控件、类 是用VFP8的 ----适合初学者 vfp8 包括所有源码以及安装制作(txdq安装制作.VCT),你应相应更改路径 安装制作使用InstVise的
上传时间: 2014-01-04
上传用户:小眼睛LSL
数据库查询、显示程序,使用access数据库,需要配置数据库程序才能使用
上传时间: 2015-01-30
上传用户:ayfeixiao