From 7ab7424c7211fe329b5efbb62e8245486163d8bd Mon Sep 17 00:00:00 2001 From: pk29n3fu4 <2434647226@qq.com> Date: Fri, 22 Nov 2024 17:13:32 +0800 Subject: [PATCH] ADD file via upload --- Main.c | 259 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 259 insertions(+) create mode 100644 Main.c diff --git a/Main.c b/Main.c new file mode 100644 index 0000000..422c66d --- /dev/null +++ b/Main.c @@ -0,0 +1,259 @@ +/*this code is just a very simple example. +it only works when the id and class both less than INT_MAX +also,you need make sure the id and the class will not be the same +,and the name should consist of only letters +Finally, fxxk the C89*/ + +#define _CRT_SECURE_NO_WARNINGS 1 + +/*declare including*/ +#include +#include +#include + +/*declaration*/ +int Mycontinue(int num); void Search(char info[]); +void Inputf(); void Deletef(); void Selectf(); void Orderf(); void Outputf(); void Quitf(); +void mainLoop(); + +/*create the main struct*/ +typedef struct +{ + int id; + int class; + char name[50]; + float score[3]; + float total_score; +} Student; + +/*initialize the global variable*/ +#define MAX_STUDENTS 100 +Student usrlist[MAX_STUDENTS]; +Student tmplist[MAX_STUDENTS]; +int slist[MAX_STUDENTS]; + +int listlength = -1; +int tmplength = -1; +int slength; + +int run = 1; + +/*create secondary module*/ +int Mycontinue(int num) /*completed*/ +{ + char choice[10]; + printf("continue?\n"); +choose: + { + scanf("%9s", choice); + getchar(); + switch (strlen(choice)) + { + case 2:return 0; + case 3:return 1; + default:printf("Please input the proper choice (yes/no)\n"); goto choose; + } + } +} + +void Search(char info[]) /*completed*/ +{ + int k = 0; + int i; + int j; + int snum; + int same; + slength = -1; + for (; k < 100; k++)slist[k] = 0; + if (info[0] > 47 && info[0] < 58) + { + snum = 0; + for (i = 0; i < strlen(info); i++) + { + snum *= 10; + snum += info[i] - '0'; + } + for (i = 0; i <= listlength; i++)if (usrlist[i].id == snum || usrlist[i].class == snum)slist[++slength] = i; + } + else + { + for (i = 0; i <= listlength; i++)if (strlen(info) == strlen(usrlist[i].name)) + { + same = 1; + for (j = 0; j < strlen(info); j++)if (info[j] != usrlist[i].name[j]) + { + same = 0; + break; + } + if (same)slist[++slength] = i; + } + } +} + +/*create primary module*/ +void Inputf() /*completed*/ +{ + printf("You are trying to Input info\n"); + int irun = 1; + while (irun) + { + listlength++; + int tmp = listlength; + printf("Id "); + scanf("%d", &usrlist[tmp].id); + getchar(); + printf("class "); + scanf("%d", &usrlist[tmp].class); + getchar(); + printf("name "); + scanf("%49s", usrlist[tmp].name); + getchar(); + printf("score1 "); + scanf("%f", &usrlist[tmp].score[0]); + getchar(); + printf("score2 "); + scanf("%f", &usrlist[tmp].score[1]); + getchar(); + printf("score3 "); + scanf("%f", &usrlist[tmp].score[2]); + getchar(); + usrlist[tmp].total_score = usrlist[tmp].score[0] + usrlist[tmp].score[1] + usrlist[tmp].score[2]; + irun = Mycontinue(irun); + } +} + +void Deletef() /*completed*/ +{ + int drun; + char info[50]; +start: + printf("You are trying to delete info\n"); + if (listlength == 0)printf("There is only one data,please add some new\n"); + else if(listlength == -1)printf("There is no data,please add some new\n"); + else + { + drun = 1; + scanf("%49s", info); + Search(info); + int i; + int j; + for (i = 0; i <= listlength; i++)for (j = 0; j <= slength; j++)if (i == slist[j])usrlist[i].id = -1; + tmplength = -1; + for (i = 0; i <= listlength; i++) if (usrlist[i].id + 1)tmplist[++tmplength] = usrlist[i]; + listlength = -1; + for (i = 0; i <= tmplength; i++)usrlist[++listlength] = tmplist[i]; + Outputf(); + drun = Mycontinue(drun); + if (drun)goto start; + } +} + +void Selectf() /*completed*/ +{ + int srun; + char info[50]; + int i; + int j; + int fit; + printf("You are trying to select info\n"); + if (listlength == -1)printf("There is no data,please add some new\n"); + else + { + srun = 1; + while (srun) + { + scanf("%49s", info); + Search(info); + for (i = 0; i <= listlength; i++) + { + fit = 0; + for (j = 0; j <= slength; j++)if (i == slist[j]) + { + fit = 1; + break; + } + if (fit)printf("%d %d %s %.1f %.1f %.1f %.1f\n", usrlist[i].id, usrlist[i].class, usrlist[i].name, usrlist[i].score[0], usrlist[i].score[1], usrlist[i].score[2], usrlist[i].total_score); + } + srun=Mycontinue(srun); + } + } +} + +void Orderf() /*completed*/ +{ + tmplength = -1; + int idmin; + int classmin; + int i; + int j; + printf("You are trying to Make things orderd\n"); + while (tmplength < listlength) + { + idmin = INT_MAX; + classmin = INT_MAX; + for (i = 0; i <= listlength; i++)if (usrlist[i].class < classmin)classmin = usrlist[i].class; + for (i = 0; (i <= listlength); i++)if ((usrlist[i].id < idmin) && (classmin == usrlist[i].class)) + { + idmin = usrlist[i].id; + j = i; + } + tmplist[++tmplength] = usrlist[j]; + usrlist[j].id = INT_MAX; + usrlist[j].class = INT_MAX; + } + listlength = -1; + for (i = 0; i <= tmplength; i++)usrlist[++listlength] = tmplist[i]; + Outputf(); +} + +void Outputf() /*completed*/ +{ + int index = -1; + printf("You are trying to Output info\n"); + while (index < listlength) + { + index++; + printf("%d %d %s %.1f %.1f %.1f %.1f\n", usrlist[index].id, usrlist[index].class, usrlist[index].name, usrlist[index].score[0], usrlist[index].score[1], usrlist[index].score[2], usrlist[index].total_score); + } +} + +void Quitf() /*completed*/ +{ + printf("You are about to Quit\n"); + run = 0; +} + + +/*create main module*/ +void mainLoop() +{ + while (run) + { + printf("1.input\n"); + printf("2.delete\n"); + printf("3.select\n"); + printf("4.order\n"); + printf("5.output\n"); + printf("6.quit\n"); + printf("Please input your opinion\n"); + char cin = getchar(); + getchar(); + switch (cin) + { + case '1':Inputf(); break; + case '2':Deletef(); break; + case '3':Selectf(); break; + case '4':Orderf(); break; + case '5':Outputf(); break; + case '6':Quitf(); break; + default:printf("Wrong input\n"); break; + } + } +} + +/*create main function*/ +int main() +{ + mainLoop(); + return 0; +}