网站建设与设计试题/seo推广任务小结
C语言成绩管理简易模块
/*********************************************************************
运行环境 :VS2019
名称 :成绩管理系统
功能 :对成绩进行排序等处理
所需知识点:接受字符的使用、成绩排序的算法、for语句的灵活使用、全局flag的使用、循环的break
制作人 :霍俊良
制作日期 :2021年3月17日
**********************************************************************/#include <stdio.h>
#include <stdlib.h>int flag = NULL;/*定义一个全局变量判断是否已有成绩录入(尽量避免使用)*/
int main(void)
{/*对函数定义*/void initialize();void function(int* q, float* w);float a[10] = { NULL };//取消垃圾值(填充空间)int b=0;initialize();while (1){if (flag != 2){printf("您要使用的功能:\n");b = getchar();//rewind(stdin);//清空缓存区便于getchar();下次的使用// 未能实现//fflush(stdin);function(&b, a);}else{while(1){ }}}return 0;
}
//*****************初始化界面****************//
void initialize()
{printf("******************学生成绩综合管理系统***************\n");printf("\t\t 1 成绩录入\n\t\t 2 计算平均分\n\t\t 3 计算最高分\n");printf("\t\t 4 成绩排序\n\t\t 5 退出\n");printf("*****************************************************\n");}
/***********总执行函数***********************利用基本switch {case}语句选择功能模块将数组a的地址和选择标志值的地址送入函数内实现选择语句模块并通过地址对成绩进行管理
*********************************************/void function(int * q, float * w)
{void function1(float* p);void function2(float* p);void Max(float* p);void decline(float* p);void Esc();if ((*q != 49) && (*q != 50) && (*q != 51) && (*q != 52)&& (*q != 53)){printf("输入错误,请重新输入\n");}else{switch (*q){case 49:function1(w); break;case 50:function2(w); break;case 51:Max(w); break;case 52:decline(w); break;case 53:Esc(); break;}}}
/***********功能模块1*************************成绩录入
*********************************************/
void function1(float* p)
{int i = 0;printf("你选择的是第1项功能:成绩录入\n");if (flag != 1)//判断是否已有成绩录入{printf("未输入成绩是否现在输入,输入请按1 否则按任意键\n");while (getchar() != '\n') //通过while循环删除缓存continue;i = getchar();//rewind(stdin);//清空缓存区便于getchar();下次的使用if (i == 49){printf("输入四个成绩:\n");scanf_s("%f%f%f%f", p, (p + 1), (p + 2), (p + 3));printf("四名同学的成绩分别为:%6.2f%6.2f%6.2f%6.2f\n", *p, *(p + 1), *(p + 2), *(p + 3));while (getchar() != '\n') //通过while循环删除缓存continue;flag = 1;}else {printf("结束\n");while (getchar() != '\n') //通过while循环删除缓存continue;}}else{printf("已输入成绩是否修改成绩,修改请按1 否则按任意键\n");while (getchar() != '\n') //通过while循环删除缓存continue;i = getchar();if (i == 49){printf("输入四个成绩:\n");scanf_s("%f%f%f%f", p, (p + 1), (p + 2), (p + 3));printf("四名同学的成绩分别为:\n%6.2f%6.2f%6.2f%6.2f", *p, *(p + 1), *(p + 2), *(p + 3));while (getchar() != '\n') //通过while循环删除缓存continue;}else {printf("结束\n");while (getchar() != '\n') //通过while循环删除缓存continue;}}
}
/***********功能模块2*************************计算平均分
*********************************************/
void function2(float* p)
{printf("你选择的是第2项功能:计算平均分\n");int i = 0;if (flag == 0){printf("\n暂无学生成绩是否需要输入,输入请按1 否则按任意键退出\n");while (getchar() != '\n') //通过while循环删除缓存continue;i = getchar();if (i == 49){printf("输入四个成绩:\n");scanf_s("%f%f%f%f", p, (p + 1), (p + 2), (p + 3));flag = 1;//成绩录入标志位printf("四位同学的平均分:%7.2f\n", (*p + *(p + 1) + *(p + 2) + *(p + 3))/4);while (getchar() != '\n') //通过while循环删除缓存continue;}else{printf("结束\n");while (getchar() != '\n') //通过while循环删除缓存continue;}}else{printf("\n已有学生成绩是否需要修改,修改请按1 否则按任意键直接得出平均分\n");while (getchar() != '\n') //通过while循环删除缓存continue;i = getchar();if (i == 49){printf("输入四个成绩:\n");scanf_s("%f%f%f%f", p, (p + 1), (p + 2), (p + 3));flag = 1;//成绩录入标志位printf("四位同学的平均分:%7.2f\n", (*p + *(p + 1) + *(p + 2) + *(p + 3)) / 4);while (getchar() != '\n') //通过while循环删除缓存continue;}else{printf("四位同学的平均分:%7.2f\n", (*p + *(p + 1) + *(p + 2) + *(p + 3)) / 4);while (getchar() != '\n') //通过while循环删除缓存continue;}}
}
/***********功能模块3*************************计算最高分
*********************************************/
void Max(float * p)
{printf("你选择的是第3项功能:计算最高分\n");int i;float max;if (flag == 0){printf("\n暂无学生成绩是否需要输入,输入请按1 否则按任意键退出\n");while (getchar() != '\n') //通过while循环删除缓存continue;i = getchar();if (i == 49){i = 1;printf("输入四个成绩:\n");scanf_s("%f%f%f%f", p, (p + 1), (p + 2), (p + 3));flag = 1;//成绩录入标志位for (int l = 0; l < 3; l++)//偷懒一个小步骤利用冒泡模块实现最大值dafor (int m = 0; m < 3 - l; m++)if (*(p + m) < *(p + m + 1)){max = *(p+m); *(p + m) = *(p +1+ m); *(p +1+ m) = max;}printf("四个成绩中的最大值Max = %5.2f\n", *p);while (getchar() != '\n') //通过while循环删除缓存continue;}else{printf("结束\n");while (getchar() != '\n') //通过while循环删除缓存continue;}}else{printf("\n已有学生成绩是否需要修改,修改请按1 否则按任意键直接得出最大值\n");while (getchar() != '\n') //通过while循环删除缓存continue;i = getchar();if (i == 49){printf("输入四个成绩:\n");scanf_s("%f%f%f%f", p, (p + 1), (p + 2), (p + 3));flag = 1;//成绩录入标志位for (int l = 0; l < 3; l++)//偷懒一个小步骤利用冒泡模块实现最大值到达头部for (int m = 0; m < 3 - l; m++)if (*(p + m) < *(p + m + 1)){max = *(p + m); *(p + m) = *(p + 1 + m); *(p + 1 + m) = max;}max = *p;printf("四个成绩中的最大值Max = %5.2f\n", max);while (getchar() != '\n') //通过while循环删除缓存continue;}else{printf("四位同学的平均分:%7.2f\n", (*p + *(p + 1) + *(p + 2) + *(p + 3)) / 4);while (getchar() != '\n') //通过while循环删除缓存continue;}}
}
/***********功能模块4*************************成绩排序
**********************************************/
void decline(float* p)
{printf("你选择的是第4项功能: 成绩排序\n");int i;float max;if (flag == 0){printf("\n暂无学生成绩是否需要输入,输入请按1 否则按任意键退出\n");while (getchar() != '\n') //通过while循环删除缓存continue;i = getchar();if (i == 49){i = 1;printf("输入四个成绩:\n");scanf_s("%f%f%f%f", p, (p + 1), (p + 2), (p + 3));flag = 1;//成绩录入标志位for (int l = 0; l < 3; l++)//偷懒一个小步骤利用冒泡模块实现最大值到达头部for (int m = 0; m < 3 - l; m++)if (*(p + m) < *(p + m + 1)){max = *(p + m); *(p + m) = *(p + 1 + m); *(p + 1 + m) = max;}printf("排好的降序成绩为:\n");for (i = 0; i < 4; i++)printf("%5.2f ",*(p+i));printf("\n");while (getchar() != '\n') //通过while循环删除缓存continue;}else{printf("结束\n");while (getchar() != '\n') //通过while循环删除缓存continue;}}else{printf("\n已有学生成绩是否需要修改,修改请按1 否则按任意键直接得出排序结果\n");while (getchar() != '\n') //通过while循环删除缓存continue;i = getchar();if (i == 49){printf("输入四个成绩:\n");scanf_s("%f%f%f%f", p, (p + 1), (p + 2), (p + 3));flag = 1;//成绩录入标志位for (int l = 0; l < 3; l++)//利用冒泡模块实现排序for (int m = 0; m < 3 - l; m++)if (*(p + m) < *(p + m + 1)){max = *(p + m); *(p + m) = *(p + 1 + m); *(p + 1 + m) = max;}printf("排好的降序成绩为:\n");for (i = 0; i < 4; i++)printf("%5.2f ", *(p + i));printf("\n");while (getchar() != '\n') //通过while循环删除缓存continue;}else{printf("排好的降序成绩为:\n");for (i = 0; i < 4; i++)printf("%5.2f ", *(p + i));printf("\n");while (getchar() != '\n') //通过while循环删除缓存continue;}}
}
/***********功能模块5*************************退出
*********************************************/
void Esc()
{printf("正在退出系统……");flag = 2;while (getchar() != '\n') //通过while循环删除缓存continue;
}
可根据使用自行更改模块,重点是一些函数模块的联合使用,指针的基础使用