From 3e12e364a269f652b72ec8b32fead928471f21b2 Mon Sep 17 00:00:00 2001 From: "30298574152@qq.com" <30298574152@qq.com> Date: Wed, 9 Jan 2019 15:59:18 +0800 Subject: [PATCH] first commit --- 123.cpp.cpp | 993 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 993 insertions(+) create mode 100644 123.cpp.cpp diff --git a/123.cpp.cpp b/123.cpp.cpp new file mode 100644 index 0000000..938707f --- /dev/null +++ b/123.cpp.cpp @@ -0,0 +1,993 @@ +#include +#include +struct Student + { + char num[20]; + char name[20]; + char age[20]; + char sex[20]; + char birthday[20]; + char address[20]; + char telephone[20]; + char email[20]; + struct Student *next; + }; + +void meun() //主菜单,调用分函数 + { + void new_student(); + void output_student(); + void search_meun(); + void modify_meun(); + void delete_meun(); + while(1) + { + system("color f0"); + system("cls");; + printf("--------------------------\n"); + printf("***--- 1.录入学生信息 ---***\n"); + printf("***--- 2.显示学生信息 ---***\n"); + printf("***--- 3.查询学生信息 ---***\n"); + printf("***--- 4.修改学生信息 ---***\n"); + printf("***--- 5.删除学生信息 ---***\n"); + printf("***--- 0.退出系统 ---***\n"); + printf("***---请输入想执行功能:"); + +; int n; + scanf("%d",&n); + + switch(n) + { + case 1:new_student();break; + case 2:output_student();break; + case 3:search_meun();break; + case 4:modify_meun();break; + case 5:delete_meun();break; + case 0:printf("***---感谢您的使用---***"); + Sleep(1); + exit(0); + system("cls"); + break; + default:if(n<0||n>6) + { + printf("***---您输入有误,请重试!---***"); + Sleep(500); + continue; + } + } + } + } + + + + +void new_student() +{ + system("color 12"); + int i, n, bools; + struct Student *head=NULL, *p=NULL, *p1=NULL, *p2=NULL; + + system("cls"); + printf("------------------------\n"); + printf("***--- 0.返回主菜单 ---***\n"); + printf("***--- 1.重录 ---***\n"); + printf("***--- 2.补录 ---***\n"); + printf("------------------------\n"); + printf("***---请选择录入方式: "); + scanf("%d", &bools); + + if (((bools!=1) && (bools!=2)) || (bools==0)) + { + system("cls"); + if(bools!=0) + { + printf("***---您输错了,请重试!---***\n"); + system("pause"); + } + return; + } + + system("cls"); + printf("***---请输入学生录入人数: "); + scanf("%d",&n); + + if (n <= 0) + { + system("cls"); + printf("***---您输错了,请重试!---***\n");; + system("pause"); + return; + } + + FILE *fp1; + + + p2 = NULL; + if (bools == 2) + { + if ((fp1 = fopen("Student.txt","r")) == NULL) + { + system("cls"); + printf("***---文件打开失败!请重试!---***\n");; + system("pause"); + return; + } + + int ch = fgetc(fp1); + rewind(fp1); + + if(ch!=EOF) + { + while (!feof(fp1)) + { + if ((p1 = (struct Student*)malloc(sizeof(struct Student)))== NULL) + { + printf("***---获取数据失败,请重试!---***\n"); + return; + } + + fscanf(fp1,"%s %s %s %s %s %s %s %s", p1->num, p1->name, p1->age, p1->sex,p1->birthday,p1->address,p1->telephone,p1->email); + + if (p2 == NULL) + { + head = p2 = p1; + p2->next = NULL; + } + else + { + p2->next = p1; + p2 = p1; + p2->next = NULL; + } + } + } + + if (fclose(fp1)) + { + printf("***---文件关闭失败!请重试!---***\n"); + return; + } + } + + p = p1 = p2 = NULL; + + + for(i=0; inum); + if (strlen(p->num) !=11) + { + printf("***---您输入有误,请重新输入!---***");; + system("pause"); + continue; + } + else + { + break; + } + } + + printf("***---请输入学生姓名:"); + scanf("%s",p->name); + + printf("***---请输入学生年龄:"); + scanf("%s",p->age); + + printf("***---请输入学生性别:"); + scanf("%s",p->sex); + + printf("***---请输入出生年月:"); + scanf("%s",p->birthday); + + printf("***---请输入学生地址:"); + scanf("%s",p->address); + + printf("***---请输入学生电话:"); + scanf("%s",p->telephone); + + printf("***---请输入email:"); + scanf("%s",p->email); + + if (head == NULL) + { + head = p; + p->next = NULL; + } + else if (head->next == NULL) + { + p2 = p1 = head; + } + else + { + p1 = head; + p2 = head->next; + } + + while (p1 != NULL) + { + if (strcmp(p->num, p2->num) < 0) + { + if (strcmp(p->num, p1->num) < 0) + { + p->next = p1; + head = p; + } + else + { + p->next = p2; + p1->next = p; + } + break; + } + else if (p2->next == NULL) + { + p2->next = p; + p->next = NULL; + break; + } + + else + { + p1 = p1->next; + p2 = p2->next; + } + } + } + + + FILE *fp2; + + if ((fp2 = fopen("Student.txt","w")) == NULL) + { + printf("***---文件打开失败!请重试!---***\n"); + return; + } + + p = head; + while (p != NULL) + { + fprintf(fp2,"%s %s %s %s %s %s %s %s\n", p->num,p->name,p->age, + p->sex,p->birthday,p->address,p->telephone,p->email); + p = p->next; + } + + if (fclose(fp2)) + { + printf("***---文件关闭失败!请重试!---***\n"); + return; + } + else + { + for (int i=1; i<=10; i++) + { + printf("***---正在保存*****%d0%%,请稍后\n", i); + Sleep(1); + system("cls"); + } + printf("***---保存成功!---***\n"); + Sleep(500); + } +} + +void output_student() +{ + system("color 12"); + getchar(); + + struct Student *head; + struct Student *p1=NULL, *p2=NULL; + + FILE *fp1; + + if ((fp1 = fopen("Student.txt","r")) == NULL) + { + printf("***---文件打开失败!请重试!---***\n"); + return; + } + + if ((head = (struct Student*)malloc(sizeof(struct Student))) == NULL) + { + printf("***---获取内存失败,请重试!---***\n"); + return; + } + + int ch = fgetc(fp1); + if(ch==EOF) + { + system("cls"); + printf("***---没有学生信息,请录入!---***\n");; + system("pause"); + return; + } + + rewind(fp1); + while (!feof(fp1)) + { + if ((p1 = (struct Student*)malloc(sizeof(struct Student))) == NULL) + { + printf("***---获取数据失败,请重试!---***\n"); + return; + } + + fscanf(fp1,"%s %s %s %s %s %s %s %s", p1->num,p1->name,p1->age, + p1->sex,p1->birthday,p1->address,p1->telephone,p1->email); + + if (p2 == NULL) + { + head = p2 = p1; + } + else + { + p2->next = p1; + p2 = p1; + p2->next = NULL; + } + } + + if (fclose(fp1)) + { + printf("***---文件关闭失败!请重试!---***\n"); + return; + } + + p2 = head; + system("cls"); + + printf("学号: 姓名: 年龄: 性别: 出生年月: 地址: 电话号码: 邮箱:\n\n"); + while (p2->next!=NULL) + { + printf("%-15s%-8s%-8s%-8s%-15s%-20s%-14s%-30s\n", p2->num,p2->name,p2->age, + p2->sex,p2->birthday,p2->address,p2->telephone,p2->email); + p2 = p2->next; + }; + system("pause"); //系统暂停函数,任意键继续 +} + +void search_meun() //打印查询信息菜单,调用查询函数 +{ + system("color 25"); + char bools; + char info[20]; + while (1) + { + system("cls"); + printf("--------------------------------\n"); + printf("***--- 0.返回主菜单 ---***\n"); + printf("***--- 1.按学号查询 ---***\n"); + printf("***--- 2.按姓名查询 ---***\n"); + printf("--------------------------------\n"); + printf("***---请输入你想执行的功能:"); + getchar(); + scanf("\n%c",&bools); + getchar(); + + system("cls"); + if ((bools != '1') && (bools != '2')) + { + return ; + } + + else if (bools == '1') + { + printf("***---请输入要查询学生的学号:"); + scanf("\n%s",info); + } + + else + { + printf("***---请输入要查询学生的姓名:"); + scanf("\n%s",info); + } + + char search_student(char bools, char *info); + char ch = search_student(bools,info); + if ((ch!='y') && (ch!='Y')) + { + break; + } + } + getchar(); +} + +char search_student(char bools, char *info) //查询函数 +{ + struct Student *head=NULL; + struct Student *p1=NULL, *p2=NULL; + + FILE *fp1; + + if ((fp1 = fopen("Student.txt","r")) == NULL) + { + printf("***---文件打开失败,请重试!\n"); + return 'n'; + } + + char ch = fgetc(fp1); + if(ch==EOF) + { + system("cls"); + printf("***---没有学生信息,请录入!---***\n"); + printf("\n"); + system("pause"); + return 'n'; + } + + rewind(fp1); + while (!feof(fp1)) + { + if ((p1 = (struct Student*)malloc(sizeof(struct Student))) == NULL) + { + printf("***---获取数据失败,请重试!---***\n"); + return 'n'; + } + fscanf(fp1,"%s %s %s %s %s %s %s %s", p1->num,p1->name,p1->age, + p1->sex,p1->birthday,p1->address,p1->telephone,p1->email); + + if (p2 == NULL) + { + head = p2 = p1; + } + else + { + p2->next = p1; + p2 = p1; + p2->next = NULL; + } + } + if (fclose(fp1)) + { + printf("***---文件关闭失败,请重试!---***\n"); + return 'n'; + } + + p1 = head; + int flag=0; + + do { + if (bools == '1') + { + if (!strcmp(p1->num, info)) + { + system("cls"); + printf("***---您查询的学生的信息为:\n\n"); + printf("学号: 姓名:年龄: 性别: 出生年月: 地址: 电话号码: 邮箱:\n"); + printf("%-15s%-8s%-8s%-8s%-15s%-20s%-14s%-30s\n", p1->num,p1->name,p1->age, + p1->sex,p1->birthday,p1->address,p1->telephone,p1->email); + + flag = 1; + printf("\n"); + system("pause"); + + system("cls"); + printf("-------------------------\n"); + printf("***--- y.继续查询 ---***\n"); + printf("***--- n.退出查询 ---***\n"); + printf("-------------------------\n"); + printf("***---是否继续查询:\n"); + + getchar(); + char ch = getchar(); + return ch; + } + else + { + p1 = p1->next; + } + } + else + { + if (!strcmp(p1->name, info)) + { + system("cls"); + printf("***---您查询的学生的信息为:\n\n"); + printf("学号: 姓名: 年龄: 性别: 出生年月: 地址: 电话号码: 邮箱:\n"); + printf("%-15s%-8s%-8s%-8s%-15s%-20s%-14s%-30s\n", p1->num,p1->name,p1->age, + p1->sex,p1->birthday,p1->address,p1->telephone,p1->email); + + flag = 1; + printf("\n"); + system("pause"); + + system("cls"); + printf("-------------------------\n"); + printf("***--- y.继续查询 ---***\n"); + printf("***--- n.退出查询 ---***\n"); + printf("-------------------------\n"); + printf("***---是否继续查询:\n"); + + getchar(); + char ch = getchar(); + return ch; + } + else + { + p1 = p1->next; + } + } + + } while (p1->next != NULL); + + if (!flag) + { + printf("***---您查询的学生不存在,请重试!---***\n"); + system("pause"); + return 'y'; + } +} + + +void modify_meun() //打印修改信息菜单,调用修改函数 +{ + void modify(char bools,char *info); + system("color 5f"); + char bools; + char info[20]; + + system("cls"); + printf("--------------------------------\n"); + printf("***--- 0.返回主菜单 ---***\n"); + printf("***--- 1.按学号修改 ---***\n"); + printf("***--- 2.按姓名修改 ---***\n"); + printf("--------------------------------\n"); + printf("***---请输入你想执行的功能:"); + scanf("\n%c",&bools); + + system("cls"); + if ((bools != '1') && (bools != '2')) + { + getchar(); + return ; + } + + else if (bools == '1') + { + printf("***---请输入要修改学生的学号:"); + scanf("\n%s",info); + } + + else + { + printf("***---请输入要修改学生的姓名:"); + scanf("\n%s",info); + } + + modify(bools,info); +} + +void modify_menu_2() //打印需修改属性菜单 +{ + printf("\n"); + printf("-----------------------------------------------\n"); + printf("***--- 1.学号:\n"); + printf("***--- 2.姓名:\n"); + printf("***--- 3.年龄:\n"); + printf("***--- 4.性别:\n"); + printf("***--- 5.出生年月:\n"); + printf("***--- 6.地址:\n"); + printf("***--- 7.电话号码:\n"); + printf("***--- 8.邮箱:\n"); + printf("***--- 0.不修改:\n"); + printf("------------------------------------------------\n"); + printf("***---请输入修改哪些信息,可多选,以空格隔开:"); +} + +void modify(char bools,char *info) //修改函数 +{ + struct Student *head=NULL; + struct Student *p1=NULL,*p2=NULL; + + FILE *fp1; + + if ((fp1 = fopen("Student.txt","r")) == NULL) + { + printf("***---文件打开失败,请重试---***\n"); + return; + } + + int ch1 = fgetc(fp1); + if(ch1==EOF) + { + system("cls"); + printf("***---没有学生信息,请录入!---***\n"); + system("pause"); + return; + } + rewind(fp1); + + while (!feof(fp1)) + { + if ((p1 = (struct Student*)malloc(sizeof(struct Student))) == NULL) + { + printf("***---获取数据失败,请重试!---***\n"); + return; + } + + + fscanf(fp1,"%s %s %s %s %s %s %s %s", p1->num,p1->name,p1->age, + p1->sex,p1->birthday,p1->address,p1->telephone,p1->email); + + if (p2 == NULL) + { + head = p2 = p1; + } + else + { + p2->next = p1; + p2 = p1; + p2->next = NULL; + } + } + if (fclose(fp1)) + { + printf("***---文件关闭失败,请重试!---***\n"); + return; + } + + int i,flag=0; //判断是否找到该学生,找到为1 + int a[9] = {-1}; + char ch = ' '; + p1 = head; + p2 = head->next; + + //输入学号修改 + if (bools == '1') + { + if (!strcmp(head->num, info)) + { + system("cls"); + printf("***---您要修改的学生的信息为:\n\n"); + printf("学号: 姓名: 年龄: 性别: 出生年月: 地址: 电话号码: 邮箱:\n"); + printf("%-15s%-8s%-8s%-8s%-15s%-20s%-14s%-30s\n", p1->num,p1->name,p1->age, + p1->sex,p1->birthday,p1->address,p1->telephone,p1->email); + + modify_menu_2(); + for (i=0; ch == ' '; i++) + { + scanf("%d", &a[i]); + ch = getchar(); + } + + for (i=0; a[i]; i++) + { + switch (a[i]) + { + case 1: + printf("***---请输入修改后的学号:\n"); + gets(p1->num); + break; + case 2: + printf("***---请输入修改后的姓名:\n"); + gets(p1->name); + break; + case 3: + printf("***---请输入修改后的年龄:\n"); + gets(p1->age); + break; + case 4: + printf("***---请输入修改后的性别:\n"); + gets(p1->sex); + break; + case 5: + printf("***---请输入修改后的出生年月:\n"); + gets(p1->birthday); + break; + case 6: + printf("***---请输入修改后的地址:\n"); + gets(p1->address); + break; + case 7: + printf("***---请输入修改后的电话号码:\n"); + gets(p1->telephone); + break; + case 8: + printf("***---请输入修改后的邮箱:\n"); + gets(p1->email); + break; + default: + printf("***---您输入有误,请重试!\n"); + system("pause"); + return; + } + } + flag = 1; + } + + else + { + while (p2->next != NULL) + { + if (!strcmp(p2->num, info)) + { + system("cls"); + printf("***---您要修改的学生的信息为:\n\n"); + printf("学号: 姓名: 年龄: 性别: 出生年月: 地址: 电话号码: 邮箱:\n"); + printf("%-15s%-8s%-8s%-8s%-15s%-20s%-14s%-30s\n", p2->num, p2->name, p2->age, + p2->sex, p2->birthday, p2->address, p2->telephone, p2->email); + + modify_menu_2(); + for (i=0; ch == ' '; i++) + { + scanf("%d", &a[i]); + ch = getchar(); + } + + for (i=0; a[i]; i++) + { + switch (a[i]) + { + case 1: + printf("***---请输入修改后的学号:\n"); + gets(p2->num); + break; + case 2: + printf("***---请输入修改后的姓名:\n"); + gets(p2->name); + break; + case 3: + printf("***---请输入修改后的年龄:\n"); + gets(p2->age); + break; + case 4: + printf("***---请输入修改后的性别:\n"); + gets(p2->sex); + break; + case 5: + printf("***---请输入修改后的出生年月:\n"); + gets(p2->birthday); + break; + case 6: + printf("***---请输入修改后的地址:\n"); + gets(p2->address); + break; + case 7: + printf("***---请输入修改后的电话号码:\n"); + gets(p2->telephone); + break; + case 8: + printf("***---请输入修改后的邮箱:\n"); + gets(p2->email); + break; + default: + printf("***---您输入有误,请重试!\n");; + system("pause"); + return; + } + } + flag = 1; + break; + } + else + { + p1 = p1->next; + p2 = p2->next; + } + } + } + } + + //输入姓名修改 + else + { + if (!strcmp(head->name, info)) + { + system("cls"); + printf("***---您要修改的学生的信息为:\n\n"); + printf("学号: 姓名: 年龄: 性别: 出生年月: 地址: 电话号码: 邮箱:\n"); + printf("%-15s%-8s%-8s%-8s%-15s%-20s%-14s%-30s\n", p1->num,p1->name,p1->age, + p1->sex,p1->birthday,p1->address,p1->telephone,p1->email); + + modify_menu_2(); + for (i=0; ch == ' '; i++) + { + scanf("%d", &a[i]); + ch = getchar(); + } + + for (i=0; a[i]; i++) + { + switch (a[i]) + { + case 1: + printf("***---请输入修改后的学号:\n"); + gets(p1->num); + break; + case 2: + printf("***---请输入修改后的姓名:\n"); + gets(p1->name); + break; + case 3: + printf("***---请输入修改后的年龄:\n"); + gets(p1->age); + break; + case 4: + printf("***---请输入修改后的性别:\n"); + gets(p1->sex); + break; + case 5: + printf("***---请输入修改后的出生年月:\n"); + gets(p1->birthday); + break; + case 6: + printf("***---请输入修改后的地址:\n"); + gets(p1->address); + break; + case 7: + printf("\t\t\t\t请输入修改后的电话号码:\n"); + gets(p1->telephone); + break; + case 8: + printf("***---请输入修改后的邮箱:\n"); + gets(p1->email); + break; + default: + printf("***---您输入有误,请重试!\n");; + system("pause"); + return; + } + } + flag = 1; + } + else + { + while (p2->next != NULL) + { + if (!strcmp(p2->name, info)) + { + system("cls"); + printf("***---您要修改的学生的信息为:\n\n"); + printf("学号: 姓名: 年龄: 性别: 出生年月: 地址: 电话号码: 邮箱:\n"); + printf("%-15s%-8s%-8s%-8s%-15s%-20s%-14s%-30s\n", p2->num,p2->name,p2->age, + p2->sex,p2->birthday,p2->address,p2->telephone,p2->email); + + modify_menu_2(); + for (i=0; ch == ' '; i++) + { + scanf("%d", &a[i]); + ch = getchar(); + } + + for (i=0; a[i]; i++) + { + switch (a[i]) + { + case 1: + printf("***---请输入修改后的学号:\n"); + gets(p2->num); + break; + case 2: + printf("***---请输入修改后的姓名:\n"); + gets(p2->name); + break; + case 3: + printf("***---请输入修改后的年龄:\n"); + gets(p2->age); + break; + case 4: + printf("***---请输入修改后的性别:\n"); + gets(p2->sex); + break; + case 5: + printf("***---请输入修改后的出生年月:\n"); + gets(p2->birthday); + break; + case 6: + printf("***---请输入修改后的地址:\n"); + gets(p2->address); + break; + case 7: + printf("***---请输入修改后的电话号码:\n"); + gets(p2->telephone); + break; + case 8: printf("***---请输入修改后的邮箱:\n"); + gets(p2->email); + break; + default: + printf("***---您输入有误,请重试!\n");; + system("pause"); + return; + } + } + flag = 1; + break; + } + else + { + p1 = p1->next; + p2 = p2->next; + } + } + } + } + + if (a[0] == 0) + { + system("cls"); + printf("***---您未进行修改---***\n"); + Sleep(500); + return; + } + + if (!flag) + { + printf("***---您修改的学生不存在,请重试!---***\n"); + system("pause"); + return; + } + else + { + for (int i=1; i<=10; i++) + { + printf("***---正在修改*****%d0%%,请稍后---***\n", i); + Sleep(1); + system("cls"); + } + + printf("***---修改成功!---***\n"); + Sleep(500); + } + char menu_modefy_save(); + char temp = menu_modefy_save(); //保存修改后的数据 + if ((temp == 'y') || (temp == 'Y')) + { + FILE *fp2; + p1 = head; + + if ((fp2 = fopen("Student.txt","w")) == NULL) + { + printf("***---文件打开失败,请重试!---***\n"); + return; + } + + while (p1->next != NULL) + { + fprintf(fp2,"%s %s %s %s %s %s %s %s\n", p1->num,p1->name,p1->age, + p1->sex,p1->birthday,p1->address,p1->telephone,p1->email); + p1 = p1->next; + } + + if (fclose(fp2)) + { + printf("***---文件关闭失败,请重试!---***\n"); + return; + } + else + { + for (int i=1; i<=10; i++) + { + printf("***---正在保存*****%d0%%,请稍后---***\n", i); + Sleep(1); + system("cls"); + } + printf("***---保存成功!---***\n"); + Sleep(500); + system("cls"); + } + } + else + { + system("cls"); + printf("***---您的修改操作未保存---***\n"); + Sleep(500); + } +} +char menu_modefy_save() //打印修改是否保存的菜单 +{ + system("cls"); + + printf("--------------------------\n"); + printf("***--- y.保存 ---***\n"); + printf("***--- n.不保存 ---***\n"); + printf("--------------------------\n"); + printf("***---请选择是否保存:"); + return getchar(); +} \ No newline at end of file