结构体数组实现学生成绩管理

合集下载

查询学生成绩 结构体的使用

查询学生成绩 结构体的使用

查询学生成绩结构体的使用学生成绩结构体可以用来存储一个学生的基本信息和各个科目的成绩。

下面是使用结构体来定义一个学生成绩的例子:cpp#include <iostream>#include <string>using namespace std;struct Student {string name;int id;double math_score;double english_score;double science_score;};int main() {Student s; = "T om";s.id = 1001;s.math_score = 85;s.english_score = 90;s.science_score = 92;cout << "姓名:" << << endl;cout << "学号:" << s.id << endl;cout << "数学成绩:" << s.math_score << endl;cout << "英语成绩:" << s.english_score << endl;cout << "科学成绩:" << s.science_score << endl;return 0;}输出结果为:姓名:Tom学号:1001数学成绩:85英语成绩:90科学成绩:92这个例子定义了一个名为Student的结构体,包含了一个字符串类型的name,一个整型的id和三个双精度浮点型的成绩属性。

在主函数中,定义了一个名为s的Student类型的变量,并赋值它的姓名、学号和各科成绩。

学生成绩管理系统(c语言结构体以及文件操作)实验报告

学生成绩管理系统(c语言结构体以及文件操作)实验报告
循环输出学生的成绩和学号等
没有找到这个学生的信息!
您还想继续进行查找吗?()
成绩输出
《成绩输出:》
写文件
已经成功写入文件!
读文件
谢谢您的使用
容错处理
输入错误!
2、各个模块
定义学生的信息结构体
函数功能:利用循环输入学生的学号姓名以及成绩等信息。
请输入参加考试的人数:
请输入第个学生的信息:学号,姓名,成绩(数学、英语,物理)
返回学生人数
定义学生信息的结构体
函数功能:计学生的平均分、总分
函数功能:循环输出学生的成绩信息
定义学生的信息结构体
声明打印的函数
函数功能:按照学生的总分进行排序
交换学号。
交换姓名
交换成绩
交换总分。
交换平均分。
函数功能:按照学生的姓名字进行排序
交换学号。
交换姓名
交换成绩
交换总分。
交换平均分。
函数功能,遍历查找学生的名字
熟悉文件的基本操作以及增量的测试方法
实验内容(问题,思路,程序,结果)
得分
一、设计思路:
仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)
1、输入初始的学生信息:其中包括学生的学号、姓名、数学、物理、英语成绩等相关信息;使用循环,以及结构体成员调用一次录入每个学生的成绩等学生信息
2、计算平均和总分模块:利用两层循环,计数变量累加一次循环一个学生、计数变量进行与科目次数相同的累加循环每个科目的成绩进行累加。
3、按照学生成绩以及姓名字典排序模块:比较学生成绩的高低以及姓名字典的大小,使用选择法进行排序
4、查询模块:遍历结构体数组,如果姓名相同则循环输出学生的信息。
5、写文件模块:使用函数打开文件以后进行循环写入。一直到最后一个学生。

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

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

C语⾔结构体版学⽣成绩管理系统本⽂实例为⼤家分享了C语⾔实现学⽣成绩管理系统的具体代码,供⼤家参考,具体内容如下结构体版的学⽣成绩管理系统主要功能有按1 输⼊学⽣信息按2 输出学⽣信息按3 查询学⽣信息按4 修改学⽣信息按5 删除学⽣信息按6 插⼊学⽣信息按7 排序总成绩信息学⽣信息主要有姓名,班级,学号,C语⾔成绩,⾼数成绩,⼤学英语成绩,控制台界⾯输出格式有点不美观。

#include<stdio.h>#include<string.h>struct student{char name[20];//名字char sex[10];//性别int number;//学号char ban[20];//班级int c;//C语⾔成绩int gaoshu;//⾼数成绩int yingyu;//⼤学英语成绩int sum;//总成绩}stu[60];int n;//学⽣数量void menu()//菜单{printf("\n");printf("***********************************\n");printf("*** 学⽣成绩管理系统 ***\n");printf("*** 按1 输⼊学⽣信息 ***\n");printf("*** 按2 输出学⽣信息 ***\n");printf("*** 按3 查询学⽣信息 ***\n");printf("*** 按4 修改学⽣信息 ***\n");printf("*** 按5 删除学⽣信息 ***\n");printf("*** 按6 插⼊学⽣信息 ***\n");printf("*** 按7 排序成绩信息 ***\n");printf("*** 按0 退出系统 ***\n");printf("***********************************\n");}void input()//学⽣信息的录⼊{int i,j=1;printf("\n 请输⼊总学⽣数量:");scanf("%d",&n);for(i=1;i<=n;i++){printf(" 输⼊第%d个学⽣相关信息\n",j++);printf("输⼊姓名\n");scanf("%s",stu[i].name);getchar();printf("输⼊性别\n");scanf("%s",stu[i].sex);printf("输⼊学号\n");scanf("%d",&stu[i].number);printf("输⼊班级\n");scanf("%s",stu[i].ban);printf("输⼊c语⾔成绩\n");scanf("%d",&stu[i].c);printf("输⼊⾼数成绩\n");scanf("%d",&stu[i].gaoshu);printf("输⼊⼤学英语成绩\n");scanf("%d",&stu[i].yingyu);stu[i].sum=stu[i].c+stu[i].gaoshu+stu[i].yingyu;printf("该学⽣的总成绩:%d\n",stu[i].sum);}}void output()//学⽣信息输出{int i;printf("----------学⽣信息的是----------\n");if(n==0)printf(" ++++++这⾥没有信息++++++\n");else for(i=1;i<=n;i++){printf("名字:%2s",stu[i].name);printf("性别:%2s",stu[i].sex);printf("学号:%2d",stu[i].number);printf("班级:%2s",stu[i].ban);printf("c语⾔成绩:%2d\n",stu[i].c);printf("⾼数成绩:%2d\n",stu[i].gaoshu);printf("英语成绩:%2d\n",stu[i].yingyu);stu[i].sum=stu[i].c+stu[i].gaoshu+stu[i].yingyu;printf("该学⽣的总成绩:%d\n",stu[i].sum);}}void search()//查询{int num,i,t;char a[20],k;if(n!=0){printf("选择查找条件(1:学号 2:名字)\n");scanf("%d",&t);if(t==1){printf("输⼊您要查找的学⽣的学号\n");scanf("%d",&num);for(i=1;i<=n;i++){if(stu[i].number==num){printf("名字:%s",stu[i].name);printf("性别:%s",stu[i].sex);printf("学号:%d",stu[i].number);printf("班级:%s",stu[i].ban);printf("c语⾔成绩:%d\n",stu[i].c);printf("⾼数成绩:%d\n",stu[i].gaoshu);printf("英语成绩:%d\n",stu[i].yingyu);stu[i].sum=stu[i].c+stu[i].gaoshu+stu[i].yingyu;printf("该学⽣的总成绩:%d\n",stu[i].sum);break;}} if(i>n) printf("您查找的信息不存在或者学号输⼊错误\n"); }if(t==2){printf("输⼊您要查找的学⽣的名字\n");scanf("%s",a);for(i=1;i<=n;i++){k=strcmp(stu[i].name,a);if(k==0){printf("名字:%s",stu[i].name);printf("性别:%s",stu[i].sex);printf("学号:%d",stu[i].number);printf("班级:%s",stu[i].ban);printf("c语⾔成绩:%d\n",stu[i].c);printf("⾼数成绩:%d\n",stu[i].gaoshu);printf("英语成绩:%d\n",stu[i].yingyu);stu[i].sum=stu[i].c+stu[i].gaoshu+stu[i].yingyu;printf("该学⽣的总成绩:%d\n",stu[i].sum);break;}}if(i>n) printf("您查找的信息不存在或者学号输⼊错误\n"); }}else printf("对不起,这⾥没有学⽣信息\n");}void change()//修改{int num,i;printf("输⼊您要修改的学⽣的学号\n");scanf("%d",&num);if(n==0) printf(" ++++++这⾥没有信息++++++\n");else{for(i=1;i<=n;i++){if(stu[i].number==num){printf("您要修改的学⽣信息为\n");printf("名字:%s",stu[i].name);printf("性别:%s",stu[i].sex);printf("学号:%d",stu[i].number);printf("班级:%s",stu[i].ban);printf("c语⾔成绩:%d\n",stu[i].c);printf("⾼数成绩:%d\n",stu[i].gaoshu);printf("英语成绩:%d\n",stu[i].yingyu);stu[i].sum=stu[i].c+stu[i].gaoshu+stu[i].yingyu;printf("该学⽣的总成绩:%d\n",stu[i].sum);printf("\n");break;}}if(i>n) printf("您查找的信息不存在或者学号输⼊错误\n"); else{printf("输⼊姓名\n");scanf("%s",stu[i].name);getchar();printf("输⼊性别\n");scanf("%s",stu[i].sex);printf("输⼊学号\n");scanf("%d",&stu[i].number);printf("输⼊班级\n");scanf("%s",stu[i].ban);printf("输⼊c语⾔成绩\n");scanf("%d",&stu[i].c);printf("输⼊⾼数成绩\n");scanf("%d",&stu[i].gaoshu);printf("输⼊⼤学英语成绩\n");scanf("%d",&stu[i].yingyu);}}}void del()//删除{int i,j,e,num;if(n!=0){printf(" ****这是所有学⽣的信息****\n");for(i=1;i<=n;i++){printf("--------------------------*\n");printf("名字:%s\n",stu[i].name);printf(" *\n");printf("性别:%s\n",stu[i].sex);printf(" *\n");printf("学号:%d\n",stu[i].number);printf(" *\n");printf("班级:%s\n",stu[i].ban);printf(" *\n");printf("c语⾔成绩:%d\n",stu[i].c);printf("⾼数成绩:%d\n",stu[i].gaoshu);printf("英语成绩:%d\n",stu[i].yingyu);stu[i].sum=stu[i].c+stu[i].gaoshu+stu[i].yingyu;printf("该学⽣的总成绩:%d\n",stu[i].sum);printf("--------------------------*\n");}printf("请输⼊您要删除的学⽣的学号:");scanf("%d",&num);for(i=1;i<=n;i++)if(stu[i].number==num){j=i;for(e=i-1;e<n;e++,j++){strcpy(stu[j].name,stu[j+1].name);strcpy(stu[j].sex,stu[j+1].sex);stu[j].number=stu[j+1].number;strcpy(stu[j].ban,stu[j+1].ban);stu[j].c=stu[j+1].c;stu[j].gaoshu=stu[j+1].gaoshu;stu[j].yingyu=stu[j+1].yingyu;n--;}}printf("**********该学⽣信息已删除**********\n");}else printf("对不起,这⾥没有学⽣信息\n");}void add()//插⼊{int i,j,t;if(n!=0){printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); printf("^ 注: 下⾯已有信息,如有重复请不要插⼊ ^\n"); printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"); printf("\n");for(i=1;i<=n;i++){printf("名字:%s",stu[i].name);printf("性别:%s",stu[i].sex);printf("学号:%d",stu[i].number);printf("班级:%s",stu[i].ban);printf("c语⾔成绩:%d\n",stu[i].c);printf("⾼数成绩:%d\n",stu[i].gaoshu);printf("英语成绩:%d\n",stu[i].yingyu);stu[i].sum=stu[i].c+stu[i].gaoshu+stu[i].yingyu;printf("该学⽣的总成绩:%d\n",stu[i].sum);printf("\n");}printf("是否继续插⼊(是:y 否:n)\n");printf("%c您的选择是:",t=getchar());t=getchar();if(t=='y'){j=n;printf("**********请插⼊学⽣相关信息**********\n");printf("输⼊姓名\n");scanf("%s",stu[j+1].name);getchar();printf("输⼊性别\n");scanf("%s",stu[j+1].sex);printf("输⼊学号\n");scanf("%d",&stu[j+1].number);printf("输⼊班级\n");scanf("%s",stu[j+1].ban);printf("输⼊c语⾔成绩\n");scanf("%d",&stu[j+1].c);printf("输⼊⾼数成绩\n");scanf("%d",&stu[j+1].gaoshu);printf("输⼊英语成绩\n");scanf("%d",&stu[j+1].yingyu);strcpy(stu[j+2].name,stu[j+1].name);strcpy(stu[j+2].sex,stu[j+1].sex);stu[j+2].number=stu[j+1].number;strcpy(stu[j+2].ban,stu[j+1].ban);stu[j+2].c=stu[j+1].c;stu[j+2].gaoshu=stu[j+1].gaoshu;stu[j+2].yingyu=stu[j+1].yingyu;printf(" 该学⽣信息已经插⼊\n");n++;}else printf("\n (▔▽▔)插⼊程序结束,请重新选择");printf("\n"); }else{i=1;printf("请输⼊要插⼊学⽣的相关信息\n");printf("输⼊姓名\n");scanf("%s",stu[i].name);getchar();printf("输⼊性别\n");scanf("%s",stu[i].sex);printf("输⼊学号\n");scanf("%d",&stu[i].number);printf("输⼊班级\n");scanf("%s",stu[i].ban);printf("输⼊c语⾔成绩\n");scanf("%d",&stu[i].c);printf("输⼊⾼数成绩\n");scanf("%d",&stu[i].gaoshu);printf("输⼊英语成绩\n");scanf("%d",&stu[i].yingyu);n++;}}void paixu(){int i,j,t;if(n!=0){printf("该排序是按照总分成绩从⾼到低进⾏排序\n");for(i=1;i<=n;i++)for(j=1;j<n;j++){if(stu[j].sum<stu[j+1].sum){t=stu[j].sum;stu[j].sum=stu[j+1].sum;stu[j+1].sum=t;}}for(i=1;i<=n;i++){printf("名字:%s\n",stu[i].name);printf("性别:%s\n",stu[i].sex);printf("学号:%d\n",stu[i].number);printf("班级:%s\n",stu[i].ban);printf("c语⾔成绩:%d\n",stu[i].c);printf("⾼数成绩:%d\n",stu[i].gaoshu);printf("总成绩:%d\n",stu[i].sum);}}else printf(" ++++++这⾥没有信息++++++\n");}void main(){int a,b=1;while(b){menu();printf("您选择的是: ");scanf("%d",&a);printf("\n");switch(a){case 1:input();break;//输⼊case 2:output();break;//输出case 3:search();break;//查找case 4:change();break;//修改case 5:del();break;//删除case 6:add();break;//插⼊case 7:paixu();break;//排序case 0:b=0;break;//退出}}printf(" 学⽣管理系统已退出( ^_^ )\n");}更多学习资料请关注专题《》。

C程序:学生成绩管理程序-结构体数组法

C程序:学生成绩管理程序-结构体数组法
for (p=head; p<head+n; p++)
{
printf("\nNo.%3d%8s", p->number, p->name);
for (i=0; i<m; i++)
{
printf("%7d", p->score[i]);
}
printf("%11d%9.2f\n", p->sum, p->erage);
}
}
}
int SearchNum(STU *head, int num, int n)
{
int i;
for (i=0; i<n; i++)
{
if ((head+i)->number == num) return i;
}
return -1;
}
if (findNo == -1)
{
printf("\nNot found!\n");
}
else
{
PrintScore(head+findNo, 1, m);
}
}
char Menu(void)
{
char ch;
printf("\nManagement for Students' scores\n");
}
}
void TotalScore(STU *head, int n, int m)
{
STU *p;
int i;

C课程设计学生成绩管理系统结构数组实现

C课程设计学生成绩管理系统结构数组实现

PART SIX
测试环境:Windows操作系统,Java开发环境,MySQL数据库 测试数据:学生成绩数据,课程数据,用户数据 测试工具:JUnit,Selenium,Postman 测试方法:单元测试,集成测试,系统测试,性能测试,安全测试
单元测试:针对每个功能模块进行测试,确保其正确性和稳定性

数据加密:使 用加密算法对 敏感数据进行 加密,确保数 据传输过程中
的安全性
身份验证:通 过用户名和密 码进行身份验 证,确保只有 授权用户才能
访问系统
访问控制:设 置不同的用户 权限,确保用 户只能访问其 授权范围内的
数据
安全审计:记 录所有用户的 操作日志,以 便在发生安全 问题时进行追
踪和调查
需求分析:明 确系统要实现 的功能和性能
要求
系统设计:确 定系统的架构 和模块划分, 设计数据库表
结构
编码实现:编写 代码实现各个模 块的功能,包括 用户登录、成绩 查询、成绩录入、
成绩修改等
测试与调试: 对系统进行测 试,发现并修 复bug,优化
系统性能
部署与维护:将 系统部署到服务 器上,定期进行 维护和更新,确 保系统的正常运
测试结果:功能测试、性能测试、 安全性测试等
添加标题
添加标题
测试工具:JUnit、Selenium、 LoadRunner等
添加标题
添加标题
性能评估:响应时间、吞吐量、资 源利用率等
错误处理:系统 在运行过程中可 能出现的错误类 型,如输入错误、 计算错误等,以 及相应的处理方 法。
系统优化:对系 统进行优化,提 高系统的运行效 率和稳定性,如 优化算法、优化 数据结构等。
优化数据结构:提 高数据查询和更新 的效率

C语言课设—结构体数组实现学生成绩管理功能

C语言课设—结构体数组实现学生成绩管理功能

目录●程序功能简介●题目分析●函数的调用关系图及主要算法●源程序及注释●测试流程●心得感想一、程序的功能简介:用结构体数组实现学生成绩管理功能,可以用于数据输入、数据输出、数组排序、元素插入、元素删除、查询的功能的一个程序。

二、题目分析和主要算法:通过一系列函数来实现数据的处理,有的函数之间是相互调用的关系。

Input_Record(struct student stu[]);通过上面的函数实现数据的录入Display_All_Record(struct student stu[]);通过此函数实现数据的显示的功能Insert_A_Record(struct student stu[]);Insert(struct student stu[],struct student*);通过以上的函数实现数据的键盘录入,并有序的插到原有数据中,其中第一个函数是读入,第二个函数时插入原有数据中。

Delete_Record(struct student stu[]);Delete(struct student stu[],char a[]);通过以上的两个函数实现数据的删除,其中第一个是实现要删除的学生的姓名,第二个是实现覆盖删除功能。

Sort_by_Name(struct student stu[]);该函数是实现数据的排序功能,按照姓名的升序排列。

WritetoText(struct student stu[]);该函数是实现书籍写入文档的功能AddfromText(struct student stu[]);该行数实现从一个文档中读取数据并有序的放到结构体数组中的功能Query(struct student stu[]);该函数实现查询功能,利用的是按姓名查询看是否与之匹配,并实现输出三、函数调用关系图:四、源程序及注释:#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<string.h>char ss[20];int n=0;typedef struct student{char name[20];float score;}stud;struct student stu[20],stuu,stuua;void begining();int menu_select();int Input(struct student stu[]);void Display(struct student stu[]);void Sort_by_Name(struct student stu[]);void Insert(struct student stu[],struct student*); void Insert_A_Record(struct student stu[]);void Delete(struct student stu[],char a[]);void Delete_Record(struct student stu[]);void Query(struct student stu[]);void AddfromText(struct student stu[]);void WritetoText(struct student stu[]);main(){begining();for (;;){switch (menu_select()){case 1:printf("Execution of function 1\n"); Input(stu);system ("pause");break;case 2:printf("Execution of function 2\n"); Display(stu);system ("pause");break;case 3:printf("Execution of function 3\n");Sort_by_Name(stu);system ("pause");break;case 4:printf("Execution of function 4\n");Insert_A_Record(stu);system ("pause");break;case 5:printf("Execution of function 5\n");Delete_Record(stu);system ("pause");break;case 6:printf("Execution of function 6\n");Query(stu);system ("pause");break;case 7:printf("Execution of function 7\n");AddfromText(stu);system ("pause");break;case 8:printf("Execution of function 8\n");WritetoText(stu);system ("pause");break;case 0:printf("谢谢使用,再见!\n");system("pause");exit(0);}}}int menu_select(){char c;do{system ("cls");printf("\n\n\t\t 1.Input Records\n"); printf("\t\t 2.Display All Record\n");printf("\t\t 3.Sort\n");printf("\t\t 4.Insert a Record\n");printf("\t\t 5.Delete a Record\n");printf("\t\t 6.Query\n");printf("\t\t 7.Add Record from a TextFile\n");printf("\t\t 8.Write to a Text File\n");printf("\t\t 0.Quit\n");printf("Give your choice(0-8):\n");scanf("%s",&c);}while (c<'0'||c>'8');return(c-'0');}int Input(struct student stu[]){int i=0,m;while (m!=0){printf("请您输入学生姓名和成绩:\n");scanf("%s%f",stu[i].name,&stu[i].score);i++;printf("您是否要继续输入,0——不是\n任意非零数字——是:\n");scanf("%d",&m);n=i;}}void Display(struct student stu[]){int i;if (n==0)printf("没有记录!\n");else{printf("序号\t\t姓名\t\t\t成绩\n");for (i=0;i<n;i++){printf("%d:\t\t%s\t\t\t%.1f\n",(i+1),stu[i].name,stu[i].score ); if ((i+1)%10==0)printf("\f");}}}void Sort_by_Name(struct student stu[]){int i,j;for (i=0;i<n;i++)for (j=0;j<n-1-i;j++)if (strcmp(stu[j].name,stu[j+1].name)>0) {stuu=stu[j];stu[j]=stu[j+1];stu[j+1]=stuu;}printf("排序成功!\n次序如下:\n");Display(stu);}void Insert_A_Record(struct student stu[]){struct student stuu1;struct student *p;printf("请您输入学生姓名和成绩:\n");scanf("%s%f",,&stuu1.score);p=&stuu1;Insert(stu,p);}void Insert(struct student stu[],struct student *p){int i,j;for (i=0;i<=n-1;i++)if (strcmp(p->name,stu[i].name)<0){for (j=n;j>i;j--)stu[j]=stu[j-1];stu[i]=*p;printf("操作成功");system("pause");break;}if (i==n){stu[n]=*p;printf("操作成功!");}n++;}void Delete_Record(struct student stu[]){int l;printf("请输入您要删除的学生名字:\n");scanf("%s",ss);printf("确定删除学生%s? 0——否\n任意非零数字——是\n",ss);scanf("%d",&l);if (l!=0){Delete(stu,ss);printf("操作成功\n");}}void Delete(struct student stu[],char a[]){int i,j,l;for(i=0;i<n;i++){if (strcmp(a,stu[i].name)==0){l=i++;break;}}if (i==n)printf("没有找到该学生.");elsefor (j=l;j<n-l;j++){strcpy(stu[j].name,stu[j+1].name);stu[j].score=stu[j+1].score;}n-=1;}void Query(struct student stu[]){char namelook[20];int i;printf("请输入您要寻找的学生的名字:\n");scanf("%s",namelook);printf("查询结果:\t\n");for (i=0;i<n;i++)if (strcmp(stu[i].name,namelook)==0)printf("\t姓名:%s\n \t成绩:%.2f\n",stu[i].name,stu[i].score); }void AddfromText(struct student stu[]){int i,num1;FILE *fp;char filename[20];printf("输入文件名:\n");scanf("%s",filename);if ((fp=fopen(filename,"r"))==NULL){printf("无法打开文件!\n");system("pause");}fscanf(fp,"%d ",&num1);for (i=0;i<num1;i++){fscanf(fp,"%s %f",stu[n+i].name,&stu[n+i].score);printf("\n");}system("pause");n+=num1;fclose(fp);Sort_by_Name(stu);}void WritetoText(struct student stu[]){int j;FILE *fp;char filename[20];printf("将信息写到另一个文件:\n请输入:");scanf("%s",filename);if ((fp=fopen(filename,"w"))==NULL){printf("无法打开\n");system("pause");}fprintf(fp,"%d ",n);for (j=0;j<n;j++)fprintf(fp,"%s %.2f",stu[j].name,stu[j].score);fclose(fp);printf("操作成功\n");}void begining(){printf("\n\n\n\n\n\n\t 董明佳\n\n\n"); printf("\t 070930115\n\n\n");printf("\t 支持正版\n\n\n");printf("\t 翻版必究\n\n\n\n\n\n\n");system ("pause");}五、测试流程:1、开始界面:董明佳070930115支持正版翻版必究2、菜单界面:输入相应的的数字选择需要的功能进行执行1.Input Records2.Display All Record3.Sort_by_Name4.Insert a Record5.Delete a Record6.Query7.Add Record from a TextFile8.Write to a Text File0.QuitGive your choice(0-8):3、输入1开始执行第一个:输入名字和成绩并判断是否继续输入,输入任意非零数字继续,输入0结束输入。

学生成绩管理系统结构体数组

学生成绩管理系统结构体数组
int sum; /*总分*/
}Student;
void main()
{
int a;int i=0;
printf("\t\t\1\1\1\1\1\1\1\1欢迎进入1102401班学生成绩管理系统\1\1\1\1\1\1\1\1\1\n");
printf("\t\t\t\t1.管理员登录\n\t\t\t\t2.用户登录\n\t\t\t\t3.退出\n");
break;
case 2:system("cls");
system("color 2f");
users();
break;
case 3:system("exit");
system("color 3f");
exit(0);
default:
system("cls");
main();
}
}
struct student stu[MAX],*p;
void save1(); /*保存到默认文件*/
void save2(); /*保存到指定文件*/
void remove(); /*删除文件*/
void remove1(); /*删除默认文件*/
void remove2(); /*删除指定文件*/
void copy(); /*复制指定文件*/
void rename(); /*重命名文件*/
void users(); /*用户登录界面*/
void menu(); /*主菜单*/
void input(); /*输入数据函数*/
void read(); /*读取函数*/

C语言利用结构体数组实现学生成绩管理系统

C语言利用结构体数组实现学生成绩管理系统

C语⾔利⽤结构体数组实现学⽣成绩管理系统要求:某班有最多不超过30⼈(具体⼈数由键盘输⼊)参加期末考试,最多不超过6门(具体门数由键盘输⼊)。

定义结构体类型描述学⽣信息,每个学⽣信息包括:学号、姓名、多门课的成绩、总成绩和平均成绩。

⽤结构体数组作为函数参数,编程实现如下菜单驱动的学⽣成绩管理系统。

(1)录⼊每个学⽣的学号、姓名和各科考试成绩。

(2)计算每门课程的总分和平均分。

(3)计算每个学⽣的总分和平均分。

(4)按每个学⽣的总分由⾼到低排出名次表。

(5)按学号由⼩到⼤排出成绩表。

(6)按姓名的字典顺序排出成绩表。

(7)按学号查询学⽣排名极其考试成绩。

(8)按姓名查询学⽣排名极其考试成绩。

(9)按优秀(90~100)、良好(80~90)、中等(70~80)、及格(60~70)、不及格(0~59)5个类别,对每门课程分别统计每个类别的⼈数以及所占的百分⽐。

(10)输出每个学⽣的学号、姓名、各科考试成绩以及每门课程的总分和平均分。

代码:#include<stdio.h>#include<Windows.h>#include<conio.h>#define SN 30 //学⽣⼈数#define CN 6 //科⽬数#define NL 20 //名字字节长度typedef struct student{long int num;char name[NL];float score[CN];float sum;float aver;}STU;STU s[SN];int itemSelected=-1;int n=0;//学⽣数int m=0;//课程数int Menu();//菜单void chose(int itemSelected);//选择void inputScore();//输⼊分数void AverofC();//计算每门课程平均数void AverofS();//每名学⽣总分和平均分void sortByNum();//学⽣总分排⾏void sortByGrade();void sortByName();void findByNum();void findByName();void statisticsAnalysis();void printScore();void main(){printf("请输⼊学⽣总数(n<%d):\n",SN);scanf("%d",&n);printf("请输⼊课程总数(m<%d):\n",CN);scanf("%d",&m);while(1){itemSelected=Menu();chose(itemSelected);itemSelected=-1;}}int Menu(){int itemSelected;system("cls");printf("\n ==============学⽣成绩管理系统===============\n");printf("\t 1.输⼊学号、姓名及各科成绩\n");printf("\t 2.计算每门课程总分和平均分\n");printf("\t 3.计算每个学⽣总分和平局分\n");printf("\t 4.按每个学⽣总分⾼低排出名次表\n");printf("\t 5.按学号从⼩到⼤排出成绩表\n");printf("\t 6.按学⽣字典顺序排出成绩表\n");printf("\t 7.按学号查询学⽣排名和考试成绩\n");printf("\t 8.按姓名查询学⽣排名和成绩\n");printf("\t 9.结果分析\n");printf("\t 10.输出信息\n");printf("\t 0.退出\n");printf("===============================================\n"); printf("请选择选项:");scanf("%d",&itemSelected);return itemSelected;}void chose(int itemSelected){switch(itemSelected){case 1: inputScore(); break;case 2: AverofC();break;case 3: AverofS();break;case 4: sortByGrade();break;case 5: sortByNum();break;case 6: sortByName();break;case 7: findByNum();break;case 8: findByName();break;case 9: statisticsAnalysis();break;case 10: printScore();break;case 0: exit(0);printf("即将退出程序");break;default: printf("输⼊错误!");break;}}void inputScore(){printf("\n===============================================\n"); printf("请输⼊学⽣学号、姓名及各科信息(输⼊0停⽌信息输⼊)\n");for(int i=0;i<n;i++){printf("学号(8位)");scanf("%ld",&s[i].num);if(s[i].num==0) break;getchar();//吸收多余换⾏符printf("姓名");gets(s[i].name);printf("请输⼊各科成绩");s[i].sum=0;for(int j =0;j<m;j++){scanf("%f",&s[i].score[j]);s[i].sum +=s[i].score[j];}}}void AverofC(){float sum[CN]={0};float average[CN]={0};for(int i=0;i<m;i++){for(int j=0;j<n;j++){sum[i]+=s[j].score[i];}average[i]=sum[i]/n;printf("第%d门课程的总分为:%.2f,平均分为%.2f\n",i+1,sum[i],average[i]); }getch();}void AverofS(){float sum[SN]={0};float average[SN]={0};for (int i=0;i<n;i++){for(int j=0;j<m;j++){sum[i]+=s[i].score[j];}average[i]=sum[i]/m;printf("第%d个学⽣的总分为:%.2f,平均分为%.2f\n",i+1,sum[i],average[i]);}getch();}void sortByNum(){//按学号从⼩到⼤排序STU temp1={0};for(int i=0;i<n-1;i++){if(s[i].num>s[i+1].num){temp1=s[i];s[i]=s[i+1];s[i+1]=temp1;}}printf("\n==============按学号从⼩到排序===============\n"); for(int j=0;j<n;j++){printf("该学⽣的学号为:%d\n",s[j].num);printf("该学⽣的姓名为:");for(int k=0;k<NL;k++){printf("%c",s[j].name[k]);}printf("\n该学⽣的各科成绩为\n");for(int c=0;c<m;c++){printf("第%d门成绩为%.2f\n",c+1,s[j].score[c]);}printf("\n");}getch();}void sortByGrade(){//按总分从⾼到低排序STU temp1={0};for(int i=0;i<n-1;i++){if(s[i].sum<s[i+1].sum){temp1=s[i];s[i]=s[i+1];s[i+1]=temp1;}}printf("\n============按总成绩从⾼到低排序===========\n");for(int j=0;j<n;j++){printf("该学⽣的学号为:%d\n",s[j].num);printf("该学⽣的姓名为:");for(int k=0;k<NL;k++){printf("%c",s[j].name[k]);}printf("\n该学⽣的各科成绩为\n");for(int c=0;c<m;c++){printf("第%d门成绩为%.2f\n",c+1,s[j].score[c]);}printf("该学⽣的总成绩为:%.2f",s[j].sum);printf("\n");}getch();}void sortByName(){//按姓名⾸字母字典顺序排序STU temp1={0};for(int i=0;i<n-1;i++){if(((int)(s[i].name[0])>(int)(s[i+1].name[0]))){//将名字⾸字母转成成ASCII码从⽽⽐较⼤⼩排序temp1=s[i];s[i]=s[i+1];s[i+1]=temp1;}}printf("\n==============按学号从⼩到排序===============\n"); for(int j=0;j<n;j++){printf("该学⽣的学号为:%d\n",s[j].num);printf("该学⽣的姓名为:");for(int k=0;k<NL;k++){printf("%c",s[j].name[k]);}printf("\n该学⽣的各科成绩为\n");for(int c=0;c<m;c++){printf("第%d门成绩为%.2f\n",c+1,s[j].score[c]);}printf("该学⽣的总成绩为:%.2f",s[j].sum);printf("\n");}getch();}void findByNum() {int find=-1;//记录需要查找的学号,并作为查找成功与否的标识符printf("请输⼊要查找的学号:");scanf("%d",&find);for(int i=0;i<n;i++){if(s[i].num==find){printf("\n查找成功\n");printf("该学⽣的学号为%d\n",s[i].num);printf("该学⽣的姓名为:");for(int k=0;k<NL;k++){printf("%c",s[i].name[k]);}printf("\n该学⽣的各科成绩为\n");for(int c=0;c<m;c++){printf("第%d门成绩为%.2f\n",c+1,s[i].score[c]);}printf("该学⽣的总成绩为:%.2f",s[i].sum);printf("\n");find=-2;}}if(find!=-2){printf("查⽆此⼈\n");printf("按任意键继续");}getch();}void findByName(){int is_find=0;char find[SN];printf("请输⼊要查找的姓名:");getchar();gets(find);for(int i=0;i<n;i++){if(strcmp(s[i].name,find)==0){printf("\n查找成功\n");printf("该学⽣的学号为%d\n",s[i].num);printf("该学⽣的姓名为:");for(int k=0;k<NL;k++){printf("%c",s[i].name[k]);}printf("\n该学⽣的各科成绩为\n");for(int c=0;c<m;c++){printf("第%d门成绩为%.2f\n",c+1,s[i].score[c]);}printf("该学⽣的总成绩为:%.2f",s[i].sum);printf("\n");is_find=1;}}if(is_find!=1){printf("查⽆此⼈\n");printf("按任意键继续");}getch();}void statisticsAnalysis(){printf("输出每门课程优秀、良好、中等、及格、不及格⼈数所占的百分⽐\n"); int a1[CN]={0},a2[CN]={0},a3[CN]={0},a4[CN]={0},a5[CN]={0};for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(s[i].score[j]>=90 && s[i].score[j]<=100){a1[j]++;}else if (s[i].score[j]>=80 && s[i].score[j]<90){a2[j]++;}else if (s[i].score[j]>=70 && s[i].score[j]<80){a3[j]++;}else if (s[i].score[j]>=60 && s[i].score[j]<70){a4[j]++;}else if (s[i].score[j]<60){a5[j]++;}}}printf("\n====================各们课程概况==================\n");for(int k=0;k<m;k++){printf("第%d门课的优秀⼈数占%.2f%%,",k+1,(a1[k]/(n*1.0))*100);printf("良好⼈数占%.2f%%,",(a2[k]/(n*1.0))*100);printf("中等⼈数占%.2f%%,",(a3[k]/(n*1.0))*100);printf("及格⼈数占%.2f%%,",(a4[k]/(n*1.0))*100);printf("不及格⼈数占%.2f%%,",(a5[k]/(n*1.0))*100);printf("\n");}getch();}void printScore(){printf("==============以下为学⽣信息==============");for(int j=0;j<n;j++){printf("该学⽣的学号为:%d\n",s[j].num);printf("该学⽣的姓名为:");for(int k=0;k<NL;k++){printf("%c",s[j].name[k]);}printf("\n该学⽣的各科成绩为\n");for(int c=0;c<m;c++){printf("第%d门成绩为%.2f\n",c+1,s[j].score[c]);}printf("该学⽣的总成绩为:%.2f",s[j].sum);printf("\n");}getch();}更多学习资料请关注专题《》。

学生成绩管理系统数据结构课程设计

学生成绩管理系统数据结构课程设计

学生成绩管理系统数据结构课程设计学生成绩管理系统是一个用于管理学生学习成绩的软件系统。

它通常用于学校、教育机构或教师们来跟踪和记录学生的学习进展,并生成报告和分析数据。

在数据结构课程设计中,学生成绩管理系统需要设计合适的数据结构来存储和操作学生成绩数据。

在设计学生成绩管理系统时,可以使用以下数据结构:1. 数组:可以使用数组来存储学生成绩数据。

每个学生的成绩可以用一个数组元素表示,可以将学生按照学号或者其他标识符按顺序存储在数组中。

这样可以方便地通过索引来访问和修改学生成绩。

2. 链表:链表是另一种常用的数据结构,可以用于存储学生成绩数据。

每个学生的成绩可以用一个节点表示,节点可以包含学生的信息和成绩,同时包含指向下一个节点的指针。

这样可以方便地插入、删除和查找学生成绩。

3. 树:树可以用于组织学生成绩数据。

可以使用二叉搜索树或平衡二叉树来存储学生成绩,其中学生的学号或者姓名可以作为关键字。

这样可以方便地进行查找、插入和删除操作,并可支持对学生成绩进行排序。

以上是一些常用的数据结构,用于存储学生成绩管理系统的数据。

在具体的设计中,还可以根据实际需求选择其他合适的数据结构。

除了数据结构,学生成绩管理系统还可能包括其他功能,例如:1. 添加学生:可以通过输入学生的基本信息和成绩,将学生添加到系统中。

2. 删除学生:可以通过学生的学号或其他标识符,从系统中删除某个学生的信息和成绩。

3. 修改成绩:可以根据学生的学号或其他标识符,修改学生的成绩信息。

4. 查询成绩:可以根据学号、姓名或其他条件,查询学生的成绩信息。

5. 成绩统计和分析:可以对学生的成绩进行统计和分析,生成报告和图表,帮助教师或学校了解学生的学习情况。

以上只是学生成绩管理系统可能包含的一些基本功能,具体的设计和实现还需要根据实际需求和要求进行进一步的扩展和深入分析。

通过合适的数据结构和功能设计,可以实现一个高效、易用和功能完善的学生成绩管理系统。

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

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

学生成绩管理系统课程设计报告一、课程设计题目基本要求本次课程设计的题目是学生成绩管理系统,要求实现以下功能: 1. 学生成绩录入:学生成绩管理系统应允许用户输入学生的学号、姓名、三门课的成绩以及平均成绩。

2. 学生成绩查询:学生成绩管理系统应允许用户按学号、姓名、以及单科成绩查询学生的成绩记录。

3. 学生成绩统计:学生成绩管理系统应允许用户按学号、姓名、以及平均成绩进行统计,并输出统计结果。

4. 学生成绩排序:学生成绩管理系统应允许用户按三科平均成绩、单科成绩、学号进行排序,并输出排序结果。

5. 退出系统:学生成绩管理系统应提供退出系统的选项,用户选择退出后,应退出系统。

二、设计要求1. 使用结构体数组实现学生成绩管理系统的数据结构。

2. 使用函数、指针、算法、流程结构及文件等综合应用实现学生成绩管理系统的各项功能。

3. 实现学生成绩管理系统的界面设计,包括菜单、表格、单选框、复选框、下拉框等控件的使用。

4. 使用数据库技术实现学生成绩管理系统的数据存储功能。

5. 实现学生成绩管理系统的测试流程,包括测试用例的设计和测试。

三、数据结构设计描述1. 数据字典数据字典是学生成绩管理系统的数据结构描述,包括以下数据流条目和数据存储条目:数据流条目:- 全部记录:最新更新后所有关于学生成绩的记录。

- 学生成绩记录:存放学生所有可供查询的信息。

数据存储条目:- 学生成绩记录:存放学生所有可供查询的信息,以索引文件的形式组织。

2. 数据结构学生成绩管理系统的数据结构包括以下结构体:- struct student:定义学生结构体,包括学号、姓名、三门课的成绩以及平均成绩。

- struct record:定义成绩记录结构体,包括学号、姓名、三门课的成绩以及平均成绩。

- struct database:定义数据库结构体,包括学生成绩记录数组,以及查询、统计、排序等函数。

四、系统功能描述1. 菜单设计学生成绩管理系统应提供以下菜单:- 成绩录入- 成绩查询- 成绩统计- 成绩排序- 退出系统2. 功能实现学生成绩管理系统的各项功能应分别实现如下:- 成绩录入:实现学生成绩的录入功能。

c语言,结构体数组管理学生成绩的试验报告

c语言,结构体数组管理学生成绩的试验报告

学生实验报告实验课名称: C语言程序设计实验项目名称:设计结构体数组管理学生信息专业名称:班级:学号:学生姓名:教师姓名:2011 年 6 月6实验日期:2011 年 6 月 6 日实验室名称:WM2205五.源程序:#include<stdio.h>#include<string.h>void main(){struct student{int num;char name[20];int score;}stu[5]={{1,"wang xiao",87},{2,"huang zhenyu",56},{3,"hai yan",79},{4,"xu yan",90},{5,"rong rong",80}}; /*定义一个结构体数组*/ int i,t,k,m=0,j=0;int temp;char nameq[20];char name2[30];char ma[20]="max";char mi[20]="min";int max,min;printf("排序后:");for(i=0;i<5;i++) /*冒泡排序*/ for(t=0;t<4-i;t++)if(stu[t].score>stu[t+1].score){temp=stu[t].score;stu[t].score=stu[t+1].score;stu[t+1].score=temp;} for(i=0;i<5;i++)printf("%3d",stu[i].score);for(i=0;i<5;i++) /*统计及格、不及格、优秀人数*/ if(stu[i].score<60)j++;printf("\n不及格人数: %d",j);k=5-j;printf("\n及格人数: %d",k);max=min=stu[0].score;for(i=1;i<5;i++){if(stu[i].score>max)max=stu[i].score;else if(stu[i].score<min)min=stu[i].score; }for(i=1;i<5;i++)if(stu[i].score>80)m++;printf("\n优秀人数: %d\n",m);printf("Input the information to search:"); /*查询有关信息*/ gets(nameq);for(i=0;i<5;i++)if(strcmp(nameq,stu[i].name)==0){printf("%s ",stu[i].name);printf(" %d %d\n",stu[i].num,stu[i].score);} gets(name2);if(strcmp(name2,ma)==0)printf("max=%d ",max);else if(strcmp(name2,mi)==0)printf("min=%d ",min);}。

第二部分 模块实现:用结构体优化学生成绩管理系统_C语言程序设计项目教程(第2版)_[共4页]

第二部分 模块实现:用结构体优化学生成绩管理系统_C语言程序设计项目教程(第2版)_[共4页]

任务六 用结构体优化学生成绩管理系统(结构体)187 第二部分 模块实现:用结构体优化学生成绩管理系统在上一章中介绍了用函数改善学生成绩管理系统,本章要完成利用结构体这种数据类型对此进行优化。

1.建立结构体类型struct student {char number[20]; / 学号 /char name[30]; / 姓名 /float scor_eng; / 英语成绩 /float scor_math; / 数学成绩 /float scor_phy; / 物理成绩 /};这个结构体类型会贯穿整个程序。

2.在函数main 中(1)添加结构体变量即用下述语句struct student record[100];来替换上一章所用到的多个数组:char name[100][30],number[100][20];float scor_eng[100],scor_math[100],scor_phy[100];(2)用结构体变量作实参即分别用下面的语句来相应替代上一章用数组作实参的函数调用:mycreat(xueshengnumber,record);myshow(xueshengnumber,record);myselect(xueshengnumber,record);mymodify(xueshengnumber,record);myadd(xueshengnumber,record);mydelete(xueshengnumber,record);3.子函数的优化(1)录入学生成绩int mycreat(int xueshengnumber,struct student record[100]){…while(tempname[0]!='#' && tempnumber[0]!='#') {strcpy(record[xueshengnumber].name,tempname);strcpy(record[xueshengnumber].number,tempnumber);。

学生成绩管理系统结构体数组

学生成绩管理系统结构体数组

// 1102401班学生成绩管理系统.cpp : Defines the entry point for the console application. //#include "stdafx.h"#include<stdio.h>#include<conio.h> /*清屏*/#include<stdlib.h> /*显示目录*/#include<string.h>#include<iostream>#include<windows.h>#pragma comment(lib,"winmm.lib")using namespace std;#define MAX 1000void manager(); /*管理员登录界面*/void users(); /*用户登录界面*/void menu(); /*主菜单*/void input(); /*输入数据函数*/void read(); /*读取函数*/void read1(); /*直接从文件读取*/void read2(); /*选择文件读取*/void display(); /*显示数据函数*/void display1(); /*显示各科成绩函数*/void display2(); /*以学号排序*/void sum(); /*求和函数*/void sort(); /*总成绩排序*/void sort1(); /*数学成绩排序*/void sort2(); /*英语成绩排序*/void sort3(); /*语文成绩排序*/void sort4(); /*物理成绩排序*/void sort5(); /*化学成绩排序*/void sort6(); /*按学号排序*/void modify(); /*修改文件函数*/void del(); /*删除数据函数*/void insert(); /*插入数据函数*/void find(); /*查找数据函数*/void find1(); /*按姓名查找*/void find2(); /*按学号查找*/void del_file(); /*删除文件函数*/void del_file1(); /*删除默认文件内容*/void del_file2(); /*删除指定文件内容*/void save(); /*保存数据函数*/void save1(); /*保存到默认文件*/void save2(); /*保存到指定文件*/void remove(); /*删除文件*/void remove1(); /*删除默认文件*/void remove2(); /*删除指定文件*/void copy(); /*复制指定文件*/void rename(); /*重命名文件*/int now_no;struct student /*定义学生信息*/{int no; /*学号*/char name[20]; /*姓名*/int shuxue; /*数学*/int yingyu; /*英语*/int yuwen; /*语文*/int wuli; /*物理*/int huaxue; /*化学*/int sum; /*总分*/}Student;void main(){int a;int i=0;printf("\t\t\1\1\1\1\1\1\1\1欢迎进入1102401班学生成绩管理系统\1\1\1\1\1\1\1\1\1\n");printf("\t\t\t\t1.管理员登录\n\t\t\t\t2.用户登录\n\t\t\t\t3.退出\n");printf("\t\t\t\t选择(1/2/3):");fflush(stdin);scanf("%d",&a); /*&as为引用型指针,意思是引用(int as)中的as,%d为整型数标志*/switch(a){case 1:system("cls");system("color 8f");manager();break;case 2:system("cls");system("color 2f");users();break;case 3:system("exit");system("color 3f");exit(0);default:system("cls");main();}}struct student stu[MAX],*p;void manager(){int h,flag1,flag2;char name[20]="1102401",password[10]="gis";char person[20],password1[10];printf(" \t\t\t\1\1\1\1\1\1\1\1\1\1\1\1管理员登录\1\1\1\1\1\1\1\1\1\1\1\1\1\n");for(h=0;h!=4;){printf("\n\t\t\t\t 帐号:");fflush(stdin);gets(person);flag1=strcmp(person,name); /*strcmp比较person,name,相等flag1=0*/printf("\t\t\t\t 密码:");gets(password1);flag2=strcmp(password,password1); /*比较password,password1,相等flag2=0*/if(flag1==0&&flag2==0){menu();break;}else{printf ("\t\t\t\a\2\2\2帐号或密码错误!\n\n");PlaySound("C:\windows\media\windows.wav",NULL,SND_FILENAME|SND_ASYNC|SN D_LOOP);printf ("\t\t\t\a\2\2\2请注意:您还剩%d次机会!\n\n",3-h);/*h先为0,“4-h”为剩下可输入次数,此时h仍为0*/system("pause");system("cls");h++;}}if (h=4)PlaySound(NULL,NULL,SND_FILENAME);system("cls");main();}void users(){printf ("\n\n\t\t\t********* 学生登录*********\n");int i,j;char password[10]="666666";char str[20],password1[10],as;do{read1();printf("\t\t\t\t 姓名:");fflush(stdin);gets(str);printf("\t\t\t\t 密码:");gets(password1);j=strcmp(password,password1);if(j==0){for(i=0;i<now_no;i++){if(!strcmp(stu[i].name,str)){system("cls");printf("\t学号\t\t姓名\t数学\t英语\t语文\t物理\t化学\t总分\n");printf("\t%u\t%s\t%.d\t%.d\t%.d\t%.d\t%.d\t%.d\n",stu[i].no,stu[i].name,stu[i].shuxue,stu[i].yingy u,stu[i].yuwen,stu[i].wuli,stu[i].huaxue,stu[i].sum);}}}else{printf("该学生不存在或密码错误,请您确认输入无误!\a\a\a\n");}system("pause");system("cls");main();}while(!as);system("cls");system("color 4f");}void menu(){PlaySound(NULL,NULL,SND_FILENAME);system("cls"); //清屏system("color 1f");int as;int i=0;do{printf("\n\t\t\t\t1.新录入学生成绩\n\t\t\t\t2.从文件读入学生成绩\n\t\t\t\t3.显示全体学生成绩\n\t\t\t\t4.总分排序\n\t\t\t\t5.全体学生单科成绩排序\n\t\t\t\t6.学号排序\n\t\t\t\t7.修改选定学生成绩\n\t\t\t\t8.删除选定学生成绩\n\t\t\t\t9.添加学生成绩\n\t\t\t\t10.查询选定学生成绩\n\t\t\t\t11.删除文件中学生成绩\n\t\t\t\t12.保存学生成绩\n\t\t\t\t13.删除文件\n\t\t\t\t14.复制文件\n\t\t\t\t15.重命名文件\n\t\t\t\t16.退出\n");printf("\t\t\t\t选择功能选项(输入所选功能前的数字):");fflush(stdin);scanf("%d",&as);switch(as){case 1:system("cls");system("color 8f");input();break;case 2:system("cls"); /*case *,*为as*/system("color 2f");read(); /*调用函数声明*/break;case 3:system("cls");system("color 0f");display();break;case 4:system("cls");system("color 1f");sort();break;case 5:system("cls");system("color 5f");display1();break;case 6:system("cls");system("color 7f");display2();break;case 7:system("cls");system("color 1f");modify();;break;case 8:system("cls");system("color 2f");del();break;case 9:system("cls");system("color 7f");insert();break;case 10:system("cls");system("color 6f");find();break;case 11:system("cls");system("color 9f");del_file(); /*删除文件中的信息*/break;case 12:system("cls");system("color 1f");save(); /*保存*/break;case 13:system("cls");system("color 3f");remove();break;case 14:system("cls");system("color 3f");copy();break;case 15:system("cls");system("color 3f");rename();break;case 16:system("cls");system("color 3f");main();break;default:system("cls");menu();}}while(1); /*while(1),1表示真,所以while(1)表示永远循环下去*/ /*至此功能选择模块结束*/}void input() /*学生信息录入模块*/ {int i=0;char ch;do{printf("\t\t\t\t1.录入学生信息\n输入第%d个学生的成绩\n",i+1); //i+1则使%d为1printf("\n输入10位的学生学号:");scanf("%s",&stu[i].no);fflush(stdin); /*清理缓存以防enter键为一个字符*/printf("\n输入学生姓名:");fflush(stdin);gets(stu[i].name); /*以字符串的方式输入第i个学生的学号*/printf("\n数学:");scanf("%d",&stu[i].shuxue);printf("\n英语:");fflush(stdin);scanf("%d",&stu[i].yingyu);printf("\n语文:");fflush(stdin);scanf("%d",&stu[i].yuwen);printf("\n物理:");fflush(stdin);scanf("%d",&stu[i].wuli);printf("\n化学:");fflush(stdin);scanf("%d",&stu[i].huaxue);printf("\n\n");i++;now_no=i;printf("是否继续输入?(Y/N)");fflush(stdin);ch=getch();system("cls");system("color Bf");}while(ch!='n'&&ch!='N');system("cls");system("color Cf");}void read(){{int n;int c=0;printf("\t\t\t\t1.读取默认存储文件\n\t\t\t\t2.读取指定存储文件\n\t\t\t\t3. 退出\n");printf("\t\t\t\t 选择(1/2/3):");fflush(stdin);scanf("%d",&n);switch(n){case 1:system("cls");system("color 8f");read1();break;case 2:system("cls");system("color 2f");read2();break;case 3:system("cls");system("color 3f");menu();default:system("cls");read();}}}void read1(){int i;char filepath[20];FILE *fp=fopen("1102401.xls","r");now_no=0;for(i=0;i<MAX&&!feof(fp);i++){fscanf(fp,"\t%d\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",&stu[i].no,stu[i].name,&stu[i].shuxue,&stu[i]. yingyu,&stu[i].yuwen,&stu[i].wuli,&stu[i].huaxue,&stu[i].sum);now_no++;}fclose(fp);return;}void read2(){FILE *fp;int i;char filepath[20];printf("输入要读入的文件路径:");fflush(stdin);gets(filepath);if((fp=fopen(filepath,"r"))==NULL){printf("找不到%s文件!\a\n",filepath);system("pause");system("cls");return;}now_no=0;for(i=0;i<MAX&&!feof(fp);i++){fscanf(fp,"\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",&stu[i].no,stu[i].name,&stu[i].shuxue,&stu[i]. yingyu,&stu[i].yuwen,&stu[i].wuli,&stu[i].huaxue,&stu[i].sum);now_no++;}fclose(fp);printf("保存的在文件%s中的所有信息已经读入!\n",filepath);system("pause"); /*按任意键继续*/system("cls");system("color 6f");}void display() /*显示成绩*/ {int i;char as;sum();do{printf("\t\t\t1102401班学生成绩如下\n");printf("\t学号\t\t姓名\t数学\t英语\t语文\t物理\t化学\t总分\n");for(i=0;i<now_no&&stu[i].name[0];i++)printf("\t%d\t%s\t%.d\t%.d\t%.d\t%.d\t%.d\t%.d\n",stu[i].no,stu[i].name,stu[i].shuxue,stu[i].yingy u,stu[i].yuwen,stu[i].wuli,stu[i].huaxue,stu[i].sum);printf("\t\t\t按任意键返回主菜单");fflush(stdin);as=getch();}while(!as);system("cls");system("color 1f");}void sum() /*求总分*/{int i;for(i=0;i<now_no;i++){stu[i].sum=stu[i].shuxue+stu[i].yingyu+stu[i].yuwen+stu[i].wuli+stu[i].huaxue;}}void display1() /*显示单科成绩排名*/ {int i;char as;do{printf("1102401班学生数学成绩排名\n");printf("\t学号\t\t姓名\t分数\n");sort1();for(i=0;i<now_no&&stu[i].name[0];i++)printf("\t%d\t%s\t%.d\t\n",stu[i].no,stu[i].name,stu[i].shuxue);printf("1102401班学生英语成绩排名\n");printf("\t学号\t\t姓名\t分数\n");sort2();for(i=0;i<now_no&&stu[i].name[0];i++)printf("\t%d\t%s\t%.d\t\n",stu[i].no,stu[i].name,stu[i].yingyu);printf("1102401班学生语文成绩排名\n");printf("\t学号\t\t姓名\t分数\n");sort3();for(i=0;i<now_no&&stu[i].name[0];i++)printf("\t%d\t%s\t%.d\t\n",stu[i].no,stu[i].name,stu[i].yuwen);sort4();printf("1102401班学生物理成绩排名\n");printf("\t学号\t\t姓名\t分数\n");sort3();for(i=0;i<now_no&&stu[i].name[0];i++)printf("\t%d\t%s\t%.d\t\n",stu[i].no,stu[i].name,stu[i].wuli);printf("1102401班学生化学成绩排名\n");printf("\t学号\t\t姓名\t分数\n");sort3();for(i=0;i<now_no&&stu[i].name[0];i++)printf("\t%d\t%s\t%.d\t\n",stu[i].no,stu[i].name,stu[i].huaxue);printf("\t\t\t按任意键返回主菜单");fflush(stdin);as=getch();}while(!as);system("cls");system("color Ff");}void display2(){int i;char as;sort6();sum();do{printf("\t\t\t1102401班学生成绩如下\n");printf("\t学号\t\t姓名\t数学\t英语\t语文\t物理\t化学\t总分\n");for(i=0;i<now_no&&stu[i].name[0];i++)printf("\t%d\t%s\t%.d\t%.d\t%.d\t%.d\t%.d\t%.d\n",stu[i].no,stu[i].name,stu[i].shuxue,stu[i].yingy u,stu[i].yuwen,stu[i].wuli,stu[i].huaxue,stu[i].sum);printf("\t\t\t按任意键返回主菜单");fflush(stdin);as=getch();}while(!as);system("cls");system("color 1f");}void modify() /*修改成绩*/{int i;char str[20];printf("输入要修改的学生姓名:");fflush(stdin);gets(str);for(i=0;i<now_no;i++){if(!strcmp(stu[i].name,str)){system("cls");system("color 5f");printf("\n\t\t输入修改后学生信息\n");printf("\n学号:");fflush(stdin);scanf("%d",&stu[i].no);printf("\n数学:");fflush(stdin);scanf("%d",&stu[i].shuxue);printf("\n英语:");fflush(stdin);scanf("%d",&stu[i].yingyu);printf("\n语文:");fflush(stdin);scanf("%d",&stu[i].yuwen);printf("\n物理:");fflush(stdin);scanf("%d",&stu[i].wuli);printf("\n化学:");fflush(stdin);scanf("%d",&stu[i].huaxue);printf("\n\n");sort();break;}}system("pause");system("cls");system("color 5f");}void sort() /*总分排名*/{struct student temp; /*temp指向成绩高的那个学生结点*/int i,j;sum();for(i=1;i<now_no;i++) /*now_no=0*/{for(j=1;j<=now_no-i;j++){if(stu[j-1].sum<stu[j].sum){temp=stu[j];stu[j]=stu[j-1];stu[j-1]=temp; /*位置传递*/}}}printf("排名已完成进入功能3可进行显示\n");system("pause");system("cls");system("color Df");}void sort1() /*数学排名*/ {struct student temp;int i,j;for(i=1;i<now_no;i++){for(j=1;j<=now_no-i;j++){if(stu[j-1].shuxue<stu[j].shuxue){temp=stu[j];stu[j]=stu[j-1];stu[j-1]=temp;}}}}void sort2() /*英语排名*/ {struct student temp;int i,j;for(i=1;i<now_no;i++){for(j=1;j<=now_no-i;j++){if(stu[j-1].yingyu<stu[j].yingyu){temp=stu[j];stu[j] =stu[j-1];stu[j-1]=temp;}}}}void sort3() /*语文排名*/ {struct student temp;int i,j;for(i=1;i<now_no;i++){for(j=1;j<=now_no-i;j++){if(stu[j-1].yuwen<stu[j].yuwen){temp=stu[j];stu[j]=stu[j-1];stu[j-1]=temp;}}}}void sort4() /*物理排名*/ {struct student temp;int i,j;for(i=1;i<now_no;i++){for(j=1;j<=now_no-i;j++){if(stu[j-1].wuli<stu[j].wuli){temp=stu[j];stu[j]=stu[j-1];stu[j-1]=temp;}}}}void sort5() /*化学排名*/ {struct student temp;int i,j;for(i=1;i<now_no;i++){for(j=1;j<=now_no-i;j++){if(stu[j-1].huaxue<stu[j].huaxue){temp=stu[j];stu[j]=stu[j-1];stu[j-1]=temp;}}}}void sort6() /*按学号排序*/{struct student temp;int i,j;for(i=1;i<now_no;i++){for(j=1;j<=now_no-i;j++){if(stu[j-1].no>stu[j].no){temp=stu[j];stu[j]=stu[j-1];stu[j-1]=temp;}}}}void del() /*删除学生成绩*/ {unsigned long inum;int i;printf("输入要删除学生的学号:");fflush(stdin);scanf("%d",&inum);for(i=0;i<now_no;i++) //找到学号相匹配的学生{if(stu[i].no==inum){if(i==now_no)now_no-=1;else{stu[i]=stu[now_no-1];now_no-=1;}sort(); /*再排序*/break;}}printf("\a该学生不存在,请您确认输入无误!\a\n");system("pause");system("cls");system("color 2f");}void insert() /*插入学生成绩*/ {do{printf("\n\t\t输入新插入学生成绩\n");printf("\n输入学生学号:");scanf("%d",&stu[now_no].no);fflush(stdin);printf("\n输入学生姓名:");fflush(stdin);gets(stu[now_no].name);printf("\n数学:");fflush(stdin);scanf("%d",&stu[now_no].shuxue);printf("\n英语:");fflush(stdin);scanf("%d",&stu[now_no].yingyu);printf("\n语文:");fflush(stdin);scanf("%d",&stu[now_no].yuwen);printf("\n物理:");fflush(stdin);scanf("%d",&stu[now_no].wuli);printf("\n化学:");fflush(stdin);scanf("%d",&stu[now_no].huaxue);printf("\n\n");now_no=now_no+1;sort();printf("是否继续输入?(Y/N)");fflush(stdin);ch=getch();system("cls");system("color 0f");}while(ch!='n'&&ch!='N');}void find(){int n;int c=0;printf("\t\t\t\t1.按姓名查询\n\t\t\t\t2.按学号查询\n\t\t\t\t3. 退出\n");printf("\t\t\t\t 选择(1/2/3):");fflush(stdin);scanf("%d",&n);switch(n)case 1:system("cls");system("color 8f");find1();break;case 2:system("cls");system("color 2f");find2();break;case 3:system("cls");system("color 3f");menu();default:system("cls");find();}}void find1() /*查询成绩*/{int i;char str[20],as;do{printf("姓名:");fflush(stdin);gets(str);for(i=0;i<now_no;i++){if(!strcmp(stu[i].name,str)){printf("\t学号\t\t姓名\t数学\t英语\t语文\t物理\t化学\t总分\n");printf("\t%d\t%s\t%.d\t%.d\t%.d\t%.d\t%.d\t%.d\n",stu[i].no,stu[i].name,stu[i].shuxue,stu[i].yingy u,stu[i].yuwen,stu[i].wuli,stu[i].huaxue,stu[i].sum);}}printf("\t\t\t按任意键返回主菜单");fflush(stdin);as=getch();system("cls");}while(!as);system("cls");system("color 4f");}void find2(){unsigned long inum;int i;printf("学号:");fflush(stdin);scanf("%d",&inum);for(i=0;i<now_no;i++){if(stu[i].no==inum){printf("\t学号\t\t姓名\t数学\t英语\t语文\t物理\t化学\t总分\n");printf("\t%d\t%s\t%.d\t%.d\t%.d\t%.d\t%.d\t%.d\n",stu[i].no,stu[i].name,stu[i].shuxue,stu[i].yingy u,stu[i].yuwen,stu[i].wuli,stu[i].huaxue,stu[i].sum);}else{printf("该学生不存在,请您确认输入无误!\a\a\a\n");}}system("pause");system("cls");}void del_file(){{int n;int c=0;printf("\t\t\t\t1.删除默认存储文件\n\t\t\t\t2.删除自定义存储文件\n\t\t\t\t3. 退出\n");printf("\t\t\t\t 选择(1/2/3):");fflush(stdin);scanf("%d",&n);switch(n){case 1:system("cls");system("color 8f");del_file1();break;case 2:system("cls");system("color 2f");del_file2();break;case 3:system("cls");system("color 3f");menu();default:system("cls");del_file();}}}void del_file1(){FILE *fp;char filepath[20];fp=fopen("1102401.xls","w");fclose(fp);system("cls");return;}void del_file2(){FILE *fp;char filepath[20];printf("输入要删除的文件路径:");fflush(stdin);gets(filepath);if((fp=fopen(filepath,"r"))==NULL){printf("\a找不到%s文件!请确认文件路径输入无误!\a\n",filepath);system("pause");system("cls");return;}elsefp=fopen(filepath,"w");fclose(fp);printf("保存的在文件%s中的所有信息已经删除!\n",filepath);system("pause");system("cls");system("color 7f");}void save(){{int n;int c=0;printf("\t\t\t\t1.保存到默认存储文件\n\t\t\t\t2.自定义存储文件\n\t\t\t\t3. 退出\n");printf("\t\t\t\t 选择(1/2/3):");fflush(stdin);scanf("%d",&n);switch(n){case 1:system("cls");system("color 8f");save1();break;case 2:system("cls");system("color 2f");save2();break;case 3:system("cls");system("color 3f");menu();}}}void save1(){FILE *fp=fopen("1102401.xls","w");int i;char filepath[20];for(i=0;i<now_no;i++){stu[i].sum=stu[i].shuxue+stu[i].yingyu+stu[i].yuwen+stu[i].wuli+stu[i].huaxue;fprintf(fp,"\t%d\t%s\t%.d\t%.d\t%.d\t%.d\t%.d\t%.d\n",stu[i].no,stu[i].name,stu[i].shuxue,stu[i].yi ngyu,stu[i].yuwen,stu[i].wuli,stu[i].huaxue,stu[i].sum);}fclose(fp);system("cls");system("color 3f");}void save2(){FILE *fp;int i;char filepath[20];printf("另存为(文件保存路径):");fflush(stdin);gets(filepath);if((fp=fopen(filepath,"w"))==NULL){printf("\n保存失败!");return;}for(i=0;i<now_no;i++){stu[i].sum=stu[i].shuxue+stu[i].yingyu+stu[i].yuwen+stu[i].wuli+stu[i].huaxue;fprintf(fp,"\t%d\t%s\t%.d\t%.d\t%.d\t%.d\t%.d\t%.d\n",stu[i].no,stu[i].name,stu[i].shuxue,stu[i].yi ngyu,stu[i].yuwen,stu[i].wuli,stu[i].huaxue,stu[i].sum);}fclose(fp);printf("学生信息已保存在%s中!\n",filepath);system("pause");system("cls");system("color 3f");}void remove(){int n;int c=0;printf("\t\t\t\t1.删除默认存储文件\n\t\t\t\t2.删除指定文件\n\t\t\t\t3. 退出\n");printf("\t\t\t\t 选择(1/2/3):");fflush(stdin);scanf("%d",&n);switch(n){case 1:system("cls");system("color 8f");remove1();break;case 2:system("cls");system("color 2f");remove2();break;case 3:system("cls");system("color 3f");menu();default:system("cls");remove();}}void remove1(){if(remove("1102401.xls")){printf("删除失败!\n","1102401.xls");system("pause");system("cls");remove();}else{printf("删除成功!");system("pause");system("cls");remove();}}void remove2(){char file[100];printf("输入文件删除路径:");fflush(stdin);gets(file);if (remove(file) != 0){perror("remove");printf("删除失败!请确认输入路径!\n");system("pause");system("cls");remove();}else{printf("成功删除%s.!\n",file);system("pause");system("cls");menu();}}void copy(){ FILE *f,*y;char a[20],b[20],ch;printf("请输入要复制文件的路径:");fflush(stdin);gets(a);printf("另存为(复制路径):");gets(b);f = fopen(a,"r+");y = fopen(b,"w+");ch = fgetc(f);printf("复制文件中...\n");while(ch!=EOF){fputc(ch,y);ch = fgetc(f);if(ch!=EOF){} else{printf("复制完成\n");}}fclose(f);fclose(y);system("pause");system("cls");menu();}void rename(){char oldname[20], newname[20];printf("输入源文件路径:");fflush(stdin);gets(oldname);printf("重命名为(路径):");gets(newname);if (rename(oldname, newname) == 0)printf("已将%s重命名为%s.\n",oldname,newname);elseperror("rename");system("pause");system("cls");menu();}。

结构体应用-统计学生成绩

结构体应用-统计学生成绩

结构体应⽤-统计学⽣成绩设计⼀个程序,统计⼀个班(最多有35⼈)的学⽣成绩,要求能实现如四个功能:(1)由键盘输⼊每个学⽣的学号和四门课程的成绩。

(2)计算每个学⽣的平均分和总分。

(3)按总分从⾼到低排出名次,并按名次输出每个学⽣的情况,包括:学号、各科成绩、平均分和总分。

(4)根据⽤户要求输出某门课程(由键盘输⼊课程号)成绩在90分以上(含90分)且总分在前五名的学⽣情况,包括:学号、各科成绩、平均分和总分。

具体要求如下:(1)每个功能为⼀个独⽴的函数。

(2)所有的输⼊之前都要有提⽰。

⽅法说明:⾸先,在主函数中定义以下⼏个数组:num[35] 整型⼀维数组,依次(按输⼊的顺序)存放学⽣的学号。

a[35][6] 实型⼆维数组,其中的每⼀⾏依次(按输⼊的顺序)存放⼀个学⽣的四门课程(课程号分别为1,2,3,4)的成绩、平均分与总分。

order[35] 整型⼀维数组,按名次存放学⽣情况的输⼊序号,即order[k]存放第k+1名(C语⾔中数组下标是从0开始)学⽣情况的输⼊序号。

然后依次调⽤四个功能函数。

#include<stdio.h>#include<conio.h>#define M 35 /*调试时可将此数值该得⼩⼀些*/#define N 6int number=0;void input(int num[M],float a[M][N]){int k=0,n;float a0,a1,a2,a3;printf("请输⼊学⽣信息:\n");printf("学号\t课程[1]\t课程[2]\t课程[3]\t课程[4]\n");scanf("%d%f%f%f%f",&n,&a0,&a1,&a2,&a3);while(n>=0 && k<35){number++;num[k]=n;a[k][0]=a0;a[k][1]=a1;a[k][2]=a2;a[k][3]=a3;k++;scanf("%d%f%f%f%f",&n,&a0,&a1,&a2,&a3);}}void count(float a[M][N]){int k;for(k=0;k<N;k++){a[k][5]=a[k][0]+a[k][1]+a[k][2]+a[k][3];a[k][4]=a[k][5]/4;}}void sort(float a[M][N],int order[M]){int i,j,k,n,temp;float d;for(i=0;i<M;i++)order[i]=i;for(i=0;i<M;i++){n=order[i];d=a[n][5];k=i;for(j=i+1;j<M;j++){n=order[j];if(a[n][5]>d){d=a[n][5];k=j;}}if(k!=i){temp=order[i];order[i]=order[k];order[k]=temp;}}printf("学⽣信息排序后结果为:\n");printf("名次\t学号\t课程[1]\t课程[2]\t课程[3]\t课程[4]\t平均分\t总分\n");for(i=0;i<number;i++){k=order[i];printf("第%d名\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",i+1,k+1,a[k][0],a[k][1],a[k][2],a[k][3],a[k][4],a[k][5]); }}void serch(int num[M],float a[M][N],int order[M]){int m=0,i,j,k,flag=0;while(m<1 || m>4){printf("请输⼊课程号(1或2或3或4):");scanf("%d",&m);}printf("学号\t课程[1]\t课程[2]\t课程[3]\t课程[4]\t平均分\t总分\n");for(i=0;i<5;i++){k=order[i];if(a[k][m-1]>=90){printf("%d\t",num[k]);flag=1;for(j=0;j<N;j++)printf("%.2f\t",a[k][j]);printf("\n");}}if(flag==0)printf("⽆学⽣信息!\n");}void main(){int num[M]={0};float a[M][N]={0};int order[M];char flag;input(num,a);count(a);sort(a,order);printf("是否需要查询?(y/n):");getchar();scanf("%c",&flag);while(flag=='Y'||flag=='y'){serch(num,a,order);printf("是否需要查询?(y/n):");getchar();scanf("%c",&flag);}getch();}。

结构体实现学生成绩管理系统

结构体实现学生成绩管理系统

I******************************** int count ;struct stude nt stud[MAX]; 全局变量II记录学生总人数II记录学生信息I******************************** void in put();void output();void Prin tMe nu();void computer();void fin d();void sort();函数声明*************************III输入学生信息II输出学生信息II显示菜单II计算学生成绩II根据学号或姓名查询成绩II成绩排名文件名称:基于结构体数组.cpp文件标识:摘要:结构体数组实现学生成绩管理系统要求:多么成绩的录入,查询某个学生(姓名,学号)的成绩,计算某学生平均分, 某门成绩平均分的排名,退出。

I***************************■J头文彳牛*********************************I#i nclude <stdio.h>#in clude <stri ng.h>#in clude <stdlib.h>I***************************常^量***********************************I#defi ne MENU_NUM 7#define N 3#defi ne MAX 100II记录的最大数量I****************************结士构^体********************************Istruct stude nt{char no[10]; I*学号由10个字符组成char n ame[15]; I*学生姓名*Ifloat score[N]; I*各门课成绩*Ifloat sum ; I*总分*Ifloat average ; I*平均分*I*1};*************************/int cmp(const void * a , const void * b ); II 排序规贝U} }void mai n() {int choose ; count = 0; while(1) {Prin tMe nu();scan f("%d", &choose); switch(choose) { case 1 :in put(); //输入成绩break ; case 2 :fin d(); //查询成绩break ; case 3 :computer 。

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

河北工业大学计算机软件技术基础(VC)2008年课程设计报告学院:电气自动化学院班级:电气c071 姓名:刘翔学号:073806 成绩: _ _ 一、题目:你选择的题目名称(编号是17号)二、设计思路1、总体设计1)分析程序的功能本程序的功能,就是实现对一个班学生的成绩管理。

可按课程输入学生成绩,并可按学生或课程进行查询。

2)系统总体结构:设计程序的组成模块,简述各模块功能本程序是完成一个班学生的成绩管理,为完成程序功能,至少要有两个这样的功能模块:输入成绩查询成绩因为查询模块中又分为:按学生查询按课程查询输入成绩:把学生个人成绩输入并储存。

查询成绩:在储存的成绩中查询所需的成绩。

按学生查询:以学生为列表查询某学生课程成绩。

按课程查询:以课程为列表查询某学生课程成绩。

2、各功能模块的设计:说明各功能模块的实现方法输入成绩:先选择输入成绩的课程,用if实现课程选择,后输入成绩,储存在定义的二维数组中。

查询成绩:先选择按学生查询还是按课程查询,并选择所查询的课程与学生,输出相应的成绩,运用了结构体数组。

3、设计中的主要困难及解决方案在这部分论述设计中遇到的主要困难及解决方案。

不会用结构体数组对成绩进行定义与调用,用二维数组代替并调用。

对学生信息与课程信息定义中格式有错。

1)困难1首先要解决信息的存储。

要定义两个结构数组,分别存储学生信息和课程信息。

学生信息包括学号和姓名,并且直接初始化;课程信息包括课程编号和课程名,也直接初始化。

因为主要是成绩管理,程序主要完成成绩的输入和查询,所以学生和课程信息直接在程序中进行初始化就可以了。

在数组中存储信息时,不仅要存储信息,还要为每个数组设置一个int变量,记录数组中实际存储了多少条信息。

2)困难2存储信息的调用。

3)困难3各个模块中函数的调用,循环。

4、你所设计的程序最终完成的功能1)说明你编制的程序能完成的功能输入学生的成绩,查询成绩。

可按课程输入学生成绩,并可按学生或课程进行查询。

2)准备的测试数据及运行结果66 67 68 6955 56 57 58三、程序清单#include<iostream.h>void input();void inquire();void accordingtostudent();void accordingtocourse();int m[4][7],n[10],p=1;struct student{int num;char name[20];}stu[4]={{51001,"Alice"},{51002,"John"},{52001,"Tom"},{52003,"Jim"}};struct course{int num;char name[16];}cl[7]={{1,"计算机基础"},{2,"计算机软件"},{3,"单片机"},{4,"大学英语"},{5,"英语阅读"},{6,"高等数学"},{7,"数值分析"}};void main(){int a;for(int i=0;i<5;i++){cout<<"欢迎使用学生成绩管理程序!"<<endl;cout<<"1.输入学生成绩"<<endl;cout<<"2.查询学生成绩"<<endl;cout<<"0.退出"<<endl;cout<<"请选择要紧进行操作"<<endl;cin>>a;if(a==1)input();if(a==2)inquire();if(a==0)break;}cout<<"谢谢使用本系统"<<endl;}void input(){int b,s;cout<<"课程信息如下"<<endl;for(int i=0;i<7;i++)cout<<cl[i].num<<'\t'<<cl[i].name<<endl;cout<<"请选择课程(输入序号):";cin>>b;s=b-1;n[p++]=b;cout<<"请输入<<"<<cl[s].name<<">>课程成绩"<<endl;for(int j=0;j<4;j++){cout<<stu[j].num<<'\t'<<stu[j].name<<'\t'<<"Grade=";cin>>m[j][b];cout<<endl;}}void inquire(){int c;cout<<"可进行查询操作为"<<endl;cout<<"1.按学生查询成绩"<<endl;cout<<"2.按课程查询成绩"<<endl;cout<<"0.退出"<<endl;cout<<"请选择要进行的操作:"<<endl;cin>>c;if(c==1)accordingtostudent();if(c==2)accordingtocourse();if(c==0)cout<<"谢谢使用本系统"<<endl;}void accordingtostudent(){int d;cout<<"学生信息如下"<<endl;for(int i=0;i<4;i++)cout<<i+1<<'\t'<<stu[i].name<<endl;cout<<"请选择学生(输入序号):";cin>>d;cout<<"查询"<<stu[d-1].name<<"同学的成绩如下"<<endl;for(int j=1;j<p;j++){cout<<cl[n[j-1]].name<<'\t'<<m[j-1][n[j]]<<endl;}}void accordingtocourse(){int e;cout<<"课程信息如下:"<<endl;for(int i=0;i<p-1;i++)cout<<cl[n[i]].num<<'\t'<<cl[n[i]].name<<endl;cout<<"请选择课程(输入序号)"<<endl;cin>>e;cout<<"查询<<"<<cl[e].name<<">>课程的成绩如下"<<endl;for(int j=0;j<4;j++)cout<<stu[j].name<<'\t'<<m[j][e]<<endl;}四、对该设计题目有何更完善的方案1、对自己完成程序进行自我评价。

能独立思考程序并完成程序编写与调试,不能很好的运用所学的知识解决程序中所出现的问题。

2、对课题提出更完善的方案1)可定义三个结构数组,分别存储学生信息、课程信息和成绩信息。

学生信息包括学号和姓名,并且直接初始化;课程信息包括课程编号、课程名和已登录成绩,也直接初始化;成绩信息包括学生信息的数组元素下标、课程信息数组元素下标、成绩。

学生和课程信息直接在程序中进行初始化就可以了。

2)对输入的数据要进行合理性检验,例如数组中存储了20名学生的信息,用户进行选择时,必须在这个范围内。

五、收获及心得体会1、通过本次课程设计,自己在哪些方面的能力有所提高。

对结构体数组运用,循环结构,函数的调用。

2、收获和心得体会。

1)能很好的运用结构体数组解决问题,对c++各个模块有了更深的认识,可以完成各种结构程序设计编写。

2)程序的编写很无聊,很难,编完以后觉得很有趣,喜欢编写程序。

日期:2008年6月21 日。

相关文档
最新文档