byd这学期课好多,写了个接近1300行的实训项目,学校教的是用顺序表写的,我自己用链表写了一个:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>
#include<windows.h>
#include<time.h>
struct STU
{
char name[10];
char gender[5];
int number;
int score[6];
double ave;
char address[20];
};
typedef struct student
{
struct STU s1;
struct student* next;
}student;
int checkpassword(int number)
{
printf("请输入一个6位数的密码(你还剩%d次机会!)\n", 3 - number);
Sleep(200);
printf("----->\n");
int password;
scanf("%d", &password);
if (password == 123456)
{
return 1;
}
return 0;
}
void menu(void)
{
printf("\t\t\t\t\t _________________________________\n");
printf("\t\t\t\t\t\t 欢迎使用学生成绩管理系统\n");
printf("\t\t\t\t\t\t 1.输 入 学 生 信 息\n");
printf("\t\t\t\t\t\t 2.显 示 学 生 信 息\n");
printf("\t\t\t\t\t\t 3.查 找 学 生 信 息\n");
printf("\t\t\t\t\t\t 4.插 入 学 生 信 息\n");
printf("\t\t\t\t\t\t 5.删 除 学 生 信 息\n");
printf("\t\t\t\t\t\t 6.更 新 学 生 信 息\n");
printf("\t\t\t\t\t\t 7.排 序 学 生 信 息\n");
printf("\t\t\t\t\t\t 8.统 计 单 科 成 绩\n");
printf("\t\t\t\t\t\t 9.找 到 最 好 成 绩\n\n");
printf("\t\t\t\t\t\t 10. 保 存 到 文 件\n");
printf("\t\t\t\t\t\t 11. 从 文 件 读 取\n");
printf("\t\t\t\t\t\t 12. 备 份 文 件\n");
printf("\t\t\t\t\t\t 0.退 出 管 理 系 统\n");
printf("\t\t\t\t\t ----------------------------------\n");
printf("\n\n\n");
printf("请选择-->\n");
}
student* creatstudent()
{
student* newnode = (student*)malloc(sizeof(student));
if (newnode == NULL)
{
printf("内存申请失败\n");
exit(1);
}
printf("请输入学生的姓名\n");
scanf("%s", newnode->s1.name);
printf("请输入学生的性别\n");
scanf("%s", newnode->s1.gender);
printf("请输入学生的学号\n");
scanf("%d", &newnode->s1.number);
printf("请输入学生的六门成绩\n");
int i = 0;
for (i = 0; i < 6; i++)
{
scanf("%d", &newnode->s1.score[i]);
}
int sum = 0;
for (i = 0; i < 6; i++)
{
sum += newnode->s1.score[i];
}
newnode->s1.ave = sum / 6.0;
printf("请输入学生的家庭地址\n");
scanf("%s", newnode->s1.address);
newnode->next = NULL;
return newnode;
}
void addstudent(student** head, int number)
{
system("cls");
printf("请输入第%d个学生的信息\n", number + 1);
student* newnode = creatstudent();
student* pointer = *head;
if (pointer == NULL)
{
*head = newnode;
return;
}
while (pointer->next != NULL)
{
pointer = pointer->next;
}
pointer->next = newnode;
}
void printstudent(student* head)
{
student* pointer = head;
if (pointer == NULL)
{
printf("请先输入学生的信息!\n");
return;
}
printf("学生信息是--->\n\n");
printf("\t姓名\t性别\t学号\t\t数学\tC语言\t英语\t物理\t信息\t线代\t平均分\t\t家庭地址\n");
while (pointer != NULL)
{
printf("\t%s\t%s\t%d\t\t", pointer->s1.name, pointer->s1.gender, pointer->s1.number);
int i = 0;
for (i = 0; i < 6; i++)
{
printf("%d\t", pointer->s1.score[i]);
}
printf("%.2lf\t", pointer->s1.ave);
printf(" ");
printf("\t%s", pointer->s1.address);
printf("\n");
pointer = pointer->next;
}
printf("\n");
Sleep(200);
printf("输出完毕!\n");
}
bool insertstudent(student** head)
{
if (*head == NULL)
{
printf("请先输入学生信息!\n");
return false;
}
char choice[10] = {0};
printf("请输入\"yes\"确认你要插入\n");
printf("-->");
scanf("%s", choice);
if (strcmp(choice, "yes") != 0)
{
system("cls");
printf("插入取消,返回主程序\n");
int i = 0;
printf("please wait for a moment\n");
for (i = 0; i < 6; i++)
{
printf(".");
Sleep(200);
}
Sleep(200);
system("cls");
return false;
}
student* pointer = *head;
student* newnode = creatstudent();
system("cls");
printf("现在有的学生信息如下:\n\n");
printstudent(*head);
printf("请选择插入的位置\n");
int place;
scanf("%d", &place);
int i = 0;
while (pointer != NULL && i < place - 1)
{
pointer = pointer->next;
i++;
}
if (pointer == NULL)
{
printf("插入位置不合法,请重新选择!\n");
return false;
}
newnode->next = pointer->next;
pointer->next = newnode;
system("cls");
printf("正在插入中\n");
for (i = 0; i < 6; i++)
{
printf(".");
Sleep(300);
}
Sleep(300);
return true;
}
bool deletestudent(student** head)
{
if (*head == NULL)
{
printf("请先输入学生信息!\n");
return false;
}
student* pointer = *head;
printf("你想要删除第几个学生?\n");
printf("-->");
int place;
scanf("%d", &place);
printf("你确定你要删除第%d个学生吗?\n",place);
printf("请输入yes确认\n");
char choice[10] = {0};
scanf("%s", choice);
if (strcmp(choice, "yes") != 0)
{
system("cls");
printf("删除操作取消,返回主程序!\n");
Sleep(200);
printf("返回中\n");
int i = 0;
for (i = 0; i < 6; i++)
{
printf(".");
Sleep(200);
}
Sleep(200);
printf("\n\n");
return false;
}
int i = 0;
while (pointer != NULL && i < place - 2)
{
pointer = pointer->next;
i++;
}
if (pointer == NULL)
{
printf("删除位置不合法,请重新输入\n");
return false;
}
student* temp = pointer->next;
pointer->next = temp->next;
free(temp);
temp = NULL;
printf("正在删除中\n");
for (i = 0; i < 6; i++)
{
printf(".");
Sleep(300);
}
Sleep(300);
return true;
}
student* searchbynumber(int number, student* head)
{
student* pointer = head;
int flag = 0;
while (pointer != NULL)
{
if (pointer->s1.number == number)
{
flag = 1;
break;
}
pointer = pointer->next;
}
if (flag == 0)
{
return NULL;
}
return pointer;
}
student* searchbyname(char name[10], student* head)
{
student* pointer = head;
int flag = 0;
while (pointer != NULL)
{
if (strcmp(pointer->s1.name, name) == 0)
{
flag = 1;
break;
}
pointer = pointer->next;
}
if (flag == 0)
{
return NULL;
}
return pointer;
}
void searchstudent(student* head)
{
if (head == NULL)
{
printf("请先输入学生信息!\n");
return;
}
int choice;
student* pointer=NULL;
printf("请选择你查找的方式\n");
printf(" 1.按学号查找\n");
printf(" 2.按姓名查找\n");
scanf("%d", &choice);
switch (choice)
{
case 1:
{
system("cls");
int number;
printf("请输入想要查找的学号\n");
printf("-->\n");
scanf("%d", &number);
pointer = searchbynumber(number, head);
break;
}
case 2:
{
system("cls");
char name[10];
printf("请输入想要查找的姓名\n");
printf("-->\n");
scanf("%s", name);
pointer = searchbyname(name, head);
break;
}
default:
{
printf("error : 请重新选择!\n");
break;
}
}
if (pointer == NULL)
{
printf("没有找到该学生,请重新确认\n");
return;
}
printf("找到了!该生信息为-->\n");
printf("\t姓名\t性别\t学号\t\t数学\tC语言\t英语\t物理\t信息\t线代\t平均分\t家庭地址");
printf("\n");
printf("\t%s\t%s\t%d\t\t", pointer->s1.name, pointer->s1.gender, pointer->s1.number);
int i = 0;
for (i = 0; i < 6; i++)
{
printf("%d\t", pointer->s1.score[i]);
}
printf("%.2lf\t", pointer->s1.ave);
printf("%s", pointer->s1.address);
printf("\n");
}
void updatestudent(student** head)
{
if (*head == NULL)
{
printf("请先输入学生信息!\n");
return;
}
printf("请输入你想要更新的学生的学号\n");
printf("-->");
int number;
scanf("%d", &number);
student* pointer = searchbynumber(number, *head);
printf("请重新录入学生信息\n");
printf("请输入学生姓名-->");
scanf("%s", pointer->s1.name);
printf("请输入学生性别-->");
scanf("%s", pointer->s1.gender);
printf("请输入学生学号-->");
scanf("%d", &pointer->s1.number);
printf("请输入学生六门成绩-->");
int i = 0;
for (i = 0; i < 6; i++)
{
scanf("%d", &pointer->s1.score[i]);
}
int sum = 0;
for (i = 0; i < 6; i++)
{
sum += pointer->s1.score[i];
}
printf("请输入学生地址-->");
scanf("%s", pointer->s1.address);
printf("修改成功\n");
}
bool savestudent(student* head)
{
if (head == NULL)
{
printf("保存失败!请先输入学生信息\n");
return false;
}
char filename[20] = {0};
printf("请选择你想要保存的文件名(如果没有该文件,会自动创建)\n");
printf("-->");
scanf("%s", filename);
FILE* pf = fopen(filename, "w");
if (pf == NULL)
{
printf("文件打开失败,请稍后再试!\n");
return false;
}
student* pointer = head;
//fprintf(pf, "\t\t%4s\t%2s\t%6s\t%3s\t%3s\t%3s\t%3s\t%3s\t%3s\t%4s\t%10s\t\n",
//"姓名","性别","学号","数学","C语言","英语","物理","信息","线代","平均分","家庭地址");
printf("正在保存到本地\n");
int i = 0;
for (i = 0; i < 6; i++)
{
printf(".");
Sleep(300);
}
Sleep(300);
while (pointer != NULL)
{
fprintf(pf, "\t\t%4s\t", pointer->s1.name);
fprintf(pf, "%2s\t", pointer->s1.gender);
fprintf(pf, "%6d\t", pointer->s1.number);
int i = 0;
for (i = 0; i < 6; i++)
{
fprintf(pf, "%3d\t", pointer->s1.score[i]);
}
fprintf(pf, "%.2lf\t", pointer->s1.ave);
fprintf(pf, "%10s\t", pointer->s1.address);
fprintf(pf, "\n");
pointer = pointer->next;
}
fclose(pf);
pf = NULL;
return true;
}
void swapdata(student* pointer, student* pointer2)
{
char tempname[10];
strcpy(tempname, pointer->s1.name);
strcpy(pointer->s1.name,pointer2->s1.name);
strcpy(pointer2->s1.name, tempname);
char tempgender[5];
strcpy(tempgender, pointer->s1.gender);
strcpy(pointer->s1.gender, pointer2->s1.gender);
strcpy(pointer2->s1.gender, tempgender);
int tempnumber = pointer->s1.number;
pointer->s1.number = pointer2->s1.number;
pointer2->s1.number = tempnumber;
int i = 0;
for (i=0; i < 6; i++)
{
int tempscore = pointer->s1.score[i];
pointer->s1.score[i] = pointer2->s1.score[i];
pointer2->s1.score[i] = tempscore;
}
double tempave = pointer->s1.ave;
pointer->s1.ave = pointer2->s1.ave;
pointer2->s1.ave = tempave;
char tempaddress[20];
strcpy(tempaddress, pointer->s1.address);
strcpy(pointer->s1.address, pointer2->s1.address);
strcpy(pointer2->s1.address, tempaddress);
}
void sortbynumber(student* head)
{
int control;
student* pointer;
student* lastpointer = NULL;
if (head == NULL)
{
return;
}
flag:
printf("请问你想要升序还是降序?\n");
printf(" 1.升序\n");
printf(" 2.降序\n");
printf("-->");
int choice;
scanf("%d", &choice);
switch (choice)
{
case 1:
{
do
{
control = 0;
pointer = head;
while (pointer->next != lastpointer)
{
if (pointer->s1.number > pointer->next->s1.number)
{
swapdata(pointer, pointer->next);
control = 1;
}
pointer = pointer->next;
}
lastpointer = pointer;
} while (control);
break;
}
case 2:
{
do
{
control = 0;
pointer = head;
while (pointer->next != lastpointer)
{
if (pointer->s1.number < pointer->next->s1.number)
{
swapdata(pointer, pointer->next);
control = 1;
}
pointer = pointer->next;
}
lastpointer = pointer;
} while (control);
break;
}
default:
{
system("cls");
printf("error:选择错误,请重新选择\n");
system("pause");
system("cls");
goto flag;
}
}
}
void sortbyave(student* head)
{
int control;
student* pointer;
student* lastpointer = NULL;
if (head == NULL)
{
return;
}
flag:
printf("请问你想要升序还是降序?\n");
printf(" 1.降序\n");
printf(" 2.升序\n");
printf("-->");
int choice;
scanf("%d", &choice);
switch (choice)
{
case 1:
{
do
{
control = 0;
pointer = head;
while (pointer->next != lastpointer)
{
if (pointer->s1.ave < pointer->next->s1.ave)
{
swapdata(pointer, pointer->next);
control = 1;
}
pointer = pointer->next;
}
lastpointer = pointer;
} while (control);
break;
}
case 2:
{
do
{
control = 0;
pointer = head;
while (pointer->next != lastpointer)
{
if (pointer->s1.ave > pointer->next->s1.ave)
{
swapdata(pointer, pointer->next);
control = 1;
}
pointer = pointer->next;
}
lastpointer = pointer;
} while (control);
break;
}
default:
{
system("cls");
printf("error:选择错误,请重新选择\n");
system("pause");
system("cls");
goto flag;
}
}
}
bool sortstudent(student* head)
{
if (head == NULL)
{
printf("请先输入学生\n");
return false;
}
flag:
printf("请选择排序的方式\n");
printf(" 1.按照学号\n");
printf(" 2.按照平均分\n");
printf(" 0.退出排序\n");
printf("请选择-->");
int choice;
scanf("%d", &choice);
switch (choice)
{
case 1:
{
system("cls");
sortbynumber(head);
return true;
}
case 2:
{
system("cls");
sortbyave(head);
return true;
}
case 0:
{
system("cls");
printf("排序退出\n");
system("cls");
return false;
}
default:
{
system("cls");
printf("选择错误,请重新选择!\n");
system("pause");
system("cls");
goto flag;
}
}
}
student* searchbyave(student* head)
{
student* pointer = head;
student* max = pointer;
while (pointer->next != NULL)
{
if (pointer->s1.ave < pointer->next->s1.ave)
{
max = pointer->next;
}
pointer = pointer->next;
}
return max;
}
void searchmax(student* head)
{
if (head == NULL)
{
printf("查找失败!!!\n");
printf("请先输入学生信息\n");
return;
}
student* max = searchbyave(head);
printf("成功找到!!!\n");
printf("\n学生信息是--->\n\n");
printf("\t姓名\t性别\t学号\t\t数学\tC语言\t英语\t物理\t信息\t线代\t平均分\t\t家庭地址\n");
printf("\t%s\t%s\t%d\t\t", max->s1.name, max->s1.gender, max->s1.number);
int i = 0;
for (i = 0; i < 6; i++)
{
printf("%d\t", max->s1.score[i]);
}
printf("%.2lf\t", max->s1.ave);
printf(" ");
printf("\t%s", max->s1.address);
printf("\n");
}
student* creatfilenode(FILE* pf, student* head)
{
student* newnode = (student*)malloc(sizeof(student));
if (newnode == NULL)
{
exit(1);
}
char tempname[10] = {0};
char tempgender[5] = {0};
int tempnumber = 0;
int tempscore[6] = {0};
double tempave = 0.0;
char tempaddress[20] = {0};
fscanf(pf, "%s", tempname);
fscanf(pf, "%s", tempgender);
fscanf(pf, "%d", &tempnumber);
int i = 0;
for (i = 0; i < 6; i++)
{
fscanf(pf, "%d", &tempscore[i]);
}
fscanf(pf, "%lf", &tempave);
fscanf(pf, "%s", tempaddress);
strcpy(newnode->s1.name, tempname);
strcpy(newnode->s1.gender, tempgender);
strcpy(newnode->s1.address, tempaddress);
for (i = 0; i < 6; i++)
{
newnode->s1.score[i] = tempscore[i];
}
newnode->s1.number = tempnumber;
newnode->s1.ave = tempave;
newnode->next = NULL;
return newnode;
}
bool readfilehead(student** head)
{
student* pointer = *head;
printf("请输入文件名(注意:包含后缀)\n");
char filename[20] = { 0 };
scanf("%s", filename);
FILE* pf = fopen(filename, "r");
if (pf == NULL)
{
printf("文件打开失败,请稍后再试\n");
system("pause");
return false;
}
student* newnode = creatfilenode(pf, *head);
*head = newnode;
return true;
}
void deletehead(student* head)
{
student* temp = head->next;
head->next = temp->next;
free(temp);
}
bool readfile(student** head)
{
student* pointer = *head;
printf("请再次输入文件名确认\n");
char filename[20] = { 0 };
scanf("%s", filename);
FILE* pf = fopen(filename, "r");
if (pf == NULL)
{
printf("文件打开失败,请稍后再试\n");
return false;
}
printf("正在从本地读取\n");
int i = 0;
for (i = 0; i < 6; i++)
{
printf(".");
Sleep(300);
}
system("cls");
printf("读取成功\n");
while (!feof(pf))
{
student* newnode = creatfilenode(pf, *head);
while (pointer->next != NULL)
{
pointer = pointer->next;
}
pointer->next = newnode;
}
deletehead(*head);
pointer->next = NULL;
return true;
}
double rank(int choice, student* head)
{
student* pointer = head;
int sum = 0;
int count = 0;
double ave = 0.0;
switch (choice)
{
case 1://数学的平均分
{
while (pointer != NULL)
{
sum += pointer->s1.score[0];
pointer = pointer->next;
count++;
}
return sum / (count * 1.0);
}
case 2:
{
while (pointer != NULL)
{
sum += pointer->s1.score[1];
pointer = pointer->next;
count++;
}
return sum / (count * 1.0);
}
case 3:
{
while (pointer != NULL)
{
sum += pointer->s1.score[2];
pointer = pointer->next;
count++;
}
return sum / (count * 1.0);
}
case 4:
{
while (pointer != NULL)
{
sum += pointer->s1.score[3];
pointer = pointer->next;
count++;
}
return sum / (count * 1.0);
}
case 5:
{
while (pointer != NULL)
{
sum += pointer->s1.score[4];
pointer = pointer->next;
count++;
}
return sum / (count * 1.0);
}
case 6:
{
while (pointer != NULL)
{
sum += pointer->s1.score[5];
pointer = pointer->next;
count++;
}
return sum / (count * 1.0);
}
}
return -1;
}
void wait()
{
printf("正在查询中\n");
printf("wiat for a moment\n");
int i = 0;
for (i = 0; i < 6; i++)
{
printf(".");
Sleep(200);
}
Sleep(200);
}
void checkscore(student* head)
{
if (head == NULL)
{
printf("请先输入学生!\n");
return;
}
int choice;
do
{
printf("\t\t\t\t可以查询数学、C语言、英语、物理、信息、线代共六门课程\n\n");
printf("\t\t\t\t 1.数学\n");
printf("\t\t\t\t 2.C语言\n");
printf("\t\t\t\t 3.英语\n");
printf("\t\t\t\t 4.物理\n");
printf("\t\t\t\t 5.信息\n");
printf("\t\t\t\t 6.线代\n\n");
printf("请选择你想要查询的科目\n");
printf("请输入-->");
scanf("%d", &choice);
switch (choice)
{
case 1:
{
system("cls");
wait();
system("cls");
printstudent(head);
printf("这些学生中的数学平均分是%.2lf\n", rank(1, head));
system("pause");
system("cls");
break;
}
case 2:
{
system("cls");
wait();
system("cls");
printstudent(head);
printf("这些学生中的C语言平均分是%.2lf\n", rank(2, head));
system("pause");
system("cls");
break;
}
case 3:
{
system("cls");
wait();
system("cls");
printstudent(head);
printf("这些学生中的英语平均分是%.2lf\n", rank(3, head));
system("pause");
system("cls");
break;
}
case 4:
{
system("cls");
wait();
system("cls");
printstudent(head);
printf("这些学生中的物理平均分是%.2lf\n", rank(4, head));
system("pause");
system("cls");
break;
}
case 5:
{
system("cls");
wait();
system("cls");
printstudent(head);
printf("这些学生中的信息平均分是%.2lf\n", rank(5, head));
system("pause");
system("cls");
break;
}
case 6:
{
system("cls");
wait();
system("cls");
printstudent(head);
printf("这些学生中的线代平均分是%.2lf\n", rank(6, head));
system("pause");
system("cls");
break;
}
case 0:
{
system("cls");
printf("单科成绩查询退出!\n");
system("pause");
int i = 0;
system("cls");
printf("正在回到主程序\n");
for (i = 0; i < 6; i++)
{
printf(".");
Sleep(200);
}
Sleep(200);
break;
}
default:
{
system("cls");
printf("选择错误,请重新选择\n");
system("pause");
system("cls");
}
}
}while (choice);
}
void saveagain()
{
char sourcename[15] = {0};
char goalname[15] = {0};
printf("请输入源文件的名字(请包含后缀)\n");
printf("-->");
scanf("%s", sourcename);
printf("请输入备份文件的名字(请包含后缀)\n");
printf("-->");
scanf("%s", goalname);
FILE* source = fopen(sourcename, "r");
if (source == NULL)
{
printf("源文件打开失败,请重试\n");
return;
}
FILE* goal = fopen(goalname, "w");
if (goal == NULL)
{
printf("备份文件打开失败,请重试\n");
return;
}
system("cls");
printf("正在备份中\n");
printf("wait for a moment\n");
int i = 0;
for (i = 0; i < 6; i++)
{
printf(".");
Sleep(200);
}
Sleep(200);
char ch = fgetc(source);
while (ch != EOF)
{
fputc(ch, goal);
//ch = fgetc(source);
}
printf("\n\n备份成功!\n");
}
int main()
{
system("color C");
int flag = 0;
int i = 0;
for (i = 0; i < 3; i++)
{
flag = checkpassword(i);
if (flag == 1)
{
printf("密码正确!\n");
system("color 2");
system("pause");
system("cls");
break;
}
system("color 4");
printf("密码错误,请再试一次\n");
system("pause");
system("cls");
}
if (flag == 0)
{
printf("密码输入错误次数过多,请稍后继续!\n");
system("pause");
system("cls");
printf("程序结束\n");
system("pause");
return 0;
}
system("color 7");
student* head = NULL;
int choice;
do
{
menu();
scanf("%d", &choice);
switch (choice)
{
case 1:
{
system("cls");
printf("你想要添加几个学生?\n");
int i = 0;
int n;
printf("-->");
scanf("%d", &n);
for (i = 0; i < n; i++)
{
addstudent(&head, i);
}
system("cls");
break;
}
case 2:
{
system("cls");
Sleep(200);
printstudent(head);
system("pause");
system("cls");
break;
}
case 3:
{
system("cls");
Sleep(200);
searchstudent(head);
system("pause");
system("cls");
break;
}
case 4:
{
system("cls");
bool flag = insertstudent(&head);
if (flag)
{
system("cls");
printf("插入成功!\n");
}
system("cls");
printf("现在的学生信息有:\n");
printstudent(head);
system("pause");
system("cls");
break;
}
case 5:
{
system("cls");
bool flag = deletestudent(&head);
if (flag)
{
printf("\n删除成功\n");
}
system("pause");
system("cls");
break;
}
case 6:
{
system("cls");
printf("正在准备更新信息\n");
int i = 0;
for (i = 0; i < 6; i++)
{
printf(".");
Sleep(300);
}
Sleep(300);
system("cls");
updatestudent(&head);
system("pause");
system("cls");
break;
}
case 7:
{
system("cls");
bool symbol = sortstudent(head);
printf("\n\n正在排序中\n");
int i = 0;
for (i = 0; i < 6; i++)
{
printf(".");
Sleep(300);
}
Sleep(300);
system("cls");
if (symbol)
{
printf("排序成功\n");
}
else
{
printf("排序退出,请继续使用\n");
}
system("pause");
system("cls");
break;
}
case 8:
{
system("cls");
checkscore(head);
system("pause");
system("cls");
break;
}
case 9:
{
system("cls");
printf("正在寻找中\n");
int i = 0;
for (i = 0; i < 6; i++)
{
printf(".");
Sleep(300);
}
Sleep(300);
system("cls");
searchmax(head);
system("pause");
system("cls");
break;
}
case 10:
{
system("cls");
bool flag = savestudent(head);
if (flag)
{
printf("保存成功\n");
}
system("pause");
system("cls");
break;
}
case 11:
{
system("cls");
bool flag = readfilehead(&head);
if (flag == false)
{
system("cls");
break;
}
readfile(&head);
system("pause");
system("cls");
break;
}
case 12:
{
system("cls");
saveagain(head);
system("pause");
system("cls");
break;
}
case 0:
{
system("cls");
printf("程序退出,感谢使用\n");
Sleep(200);
system("pause");
break;
}
default:
{
system("cls");
printf("选择错误,请重新选择!\n");
Sleep(200);
system("pause");
system("cls");
break;
}
}
} while (choice);
return 0;
}
第一次写这么长的,有很多都是为了用户体验添加的,然后很多也是重复的(鄙人才疏学浅),大概就是这个样子。明天会更好。