写一个简单的学生成绩管理系统
为了方便,并且这个程序也不是很长,所以把所有代码写在一起了,下面是头文件和声明部分:
4.14修改版 :

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define SIZE 20typedef struct Student * List;void over();              //释放空间
void Show();              //显示整个表
void find();              //找到某个学生的信息
void sort();              //排序
void showmenu();          //菜单
void I_Change();          //更改学号
void N_Change();          //更改姓名
void S_Change();          //更改分数
void average();           //显示平均分数、总人数
List add();               //增加学生信息
List Body();              //主体信息
List  readin();           //文件读入
List I_Delete();          //按学号删除学生信息
List N_Delete();          //按姓名删除学生信息

释放空间的函数(这里顺序不是很好,不过不影响程序运行):

void over(List head)                         //释放空间
{List current, missing;current = head;missing = current->next;if (current == NULL)printf("The list is empty!\n");else{while (current != NULL){free(current);current = missing;missing = missing->next;}}
}

输出数据的部分:
这里用虚线来分隔每个不同学生的成绩

void Show(List head)                                 //显示整个表
{List current;current = head;if (current == NULL)                                      //判断表是否为空 printf("The list is empty!\n");else{printf("----------------------------------\n");printf("ID         score         name\n");printf("----------------------------------\n");while (current){printf("%d         %.2lf          %s      \n", current->Id, current->score, current->name);printf("----------------------------------\n");current = current->next;                          //向后遍历 }}
}

菜单栏:

void showmenu()
{printf("------------------------ student management system---------------------\n");printf("- 1 to show the all list.              2 to change  student data      -\n");printf("- 3 to delete the student message.     4 to add student message       -\n");printf("- 5 to add message from files          6 to sort student message      -\n");printf("- 7 to get the average and total score 8 to show one student`s message-\n");printf("- other numbers to quit                                               -\n");printf("-----------------------------------------------------------------------\n");printf("Please enter number to choose(0-9):");
}

改变ID:

void I_Change(List head, int O_Id, int N_Id)               //更改学号
{struct Student *current;current = head;if (current == NULL)printf("The list is empty!\n");else{while (current->next != NULL && current->Id != O_Id)current = current->next;if (current->Id == O_Id)current->Id = N_Id;elseprintf("404 no find\n");}
}

更改姓名:

void N_Change(List head, int O_Id, char N_name[])           //更改姓名
{List current;current = head;if (current == NULL)printf("The list is empty!\n");else{while (current->next != NULL && current->Id != O_Id)current = current->next;if (current->Id == O_Id)strcpy(current->name, N_name);elseprintf("404 no find\n");}
}

更改成绩:

void S_Change(List head, int O_Id, double N_score)   //更改分数
{List current;current = head;if (current == NULL)printf("The list is empty!\n");else{while (current->next != NULL && current->Id != O_Id)current = current->next;if (current->Id == O_Id)current->score = N_score;elseprintf("404 no find\n");}
}

主体部分:

List  Body(int ask, List head)
{int O_Id, N_Id, num;double N_score;char N_name[SIZE];if (ask == 1)Show(head);                    //显示整个表else if (ask == 2)                 //更改数据{printf("Please enter which student you want to change (please enter Id)\n");scanf("%d", &O_Id);printf("If you want to change the Id of the student please enter \"1\"\n");printf("If you want to change the name of the student please enter\"2\"\n");printf("If your want to change the score of the student please enter\"3\"\n");printf("If you don`t want to change please enter other numbers\n");scanf("%d", &num);if (num == 1)                       //更改学号{printf("Please enter the new Id:\n");scanf("%d", &N_Id);I_Change(head, O_Id, N_Id);}else if (num == 2)                   //更改学生姓名{printf("Plese enter the new name\n");scanf("%s", N_name);N_Change(head, O_Id, N_name);}else if (num == 3)                 // 更改学生分数{printf("Please enter the new score:\n");scanf("%lf", &N_score);S_Change(head, O_Id, N_score);}}else if (ask == 3)                    //删除数据{printf("If you want to use the Id to delete the message,plesea eneter\"1\"\n");printf("If you want to use the name to delete the message ,Please enter\"2\"\n");scanf("%d", &ask);if (ask == 1)                                //按学号查找 {printf("(Enter the Id of the student)\n");scanf("%d", &O_Id);head = I_Delete(head, O_Id);}else if (ask == 2)                               //按姓名查找 {printf("Enter the name of the student\n");scanf("%s", &N_name);head = N_Delete(head, N_name);}}else if (ask == 4)                 //添加数据{printf("If you want to add the student message before the student you choose please enter 1\n");printf("If you want to add the student message after  the student you choose please enter 2\n");scanf("%d", &num);printf("please enter the name 、Id and score of the new student\n");scanf("%s%d%lf", &N_name, &N_Id, &N_score);head = add(head, N_name, N_Id, N_score, num);}else if (ask == 5)head = readin();else if (ask == 6)sort(head);else if (ask == 7)average(head);else if (ask == 8)find(head);else{printf("Thank you to use!\n");over(head);                                                 //释放所有空间 }system("pause");system("CLS");showmenu();return head;
}

新增学生成绩,在某个学生前插入其他学生成绩部分没有问题,但是在第一个学生后插入其他学生成绩后输出数据时程序会崩溃,但是在非第一个学生后插入其他学生成绩却没有问题,不知道为什么。
原因在于我写的代码当current==head 的时候在赋值给after的语句那边直接跳过,导致after没有被赋值,此时after的值是垃圾值,从而导致整个链表断裂,新增一句语句:

     if(current ==head)after=current->next;

就能解决这个问题。
由于在前面插入信息如果current==head 的时候刚好before没有值,所以before没有出现问题。
代码如下:

List add(List head, char N_name[], int N_Id, double N_score,int num)         //增加信息
{List current, before, addin, after;int O_Id;current = head;if (current == NULL){addin = (List)malloc(sizeof(struct Student));head = addin;addin->next = NULL;addin->Id = N_Id;addin->score = N_score;strcpy(addin->name, N_name);return head;}else{printf("please enter the  student`s Id\n");                 //通过定位下一位学生来找到要插入的成绩应该放在哪里 scanf("%d", &O_Id);while (current->next != NULL && current->Id != O_Id){before = current;current = current->next;after = current->next;}if(current ==head)after=current->next;if (current->Id = O_Id){addin = (struct Student*)malloc(sizeof(struct Student));                     //为新结点动态分配空间 if(num==1){ if (current == head){addin->next = current;addin->Id = N_Id;addin->score = N_score;strcpy(addin->name, N_name);return addin;}else{before->next = addin;addin->next = current;addin->Id = N_Id;addin->score = N_score;strcpy(addin->name, N_name);return head;}}else{current->next = addin;addin->Id = N_Id;addin->score = N_score;strcpy(addin->name, N_name);addin->next = after;return head;}}elseprintf("404 no find!\n");}return head;
}

读入数据,这个部分使用的是文件流,但是不知道为什么有时候使用这个功能会让整个程序崩溃,有时候又能使用.
刚刚找到了问题,是后面动态分配的时候分配的空间大小出现了问题。
正确代码如下:

List  readin()
{   FILE * fp;List head, current, record;char name[SIZE];int Id; double score;head = NULL;if ((fp = fopen("D:\\tom and his firends\\development\\code\\c c++\\program\\学生管理系统\\message.txt", "r")) == NULL)     //判断文件是否存在{printf("fali to open the flie!\n");exit(0);}while (~fscanf(fp,"%s", name))                                                      //读入数据{current = (List)malloc(sizeof(struct Student ));if (head == NULL)head = current;elserecord->next = current;fscanf(fp, "%d %lf", &Id, &score);strcpy(current->name, name);current->Id = Id;current->score = score;current->next = NULL;record = current;           }fclose(fp);return head;
}

按学号删除学生信息:

List I_Delete(List head, int O_Id)         //按学号查找并删除数据
{List current, missing;current = head;if (current == NULL)printf("The list is empty!\n");else{while (current->next != NULL && current->Id != O_Id)        //当查找到该需要修改的元素或者查找完整个表 {missing = current;current = current->next;}if (current->Id == O_Id){if (current == head){head = current->next;free(current);return head;}elsemissing->next = current->next;free(current);}elseprintf("404 no find\n");}return head;
}

按姓名删除学生信息:

List N_Delete(List head, char N_name[])                  //按姓名查找并删除数据
{List current, missing;current = head;if (current == NULL)printf("The list is empty!\n");else{while (current->next != NULL && strcmp(current->name, N_name) != 0)        //当查找到该需要修改的元素或者查找完整个表 {missing = current;                                                    //记录当前结点的前一个结点 current = current->next;}if (strcmp(current->name, N_name) == 0){if (current == head){head = current->next;free(current);return head;}elsemissing->next = current->next;free(current);}elseprintf("404 no find\n");}return head;
}

主函数部分:

int main(void)
{List head;int ask;          head = NULL;showmenu();scanf("%d", &ask);while (ask){head = Body(ask, head);scanf("%d", &ask);}return 0;
}

4.14版本新增了排序功能,两种排序方法一个是按学号排序(从小到大)另外一个是按成绩排序(从大到小)还有计算平均成绩、总成绩、显示学生人数和显示某个学生的成绩。
排序代码如下:

void sort(List head)
{int ask;List current, record;int n, i;char name[SIZE];int Id;double score;struct Student change;current = head;if (current == NULL)                                          //判断当前表是否为空{printf("The list is empty!\n");return;}for (;current;current = current->next) n++;                   //记录当前有多少人,即进行多少次循环current = head;printf("If you want to sort the student message by score,please enter 1\n");printf("If you want to sort the student message by Id   ,please enter 2\n");scanf("%d", &ask);if (ask == 1){for (i = 0;i < n;i++){while (current->next){record = current->next;if (current->score < record->score){strcpy(name, current->name); Id = current->Id;score = current->score;strcpy(current->name, record->name), current->Id = record->Id;current->score = record->score;strcpy(record->name, name), record->Id = Id;record->score = score;}current = current->next;}current = head;}}else{current = head;for (i = 0;i < n;i++){while (current->next){record = current->next;if (current->Id > record->Id){strcpy(name, current->name); Id = current->Id;score = current->score;strcpy(current->name, record->name), current->Id = record->Id;current->score = record->score;strcpy(record->name, name), record->Id = Id;record->score = score;}current = current->next;}current = head;}}
}

计算平均成绩、总成绩、显示学生人数 代码如下:

void average(List head)
{List current;float total = 0;int Tperson = 0;float average = 0;current = head;if (current == NULL){printf("the list is empty!\n");return ;}while (current){total += current->score;Tperson++;current = current->next;               //向后遍历;}if (Tperson != 0) average = total / Tperson;printf("the total score is %.2f,the total person is %d,the average socre is %.2f\n", total, Tperson, average);
}

显示某个学生成绩代码如下:

void find(List head)
{int ask;char name[SIZE];int Id;List current;current = head;if (current == NULL){printf("The list is empty\n");return;}printf("If you want to find the student by Id,please enter 1\n");printf("If you want to find the student by name,please enter 2\n");scanf("%d", &ask);if (ask == 1){printf("Please enter the Id of the student you want to find\n");scanf("%d", &Id);while (current->next != NULL && current->Id != Id)current = current->next;if (current->Id == Id){printf("----------------------------------\n");printf("ID         score         name\n");printf("----------------------------------\n");printf("%d         %.2lf          %s      \n", current->Id, current->score, current->name);printf("----------------------------------\n");}elseprintf("404 no find\n");}else if (ask == 2){printf("Please enter the name of the student you want to find\n");scanf("%s", name);while (current->next != NULL && strcmp(current->name, name) != 0)current = current->next;if (strcmp(current->name, name) == 0){printf("----------------------------------\n");printf("ID         score         name\n");printf("----------------------------------\n");printf("%d         %.2lf          %s      \n", current->Id, current->score, current->name);printf("----------------------------------\n");}elseprintf("404 no find\n");}
}

一点感想:做这个学生管理系统简易版虽然花的时间不算特别长,但其实也不短了,其中修修改改,遇到很多很多的bug和自己编写程序中出现的问题,虽然耗费了不少精力,但是对于链表和指针的概念有进一步的提高,多打代码还是有很大的提升的,接下来不打算再修改这段代码了,虽然写的不算好,甚至只是初窥门径,但是我以后会更加努力去写出更优秀的代码,如果以后重写这个程序的话应该会从头开始,用更好的思想来写下这个程序。通过这个程序,我明白自己的实力远远不够,所以我还是要再接再厉,但是这个程序从别人的一句话到自己想要去真正的实现,感觉还是挺梦幻的,给自己一点鼓励,能写出这个程序我也学到了不少。
4.14版本 完整代码如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define SIZE 20typedef struct Student * List;void over();              //释放空间
void Show();              //显示整个表
void find();              //找到某个学生的信息
void sort();              //排序
void showmenu();          //菜单
void I_Change();          //更改学号
void N_Change();          //更改姓名
void S_Change();          //更改分数
void average();            //显示平均分数、总人数
List add();               //增加学生信息
List Body();              //主体信息
List  readin();           //文件读入
List I_Delete();          //按学号删除学生信息
List N_Delete();          //按姓名删除学生信息 struct Student
{int Id;char name[SIZE];double score;List next;
};int main(void)
{List head;int ask;head = NULL;showmenu();scanf("%d", &ask);while (ask){head = Body(ask, head);scanf("%d", &ask);}return 0;
}
//菜单
void showmenu()
{printf("------------------------ student management system---------------------\n");printf("- 1 to show the all list.              2 to change  student data      -\n");printf("- 3 to delete the student message.     4 to add student message       -\n");printf("- 5 to add message from files          6 to sort student message      -\n");printf("- 7 to get the average and total score 8 to show one student`s message-\n");printf("- other numbers to quit                                               -\n");printf("-----------------------------------------------------------------------\n");printf("Please enter number to choose(0-9):");
}
//显示整个表
void Show(List head)
{List current;current = head;if (current == NULL)                                      //判断表是否为空 printf("The list is empty!\n");else{printf("----------------------------------\n");printf("ID         score         name\n");printf("----------------------------------\n");while (current){printf("%d         %.2lf          %s      \n", current->Id, current->score, current->name);printf("----------------------------------\n");current = current->next;                          //向后遍历 }}
}
//释放空间
void over(List head)
{List current, missing;current = head;missing = current->next;if (current == NULL)printf("The list is empty!\n");else{while (current != NULL){free(current);current = missing;missing = missing->next;}}
}
//更改学号
void I_Change(List head, int O_Id, int N_Id)
{struct Student *current;current = head;if (current == NULL)printf("The list is empty!\n");else{while (current->next != NULL && current->Id != O_Id)current = current->next;if (current->Id == O_Id)current->Id = N_Id;elseprintf("404 no find\n");}
}
//更改姓名
void N_Change(List head, int O_Id, char N_name[])
{List current;current = head;if (current == NULL)printf("The list is empty!\n");else{while (current->next != NULL && current->Id != O_Id)current = current->next;if (current->Id == O_Id)strcpy(current->name, N_name);elseprintf("404 no find\n");}
}
//更改分数
void S_Change(List head, int O_Id, double N_score)
{List current;current = head;if (current == NULL)printf("The list is empty!\n");else{while (current->next != NULL && current->Id != O_Id)current = current->next;if (current->Id == O_Id)current->score = N_score;elseprintf("404 no find\n");}
}
//按学号查找并删除数据
List I_Delete(List head, int O_Id)
{List current, missing;current = head;if (current == NULL)printf("The list is empty!\n");else{while (current->next != NULL && current->Id != O_Id)        //当查找到该需要修改的元素或者查找完整个表 {missing = current;current = current->next;}if (current->Id == O_Id){if (current == head){head = current->next;free(current);return head;}elsemissing->next = current->next;free(current);}elseprintf("404 no find\n");}return head;
}
//按姓名查找并删除数据
List N_Delete(List head, char N_name[])
{List current, missing;current = head;if (current == NULL)printf("The list is empty!\n");else{while (current->next != NULL && strcmp(current->name, N_name) != 0)        //当查找到该需要修改的元素或者查找完整个表 {missing = current;                                                    //记录当前结点的前一个结点 current = current->next;}if (strcmp(current->name, N_name) == 0){if (current == head){head = current->next;free(current);return head;}elsemissing->next = current->next;free(current);}elseprintf("404 no find\n");}return head;
}
//增加信息
List add(List head, char N_name[], int N_Id, double N_score, int num)
{List current, before, addin, after;int O_Id;current = head;if (current == NULL){addin = (List)malloc(sizeof(struct Student));head = addin;addin->next = NULL;addin->Id = N_Id;addin->score = N_score;strcpy(addin->name, N_name);return head;}else{printf("please enter the  student`s Id\n");                 //通过定位下一位学生来找到要插入的成绩应该放在哪里 scanf("%d", &O_Id);while (current->next != NULL && current->Id != O_Id){before = current;current = current->next;after = current->next;}if (current == head)after = current->next;if (current->Id = O_Id){addin = (struct Student*)malloc(sizeof(struct Student));                     //为新结点动态分配空间 if (num == 1){if (current == head){addin->next = current;addin->Id = N_Id;addin->score = N_score;strcpy(addin->name, N_name);return addin;}else{before->next = addin;addin->next = current;addin->Id = N_Id;addin->score = N_score;strcpy(addin->name, N_name);return head;}}else{current->next = addin;addin->Id = N_Id;addin->score = N_score;strcpy(addin->name, N_name);addin->next = after;return head;}}elseprintf("404 no find!\n");}return head;
}
//主体信息
List  Body(int ask, List head)
{int O_Id, N_Id, num;double N_score;char N_name[SIZE];if (ask == 1)Show(head);                    //显示整个表else if (ask == 2)                 //更改数据{printf("Please enter which student you want to change (please enter Id)\n");scanf("%d", &O_Id);printf("If you want to change the Id of the student please enter \"1\"\n");printf("If you want to change the name of the student please enter\"2\"\n");printf("If your want to change the score of the student please enter\"3\"\n");printf("If you don`t want to change please enter other numbers\n");scanf("%d", &num);if (num == 1)                       //更改学号{printf("Please enter the new Id:\n");scanf("%d", &N_Id);I_Change(head, O_Id, N_Id);}else if (num == 2)                   //更改学生姓名{printf("Plese enter the new name\n");scanf("%s", N_name);N_Change(head, O_Id, N_name);}else if (num == 3)                 // 更改学生分数{printf("Please enter the new score:\n");scanf("%lf", &N_score);S_Change(head, O_Id, N_score);}}else if (ask == 3)                    //删除数据{printf("If you want to use the Id to delete the message,plesea eneter\"1\"\n");printf("If you want to use the name to delete the message ,Please enter\"2\"\n");scanf("%d", &ask);if (ask == 1)                                //按学号查找 {printf("(Enter the Id of the student)\n");scanf("%d", &O_Id);head = I_Delete(head, O_Id);}else if (ask == 2)                               //按姓名查找 {printf("Enter the name of the student\n");scanf("%s", &N_name);head = N_Delete(head, N_name);}}else if (ask == 4)                 //添加数据{printf("If you want to add the student message before the student you choose please enter 1\n");printf("If you want to add the student message after  the student you choose please enter 2\n");scanf("%d", &num);printf("please enter the name 、Id and score of the new student\n");scanf("%s%d%lf", &N_name, &N_Id, &N_score);head = add(head, N_name, N_Id, N_score, num);}else if (ask == 5)head = readin();else if (ask == 6)sort(head);else if (ask == 7)average(head);else if (ask == 8)find(head);else{printf("Thank you to use!\n");over(head);                                                 //释放所有空间 }system("pause");system("CLS");showmenu();return head;
}
//文件读入
List  readin()
{FILE * fp;char fileDir[] = "D:\\tom and his firends\\development\\code\\c c++\\program\\学生管理系统\\message.txt";List head, current, record;char name[SIZE];int Id; double score;head = NULL;fp = fopen(fileDir, "r");if (fp == NULL)                                       //判断文件是否存在{printf("fail to open the flie!\n");exit(0);}while (~fscanf(fp, "%s", name))                                                      //读入数据{current = (List)malloc(sizeof(struct Student));if (head == NULL)head = current;elserecord->next = current;fscanf(fp, "%d %lf", &Id, &score);strcpy(current->name, name);current->Id = Id;current->score = score;current->next = NULL;record = current;}fclose(fp);return head;
}
//显示某个学生的数据
void find(List head)
{int ask;char name[SIZE];int Id;List current;current = head;if (current == NULL){printf("The list is empty\n");return;}printf("If you want to find the student by Id,please enter 1\n");printf("If you want to find the student by name,please enter 2\n");scanf("%d", &ask);if (ask == 1){printf("Please enter the Id of the student you want to find\n");scanf("%d", &Id);while (current->next != NULL && current->Id != Id)current = current->next;if (current->Id == Id){printf("----------------------------------\n");printf("ID         score         name\n");printf("----------------------------------\n");printf("%d         %.2lf          %s      \n", current->Id, current->score, current->name);printf("----------------------------------\n");}elseprintf("404 no find\n");}else if (ask == 2){printf("Please enter the name of the student you want to find\n");scanf("%s", name);while (current->next != NULL && strcmp(current->name, name) != 0)current = current->next;if (strcmp(current->name, name) == 0){printf("----------------------------------\n");printf("ID         score         name\n");printf("----------------------------------\n");printf("%d         %.2lf          %s      \n", current->Id, current->score, current->name);printf("----------------------------------\n");}elseprintf("404 no find\n");}
}
//显示平均成绩、人数、总和分数
void average(List head)
{List current;float total = 0;int Tperson = 0;float average = 0;current = head;if (current == NULL){printf("the list is empty!\n");return ;}while (current){total += current->score;Tperson++;current = current->next;               //向后遍历;}if (Tperson != 0) average = total / Tperson;printf("the total score is %.2f,the total person is %d,the average socre is %.2f\n", total, Tperson, average);
}
//排序
void sort(List head)
{int ask;List current, record;int n, i;char name[SIZE];int Id;double score;struct Student change;current = head;if (current == NULL)                                          //判断当前表是否为空{printf("The list is empty!\n");return;}for (;current;current = current->next) n++;                   //记录当前有多少人,即进行多少次循环current = head;printf("If you want to sort the student message by score,please enter 1\n");printf("If you want to sort the student message by Id   ,please enter 2\n");scanf("%d", &ask);if (ask == 1){for (i = 0;i < n;i++){while (current->next){record = current->next;if (current->score < record->score){strcpy(name, current->name); Id = current->Id;score = current->score;strcpy(current->name, record->name), current->Id = record->Id;current->score = record->score;strcpy(record->name, name), record->Id = Id;record->score = score;}current = current->next;}current = head;}}else{current = head;for (i = 0;i < n;i++){while (current->next){record = current->next;if (current->Id > record->Id){strcpy(name, current->name); Id = current->Id;score = current->score;strcpy(current->name, record->name), current->Id = record->Id;current->score = record->score;strcpy(record->name, name), record->Id = Id;record->score = score;}current = current->next;}current = head;}}
}

学生成绩管理系统(简易版)相关推荐

  1. c语言实现学生二科成绩的单链表,c++链表实现学生成绩管理系统(简易版)

    #include using namespace std; typedef struct student{ int id;//学号 string sex; string name; int cpp;/ ...

  2. 基于PHP的学生成绩管理系统(多用户版)

    基于PHP的学生成绩管理系统(多用户版) 一 项目介绍 此成绩管理系统用户分为学生和教师,界面友好!(附带设计文档) 技术栈 原生php+mysql+navicat+vscode 二 主要功能 学生 ...

  3. 学生成绩管理系统 c++版

    一.具体代码 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<fstream> using namesp ...

  4. 学生信息管理系统简易版(文件读写操作)

    功能模块 具体功能如下: 添加学生信息 修改学生信息(按学号) 排序(分别按总分升序.降序.以及按姓名升序) 查找学生(按学号) 删除学生 查看所有学生信息 数据结构体设计 本表设计一个学生信息的结构 ...

  5. 【Python】学生成绩管理系统

    学生成绩测评系统 参考链接 安装Mysql 具体操作参考此贴:最新超详细MySQL安装及基本使用教程 运行中出现的问题 python报错raise XLRDError (FILE_FORMAT_DES ...

  6. python成绩管理系统界面-python实现简易版学生成绩管理系统

    300来行python代码实现简易版学生成绩管理系统,供大家参考,具体内容如下 使用链表来实现 class Node(object): def __init__(self, data, pointer ...

  7. 学生成绩管理系统设计报告python_python实现简易版学生成绩管理系统

    300来行python代码实现简易版学生成绩管理系统,供大家参考,具体内容如下 使用链表来实现 class Node(object): def __init__(self, data, pointer ...

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

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

  9. 学生成绩管理系统(简易本地版)

    学生成绩管理系统(简易本地版) 一.概述 平台:Windows 10 ,Microsoft Visual Studio 2017 语言:C++,面向过程 完成日期:2018/12/27 主要功能: 1 ...

最新文章

  1. TLS与openssl学习总结(三)-实操篇
  2. boost::minimum_degree_ordering用法的测试程序
  3. flask_mail用法实例
  4. 【Boost】系列02:内存管理之scoped_ptr智能指针
  5. junit rule_Tomcat上下文JUnit @Rule
  6. 软件工程项目总结_复旦大学软件工程实验室来ASE实验室交流
  7. 【缓存】缓存,这么用才真正达到缓存的效果
  8. Java 开发者希望未来使用 Python 和 Go
  9. android 将.txt文件转化为.db并使用raw下的数据文件
  10. ubuntu(linux)占领小米平板2(mipad2)
  11. iOS 通讯录编程【总结】
  12. 深入浅出Symfony2 - 结合MongoDB开发LBS应用
  13. 微信信息轰炸【简易版】
  14. 【UV打印机】RYPC打印软件教程(一)-软件简介
  15. 用C++做的文本分割器(就是黑乎乎的那个)
  16. android手机进入reboot,android 静默重启 QUIESCENT REBOOT
  17. html中td是什么模块,html td什么意思
  18. 计算机计算用函数平均分,excel表格中数据怎样算均分-excel里如何使用IF函数挑出数值算平均分啊...
  19. 使用计算机能佩戴老花镜,青岛版六年级科学第四单元检测题及答案
  20. 如何快速在Ubuntu18.04.1上安装k8s1.20的简明教程

热门文章

  1. excel 把已有的数据做成图表
  2. 【Mac】MAC 终端美化教程(来个全套)
  3. 关于karabiner的设置
  4. java.net.MalformedURLException异常说明
  5. 初探 sort 方法和 sorted 内置函数
  6. 男性软件测试师容易找到女朋友吗?
  7. postman工具批量调用接口
  8. 写给夏燕第十一个男人
  9. 仿西祠和搜狐论坛界面的bbs下载
  10. 挚爱家乡五常大米的味道