1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > C语言实用算法系列之学生管理系统_对整个结构体操作_冒泡排序_提取排序规则

C语言实用算法系列之学生管理系统_对整个结构体操作_冒泡排序_提取排序规则

时间:2019-03-27 06:40:07

相关推荐

C语言实用算法系列之学生管理系统_对整个结构体操作_冒泡排序_提取排序规则

代码

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>#include <stdlib.h>void Save();struct SUser{int nNumb;char sName[20];float fMath;}g_user[100];void Print(){puts("\n学号\t姓名\t数学");int i = 0;while (g_user[i].nNumb){if(g_user[i].nNumb>0)printf("%d\t%s\t%0.1f\n", g_user[i].nNumb, g_user[i].sName, g_user[i].fMath);++i;}printf("\n\t总共有%d条学生信息\n\n", i);}int Check(int nNumb){int i = 0;while (g_user[i].nNumb){if (nNumb == g_user[i].nNumb)return 1;++i;}return 0;}void Add(){int nNumb;printf("请输入学号:");scanf_s("%d", &nNumb);while (Check(nNumb)){printf("该学号已存在,请重新输入(0取消输入):");scanf_s("%d", &nNumb);if (nNumb == 0)return;}int i = 0;while (g_user[i].nNumb>0)++i;//scanf("%d%s%f",&g_user[i].nNumb,)g_user[i].nNumb = nNumb;printf("请输入姓名:");scanf_s("%s", g_user[i].sName,sizeof(g_user[i].sName));printf("请输入成绩:");scanf_s("%f", &g_user[i].fMath);Save();Print();}void Delete(){printf("请输入要删除的学号:");int nNumb;scanf_s("%d", &nNumb);int i = 0;//int flag = 0;while (g_user[i].nNumb){if (g_user[i].nNumb == nNumb){//flag = 1;g_user[i].nNumb = -1;break;}++i;}//if (flag == 0)if (g_user[i].nNumb!=-1)//if (g_user[i].nNumb==0)puts("你输入的学号不存在!");else{Save();Print();}}void Modify(){printf("请输入要修改的学号:");int nNumb;scanf_s("%d", &nNumb);int i = 0;while (g_user[i].nNumb){if (g_user[i].nNumb == nNumb){printf("%d\t%s\t%0.1f\n", g_user[i].nNumb, g_user[i].sName, g_user[i].fMath);printf("请输入新的姓名:");scanf_s("%s", g_user[i].sName, sizeof(g_user[i].sName));printf("请输入新的成绩:");scanf_s("%f", &g_user[i].fMath);return;}++i;}Save();Print();}void Load(){FILE* pf = fopen("data.lv", "r");if (!pf)return;int i = 0;while (fread(&g_user[i], 1, sizeof(SUser), pf) == sizeof(SUser))++i;fclose(pf);}void Save(){FILE* pf = fopen("data.lv", "w");if (!pf){puts("保存数据时失败!");return;}int i = 0;while (g_user[i].nNumb){if (-1 != g_user[i].nNumb)fwrite(&g_user[i], 1, sizeof(SUser), pf);++i;}fclose(pf);}int Judge(int nIndex,int j){if (nIndex == 1)return g_user[j].nNumb > g_user[j + 1].nNumb;if (nIndex == 2)return strcmp(g_user[j].sName, g_user[j + 1].sName) > 0;if (nIndex == 3)return g_user[j].fMath < g_user[j + 1].fMath;return 0;}//int Judge(int nIndex,SUser* p) // p是指向第j个结构体的地址void Sort(int nIndex){int i = 0, n = 0;while (g_user[i++].nNumb)++n;i = 0;int flag = 0;while (i < n - 1){int j = 0;while (j < n - 1 - i){if(Judge(nIndex,j)){SUser t = g_user[j];g_user[j] = g_user[j + 1];g_user[j + 1] = t;}++j;}++i;}}int DispMenu(){puts("1.按学号排序");puts("2.按姓名排序");puts("3.按成绩排序");puts("0.返回主菜单");printf("请选择:");int i = 0;scanf_s("%d", &i);switch (i){case 1:case 2:case 3:Sort(i);Print();break;}return i;}int Menu(){int i = 0;puts("1.浏览所有信息");puts("2.添加信息");puts("3.删除信息");puts("4.修改信息");puts("5.查找信息");puts("0.退出");printf("请选择:");scanf_s("%d", &i);switch (i){case 0:break;case 1:while (DispMenu());Print();break;case 2:Add();break;case 3:Delete();break;case 4:Modify();break;}return i;}int main(){system("color 3f");Load();while (Menu());return 0;}

运行结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。