C语言实用算法系列之学生管理系统_对整个结构体操作_选择排序_提取排序规则
生活随笔
收集整理的這篇文章主要介紹了
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);system("pause"); }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個結構體的地址 //3種基本排序:冒泡 插入 選擇 //分治法排序:歸并排序 快速排序 void Sort(int nIndex) // 選擇排序 {int i = 0;while (g_user[i+1].nNumb){int nMin = i;int j = i + 1;while (g_user[j].nNumb){if (g_user[j].nNumb < g_user[nMin].nNumb)nMin = j;++j;}if (nMin != i){SUser t = g_user[i];g_user[i] = g_user[nMin];g_user[nMin] = t;}++i;} }int DispMenu() {system("cls");puts("1.按學號排序");puts("2.按姓名排序");puts("3.按成績排序");puts("0.返回主菜單");printf("請選擇:");int i = 0;scanf_s("%d", &i);switch (i){case 0:break;case 1:case 2:case 3:Sort(i);Print();break;}return i; }void SetColor() {printf("請輸入背景色:");char s[20] = "color ";fflush(stdin);s[6] = getchar();printf("請輸入前景色:");fflush(stdin);s[7] = getchar();system(s); }int Menu() {int i = 0;system("cls");puts("1.瀏覽所有信息");puts("2.添加信息");puts("3.刪除信息");puts("4.修改信息");puts("5.查找信息");puts("6.顏色設置");puts("0.退出");printf("請選擇:");scanf_s("%d", &i);switch (i){case 0:break;case 1:while (DispMenu());break;case 2:Add();break;case 3:Delete();break;case 4:Modify();break;case 6:SetColor();break;}return i; }int main() {system("color 3f");Load();while (Menu());return 0; }運行結果
總結
以上是生活随笔為你收集整理的C语言实用算法系列之学生管理系统_对整个结构体操作_选择排序_提取排序规则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言实用算法系列之学生管理系统_对整个
- 下一篇: 天猫商城电脑音箱(天猫音箱多少钱)