学生成绩管理系统(结构体版)
来源:互联网 发布:mac看照片怎么下一张 编辑:程序博客网 时间:2024/06/06 12:32
前言:
又到了期末,还没开始复习的我,又开始帮别人写C语言期末作业了,既然是帮别人写学生成绩管理系统,那就贴出来好了。ps:我上半学期学完可是没做这个东西,既然别人让帮忙那不得做完装装逼。
不是我 不想用链表,人家不会 ,所以 只能写结构体版了 ,以后谁让我写链表版的我在贴出来就是了。
思路 :
1: 分析需求:
(1) 输入全班同学的信息。
(2) 统计每位同学的期末考试总成绩和平均成绩,并保存。
(3) 统计各科的最高分、最低分、不及格率,保存及输出,不及格率保留两位小数。
(4) 可以按照学号进行查找,输出查找到的信息。
(5) 按学号递增的顺序进行排序。
(6) 按总成绩递减的顺序进行排序。
所以说我的目录面板就确定了
2:设计:
1:我构造了 1个输入函数 和 4个输出函数 去对应 我需要的功能
2: 我想要在每次打印完所需内容后返回主菜单并清屏, 所以我多加了了一个清屏函数
3:我的习惯是从来不写函数声明(我懒),把函数写在主函数上面。ps:人家要求写,我也栏得改回去
3:实现
直接贴代码 如下
#include<stdio.h>struct student{ int num; //学号 int math; //数学成绩 int eng; //英语成绩 int C; //C语言成绩 int sum; //总成绩 double av; //平均成绩} st[100],t; //保存n个人的信息int main(){ int n; //n为学生人数 int i,j; void cin(int n); //信息录入函数声明 void output1(int n); //各科信息统计函数声明 void output2(int n); //查询(学号递增)函数声明 void output3(int n); //查询 (总分递减函数声明 void output4(int n); //查询(按序号)函数声明 void cls(); //清屏函数声明 while (1) { printf ("\t\t*****************************************\n"); printf ("\t\t* *\n"); printf ("\t\t* 学生信息管理系统 *\n"); printf ("\t\t* *\n"); printf ("\t\t* 1:信息录入 2:各科信息统计 *\n"); printf ("\t\t* 3:查询(学号递增) 4:查询 (总分递减)*\n"); printf ("\t\t* 5:查询(按序号) 6:退出 *\n"); printf ("\t\t* *\n"); printf ("\t\t*****************************************\n\n"); int n; printf ("请输入所需功能的序号:\n"); int gn; //功能编号 scanf("%d",&gn); if (gn==1) { n = cin1(); //录入入n个学生的信息 cls(); //清屏 } else if (gn==2) { output1 (n); //查询各科信息 cls(); } else if (gn==3) { output2 (n); //按学号查询 cls(); } else if (gn==4) { output3 (n); //按总分查询 cls(); } else if (gn==5) { output4 (n); //按学号查询成绩 cls(); } else if (gn==6) break; } return 0;}void cls() //清屏{ getchar(); //吃掉在上次操作最后的回车 printf ("按回车继续:\n"); getchar(); system("cls");}int cin1(){ int n; printf ("请输入学生的个数:\n"); scanf("%d",&n); int i; for (i=0; i<n; i++) //录入n个学生成绩 { printf ("请输入第%d个人的学号,数学成绩,英语成绩,C语言成绩(用空格隔开)\n",i+1); scanf ("%d%d%d%d",&st[i].num,&st[i].math,&st[i].eng,&st[i].C); st[i].sum = st[i].math+st[i].eng+st[i].C; st[i].av = 1.0*st[i].sum/3; } return n;}void output1(int n){ int i; int manm=0,mane=0,manc=0; //数学,英语, c 的不及格人数 int maxm=0,maxe=0,maxc=0; //数学,英语, c 最高分 int lowm=100,lowe=100,lowc=100; //数学,英语, c 最低分 for (i=0; i<n; i++) { if (st[i].math<60) // 累加小于60的人数 manm++; if (st[i].eng<60) mane++; if (st[i].C<60) manc++; if (maxm<st[i].math) // 找出最高分 maxm = st[i].math; if (maxe<st[i].eng) maxe = st[i].eng; if (maxc<st[i].C) maxc = st[i].C; if (lowm>st[i].math) //// 找出最低分 lowm = st[i].math; if (lowe>st[i].eng) lowe = st[i].eng; if (lowc>st[i].C) lowc = st[i].C; } double ram,rae,rac; //各科不及格比例 ram = 1.0*manm/n; rae = 1.0*mane/n; rac = 1.0*manc/n; printf ("\t\t*****************************************\n"); printf ("\t\t 数学 英语 C语言 \n"); printf ("\t\t 最高分 %d %d %d \n",maxm,maxe,maxc); printf ("\t\t 最低分 %d %d %d \n",lowm,lowe,lowc); printf ("\t\t 不及格率 %.2lf%% %.2lf%% %.2lf%% \n",100*ram,100*rae,100*rac); printf ("\t\t*****************************************\n\n");}void output2(int n){ int i,j; for (i=0; i<n; i++) //按学号递增排序 { for (j=i+1; j<n; j++) { if (st[i].num>st[j].num) { t = st[i]; st[i] = st[j]; st[j] = t; } } } printf ("\t\t***********************学号递增************************\n"); printf ("\t\t* 学号 数学 英语 C语言 总分*\n"); for (i=0; i<n; i++) { printf ("\t\t* %d %d %d %d %d *\n",st[i].num,st[i].math,st[i].eng,st[i].C,st[i].sum); }}void output3(int n){ int i,j; for (i=0; i<n; i++) //按总分递减排序 { for (j=i+1; j<n; j++) { if (st[i].sum>st[j].sum) { t = st[i]; st[i] = st[j]; st[j] = t; } } } printf ("\t\t***********************总分递减***********************\n"); printf ("\t\t* 学号 数学 英语 C语言 总分*\n"); for (i=0; i<n; i++) { printf ("\t\t* %d %d %d %d %d *\n",st[i].num,st[i].math,st[i].eng,st[i].C,st[i].sum); }}void output4(int n){ int i,num1,flag=0; printf ("请输入需要查询的学生学号:\n"); scanf("%d",&num1); for (i=0; i<n; i++) { if (st[i].num==num1) //当找到该学号后输出 { flag=1; printf ("\t\t* 学号 数学 英语 C语言 总分*\n"); printf ("\t\t* %d %d %d %d %d *\n",st[i].num,st[i].math,st[i].eng,st[i].C,st[i].sum); } } if (flag==0) printf ("该学生不存在\n");}
附上几章例图 自己感受一下 ,匆忙写完,有新想法再回来改
阅读全文
1 0
- 学生成绩管理系统(结构体版)
- (C语言)利用结构体数组制作学生成绩管理系统
- VC版学生成绩管理系统
- 学生成绩管理系统(1)
- 学生成绩管理系统(2)
- 学生成绩管理系统(c++)
- 学生成绩管理系统(转载)
- 学生成绩管理系统(课程设计)
- 学生成绩管理系统(2)
- 学生成绩管理系统及文件结构分析
- 简易版学生成绩管理系统(c++)
- 学生成绩管理系统(Linux Shell版)
- 学生成绩管理系统(C语言)
- 学生成绩管理系统(C语言)
- 学生成绩管理系统(C语言)
- 学生成绩管理系统(dos+文件)
- 学生成绩管理系统(JAVA版本)
- 学生成绩管理系统(java实现)
- QFileDialog 的各种属性设置介绍
- Qt5.5 QFileDialog类的使用方法
- js 简单计算器
- [BZOJ3209]花神的数论题
- php加密
- 学生成绩管理系统(结构体版)
- 添加样式
- C语言实现单链表面试题--基础篇
- Spring MVC 学习指南--- 第六章 converter 和formatter
- find命令错误提示“路径必须在表达式之前”的解决方法
- POJ 1984 Navigation Nightmare 笔记
- Python-第三方库requests详解
- mysql 日志
- 苹果CMS写模板中遇到的问题