- 基于C语言学生成绩管理系统编程设计要
- 流程框图
- 代码内容
- 效果展示
- 总结
1.系统功能:
(1)通过菜单的形式实现人机交互界面
(2)实现录入学生基本信息和成绩功能
(3)实现删除指定学生的基本信息和成绩功能
(4)实现修改指定学生的基本信息和成绩功能
(5)实现查询指定学生的基本信息和成绩功能
(6)对学生成绩实现从大到小排序
(7)保存当前录入得全部学生信息,程序启动时需要打开上次保存得数据文件,读入到结构体中。
(8)每次执行完操作需要清屏
#include#include #include #define N 20 int length=0; struct Student{ int num; //学号 char name[9]; //姓名 char sex; //性别 float grade; //成绩 }s[N+1]; //结构体数组,s[0]用作哨兵 void display(){ printf("★☆☆☆☆学生成绩管理系统☆☆☆☆★n"); printf(" ★|1.添加学生信息|★n"); printf(" ★|2.显示学生信息|★n"); printf(" ★|3.按成绩排序 |★n"); printf(" ★|4.查找单个学生|★n"); printf(" ★|5.删除指定学生|★n"); printf(" ★|6.修改学生信息|★n"); printf(" ★|0.退出该程序 |★n"); printf("★☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆★n"); printf("请输入要使用的功能:n"); } //判断学号是否被占用 bool isUsed(int n){ //true:被占用,false:未被占用 bool flag=false; for(int i=1;i<=length;i++){ if(n==s[i].num) flag=true; } return flag; } //增添学生信息 void Add_management(struct Student *s){ printf("增添学生信息:n"); char yn='Y'; for(int i=length+1;yn=='Y';i++){ printf("请输入学生的学号:"); while(scanf("%d",&s[i].num)){ if(isUsed(s[i].num)) printf("该学号被占用,请重新输入:n"); else break; } printf("请输入学生的姓名:"); //scanf("%s",s[i].name); fflush(stdin); //清空默认缓冲区 gets(s[i].name); printf("请输入学生的性别:"); //scanf("%c",&s[i].sex); s[i].sex=getchar(); printf("请输入学生的成绩:"); scanf("%f",&s[i].grade); fflush(stdin); length++; printf("是否继续录入学生信息输入Y/Nn"); //scanf("%c",&yn); yn=getchar(); } } //显示全部学生信息 void Show(){ for(int i=1;i<=length;i++) printf("学生的学号为:%dt学生的姓名为:%st学生的性别为:%ct学生的成绩为:%.2fn",s[i].num,s[i].name,s[i].sex,s[i].grade); } //按成绩排序,从大到小排序 void Sort(struct Student *s){//使用冒泡排序 int flag=1; //flag用来标记某一趟排序是否发生交换 for(int i=1;i 效果展示 1.操作界面
总结
2.添加学生信息
3.显示学生信息
4.按成绩排序并输出
5.查找单个学生
6.删除学生信息
7.修改学生信息
8.退出程序
*9.再次打开程序
这次试验让我受益颇深,对C语言又有了新的认知,现在学到的只是还是比较浅显的,设计出来的这个程序还是有很多地方可以改善完善的,比如代码的健壮性和高效性都略有不足,这些都需要自己课后再下功夫。
本程序旨在训练我们的C语言基本编程能力,通过串联C语言输入输出、循环语句、子函数设计、数组、结构体、文件输入输出等知识点,完成一个简单系统的设计开发。



