学生成绩管理系统程序设计c语言

合集下载

C语言程序设计-学生成绩管理系统

C语言程序设计-学生成绩管理系统

题目学生成绩管理系统一、功能1.每一条记录包括一个学生的学号、姓名、语数外3门成绩、平均成绩2.输入功能:可以一次完成有限(不大于2000)条记录的输入3.显示功能:完成全部学生记录的显示4.查找功能:完成按学号或姓名查找学生记录,并显示5.排序功能:按学生学号或平均成绩进行排序6.保存功能:将学生记录保存在Information.txt文件中7.读取功能:将保存在文件中的学生记录读取出来8.有一个清晰美观界面来调用各个功能二、要求1.整个系统均用C语言实现2.利用指针、结构体数组或链表来实现学生成绩的数据结构设计3.系统具有输入、显示、查询、修改、删除、排序、保存、读取等基本功能4.系统的各个功能模块都用函数的形式来实现5.可以将学生成绩信息保存在文件中6.可以将学生信息从文件中读取出来三、设计内容整个学生成绩管理系统由主函数及12个子函数构成,实现学生成绩录入、显示、查询、排序、修改、保存、读取和删除共8项功能,各函数功能相信说明如下:1.主函数int main()利用无限次循环while和switch实现对各个函数的调用,使用时根据输入的数字来调用相应的函数2. 显示主菜单函数void DispMainMenu()这是一个无参函数,用来显示程序主菜单,用户通过输入对应功能前的数字来实现相应的功能3. 学生成绩录入函数int InformationInput(STUDENT stu[],int cn)这是一个有返回值的有参函数,形参STUDENT stu[]为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int cn为当前学生人数,返回值为当前学生人数。

其作用是输入有限个学生的成绩信息。

算法:定义3个变量,num用来存放本次录入学生人数,i、j为循环变量。

由键盘输入学生人数赋值给num,判断num是否大于MAX_NUM(2000),若大于,则提示输入人数太多,函数返回值0;若不大于,则依次输入num个学生信息。

基于c语言学生成绩管理系统编程设计

基于c语言学生成绩管理系统编程设计

基于c语言学生成绩管理系统编程设计1. 引言1.1 概述学生成绩管理系统是一种用于方便地记录、管理和分析学生的各项成绩信息的软件系统。

通过该系统,教师和学校管理者可以轻松地追踪学生的学习进展,提供个性化的辅导和支持;同时,学生和家长也能够查看自己或子女的成绩,并及时了解其在不同科目上的表现。

本文基于C语言,旨在设计一个高效且易于使用的学生成绩管理系统。

该系统将采用合理的数据结构和算法,实现快速可靠地对成绩进行录入、查询、修改和统计功能。

通过对系统进行全面测试与性能评估,并且结合实际应用需求进行改进,在文章中总结研究结果并提出未来发展方向建议。

1.2 文章结构本文共分为五个部分:引言、学生成绩管理系统概述、系统设计与实现、功能测试与性能评估以及结论与展望。

- 在引言部分,将介绍本文所要解决问题的背景和意义,并简要说明文章结构;- 学生成绩管理系统概述部分将对该系统具体功能进行详细描述,并介绍设计思路以及目标用户;- 系统设计与实现部分将详细阐述系统的数据结构设计、用户界面设计以及算法实现;- 功能测试与性能评估部分将介绍如何设计测试用例并执行,并给出性能分析和优化策略,最后对结果进行分析讨论;- 结论与展望部分将对本文主要研究结果进行总结,并指明不足之处以及进一步改进方向和未来发展建议。

1.3 目的本文的目的是通过C语言编程,设计一个高效、可靠且易于使用的学生成绩管理系统。

该系统旨在满足现代教育管理的需求,提供方便快捷、个性化的成绩管理服务。

通过详细描述系统的功能和实现过程,并辅以全面的测试和评估,旨在为教师、学校管理者、学生和家长提供一个有效的工具,以更好地跟踪学生成绩、提供个性化教学和支持,并为未来发展提出建议。

2. 学生成绩管理系统概述2.1 系统功能介绍学生成绩管理系统是一种基于C语言编程的应用软件,旨在帮助学校或教育机构有效管理和统计学生的各项考试成绩。

该系统具备以下主要功能:- 学生信息管理:记录学生的基本信息,包括姓名、学号和班级等,并可以进行增加、删除、修改和查询等操作。

C语言程序设计学生成绩管理系统实验报告

C语言程序设计学生成绩管理系统实验报告

移通学院C语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础;二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0四.课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号不重复、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:1主菜单2各菜单项功能①成绩录入:输入学生的学号、姓名及三门课的成绩;②成绩查询:按学号查询学生记录;③成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;④退出系统:退出整个系统即主菜单;五.数据结构设计描述:↓int num; /定义学号,变量为整型/char name; /定义姓名,变量为字符型/int score; /定义课程的成绩,变量为整型/float average; /定义平均分,变量为浮点型/七.系统各函数的功能,、相互调用关系1.函数实现功能说明:1menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择;2input函数是定义用于输入学生信息;3select 函数是定义用于查询学生信息;包括学号、姓名及各科成绩;4statistics 函数计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序输出;2.相互调用关系:Main函数调用menu函数;Menu 函数可以调用input 函数、select函数和statistics 函数八.心得体会C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距;我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序; 九.程序:include <stdio.h>include <stdlib.h>include <conio.h>define N 3 /学生人数/define M 3 /课程门数/struct student{int num; /学号/char name20; /姓名/int score3; /三门课成绩/float average;}stuN; /学生数/void input; /查询/void select; /统计/void menu;void input{int i,j;printf"\t\t①成绩录入\n\n";fori=0;i<N;i++{printf"请输入学号:";scanf"%d",&stui.num;printf"请输入姓名:";scanf"%s",&;forj=0;j<M;j++{printf"第%d门成绩的分数:",j+1;scanf"%d",&stui.scorej;}printf"\n\n";}printf"\n\n";printf"输入完毕按任意键返回主菜单";}/2.查询/void selectint no{int i;printf"学生%d号: \n",no; printf"学号: %d\n",stuno-1.num; printf"姓名: %s\n",;for i=0;i<M;i++{printf"第%d门课程的成绩为: ",i+1; printf"%d\n",stuno-1.scorei;}printf"\n按任意键返回主菜单";getch;}/3.统计/void statistics{float temp=0;int i=0;/学生成绩平均分/temp=0;printf"\t\t③成绩统计\n\n";forj=0;j<N;j++{fori=0;i<M;i++{temp=temp+stuj.scorei;}stuj.average=temp/N;printf"\n学生%s的成绩平均成绩为:",;printf"%0.2f分",stuj.average;temp=0;}/排序/for j=0;j<N;j++fori=0;i<N-j-1;i++ifstui.average<stui+1.average{ temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;}printf"\n\n学生平均成绩前三名:";fori=0;i<3;i++{printf"\n第%d名:%0.2f分",i+1,stui.average;}printf"\n\n按任意键返回主菜单";getch;}void menu{ int num=0;int n=0;printf"\n\t\t\t学生成绩管理系统\n\n";printf"\n\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n";printf"\t\t\tchoose:";scanf"%d",&num;switchnum{case 1:system"cls";input;break;case 2:system"cls";printf"\t\t②成绩查询\n\n"; printf"请输入要查询的学生号1~3:";scanf"%d",&n;selectn;break;case 3:system"cls";statistics;break;case 4:exit0;default:;}}void main{while1{system"cls"; /清屏/menu;}}。

c语言程序设计学生成绩管理系统程序框架

c语言程序设计学生成绩管理系统程序框架

一、概述C语言作为一种通用的程序设计语言,被广泛应用于计算机科学领域。

在学习和实践C语言程序设计的过程中,学生成绩管理系统是一个常见的项目。

本文将介绍一个C语言程序设计的学生成绩管理系统程序框架,旨在帮助读者了解如何使用C语言来设计一个简单但完整的学生成绩管理系统。

二、程序框架概述1. 程序结构程序将包括主函数和若干辅助函数,用于实现学生成绩的录入、查询、统计和输出功能。

2. 数据结构学生信息将以结构体的形式进行存储,包括学号、尊称、各科成绩等字段。

成绩的存储可以采用数组或链表的方式。

3. 功能模块程序将实现学生成绩的录入、查询、统计和输出功能,其中查询和统计功能可以根据学号或尊称进行。

三、程序设计1. 主函数设计主函数将包括菜单的显示和用户输入的处理,根据用户选择调用相应的辅助函数完成特定功能。

2. 学生信息结构设计设计一个学生信息的结构体,包括学号、尊称、各科成绩等字段,以便于对学生信息进行存储和管理。

3. 辅助函数设计编写若干辅助函数,用于实现学生成绩的录入、查询、统计和输出功能,每个功能对应一个函数。

4. 程序流程设计根据功能模块的设计,将整个程序流程进行设计,包括菜单的显示、用户输入的处理和相应功能函数的调用。

四、程序实现1. 学生信息结构定义定义学生信息的结构体,包括学号、尊称、各科成绩等字段,用于存储学生的相关信息。

2. 学生成绩录入函数实现编写学生成绩录入函数,用于将学生的各科成绩录入到程序中,并将学生信息存储到数组或链表中。

3. 学生成绩查询函数实现编写学生成绩查询函数,可以根据学号或尊称进行查询,并将查询结果输出到屏幕上。

4. 学生成绩统计函数实现编写学生成绩统计函数,可以对学生的各科成绩进行统计,并将统计结果输出到屏幕上。

5. 学生成绩输出函数实现编写学生成绩输出函数,用于将学生的各科成绩和统计结果输出到文件或屏幕上。

五、程序测试1. 输入测试用例编写若干测试用例,包括正常输入和异常输入,以确保程序对各种情况均有正确的处理。

c语言程序设计学生成绩管理系统

c语言程序设计学生成绩管理系统

目的和目标
目的
本系统的目的是为了解决传统纸质成 绩管理方式存在的效率低下、易出错 等问题,提供一个方便、快捷、准确 的学生成绩管理系统。
目标
本系统的目标是实现以下功能:学生 信息管理、成绩录入、成绩查询、成 绩修改和成绩删除等。同时,系统应 具备良好的用户界面和安全性,确保 数据的安全和完整。
02
数据需求
包括用户名、密码等字段。
包括学号、课程名称、成 绩等字段。
包括学号、姓名、性别、 年龄等字段。
成绩表 学生信息表
用户表
性能需求
响应时间
系统响应时间应在合理范围内,确保用户操 作的及时性。
数据准确性
系统应保证数据的准确性,避免出现数据错 误或异常。
系统稳定性
系统应具备较高的稳定性,保证长时间运行 不会出现故障。
数据输出模块
总结词
数据输出模块负责将处理后的学生成绩信息以用户友好的方式呈现出来。
详细描述
该模块需要设计清晰的报表和图表,如使用表格展示学生成绩排名、柱状图展示各科目平均分等。同 时,为了方便用户查看,这些报表和图表应支持导出功能,如导出为Excel文件或PDF文件。此外,该 模块还应提供打印功能,允许用户将报表或图表打印出来。
数据处理模块
要点一
总结词
数据处理模块是系统的核心,负责对学生成绩信息进行存 储、计算和分析。
要点二
详细描述
该模块首先需要设计一个高效的数据结构来存储学生成绩 信息,如使用结构体数组或链表。然后,根据实际需求, 实现对学生成绩的统计、计算和排序等功能,如计算平均 分、最高分、最低分,对学生成绩进行升序或降序排列等 。此外,该模块还应提供数据备份和恢复功能,确保数据 的安全性和完整性。

学生成绩管理系统c语言代码(供参考)

学生成绩管理系统c语言代码(供参考)

C程序学生管理系统以下是用C语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考)#include"stdio.h"#include”stdlib。

h"#include"string。

h”typedefstruct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedefstruct unit//定义接点{studentdate;struct unit*next;}unit;unit大build()//建立链表并返回指针{unit*p;if((p=(unit*)malloc(sizeof(unit)))==NULL){printf("二>初始化失败!”);return0;}else{p—>next=NULL;p-〉date.number=O;//头结点存放学生人数printf("初始化成功!\n");return p;}}void add(unit大head)//增加学生{unit*p,*q;int m,n=0;q=head-〉next;p=(unit*)malloc(sizeof(unit));printf(”二〉请输入新生姓名!\n");gets(p—>);fflush(stdin);printf("二〉请输入学号!\n");while(n==0){scanf("%d",&m);fflush(stdin);if(q二二NULL)n二1;while(q){if(q->date.number==m){prinTf("二>你输入的学号与已有同学的学号相同,请重新输入!\n");q=head-〉next;break;}else{q=q->next;if(q==NULL)n=1;}}}p一〉date。

C语言程序设计-学生成绩管理系统

C语言程序设计-学生成绩管理系统

C语言程序设计-学生成绩管理系统C语言课程设计报告课题题目:学生信息管理系统班级:信卓11801姓名:**题目一. 题目: (3)二.设计目的 (3)三.总体设计 (3)四.详细设计 (7)1.动态创建链表 (9)2.排序 (10)3.查询信息 (11)4.修改学生信息 (13)6.输出所有学生的所有数据 (15)7.统计各分数段的人数 (16)五.调试与测试 (17)六.课程设计心得与体会 (24)一.题目:学生信息管理系统要求:从文件中读取原始数据,并将修改后的数据保存在一个新的文件当中。

功能:1.浏览所有学生的所有信息2.用姓名和学号查询学生的信息3.用姓名和学号修改学生的信息4.用姓名和学号删除学生5.统计各个课程分数段的人数6.统计总分和各个课程的最高分、最低分以及对应的姓名二.设计目的如今学校的学生越来越多,成绩管理的工作量越来越大,手工管理成绩的弊端也越来越明显。

随着科学技术的不断提高,计算机科学日渐成熟,它已进入人类社会的各个领域并发挥着越来越重要的作用。

作为计算机应用的一部分,使用计算机对学生档案信息进行管理,具有手工管理所无法比拟的优点。

所以我想借本次课程设计之际,设计一个简易的学生成绩管理系统。

掌握: 1.掌握动态创建链表,并实现对数据的删除,检索,修改。

1.增强工程化意识,提高c语言实践能力。

三.总体设计(1)程序源文件分为:1.student.h 包含所有的头文件以及定义2.function.cpp 实现各个函数的功能3.main.cpp 主函数4.data.txt 学生原始数据(2)主函数实现菜单的选择:使用swicth语句实现菜单的选择1.浏览学生信息2.查询学生信息3.修改学生信息4.删除学生信息5.各科成绩6.最高分最低分以及对应的姓名(3)函数包括:1.struct student * create() //用动态链表建立基础的学生信息库从文件中将学生信息读取出来2.void sort(struct student *head) //排序3.void locatename(struct student *head) //通过姓名查询信息4.void locatenum(struct student *head) //通过学号查询信息5.struct student * delname(struct student *head) //通过姓名删除学生信息6.struct student * delnum(struct student *head) //通过学号删除学生信息7.void changename(struct student *head) //通过姓名去修改学生数据8.void changenum(struct student *head) //通过学号去修改学生数据9.void filein(struct student *head) //保存到文件中10.void print(struct student *head) //打印所有学生信息11.void ABCD(struct student *head) //统计各分段的人数12.void max(struct student * head) //总分以及各个课程的最高分,最低分以及对应的姓名对于创建链表和删除学生这两个函数需要返回head创建链表时返回head:其他函数中都传入了一个参数head那么都可以访问到链表中的所有数据删除学生返回head:当删除第一个学生时,即把头给删了这时需要换头head = delname(head); head= delnum(head);其它函数使用void类型即可四.详细设计使用结构体链表实现上述要求,在头文件中定义结构体,分为数据域和指针域。

C语言课程设计-学生成绩管理系统-完整版

C语言课程设计-学生成绩管理系统-完整版

#include<stdio.h> #include<stdlib.h>#include<io.h> #include<string.h> /* strcmp 函数原型包含 */#define N 100 /* 定义最大学生人数为 100*/ struct student /* 学生结构体定义 */ char no[11]; /* 学号 ,10 位 */ char name[10];/* 姓名, 3 个汉字 */ char grade[10];/* 班级 */ char pro[20];/* 专业 */float score[5];/* 储存 5 门功课的成绩 */ float ave;/* 储存平均分 */ int year;/* 入学年 *//* 通过 i 的值,判断信息要查找的信息是否存在 *//* 输出学生成绩函数(公共函数) */ /* 系统初始化函数 */ /* 建立新的数据文件 *//* 从数据文件中读取数据 */ /* 维护界面函数 */ /* 新增一个学生成绩函数 */ /* 修改学生成绩 */ /* 修改成绩 *//* 删除学生信息函数 */ /* 统计界面函数 */ /* 计算每个学生平均分 */ /* 计算每门课程的平均分 */ /* 排序函数 */ /* 按学号排序 */ /* 按平均分排序 */ /* 按单科成绩排序 *//* 交换结构体数组中的两个记录 *//* 选择输出单科成绩 */ /* 查找界面函数 */ /* 按学号查找 */ int findname(char cname[]);/* 按姓名查找 */ void findyear(int cyear); /* 按入学年查找 */ void save(); /* 保存文件 */ void stop(); /* 停顿函数 */void stop()/* 停顿函数 (公共函数) */{printf("Press Any Key To Continue...\n"); getchar();}}stu[N]; int num; void panduani(int); void output(); voidinit(); void newfile(); void read1(); void weihu(); void new1(); void xiugai(); void xgcj(int); void delete1(); void tongji(); void tongji1(); void tongji2(); void paixu1(); void paino(); void paiave(); void paidkcj(); voidchange(int,int); void outputx(int); void find1(); int find(char sno[]);void output() /* 输出学生成绩函数(公共函数) */{int i,j;printf("===================================================================\n");printf(" 学号姓名班级专业入学年 C 语言高数大物电路模电\n");printf("===================================================================\n");for(i=0;i<num;i++){printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year) Jfor(j=0;j<5;j++)printf(" %.1f",stu[i].score[j]);printf("\n");}stop();}void init() /* 系统初始化函数*/{if(access("stu.dat",0)) /* 判断文件是否存在*/newfile(); /* 若不存在,新建数据文件*/elseread1(); /* 若存在,读取数据*/}void newfile() /* 建立新的数据文件*/{int i;FILE *fp;if((fp=fopen("stu.dat","wb"))==NULL) /* 创建二进制文件*/{printf(" 创建文件失败,请重新运行程序.\n"); /* 显示" 创建文件失败,请重新运行程序"*/exit(0); /* 终止程序*/}printf(" 初次运行,进行数据初始化...\n");/* 显示" 初次运行,进行数据初始化..."*/ stop();printf(" 请输入学生人数:");/* 显示"请输入学生人数:"*/ scanf("%d",&num);for(i=0;i<num;i++){printf(" 请输入第%d 个学生的学号:",i+1); /* 显示"请输入第i+1 个学生的学号:"*/ getchar(); /* 吃回车*/gets(stu[i].no);printf(" 姓名:"); /* 显示"姓名:"*/gets(stu[i].name);printf(" 班级:"); /* 显示"班级:"*/gets(stu[i].grade);printf(" 专业:"); /* 显示"专业:"*/gets(stu[i].pro);printf(" 入学年n:");/* 显示" 入学年"*/scanf("%d",&stu[i].year);printf("C 语言成绩:");/* 显示"C 语言成绩"*/ scanf("%f",&stu[i].score[0]);printf(" 高数成绩:");/* 显示"高数成绩"*/ scanf("%f",&stu[i].score[1]);printf(" 大物成绩:");/* 显示" 大物成绩"*/ scanf("%f",&stu[i].score[2]);printf(" 电路成绩:");/* 显示" 电路成绩"*/ scanf("%f",&stu[i].score[3]);printf(" 模电成绩:");/* 显示" 模电成绩"*/scanf("%f",&stu[i].score[4]);fwrite(&stu[i],1,sizeof(struct student),fp); /* 把第i+1 名学生成绩写入文件*/ }fclose(fp);printf("========================\n");printf(" 刚才输入的%d 个数据为:\n",num); /*显示"刚才输入的num 个数据为:"*/ printf("========================\n\n");output();}void read1() /* 从数据文件中读取数据*/{FILE *fp;num=0; /*num 为数据文件中实际存储的学生人数*/fp=fopen("stu.dat","r");if(fp==NULL) /* 数据文件不存在*/{printf(" 文件打开失败!重新运行程序\n"); /* 显示"文件打开失败!重新运行程序"*/ exit(0);}while(!feof(fp)) /* 文件结束检测"*/{fread(&stu[num],1,sizeof(struct student),fp); num++;}num--; fclose(fp); printf("\t\t\t=======================================\n"); printf(" \t\t\t现有 %d 个学生的成绩: \n",num); /* 显示 "现有 NUM 个学生的成绩: "*/printf("\t\t\t=======================================\n\n"); output();}void weihu() /* 维护界面函数 */{char c1; while(1){getchar(); if(c1=='9') break; switch(c1) { case '1': new1(); break; case '2': delete1(); case '3': xiugai(); break; default:printf(" 选择有误,请重选! \n");/*" 选择有误,请重选! "*/} } }void new1() /* 新增一个学生成绩函数 */{printf(" 请输入学号 :"); /* 显示 "请输入学号 :"*/ gets(stu[num].no);printf("\t\t\t* 维护*\n");printf("\t\t\t* 1. 新增 *\n"); /*新增 */printf("\t\t\t* 2. 删除 *\n"); /* 删除(按学号)*/printf("\t\t\t* 3. 修改 *\n"); /* 修改 */ printf("\t\t\t*9. 返回*\n"); /* 返回 */printf("\t\t\t************************\n");printf("\t\t\t 请选\n");/* 请选*/printf("\n\n\n\t\t\t* ********************* **\n"); c1=getchar();printf(" 姓名:"); /* 显示"姓名:"*/ gets(stu[num].name);printf(" 班级:"); /* 显示" 班级:"*/ gets(stu[num].grade);printf(" 专业:"); /* 显示"专业:"*/ gets(stu[num].pro);printf(" 入学年:");/* 显示"入学年"*/ scanf("%d",&stu[num].year);printf("C 语言成绩:");/* 显示"C 语言成绩"*/ scanf("%f",&stu[num].score[0]); printf(" 高数成绩:");/* 显示"高数成绩"*/ scanf("%f",&stu[num].score[1]);printf(" 大物成绩:");/* 显示" 大物成绩"*/ scanf("%f",&stu[num].score[2]);printf(" 电路成绩:");/* 显示" 电路成绩"*/ scanf("%f",&stu[num].score[3]);printf(" 模电成绩:");/* 显示" 模电成绩"*/ scanf("%f",&stu[num].score[4]);num++; printf("\n======================================\n");"*/ printf(" 现有%d 个学生的成绩:\n",num); /* 显示"现有NUM 个学生的成绩:printf("======================================\n\n");output();}void xiugai() /* 修改学生成绩*/{char xg[11];int i;printf("\n 请输入要修改学生的学号 :\n\n"); gets(xg);for(i=0;i<num;i++)if(strcmp(stu[i].no,xg)==0)break; if(i==num){printf("\n 数据文件无该生信息 !\n\n 请重新输入学号 .\n\n"); stop(); return;}xgcj(i);} void xgcj(int x)/* 修改成绩 */{ char xueke[5][10]={"C 语言","高数 ","物理","电路","模电"}; char (*p)[10],c; int j,k; p=xueke; for(;;){**\n\n"); printf("\t\t\t 成绩 printf("\t\t\t 1.C 语言 printf("\t\t\t 2.高数printf("\t\t\t 3.物理 printf("\t\t\t 4.电路 printf("\t\t\t5.模电 printf("\t\t\t9.返回printf("\n");printf("\t\t\t** ******************************** printf("\t\t\t** ******************************** \n");\n"); /*C 语言 */ \n"); /*高数 */\n"); /* 大学物理 */ \n"); /*电路 */ \n"); /*模电 */ \n\n"); /* 返回上级 */**\n\n"); printf("\t 请选择要修改的成绩 (按 1.2.3.4.5.9):\n"); c=getchar(); getchar();if(c=='9')break; else if (c>='1'&&c<='5'){k=c-49;printf("\n 请输入 %s 成绩 :\n",p+k); scanf("%f",&stu[x].score[k]); printf("\n 修 息为 :\n");printf(" 学号 姓名 班级 专业 入学年 C 语言 高数 大物电路模电printf("===================================================================\n");printf("%s %s %s %s %d",stu[x].no,stu[x].name,stu[x].grade,stu[x].pro,stu[x].ye ar);for(j=0;j<5;j++)printf(" %.1f",stu[x].score[j]);printf("\n");}else printf("\n 选择有误,请重选!\n\n");stop();}}int find(char sno[]) /* 按学号查找*/{int i;for(i=0;i<num;i++)if(strcmp(stu[i].no,sno)==0) /* 判断两个字符串相等*/return i;/* 查找成功*/return -1;/* 查找失败*/}void delete1() /* 删除学生信息函数*/{char cno[11];int i,j;printf(" 请输入要删除的学生学号:"); /*" 请输入要删除的学生学号"*/gets(cno);i=find(cno);if(i!=-1){for(j=i;j<num;j++)stu[j]=stu[j+1];num--;printf(" 现有%d 个学生的成绩:\n",num); /* 显示" 现有NUM 个学生的成绩:"*/ output();}else {printf(" 请输入正确的学号. \n");stop();}}void tongji(){int i;char c2; while(1) {printf("\t\t\t 请选择 :\n");/* 请选择: */ c2=getchar(); getchar(); if(c2=='9') break; switch(c2){case '1': tongji1();printf("\n\n 学生平均分为 :\n");printf("===========================================\n"); printf(" 学号 姓名 入学年 平均分 \n");printf("===========================================\n"); for(i=0;i<num;i++)printf("%s %s %d %.2f\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave); stop(); break; case '2': tongji2(); break; default:printf(" 选择有误,请重选 \n");/*" 选择有误,请重选! "*/ }} }void tongji1() /* 计算每个学生平均分 */ { int i,j;for(i=0;i<num;i++){stu[i].ave=0; for(j=0;j<5;j++)stu[i].ave+=stu[i].score[j]; stu[i].ave=stu[i].ave/5;}}void tongji2()/* 计算每门课程的平均分 */{int i,j; float sum;printf("\t\t\t* 统计 *\n");printf("\t\t\t*1. 学生平均分 *\n"); /* 计算学生平均分 */ printf("\t\t\t*2. 课程平均分 *\n"); /* 计算每门课程平均分 */ printf("\t\t\t*9. 返回*\n"); /* 返回 */printf("\n\n\n\t\t\t ***************************** **\n"); printf("\t\t\t* **************************** **\n"); /* 统计界面函数 */float avec[5]; /* 储存每门课的平均分*/ for(j=0;j<5;j++){sum=0;for(i=0;i<num;i++)sum+=stu[i].score[j];avec[j]=sum/num;}printf("\n\n 各科平均分:\n");/*" 各科平均分:"*/printf("===================================\n"); printf("C 语言高数大物电路模电\n"); printf("===================================\n"); for(i=0;i<5;i++)printf("%-7.1f",avec[i]);printf("\n");stop();}void paixu1() /* 排序界面*/{char c3;for(;;){printf("\n\n\n");printf("\t\t\t***********************************\n");printf("\t\t\t* 排序* \n");printf("\t\t\t* 1. 按学号排序* \n"); /* 按学号排序*/printf("\t\t\t* 2. 按平均分排序* \n"); /* 按平均分排序*/printf("\t\t\t* 3. 按单科成绩排序* \n"); /* 按单科成绩排序*/printf("\t\t\t* 9. 返回* \n"); /* 返回*/printf("\t\t\t***********************************\n\n");printf("\t 请选(按 1.2.3.9):\n");/* 请选择:*/c3=getchar();getchar();if(c3=='9') break;switch(c3){case '1':paino();break;case '2':paiave();break;case '3':paidkcj();break; default:printf("\n 选择有误,请重选!\n\n");/* 选择有误,请重选!*/ stop();}}}void paino() /* 按学号排序*/{ /* 按学号从低到高冒泡法排序*/int i,j;for(i=0;i<num;i++)for(j=0;j<num-1-i;j++)if(strcmp(stu[j].no,stu[j+1].no)>0) change(j,j+1);printf("\n 排序后为:\n"); /*" 排序后为:"*/output();}void paiave() /* 按平均分排序*/{ /* 按平均分从高到低冒泡法排序*/int i,j;tongji1(); /* 计算平均成绩*/ for(i=0;i<num;i++) for(j=0;j<num-i-1;j++)if(stu[j].ave<stu[j+1].ave) change(j,j+1);printf("\n\t 排序后为:\n"); /*" 排序后为:"*/printf("\t===============================================\n"); printf("\t 学号姓名入学年平均分排名\n");printf("\t===============================================\n"); for(i=0;i<num;i++) printf("\t%s %s %d %.2f %4d\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave,i+1); stop();void paidkcj() /* 按单科成绩排序*/ {char c;int i,j,k;while(1){printf("\n");printf("\t\t\t************************************\n\n");printf("\t\t\t 单科成绩\n");printf("\t\t\t 1.C 语言\n"); /*C 语言*/printf("\t\t\t 2.高数\n"); /*高数*/printf("\t\t\t 3.物理\n"); /* 大学物理*/printf("\t\t\t 4.电路\n"); /*电路*/printf("\t\t\t 5.模电\n"); /*模电*/printf("\t\t\t 9.返回\n\n"); /* 返回上级*/printf("\t\t\t************************************\n\n");( 按 1.2.3.4.5.9):\n");printf("\t 请选择:c=getchar();getchar();else if (c>='1'&&c<='5'){k=c-49;for(i=0;i<num;i++) for(j=0;j<num-1-i;j++) if(stu[j].score[k]<stu[j+1].score[k])change(j,j+1);outputx(k);}else printf("\n 选择有误,请重选!\n\n"); stop();}}void change(int i,int j)/* 交换结构体数组中的两个记录*/{struct student temp; temp=stu[i]; stu[i]=stu[j]; stu[j]=temp;}void outputx(int k) /* 选择输出单科成绩*/char xueke[5][10]={"C 语言","高数 ","物理","电路","模电"}; char (*p)[10]; /* 定义一个指向包含 10 个字符型元素的一维数组的指针变量 */int i;p=xueke;printf("\n\t 排序后为 :\n");printf("\t===============================================\n"); printf("\t 学号 姓名入学年 %s 排名 \n",p+k);printf("\t===============================================\n"); for(i=0;i<num;i++)printf("\t%-11s% -10s%-11d%-6.1f%5d\n",stu[i].no, stu[i].name,stu[i].year,stu[i].score[k],i+1);}void find1() /* 查找界面函数 */{char c4;char cno[11],cname[10]; int i,cyear; while(1){printf("\t\t\t* ************************************\n"); printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t请选择 :\n");/* 请选择:*/ c4=getchar();getchar(); if(c4==57) break; switch(c4){case '1':printf(" 输入学号 :\n");/*" 输入学号: "*/ gets(cno); i=find(cno); panduani(i); break; case '2':printf(" 输入姓名 :\n");/*" 输入姓名: "*/ gets(cname);i=findname(cname); panduani(i); break; case '3':printf(" 输入入学年 :\n");/*" 输入入学年 "*/ scanf("%d",&cyear);查找1. 按学号查找2. 按姓名查找3. 按入学年查找 9. 返回************************************\n");*\n");*\n"); /* 按学号查找 */ *\n"); /* 按姓名查找 */ *\n"); /* 按入学年查找 */findyear(cyear);stop();break;default:printf(" 选择有误,请重选!\n");/*" 选择有误,请重选!"*/}}} int findname(char cname[]) /* 按姓名查找*/{int i;for(i=0;i<num;i++)if(strcmp(stu[i].name,cname)==0) /* 判断两个字符串相等*/return i; /* 查找成功*/return -1; /* 查找失败*/}void findyear(int cyear){int i,j,flag=0;for(i=0;i<num;i++)if(stu[i].year==cyear){ flag=1;break;}if(flag==0){printf(" 要查找的学生不存在\n");stop(); }else{printf(" 查找到的学生信息为:\n");/*" 查找到的学生信息为:"*/printf(" 学号姓名班级专业入学年 C 语言高数大物电路模电\n");printf("================================================================ ===\n");for(i=0;i<num;i++){if(stu[i].year==cyear) /* 判断两个数值相等*/{printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year); for(j=0;j<5;j++) printf(" %.1f",stu[i].score[j]); printf("\n");}}}}void panduani(int i) /* 通过i 的值,判断信息要查找的信息是否存在*/{int j;if(i==-1){printf(" 要查找的学生不存在\n");/* 要查找的学生不存在*/ stop();}else{printf(" 查找到的学生信息为:\n");/*" 查找到的学生信息为:"*/ printf(" 学号姓名班级专业入学年 C 语言高数大物电路模电\n");printf("================================================================ ===\n");printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year)Jfor(j=0;j<5;j++)printf(" %.1f",stu[i].score[j]);printf("\n");stop();}}void save() /* 保存文件*/{int i;FILE *fp;if((fp=fopen("stu.dat","wb"))==NULL) /* 创建二进制文件*/{printf(" 创建文件失败,请重新运行程序.\n"); /* 显示" 创建文件失败,请重新运行程序"*/exit(0); /* 终止程序*/}for(i=0;i<num;i++)fwrite(&stu[i],1,sizeof(struct student),fp); /* 将I+1 名学生成绩写入文件*/ fclose(fp);}void main() /* 主控菜单*/{char c;init();while(1){printf("\t\t 请选择 :\n");/* 请选择: */ c=getchar(); getchar(); switch(c){case '1': weihu(); break; case '2': tongji(); break; case '3': paixu1(); break; case '4': find1(); break; case '9': save(); exit(0); break; default:printf(" 选择有误,请重选 !\n");/*" 选择有误,请重选! "*/printf("\n\t\t***制作:王清珍,陈超,路梓裕,卢诚知,****\n"); printf("\n\t\t*************************************************\n");printf("\t\t* 、 t t • I 、/, 主菜单*\n");printf("\t\t* 1. 维护 *\n"); /* 维护 */ printf("\t\t* 2. 统计 *\n"); /* 统计 */ printf("\t\t* 3. 排序 *\n"); /* 排序 */ printf("\t\t*4. 查找*\n"); /* 排序 */ printf("\t\t*9. 存盘退出*\n"); /* 存盘退出printf("\t\t************* 欢迎登陆学生成绩管理系统 ************\n"); printf("\t\t** ********************************************* **\n");。

C语言程序设计报告 ---学生成绩管理系统

C语言程序设计报告 ---学生成绩管理系统

C语言程序设计报告 ---学生成绩管理系统一、背景学生的学习成绩是一起重要的信息,为了管理好学生的学习成绩,学校及老师在教学过程中,需要有一个对学生成绩进行统计与记录,用于注册成绩,查询发放证书等工作,需要一个学生成绩管理系统来进行辅助操作。

本文主要介绍我校用C语言实现的学生成绩管理系统。

二、系统概述学生成绩管理系统主要由三个模块组成,即:数据录入模块、数据处理模块和数据输出模块。

数据录入模块:将每个学生的个人资料、成绩数据及相关信息,用户图形用户界面录入进系统;数据处理模块:利用程序能实现学生的成绩,统一的处理成绩,例如排名、查找,等;数据输出模块:该模块是整个系统的核心模块,将输出内容包括:学生基本信息、每门课程的各项成绩、平均成绩、综合排名等相关信息,通过程序。

三、系统功能介绍1.数据录入:学生的基本信息及考试成绩等信息的输入,用于后续数据处理及学生成绩的查询。

2.成绩查询:具备基本的查询功能,可以根据学生的学号及姓名查询学生的成绩,以及详细的学生考试成绩。

3.信息统计:可以进行全体学生的各项考试成绩信息综合统计,统计分析每个班级、每个专业、每门课程的考试情况,以及学生的排名,让用户知道整体的学习情况及有效管理学生的学习。

4.安全设置:系统具备安全设置功能,确保用户的信息安全,保证用户的登录权限,为系统及用户提供足够的安全保障,确保系统的数据安全。

四、系统分析系统分析阶段主要包含了分析及设计的步骤,为了更好的实现学生成绩管理的功能,系统分析中分析出学生信息、班级信息、考试信息等相关信息,以便为系统设计提供理论依据。

系统设计是系统分析的一个重要环节,通过设计,能够实现系统的功能,系统设计中定义出系统的基本流程及外部接口,使得系统能够正常运行。

五、系统实现六、系统测试学生成绩管理系统在功能测试过程中,通过实际的操作来测试学生成绩管理系统,测试的主要内容是系统的基本功能及系统的数据安全性,通过实际的操作,测试员可以详细的检查系统是否符合预期的功能,以及系统的正确度,从而保证系统的可靠性及安全性。

C语言-学生成绩管理系统

C语言-学生成绩管理系统

在TC环境下吧,界面是一片的黑。

可以实现成绩的录入、查询、排序、物理删除、永久删除……记不太清楚了,当时我们的报告要求手写的,也没留下什么电子资料。

C语言还是很好学很好用的,希望对大家有帮助!#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>struct student{int id;char name[10];int age;char sex[10];char birthady[20];char address[50];char tel[15];char E_mail[30];}st[50];int i=0;void shuru() {char a;do{printf("\ninput num:");scanf("%d",&st[i].id);fflush(stdin);printf("\ninput name:");gets(st[i].name);printf("\ninput age:");scanf("%d",&st[i].age);fflush(stdin);printf("\ninput sex:");gets(st[i].sex);fflush(stdin);printf("\ninput birth:");gets(st[i].birthady);fflush(stdin);printf("\ninput address:");gets(st[i].address);printf("\ninput tell:");scanf("%s",&st[i].tel);printf("\ninput E_mail:");scanf("%s",&st[i].E_mail);printf("\nWhether input another student's information ?(y/n)");fflush(stdin);a=getchar();i++;}while(a=='y' && i<=50);}void xianshi(){int j;printf("======================XUESHENGXINXIGUANLIXITONG=============================\n");printf("num\tname\tage\tsex\tbirth\taddr tell E_mail\n");for(j=0;j<i;j++)printf("%d\t%s\t%d\t%s\t%s\t%s%12s%18s\n",st[j].id,st[j].name,st[j].age,st[j].sex,st[j].birthady,st[j].address,st[j].tel,st[j].E_mail);printf("============================================ZHI ZUO REN:sunqi=========\n");}void clearscreen(){getchar();system("cls");}void paixu(){int j,k;int temp;for(j=0;j<i;j++){for(k=0;k<i-1-j;k++){if(st[k].age<st[k+1].age){temp=st[k].age;st[k].age=st[k+1].age;st[k+1].age=temp;}}}xianshi();}void chazhao(){int m=0;char name[20],b;do{printf("\ninput name of student:");fflush(stdin);gets(name);for(m=0;m<20;m++){if(strcmp(name,st[m].name)==0){printf("\n\tThe student is found in %d\n",m+1);break;}}if(m>=20)printf("\n\tCan not find this student\n");else{printf("num\tname\tage\tsex\tbirth\taddr tell E_mail\n");printf("%d\t%s\t%d\t%s\t%s\t%s%12s%18s\n",st[m].id,st[m].name,st[m].age,st[m].sex,st[m].birthady,st[m].address,st[m].tel,st[m].E_mail); }printf("\nFind another student?(y/n)");fflush(stdin);b=getchar();}while(b=='y');}void shanchu(){char name[20],c;int a,b;do{printf("\nInput the name of delet student:\n");fflush(stdin);gets(name);for(a=0;a<i;a++){if(strcmp(name,st[a].name)==0)break;}for(b=a;b<i;b++)st[b]=st[b+1];if(a>i)printf("\tCan not find this student\n");else{i--;xianshi();}printf("\nContinue delet a student?(y/n) ");fflush(stdin);c=getchar();}while(c=='y');}void charu(){shuru();paixu();}void main(){int change;do{system("cls");printf("*****************XUESHENG XINXI GUANLIXITONG *****************\n"); printf(" 1: shuru xuesheng xingxi\n");printf(" 2: xianshi xuesheng xinxi\n");printf(" 3: chazhao xuesheng xinxi\n");printf(" 4: shanchu xuesheng xinxi\n");printf(" 5: charu xuesheng xinxi\n");printf(" 6: paixu xuesheng xinxi\n");printf(" 7: tuichu chengxu\n");printf("***************************************************************\n"); fflush(stdin);printf("shuru gongneng xuanxiang:");scanf("%d",&change);switch(change){case 1:shuru(); break;case 2:xianshi(); break;case 3:chazhao(); break;case 4:shanchu(); break; case 5:charu(); break; case 6:paixu();break; case 7:break;}getch();}while(change!=7); }。

学生成绩管理系统c语言课程设计

学生成绩管理系统c语言课程设计

学生成绩管理系统c语言课程设计1. 介绍学生成绩管理系统是一种可以帮助学校或教育机构管理学生的成绩信息的软件系统。

它能够记录和管理学生的各门课程的成绩,提供成绩查询、统计分析以及生成报表的功能。

在这个项目中,我们将使用C语言来设计和实现一个简单的学生成绩管理系统。

2. 功能需求2.1 学生信息管理•添加学生信息:输入学生的学号、姓名、性别、年龄等基本信息,并将其保存到系统中。

•修改学生信息:根据学生的学号或姓名,找到对应的学生信息,并允许修改其基本信息。

•删除学生信息:根据学生的学号或姓名,找到对应的学生信息,并从系统中删除。

2.2 成绩管理•录入学生成绩:输入学生的学号或姓名,根据学号或姓名找到对应的学生信息,并记录其各门课程的成绩。

•查询学生成绩:根据学生的学号或姓名,找到对应的学生信息,并显示其各门课程的成绩。

•统计学生成绩:计算学生的总分、平均分等统计信息,并按照成绩排名进行排序并显示。

•生成成绩报表:将学生的成绩信息按照一定的格式输出到文件中,以方便查阅和打印。

2.3 界面设计•主菜单:显示系统的功能选项,包括学生信息管理、成绩管理、退出等选项。

•学生信息管理菜单:显示学生信息管理的功能选项,包括添加学生信息、修改学生信息、删除学生信息等选项。

•成绩管理菜单:显示成绩管理的功能选项,包括录入学生成绩、查询学生成绩、统计学生成绩、生成成绩报表等选项。

•输入提示:在功能选项中,根据需要给出相应的输入提示,以引导用户正确地操作系统。

3. 设计思路3.1 数据结构设计为了实现学生成绩管理系统,我们需要设计合适的数据结构来存储学生信息和成绩。

在这个项目中,我们可以使用结构体来表示学生信息,如下所示:struct Student {int id; // 学号char name[20]; // 姓名char gender[10]; // 性别int age; // 年龄float grades[5]; // 各门课程成绩};3.2 模块设计为了实现功能需求中的各项功能,我们需要设计相应的模块来实现。

c语言程序设计学生成绩管理系统报告

c语言程序设计学生成绩管理系统报告

c语言程序设计学生成绩管理系统报告C语言程序设计学生成绩管理系统报告一、引言随着计算机技术的不断发展,计算机在教育领域中的应用也越来越广泛。

学生成绩管理系统是一种基于计算机技术的教育管理工具,可以方便、快捷地管理学生的成绩信息。

本报告介绍了一种基于C语言的学生成绩管理系统的设计与实现。

二、系统设计1.需求分析学生成绩管理系统需要实现以下功能:(1)录入学生信息:包括学生姓名、学号、性别、年龄等基本信息。

(2)录入学生成绩:包括语文、数学、英语等科目的成绩。

(3)查询学生成绩:可以按照学号、姓名等条件查询学生成绩。

(4)修改学生成绩:可以修改学生的成绩信息。

(5)删除学生成绩:可以删除学生的成绩信息。

2.系统设计(1)数据结构设计本系统采用结构体来存储学生信息和成绩信息。

结构体的定义如下:typedef struct student{char name[20]; //姓名char id[20]; //学号char sex[10]; //性别int age; //年龄float chinese; //语文成绩float math; //数学成绩float english; //英语成绩}STUDENT;(2)界面设计本系统采用命令行界面,用户可以通过输入数字选择相应的功能。

(3)功能实现本系统实现了录入学生信息、录入学生成绩、查询学生成绩、修改学生成绩和删除学生成绩等功能。

具体实现方法如下:① 录入学生信息用户输入学生的基本信息,程序将信息存储到结构体中。

② 录入学生成绩用户输入学生的学号,程序查找该学生的信息并录入成绩。

③ 查询学生成绩用户输入学号或姓名,程序查找学生的信息并输出成绩。

④ 修改学生成绩用户输入学号,程序查找该学生的信息并修改成绩。

⑤ 删除学生成绩用户输入学号,程序查找该学生的信息并删除成绩。

三、系统实现本系统采用C语言编写,具体实现方法如下:(1)定义结构体typedef struct student{char name[20]; //姓名char id[20]; //学号char sex[10]; //性别int age; //年龄float chinese; //语文成绩float math; //数学成绩float english; //英语成绩}STUDENT;(2)录入学生信息void input_student(STUDENT *stu) {printf("请输入学生姓名:");scanf("%s", stu->name);printf("请输入学生学号:");scanf("%s", stu->id);printf("请输入学生性别:");scanf("%s", stu->sex);printf("请输入学生年龄:");scanf("%d", &stu->age);}(3)录入学生成绩void input_score(STUDENT *stu) {printf("请输入学生学号:");char id[20];scanf("%s", id);if(strcmp(stu->id, id) == 0){printf("请输入语文成绩:");scanf("%f", &stu->chinese);printf("请输入数学成绩:");scanf("%f", &stu->math);printf("请输入英语成绩:");scanf("%f", &stu->english);}}(4)查询学生成绩void search_score(STUDENT *stu){printf("请输入学号或姓名:");char id[20];scanf("%s", id);if(strcmp(stu->id, id) == 0 || strcmp(stu->name, id) == 0){printf("姓名:%s 学号:%s 性别:%s 年龄:%d 语文成绩:%.2f 数学成绩:%.2f 英语成绩:%.2f\n", stu->name, stu->id, stu->sex, stu->age, stu->chinese, stu->math, stu->english);}}(5)修改学生成绩void modify_score(STUDENT *stu) {printf("请输入学号:");char id[20];scanf("%s", id);if(strcmp(stu->id, id) == 0){printf("请输入语文成绩:"); scanf("%f", &stu->chinese); printf("请输入数学成绩:"); scanf("%f", &stu->math);printf("请输入英语成绩:"); scanf("%f", &stu->english); }}(6)删除学生成绩void delete_score(STUDENT *stu) {printf("请输入学号:");char id[20];scanf("%s", id);if(strcmp(stu->id, id) == 0){stu->chinese = 0;stu->math = 0;stu->english = 0;}}四、系统测试本系统经过测试,能够正常运行,并且实现了所有功能。

学生成绩管理系统C语言版

学生成绩管理系统C语言版

1、2、编一程序,能计算每个学生的总分和平均分。

3、编一程序,能按输入要求打印各门课程的最高分和最低分的同学。

4、编一程序,能将五个学生的成绩按总分进行降序排序。

5、编一程序,能删除一个学生的记录;6、编一程序,能增加一个学生的记录;建立一个菜单模式的学生信息管理系统,完成功能如下:一、建立主菜单*****学生信息管理系统*****1、输入学生信息2、输出学生信息3、计算每个同学成绩的总分与平均分4、对学生成绩进行排序5、输出每门功课最高分的同学信息6、输出每门功课最低分的同学信息7、退出系统主菜单界面:二、将综合练习一中的程序改写为子程序并能通过主菜单进行调用。

先上图开发环境windows 7,vc 6.0 开始贴代码:/*************** 张海山* 10软件2班* 安庆职业技术学院* QQ:136533295******************/#include"stdio.h"#include"stdlib.h"#include"malloc.h"#include"string.h"typedef struct lode{int id;char name[20];char sex[10];int score[4];struct lode *next;}lode,*linklist;linklist input(linklist head)//输入学生信息{char cmd='y';int t,i,l;char name[10];char sex[2];int score[3]={0};//int sum;linklist p;while(cmd=='y'||cmd=='Y'){p=(linklist)malloc(sizeof(lode));printf("请输入学生的编号\n");fflush(stdin);scanf("%d",&t);p->id=t;printf("请输入学生的姓名:\n");fflush(stdin);scanf("%s",p->name);/* l=strlen(p->name);p->sex[l]='\0';/* for(i=0;i<l;i++){p->name[i]=name[i];}*/printf("请输入学生的性别:\n");fflush(stdin);scanf("%s",p->sex);/* l=strlen(p->sex);p->sex[l]='\0';/* for(i=0;i<l;i++){p->sex[i]=sex[i];}*/fflush(stdin);printf("请依次输入学生的三门课成绩:\n");scanf("%d",&score[0]);p->score[0]=score[0];fflush(stdin);scanf("%d",&score[1]);p->score[1]=score[1];fflush(stdin);scanf("%d",&score[2]);p->score[2]=score[2];fflush(stdin);p->next=head->next;head->next=p;printf("是否继续(y)&返回主菜单(n) y&n\n");fflush(stdin);scanf("%c",&cmd);}return head;}linklist print(linklist head){linklist p;int i=1;p=head->next;printf("\t序号\t姓名\t性别\t英语\t数学\t语文\n");while(p!=NULL){printf("\t%d\t%s\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->score[0],p->score[1],p->sco re[2]);p=p->next;/*if(p==NULL)break;printf("%d\n",i);*/}//printf("%d\n",i);//printf("i=%d\n",i);return 0;}void avg(linklist head){int sum=0;double avg=0;linklist p;p=head->next;while(p!=NULL){sum=0;sum=p->score[1]+p->score[2]+p->score[0];avg=sum/3;printf("%s的总分为:%d\t平均分为:%.2lf\n",p->name,sum,avg);p=p->next;}}void maxmin(linklist head){linklist p;intmax1=0,max1index,min1=head->next->score[0],min1index,max2=0,max2index,min2=head->nex t->score[1],min2index,max3=0,max3index,min3=head->next->score[2],min3index;p=head->next;while(p!=NULL){if(max1<(p->score[0])){max1=p->score[0];max1index=p->id;}if(min1>=(p->score[0])){min1=p->score[0];min1index=p->id;}if(max2<(p->score[1])){max2=p->score[1];max2index=p->id;}if(min2>=(p->score[1])){min2=p->score[1];min2index=p->id;}if(max3<(p->score[2])){max3=p->score[2];max3index=p->id;}if(min3>=(p->score[2])){min3=p->score[2];min3index=p->id;}p=p->next;}printf("英语:\n");p=head->next;while(p!=NULL){if((p->id)==max1index)printf("英语最高分为:%d\t姓名为:%s\n",p->score[0],p->name);if((p->id)==min1index)printf("英语最低分为:%d\t姓名为:%s\n",p->score[0],p->name);p=p->next;}printf("数学:\n");p=head->next;while(p!=NULL){if((p->id)==max2index)printf("数学最高分为:%d\t姓名为:%s\n",p->score[1],p->name);if((p->id)==min2index)printf("数学最低分为:%d\t姓名为:%s\n",p->score[1],p->name);p=p->next;}printf("语文:\n");p=head->next;while(p!=NULL){if((p->id)==max3index)printf("语文最高分为:%d\t姓名为:%s\n",p->score[2],p->name);if((p->id)==min3index)printf("语文最低分为:%d\t姓名为:%s\n",p->score[2],p->name);p=p->next;}}void rank(linklist head){linklist p;int i=0,j,k,n=0;int sum[100];p=head->next;while(p!=NULL){n++;sum[i]=p->score[1]+p->score[2]+p->score[0];i++;p=p->next;}printf("n=%d\n",n);for(i=1;i<6;i++){for(j=0;j<6-i;j++)if(sum[j]<sum[j+1]){k=sum[j];sum[j]=sum[j+1];sum[j+1]=k;}}printf("\t序号\t姓名\t性别\t英语\t数学\t语文\n");for(i=0;i<n;i++){p=head->next;while(p!=NULL){if(sum[i]==(p->score[1]+p->score[2]+p->score[0])){printf("\t%d\t%s\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->score[0],p->score[1],p->sco re[2]);break;}p=p->next;}}}void add(linklist head){linklist p,q;p=head;q=(linklist)malloc(sizeof(lode));printf("请输入要插入学生的序号:\n");fflush(stdin);scanf("%d",&q->id);fflush(stdin);printf("请输入学生的姓名:\n");scanf("%s",q->name);fflush(stdin);printf("请输入学生性别:\n");scanf("%s",q->sex);fflush(stdin);printf("请依次输入学生的三门课成绩:\n");scanf("%d",&q->score[0]);fflush(stdin);scanf("%d",&q->score[1]);fflush(stdin);scanf("%d",&q->score[2]);fflush(stdin);q->next=NULL;while(p->next!=NULL){p=p->next;}p->next=q;//p->next=NULL;}void del(linklist head){linklist p,temp;int j;p=head->next;temp=head;printf("请输入要删除学生记录的序号:\n");scanf("%d",&j);while(p!=NULL){if(p->id!=j){p=p->next;temp=temp->next;}else{temp->next=p->next;free(p);break;}}}void main(){int cmd;linklist head;head=(linklist)malloc(sizeof(lode));head->next=NULL;do{printf("\n\n |***************学生成绩管理程序***************|\n");printf(" |----------------------------------------------|\n");printf(" | |\n");printf(" | 主菜单|\n");printf(" | |\n");printf(" |----------------------------------------------|\n");printf(" | |\n");printf(" | 请输入选择项目:|\n");printf(" | |\n");printf(" | 1、输入学生成绩|\n");printf(" | |\n");printf(" | 2、输出学生成绩|\n");printf(" | |\n");printf(" | 3、计算总成绩、平均成绩|\n");printf(" | |\n");printf(" | 4、求最高分、最低分|\n");printf(" | |\n");printf(" | 5、排序|\n");printf(" | |\n");printf(" | 6、增加记录|\n");printf(" | |\n");printf(" | 7、删除记录|\n");printf(" | |\n");printf(" | 0、退出系统|\n");printf(" | |\n");printf(" |----------------------------------------------|\n");scanf("%d",&cmd);switch(cmd){case 0:break; //退出系统case 1: input(head);break; //输入学生信息case 2: print(head);break; //输出学生信息case 3: avg(head);break; //求总成绩、平均数case 4: maxmin(head);break; //最高分case 5: rank(head);break; //排序case 6: add(head);break; //增加记录case 7: del(head);break; //删除记录default :printf("您输入错误!\n");}}while(cmd!=0);}因为是C语言版的要严格按照样子输入哦要不然就会出现不可预料的结果。

C语言课程设计 学生成绩管理系统

C语言课程设计 学生成绩管理系统
printf(" 70-80 %d %d %d %d\n",count[2],count1[2],count2[2],count3[2]);
printf(" 60-70 %d %d %d %d\n",count[1],count1[1],count2[1],count3[1]);
int sum1=0,sum2=0,sum3=0,sum4=0;
float aver[4];
for(i=0;i<N;i++)
{
sum1+=s[i].score1;
sum2+=s[i].score2;
sum3+=s[i].score3;
sum4+=s[i].score4;
int count[5]={0};
int count1[5]={0};
int count2[5]={0};
int count3[5]={0};
for(i=0;i<q;i++)
{
if(s[i].score1>=0&&s[i].score1<60)
count[0]++;
count1[4]++;
}
for(i=0;i<q;i++)
{
if(s[i].score3>=0&&s[i].score3<60)
count2[0]++;
if(s[i].score3>=60&&s[i].score3<70)
count2[1]++;

学生成绩管理系统C程序设计报告

学生成绩管理系统C程序设计报告

学生成绩管理系统C程序设计汇报一、设计规定:1. 规定运用C语言面向过程旳编程思想来完毕系统旳设计;2. 突出C语言旳函数特性,以多种函数实现每一种子功能;3. 画出功能模块图;4. 进行简朴界面设计,可以实现友好旳交互;5. 具有清晰旳程序流程图和数据构造旳详细定义;6. 纯熟掌握C语言对文献旳多种操作。

二、设计旳作用、目旳通过程序设计,提高编程爱好与编程水平。

设计一种学生成绩管理系统,上学期旳本班旳学习成绩进行管理,可以用数组设计这个程序,具有查询和检索功能,并且可以对指定文献操作,也可将多种文献构成一种文献。

通过对此程序旳设计纯熟掌握c语言。

三、课题分析输入N个学生旳学号和每个学生考试三门功课(数学、英语、计算机基础)旳成绩。

编程计算出每个学生旳总分和平均分,并按学生成绩优劣排序。

规定:具有:登记学生资料、删除学生资料、查询学生资料、修改学生资料、保留学生资料、退出系统等各项功能。

四、设计旳详细实现1、系统旳构成模块构造及功能(1)、目前学生信息:通过构造体struct student 来保留学生旳姓名,学号,性别,语文,数学,英语和计算机等等有关信息,并且通过cin函数来进行给目前学生输入初始信息.详细使用旳程序构造如下:printstart();printc();printe(s);printstart();printf("\n");return;}s=s->next;}p=(Node *)malloc(sizeof(Node)); strcpy(p->data.num,num);printf("请你输入姓名:");scanf("%s",p->); getchar();printf("请你输入性别:");scanf("%s",p->data.sex); getchar();printf("请你输入c语言成绩:"); scanf("%d",&p->data.cgrade); getchar();printf("请你输入数学成绩:"); scanf("%d",&p->data.mgrade); getchar();printf("请你输入英语成绩:");scanf("%d",&p->data.egrade);getchar();p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;p->data.ave=p->data.totle / 3;/* 信息输入已经完毕 */(2)、学生成绩查询: 输入一种学号, 在文献中查找此学生, 若找到则输出此学生旳所有信息和成绩; 若找不到则输出查找失败旳信息. 同步也可以所有把各科旳平均成绩,最高和最低分输出。

成绩管理系统c语言程序设计报告

成绩管理系统c语言程序设计报告

成绩管理系统c语言程序设计报告成绩管理系统C语言程序设计报告一、引言本报告旨在介绍一个基于C语言的成绩管理系统的设计与实现。

该系统能够实现学生成绩的录入、查询和统计等功能,提供便捷的成绩管理方案。

二、设计目标1.实现学生成绩的录入、查询和统计功能2.提供简洁易用的用户界面3.支持多种成绩查询方式,如按学号、姓名、科目等4.具备数据安全性和可靠性三、系统结构1.主函数模块–初始化系统–显示主菜单–根据用户选择执行相应功能2.学生管理模块–录入学生信息–查询学生信息–统计学生信息–删除学生信息3.成绩管理模块–录入学生成绩–查询学生成绩–统计学生成绩–修改学生成绩4.文件管理模块–将学生信息和成绩存储到文件–从文件读取学生信息和成绩四、系统设计与实现1.数据结构设计–学生信息结构体:包括学号、姓名、性别等字段–成绩信息结构体:包括学号、科目、分数等字段2.界面设计–使用菜单方式展示功能选项–引导用户输入相应指令执行功能3.功能实现–使用循环结构保持程序运行,直到用户选择退出–调用相应函数实现各项功能4.文件操作–使用文件指针保存学生信息和成绩–通过文件读写函数实现数据的存储和读取五、系统测试对系统进行全面的测试,包括录入学生信息、查询学生成绩、统计学生成绩等功能。

验证系统是否满足设计要求,并考虑可能出现的异常情况进行测试。

六、总结与展望通过本次项目的设计与实现,我们成功开发了一个基于C语言的成绩管理系统。

该系统具备了录入、查询和统计学生成绩的功能,以及数据的持久化存储。

然而,本系统仍有改进空间,如增加用户权限管理、优化界面交互等。

未来可进一步完善系统功能,提升用户体验。

以上是对成绩管理系统C语言程序设计的报告,旨在介绍系统的设计目标、结构、实现以及测试情况,并展望未来的发展方向。

该系统为学生成绩管理提供了便利,有望为教育行业带来积极影响。

学生成绩管理系统的C语言程序设计

学生成绩管理系统的C语言程序设计

#include ”stdio。

h”/*定义学生结构体*/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。

学生成绩管理设计报告c语言

学生成绩管理设计报告c语言

学生成绩管理设计报告c语言1. 引言学生成绩管理是学校教务工作中重要的一环,对于学生的学业发展和教育教学质量提升起着重要的作用。

为了更好地管理学生成绩信息,提高工作效率和信息准确性,我们设计了一款使用C语言开发的学生成绩管理系统。

本文将阐述学生成绩管理系统的需求分析、系统设计和实施方案。

2. 需求分析2.1 功能需求学生成绩管理系统应具有以下基本功能:1. 学生信息管理:包括学生基本信息的录入、编辑和删除,如学号、姓名、性别、年级等;2. 成绩录入:教师根据学生的课程成绩单,输入学生的具体成绩;3. 成绩查询:学生和教师可以查询学生的个人成绩和班级整体成绩;4. 统计分析:系统可以自动计算班级成绩的平均分、最高分、最低分等统计指标,并进行排名;5. 数据备份与恢复:对学生成绩信息进行备份和恢复,以防数据丢失。

2.2 性能需求为了满足大规模学生数量和复杂的成绩管理需求,系统需要具备以下性能要求:1. 数据处理迅速:能够在短时间内完成大规模学生信息和成绩的录入、查询和统计;2. 安全性能强:保障学生信息的安全性,防止未经授权的人员访问和修改;3. 数据准确性高:确保学生成绩数据的准确性,保证教学评价的客观性;4. 系统稳定性好:能够长时间稳定运行,不易崩溃或出现错误。

3. 系统设计3.1 数据结构设计学生成绩管理系统的数据结构设计包括学生信息结构和成绩信息结构。

c学生信息结构typedef struct {char stu_id[10]; 学号char stu_name[20]; 姓名char gender[5]; 性别int grade; 年级} Student;成绩信息结构typedef struct {char stu_id[10]; 学号char course_name[50]; 课程名float score; 分数} Score;3.2 模块设计学生成绩管理系统包括以下几个模块:1. 学生信息管理模块:用于学生信息的增、删、改、查;2. 成绩录入模块:教师根据指定格式的成绩单录入学生的成绩;3. 成绩查询模块:学生和教师可以根据学号或姓名查询学生的个人成绩和班级整体成绩;4. 统计分析模块:系统可以自动计算班级成绩的平均分、最高分、最低分等统计指标,并进行排名;5. 数据备份与恢复模块:对学生成绩信息进行备份和恢复,以防数据3.3 系统界面设计学生成绩管理系统的界面设计采用命令行界面,简洁、易用。

c语言课程设计学生成绩管理系统流程图

c语言课程设计学生成绩管理系统流程图

C语言课程设计学生成绩管理系统流程图本文介绍了一个基于C语言的学生成绩管理系统的流程图设计。

该系统可以帮助学校管理学生的成绩信息,包括录入学生成绩、查询学生信息、统计学生成绩等功能。

1. 系统流程图概览graph LRA[开始] --> B(登录系统)B --> C{登录是否成功}C -- 是 --> D(显示菜单)C -- 否 --> BD --> E[输入操作选项]E --> F{选择操作}F -- 1 --> G(录入学生成绩)F -- 2 --> H(查询学生信息)F -- 3 --> I(统计学生成绩)F -- 4 --> J(显示菜单)F -- 5 --> K(退出系统)G --> L[输入学生信息]L --> M[保存学生成绩]M --> N[继续操作]N --> GH --> O[输入学生学号]O --> P[查询学生信息]P --> NI --> Q[统计学生成绩]Q --> R[显示统计结果]R --> NJ --> DK --> S[结束]2. 系统流程图详解2.1. 开始系统开始运行,进入登录界面。

2.2. 登录系统用户输入登录信息,包括用户名和密码。

2.3. 用户登录验证系统对用户输入的用户名和密码进行验证,包括检查用户名是否存在和密码是否匹配等。

•如果登录验证成功,进入显示菜单页面。

•如果登录验证失败,返回登录系统页面,提示用户重新输入。

2.4. 显示菜单系统显示主功能菜单,供用户选择需要执行的操作。

2.5. 输入操作选项用户根据菜单提示,输入相应的操作选项。

2.6. 选择操作系统根据用户输入的操作选项,执行相应的操作。

•如果用户选择录入学生成绩,进入输入学生信息步骤。

•如果用户选择查询学生信息,进入输入学生学号步骤。

•如果用户选择统计学生成绩,进入统计学生成绩步骤。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告书学生成绩管理系统班级学号:姓名:指导老师:目录1、题目要求----------------------------------------------------------12、设计思想----------------------------------------------------------33、系统完成功能及框图-------------------------------------------34、界面设计----------------------------------------------------------45、核心算法及说明-------------------------------------------------76、结论----------------------------------------------------------------167、参考资料----------------------------------------------------------168、后记----------------------------------------------------------------16摘要:学生成绩管理系统提供了强大的学生成绩管理管理功能,方便系统管理员对学生成绩等信息的添加,修改,删除,查询,留言等操作,同时一样的方面学生对自己各科成绩查询,学习的交流.随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用.作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,有着手工管理所无法比拟的优点.1、题目要求题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。

主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单要求:使用二进制文件方式存储数据,系统以菜单方式工作2、设计思想我们设计的学生成绩管理系统共有7个功能,所涉及到的函数有按回车返回主菜单、查询、保存、输入、修改、输出、统计等等。

这是一个关于学生成绩的管理系统,所以就会涉及到一系列问题,例如:去各科成绩的总和、平均值、不几个学生的科目及对应的成绩。

这个程序的整个思路就是按照要求写出相应的程序并使之能够运行。

首先,写出所有能够用到的库函数,并设计出能够显示主菜单的程序。

其次按照主菜单设计出所有的有关程序。

再次,由于这个程序会用到结构体所以会涉及到“将数据从结构体数组保存到文件中”、“将数据从文件读到结构体数组中”这两个程序。

为了使程序更完美还涉及了主函数的显示。

最后,就可以按照主菜单进行一系列的操作。

其实,这些程序的设计都是根据以前学过的只是进行的简单的程序的叠加。

没有什么可以害怕或是担心的。

3、系统完成功能及框图4、界面设计主菜单运行1后界面运行4后界面运行5后界面5、核心算法及说明#include<stdio.h>#include<io.h>#include<stdlib.h>#include<string.h>#define MAX 300struct student{char cla[10]; //班级char term[10]; //学期char name[10]; // 姓名char no[10]; // 学号float ch; //语文float ma; //数学float en; //英语float com; //计算机};struct data{int count; // 当前学生数组中学生的个数struct student stu[MAX]; // 学生数组} dd;// 显示主菜单void menu(){system("cls");printf("\n");printf("\t\t\t************************************\n"); printf("\t\t\t* *\n"); printf("\t\t\t* 学生成绩管理系统 *\n"); printf("\t\t\t* *\n"); printf("\t\t\t* [0] 退出 *\n"); printf("\t\t\t* [1] 查看所有学生信息 *\n"); printf("\t\t\t* [2] 输入学生记录 *\n"); printf("\t\t\t* [3] 修改学生记录 *\n"); printf("\t\t\t* [4] 查询(班级) *\n"); printf("\t\t\t* [5] 查询(不及格记录) *\n"); printf("\t\t\t* [6] 成绩统计 *\n"); printf("\t\t\t* *\n"); printf("\t\t\t************************************\n"); }// 等待用户按回车后回到主菜单void to_menu(){char c1,c2;printf("\n\n\n按回车键返回主菜单...");scanf("%c%c",&c1,&c2);menu();}// 查看所有学生信息void view_data(){int i;printf("班级\t学期\t姓名\t学号\t语文\t数学\t英语\t计算机");printf("\n-------------------------------------------------------------------\n");for(i=0;i<dd.count;i++)printf("%s\t%s\t%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n",dd.stu[i].cla,dd. stu[i].term,dd.stu[i].name,dd.stu[i].no,dd.stu[i].ch,dd.stu[i].ma,d d.stu[i].en,dd.stu[i].com);}// 将数据从结构体数组保存到文件中void save_data(){FILE *fp;int i,k;k=dd.count;fp=fopen("c:/dada.txt","w");fwrite(&k,sizeof(int),1,fp);for(i=0;i<k;i++)fwrite(&dd.stu[i],sizeof(struct student),1,fp);fclose(fp);}// 输入学生记录(按班级和学期)void add_data(){struct student st;int b;int i,k,j;char term[10],cla[10];printf("请输入所要录入的学生的班级:");scanf("%s",cla);printf("请输入所要录入的学期:");scanf("%s",term);while(1){j=0;printf("\n请输入学生信息:");printf("\n姓名\t学号\t语文\t数学\t英语\t计算机");printf("\n---------------------------------------------------------------\n");scanf("%s%s%f%f%f%f",,st.no,&st.ch,&st.ma,&st.en,&);for(i=0;i<dd.count;i++){if(strcmp(dd.stu[i].no,st.no)==0&&strcmp(dd.stu[i].term,term)== 0){if(strcmp(dd.stu[i].no,st.no)==0)printf("\n信息已存在,请重新输入!\n");j=1;break;}}if(j==1)continue;if(j==0){k = dd.count;strcpy(dd.stu[k].cla,cla);strcpy(dd.stu[k].term,term);strcpy(dd.stu[k].name,);strcpy(dd.stu[k].no,st.no);dd.stu[k].ch=st.ch;dd.stu[k].ma=st.ma;dd.stu[k].en=st.en;dd.stu[k].com=;dd.count++;}printf("\n\n继续添加学生信息[1-yes 0-no]:"); scanf("%d",&b);if(b==0) break;}save_data();}// 将数据从文件读到结构体数组中void read_data(){FILE *fp;int i,k;struct student st;k=0;if(access("c:/dada.txt",0)==-1) // 如果文件不存在{fp=fopen("c:/dada.txt","w");fwrite(&k,sizeof(int),1,fp);fclose(fp);}fp=fopen("c:/dada.txt","r");fread(&k,sizeof(int),1,fp);dd.count=k;for(i=0;i<k;i++){fread(&st,sizeof(struct student),1,fp);strcpy(dd.stu[i].cla,st.cla);strcpy(dd.stu[i].term,st.term);strcpy(dd.stu[i].name,);strcpy(dd.stu[i].no,st.no);dd.stu[i].ch=st.ch;dd.stu[i].ma=st.ma;dd.stu[i].en=st.en;dd.stu[i].com=;}fclose(fp);}// 修改学生成绩记录(按班级和学期)void edit_data(){char cla[10],term[10];int i;float ch,ma,en,com;printf("请输入所要修改记录的班级:");scanf("%s",cla);printf("请输入所要修改记录的学期:");scanf("%s",term);for(i=0;i<dd.count;i++){if(strcmp(dd.stu[i].cla,cla)==0&&strcmp(dd.stu[i].term,term)==0 ){printf("\n姓名:%s,学号:%s",dd.stu[i].name,dd.stu[i].no);printf("\n请修改学生数据:");printf("\n语文成绩:");scanf("%f",&ch);dd.stu[i].ch=ch;printf("\n数学成绩:");scanf("%f",&ma);dd.stu[i].ma=ma;printf("\n英语成绩:");scanf("%f",&en);dd.stu[i].en=en;printf("\n计算机成绩:");scanf("%f",&com);dd.stu[i].com=com;printf("\n\n编辑学生记录成功!");}}save_data();}// 按班级输出成绩单void query_data_cla(){int i;char cla[10];printf("\n请输入要查询成绩的班级:");scanf("%s",cla);for(i=0;i<dd.count;i++){if(strcmp(dd.stu[i].cla,cla)==0){printf("班级\t学期\t姓名\t学号\t语文\t数学\t英语\t计算机");printf("\n-------------------------------------------------------------------\n");printf("%s\t%s\t%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n",dd.stu[i].cla,dd. stu[i].term,dd.stu[i].name,dd.stu[i].no,dd.stu[i].ch,dd.stu[i].ma,d d.stu[i].en,dd.stu[i].com);}}}//查询不及格科目的学生名单void query_data_pass(){int i,s=0;char cla[10],term[10];printf("请输入所要查询的班级:");scanf("%s",cla);printf("请输入所要查询的学期:");scanf("%s",term);for(i=0;i<dd.count;i++){if(strcmp(dd.stu[i].term,term)==0&&strcmp(dd.stu[i].cla,cla)==0) {printf("\n姓名:%s,学号:%s 的不及格科目有:",dd.stu[i].name,dd.stu[i].no);if(dd.stu[i].ch<60){printf("语文\t");s++;}s=0;if(dd.stu[i].ma<60){printf("数学\t");s++;}s=0;if(dd.stu[i].en<60){printf("英语\t");s++;}s=0;if(dd.stu[i].com<60){printf("计算机\t");s++;}s=0;if(s==0)printf("0科");}}}//成绩统计(按班级和学期)求总分和平均分void count_data(){char cla[10],term[10];int i,k=0;float sum[4]={0.0},average[4];printf("请输入所要统计记录的班级:");scanf("%s",cla);printf("请输入所要统计记录的学期:");scanf("%s",term);for(i=0;i<dd.count;i++){if(strcmp(dd.stu[i].cla,cla)==0&&strcmp(dd.stu[i].term,term)==0) {k++;sum[0]+=dd.stu[i].ch;sum[1]+=dd.stu[i].ma;sum[2]+=dd.stu[i].en;sum[3]+=dd.stu[i].com;}}average[0]=sum[0]/k;average[1]=sum[1]/k;average[2]=sum[2]/k;average[3]=sum[3]/k;printf("\n所查询%s班级%s学期的各科总分为:\n",cla,term);printf("语文\t数学\t英语\t计算机");printf("\n-------------------------------------------------------------------\n");printf("%.1f\t%.1f\t%.1f\t%.1f\t",sum[0],sum[1],sum[2],sum[3]);printf("\n所查询%s班级%s学期的各科平均分为:\n",cla,term); printf("语文\t数学\t英语\t计算机");printf("\n-------------------------------------------------------------------\n");printf("%.1f\t%.1f\t%.1f\t%.1f\t",average[0],average[1],average[2], average[3]);}// 主函数void main(){int fun;read_data();menu();while(1){printf("请输入功能号[0-8]:",&fun);scanf("%d",&fun);switch(fun){case 0: // 退出break;case 1: // 查看所有学生信息view_data();break;case 2: //按班级和学期输入学生记录add_data();break;case 3: // 按班级和学期修改学生记录edit_data();break;case 4: // 查询(按班级)query_data_cla();break;case 5: //查询不及格学生及科目(按照班级和学期)query_data_pass();break;case 6: // 成绩统计(按班级和学期求平均分和总分)count_data();break;}if(fun==0) break;to_menu();}}相关程序分析1、查看所有学生信息先定义相关变量,然后设计输入输出程序。

相关文档
最新文档