目录

一:功能概述:

二:实现:

1.主源文件

1.打印菜单!

2.构建管理系统的框架:

二:辅源文件

1.使用结构体,方便后面的编写

2.输入学生信息

3.输出学生基本信息

3.按姓名查询

3.删除学生信息

4.修改学生信息

5.添加学生

6.按成绩打印学生排名

三:心得体会


一:功能概述:

实现:

1.学生学习成绩录入

2.学生学习成绩输出

3.删除某学生信息

4.按姓名查询某学生信息并输出

5.修改某学生信息

6.添加某学生信息

7.按总成绩排名   等等功能!

二:实现:

为了方便修改,同时增加代码的可读性,实现每一个功能的时候都应该用一个具体的函数。

同时,创建两个源文件,一个实现教务系统的逻辑为主源文件,一个完善实现逻辑时的所需要的函数块,为辅源文件。

1.主源文件

1.打印菜单!

9.void menu()
10.{
11.    printf("               欢迎使用Miao编写的教务管理系统                \n");
12.    Sleep(50);
13.    printf("请按任意将进入学生管理系统:\n");
14.    getchar();
15.    printf("=============================================================\n"); Sleep(50);
16.    printf("=============================================================\n"); Sleep(50);
17.    printf("||             1.学生学习成绩录入                          ||\n"); Sleep(50);
18.    printf("||             2.学生学习成绩输出                          ||\n"); Sleep(50);
19.    printf("||             3.删除某学生信息                            ||\n"); Sleep(50);
20.    printf("||             4.按姓名查询某学生信息并输出                ||\n"); Sleep(50);
21.    printf("||             5.修改某学生信息                            ||\n"); Sleep(50);
22.    printf("||             6.添加某学生信息                            ||\n"); Sleep(50);
23.    printf("||             7.按总成绩排名                              ||\n"); Sleep(50);
24.    printf("=============================================================\n"); Sleep(50);
25.    printf("=============================================================\n"); Sleep(50);
26.}   

打印时运用了getchar和sleep函数,增加了代码的可读性的同时也使其更加贴近于生活,使其变得有趣!

2.构建管理系统的框架:

int main()
{system("color e3\n");int num, Item;struct Student*  Arr = NULL;struct Student* p = NULL;while (1){menu();printf("\n请选择操作命令;\n");scanf("%d", &Item);switch (Item){case 1://输入学生信息{system("cls");num = Num();p = Input( Arr, num);}break;case 2://输出学生信息{Play_One_Play();system("cls");Output(p, num);}break;case 3://删除学生信息{system("cls");Delete(p, num);}break;case 4://查找学生信息{system("cls");Search(p, num);}break;case 5://修改学生信息{system("cls");Change(p, num);}break;case 6://添加学生信息{system("cls");Add(p, num);}break;case 7://将学生的总成绩按从大到小排序{Play_One_Play();system("cls");ScoreTotal(p, num);}break;}}return 0;
}

使用switch函数实现!其中使用了system 中colour函数,使最后运行的界面变为黄色!如:

//设置默认的控制台前景和背景颜色。
//
//5 :紫色背景色
//A :淡绿色的字体颜色
//
//每个数字可以为以下任何值 :
//0 = 黑色   8 = 灰色
//1 = 蓝色   9 = 蓝色
//2 = 绿色   A = 淡绿色
//3 = 浅蓝色 B = 淡浅绿色
//4 = 红色   C = 淡红色
//5 = 紫色   D = 淡紫色
//6 = 黄色   E = 淡黄色
//7 = 白色   F = 亮白色

同时使用了system清屏的功能,使得运行起来更加美观,流畅!

二:辅源文件

1.使用结构体,方便后面的编写

int num;
struct Student
{char Name[25];//姓名int Age;//年龄int Num;//学号float Score[2];//高数 英语成绩float Total;//总成绩
};
int Num()
{printf("请输入学生人数:\n");scanf("%d", &num);return num;
}

2.输入学生信息

struct Student* Input(struct Student*  Arr, int len)//输入学生的基本信息
{Arr = (struct Student*)malloc(len * sizeof(struct Student));int i;for (i = 0; i < len; i++){printf("请输入第%d个学生的姓名:\n", i + 1);scanf("%s",  Arr[i].Name);printf("请输入第%d个学生的年龄:\n", i + 1);scanf("%d", & Arr[i].Age);printf("请输入第%d个学生的学号:\n", i + 1);scanf("%d", & Arr[i].Num);printf("请输入第%d个学生的英语成绩:\n", i + 1);scanf("%f", & Arr[i].Score[0]);printf("请输入第%d个学生的高数成绩:\n", i + 1);scanf("%f", & Arr[i].Score[1]);//printf("请输入第%d个学生:\n姓名\t年龄\t学号\t高数\t英语\n",i);//scanf("%s\t%d\t%d\t%f\t%f");//计算总分Arr[i].Total =  Arr[i].Score[0] +  Arr[i].Score[1];}return  Arr;
}

使用动态内存分布,使用一个申请内存一个内存,减少了浪费。

3.输出学生基本信息

void Output(struct Student*  Arr, int len)
{printf("姓名\t年龄\t学号\t高数\t英语\t总分\n");for (int i = 0; i < len; i++){printf("%s\t%d\t%d\t%g\t%g\t%g\n",  Arr[i].Name,  Arr[i].Age,  Arr[i].Num,  Arr[i].Score[0], Arr[i].Score[1],  Arr[i].Total);}
}

3.按姓名查询

void Search(struct Student*  Arr, int len)
{int i;char Name[10];printf("请输入你需要查找的学生的姓名\n");scanf("%s", Name);for (i = 0; i < len; i++)//查找学生编号{if (0 == strcmp( Arr[i].Name, Name)){num = i;}}Output(& Arr[num], i);//输出}

3.删除学生信息

void Delete(struct Student*  Arr, int len)
{int i, num;char Name[10];printf("请输入你要删除数据的姓名:\n");scanf("%s", Name);for (i = 0; i < len; i++){if (0 == strcmp( Arr[i].Name, Name)){num = i;}}for (i = num; i < len; i++)//删除学生{Arr[i - 1] =  Arr[i];}Output( Arr, len - 1);//输出
}

4.修改学生信息

void Change(struct Student*  Arr, int len)
{char Name[10];printf("请输入你需要修改的学生的姓名:\n");scanf("%s", Name);int i, num;for (i = 0; i < len; i++){if (0 == strcmp( Arr[i].Name, Name)){num = i;}}printf("请输入学生的姓名:\n");scanf("%s",  Arr[num].Name);printf("请输入学生的年龄:\n");scanf("%d", & Arr[num].Age);printf("请输入学生的学号:\n");scanf("%d", & Arr[num].Num);printf("请输入学生的高数成绩:\n");scanf("%f", & Arr[num].Score[0]);printf("请输入学生的英语成绩:\n");scanf("%f", & Arr[num].Score[1]);Arr[num].Total =  Arr[num].Score[0] +  Arr[num].Score[1];Output( Arr, len);
}

使用strcmp函数来比较字符串是否相同,来实现其功能。

5.添加学生

void Add(struct Student*  Arr, int len)
{int num, i;printf("请输入添加的学生的人数:\n");scanf("%d", &num);struct Student* p = NULL;p = (struct Student*)malloc(sizeof(struct Student) * num);for (i = 0; i < num; i++){printf("请输入第%d个学生的姓名:\n", i + 1);scanf("%s", p[i].Name);printf("请输入第%d个学生的年龄:\n", i + 1);scanf("%d", &p[i].Age);printf("请输入第%d个学生的学号:\n", i + 1);scanf("%d", &p[i].Num);printf("请输入第%d个学生的高数成绩:\n", i + 1);scanf("%f", &p[i].Score[0]);printf("请输入第%d个学生的英语成绩:\n", i + 1);scanf("%f", &p[i].Score[1]);p[i].Total = p[i].Score[0] + p[i].Score[1];}Output( Arr, len);Output(p, num);
}

同理,使用的动态内存的申请!

6.按成绩打印学生排名

void ScoreTotal(struct Student*  Arr, int len)
{struct Student temp;int max;for (int i = 0; i < len - 1; i++){max = i;for (int j = i + 1; j < len; j++){if ( Arr[j].Total >  Arr[max].Total){max = j;}}if (max != i){temp =  Arr[max];Arr[max] =  Arr[i];Arr[i] = temp;}}Output( Arr, len);
}

使用冒泡排序,来实现排名!

三:心得体会

在编写代码时,很明显的感觉到自己结构体和指针这两个方面学习的不是特别好,自己无法正确的使用,因此在使用时有很大的麻烦!还有就是自己在此之前好久都没有认真动脑筋写过一道题,认真学习一个学习一个算法,因此自己在编写的时候很明显的感觉到了一种生疏感,以后自己一定要经常编写,来完善自己的能力!!!

这个代码依旧有许许多多的不足之处:输入的学号过长时,就无法与上面学号二字对其,在添加学生在输出后,所添加的学生上依旧有一行“学生 学号 等等”,也没有抽出比指定分数高的同学。有待完善的地方还有许许多多,自己在以后要用自己的知识将这个系统慢慢完善!

自己在写这个代码时同样也收货了许多的东西,例如为了使定义的函数的可读性更高,要随时打开英语翻译,将该函数的名字用其英文来定义。在写每一个函数是尽量做到注释,让自己在写完后更好的检查代码,同时也让读者更好的看懂代码。自己也可以在写代码时加入一些人性化的东西!增加代码的趣味性的同时也是自己在写代码时有一个更好的心情与激情!

写完这个管理系统,我想这并不意味这学习c语言的结束,恰恰相反,这正是学习的开始,相信自己在未来可以用自己的知识去编写,完善,创新一个新的软件!做出一个让自己满意,让使用者舒适的真正的好程序!

C语言:学生成绩管理系统相关推荐

  1. 用C语言学生成绩数据库排序功能设计,[c语言学生成绩管理系统]C语言学生成绩管理系统实验报告...

    篇一 : C语言学生成绩管理系统实验报告 实 验 四:结构体(6学时) 实验目的: 1.更加灵活的使用数组作为函数参数: 2.初步掌握开发一个小型实用系统的基本方法: 3.初步掌握书写程序设计开发文档 ...

  2. c语言按给定成绩查询,C语言学生成绩管理系统(简易版)

    #include #include #include int readstudents(struct students stu[]); //读取学生信息 int readsexcode(struct ...

  3. C语言学生成绩管理系统(课程设计报告书)

    今天再跟大家分享一份课程设计报告:C语言学生成绩管理系统源码 程序设计组成框图: #include<stdio.h> #include<conio.h> #include< ...

  4. C语言学生成绩管理系统源代码

    分享:C语言学生成绩管理系统设计 <C语言程序设计>实训报告 点击查看 ----> C语言学生成绩管理系统(课程设计报告书) 扫描下方公众号,发送 成绩系统 4个字,获取下载源码. ...

  5. c语言成绩管理系统教程,C语言学生成绩管理系统教程.doc

    C语言学生成绩管理系统教程 实训报告 题 目: 学生成绩管理系统院 系: 专 业: 姓 名: 学 号: 指导教师: 日 期: 目录 TOC \o "1-3" \h \z \u HY ...

  6. c语言成绩管理系统报告书,C语言学生成绩管理系统实验报告

    <C语言学生成绩管理系统实验报告>由会员分享,可在线阅读,更多相关<C语言学生成绩管理系统实验报告(22页珍藏版)>请在人人文库网上搜索. 1.学生成绩管理系统实验报告实验名称 ...

  7. C语言 学生成绩管理系统 带登录界面

    C语言 学生成绩管理系统 带登录界面 C语言课程设计 思路 部分展示 代码片段 C语言课程设计 先上要求: 思路 为了方便简单,直接利用结构体数组来存储学生学生,最后根据功能编写函数即可. 部分展示 ...

  8. c语言学生成绩管理系统(增、删、查、改、排序、分析优秀及格率等)

    复制时运行出错请看这里:c语言学生成绩管理系统 添加公众号回复 学管 免费获取源代码 代做可私聊 c语言学生成绩管理系统(增.删.查.改.排序.分析优秀及格率等)详细内容 一.功能描述 实现学生基本信 ...

  9. c语言学生成绩管理系统课设作业,C语言课程设计——学生成绩管理系统

    摘 要 学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段.但一直以来人们使用传统人工的方式 ...

  10. 更新学生的成绩C语言,学生成绩管理系统C语言代码实现.pdf

    学生成绩管理系统C语言代码实现 这篇文章主要为大家详细介绍了C语言代码实现学生成绩管理系统,文中示 代码介绍的非常详细,具有一定的参 考价值,感兴趣的小伙伴们可以参考一下 C语言实现了学生成绩管理系统 ...

最新文章

  1. 利用Squid反向代理搭建CDN缓存服务器加快Web访问速度
  2. 【Oracle】逻辑结构(TableSpace→Segment→Extent→Block)
  3. python3批量修改文件名称 代码说明
  4. 【NLP】使用Python可视化Word2vec的结果
  5. 查看sql_一键查看Oracle数据库当前SQL_WORKAREA_ACTIVE的相关操作
  6. 海康摄像头配置固定IP
  7. 【Web技术】969- 如何实现高性能的在线 PDF 预览
  8. 用python画生日蛋糕-祝你生日快乐
  9. python爬取晋江文学城_晋江文学城[本站宗旨]
  10. 九九乘法表居中c语言,excel图文教程:九九乘法表的制作方法,你会哪种?
  11. java短信生成6位数的校验码
  12. 磁盘空间清理·微信文件夹
  13. Excel怎么插入按钮
  14. 部落冲突-建筑大师基地军队建筑介绍(兵营、建筑大师训练营、星空实验室、战争机器)
  15. 树梅派搭建MPI集群
  16. 计算机 管理 mmc 注册表,我的注册表没有MMC文件
  17. R数据分析:如何做数据的非线性关系,多项式回归的做法和解释
  18. Linux 内核引导参数简介
  19. 免费下载思科CCNP 642-802考试题库
  20. NPL处理之Word2Vec-task01

热门文章

  1. 拓展延伸: 实现一个百亿级别的计算器
  2. PHP微信公众平台自定义菜单
  3. 软件工程确认测试,系统确认测试 软件确认测试的依据
  4. 腾讯资深架构师整理出来的Java高级开发需要的分布式技术,简直绝了
  5. Java后台相关知识盘点(持续更新中)
  6. win10 浏览器不能上网但是QQ等其他软件都能上网
  7. 机器学习笔记(十)——入门支持向量机(SVM)
  8. 使用nowAPI完成一个html的天气预报小例子
  9. 动作捕捉技术中分辨率和频率的重要性
  10. 用ASP.NET建立一个在线RSS新闻聚合器(收藏)