From 39d2b8d564aceafd3dc8e5901e99f3c3cc5682a1 Mon Sep 17 00:00:00 2001 From: "17415400131@stu.hut.edu.cn" <17415400131@stu.hut.edu.cn> Date: Tue, 8 Jan 2019 16:58:50 +0800 Subject: [PATCH] new commit --- Classmates_MSystem.c | 343 +++++++++++++++++++++++++++++++++++++++++ Classmates_MSystem.exe | Bin 0 -> 34936 bytes 2 files changed, 343 insertions(+) create mode 100644 Classmates_MSystem.c create mode 100644 Classmates_MSystem.exe diff --git a/Classmates_MSystem.c b/Classmates_MSystem.c new file mode 100644 index 0000000..acce6ac --- /dev/null +++ b/Classmates_MSystem.c @@ -0,0 +1,343 @@ +//*!!!!使用说明!!!!*// +//如果文件功能无法使用,建议在C盘建立一个"dat.txt"文件// +#include +#include +#include +#define Length sizeof(struct student) //用来开辟空间 +int n=0; +struct student +{ + char name[20]; //名字 + char num[20]; //学号 + char Class[20]; //班级 + char sex[20]; //性别 + int age; //年龄 + char ps[100]; //备注(postscript) + struct student *next; +}*head,*p,*p1,*p2; //head表示开头 p表示不同位置的数据 +void add() //添加 +{ + p1=(struct student *)malloc(Length); //开辟存储空间 + if(n==0) //判断链表开头 + head=p1; //n=0代表输入的是第一个数据 //p2的结尾所指向的地址是p1 + else p2->next=p1; //n!=0 就它们连接起来 + system("cls"); + printf("请输入学生基本信息:\n姓名:"); + scanf("%s",&p1->name); + printf("学号:"); + scanf("%s",&p1->num); + printf("年龄:"); + scanf("%d",&p1->age); + printf("班级:"); + scanf("%s",&p1->Class); + printf("性别:"); + scanf("%s",&p1->sex); + printf("备注:"); + scanf("%s",&p1->ps); + p2=p1; //p2指向p1所在的地址 + p2->next=NULL; //链表结束标志 + n+=1; //n判断是不是第一个数据 + system("pause"); + system("cls"); +} +void print() +{ + if(n!=0) + { + p=head; //p先指向开头 + system("cls"); + printf("姓名\t学号\t\t班级\t年龄\t性别\t\t备注\n"); + do + { + printf("%-8s%-16s%-8s%-8d%-16s%-8s\n",p->name,p->num,p->Class,p->age,p->sex,p->ps); + p=p->next; //p打印结束 把p指向next以判断下一个区域有没有内容 + }while(p!=NULL); //只要p指向的内存区域有数据 就打印内容 + } + else + printf("您还没有添加数据!\n"); + system("pause"); + system("cls"); +} +void find() //查找 +{ + void find1(); + void find2(); + if(n!=0) + { + int a; + system("cls"); + printf("1.按姓名查找\n2.按学号查询\n3.按性别查找\n4.按年龄查找\n"); + scanf("%d",&a); + switch(a) + { + case 1: + find1(); + break; + case 2: + find2(); + break; + case 3: + find3(); + break; + case 4: + find4(); + break; + } + } + else + {printf("对不起,您还没有添加数据!\n");system("pause");} +} +void Delete() +{ + if(n!=0) + { + struct student *f,*l; //定义新的指针 f使用来指向要删除的数据用来释放内存! + char a[20]; + printf("请输入要删除的姓名:"); + scanf("%s",&a); + p=head; + if(strcmp(head->name,a)==0) + {f=head;head=head->next;free(f);} + else + { + do + { + if(strcmp(p->name,a)==0) + {f=p;l->next=p->next;free(f);break;} + l=p; //不满足if表示这不是要删除的那一个节点,l暂时指向p 之后p再指向下一个节点,如果这个是要删除的节点那么l指向这个节点的next的地址 + p=p->next; + }while(p!=NULL); + } + } + else + printf("您还没有添加数据!\n"); + printf("数据已经被删除\n"); + system("pause"); //等待命令 + system("cls"); +} +void amend() +{ + if(n!=0) + { + int c; + char a[20]; + printf("请输入要修改的姓名:"); + scanf("%s",&a); + p=head; + do + { + if(strcmp(a,p->name)==0) + { + printf("\n被修改人信息如下:\n姓名\t学号\t\t班级\t年龄\t性别\t\t备注\n"); + printf("%-8s%-16s%-8s%-8d%-16s%-8s\n",p->name,p->num,p->Class,p->age,p->sex,p->ps); + break; + } + p=p->next; ////指针指向下一个节点 + }while(p!=NULL); + printf("\n\n1.修改姓名\n2.修改学号\n3.修改班级\n4.修改年龄\n5.修改性别\n6.修改备注\n7.退出修改\n\n"); + scanf("%d",&c); + switch(c) + { + case 1: + printf("姓名修改为:"); + scanf("%s",&p->name);break; + case 2: + printf("学号修改为:"); + scanf("%s",&p->num);break; + case 3: + printf("班级修改为:"); + scanf("%s",&p->Class);break; + case 4: + printf("年龄修改为:"); + scanf("%d",&p->age);break; + case 5: + printf("专业修改为:"); + scanf("%s",&p->sex);break; + case 6: + printf("备注修改为:"); + scanf("%s",&p->ps);break; + case 7: + break; + } + printf("\n\n操作成功!\n\n"); + } + else + printf("******您还没有添加数据哟!\n"); + system("pause"); + system("cls"); +} +void save() +{ + FILE *fp; + struct student *p; + if((fp=fopen("C:\\data.txt","wb"))==NULL) + printf("Can not open the file!"); + p=head; + while(p!=NULL) + { + if(fwrite(p,Length,1,fp)!=1) + { + printf("写入数据出错\n"); + fclose(fp); + break; + } + p=p->next; + } + fclose(fp); + printf("存储完成\n"); + system("pause"); + system("cls"); +} +void read() +{ + FILE *fp; + if((fp=fopen("C:\\data.txt","rb+"))==NULL) + {printf("Can not open file!");exit(0);} + do + { + p1=malloc(Length); + if(n==0) //判断链表开头 + head=p1; //n=0代表输入的是第一个数据 //p2的结尾所指向的地址是p1 + else + p2->next=p1;; + fread(p1,Length,1,fp); + p2=p1; + n+=1; + }while(p2->next!=NULL); + fclose(fp); + printf("读取完成!\n\n"); + system("pause"); + system("cls"); +} +//主函数********************************************** +void main() +{ + int a=1; + while(a!=0) + { + system("cls"); + printf("〓〓〓〓〓〓〓〓〓 ☆ 学 生 成 绩 管 理 系 统 ☆ 〓〓〓〓〓〓〓〓〓〓\n"); + printf("〓〓〓〓〓〓〓〓〓★ ☆ 1.增加学生信息 ☆ ★〓〓〓〓〓〓〓〓〓\n"); + printf("〓〓〓〓〓〓〓〓〓★ ☆ 2.显示全部信息 ☆ ★〓〓〓〓〓〓〓〓〓\n"); + printf("〓〓〓〓〓〓〓〓〓★ ☆ 3.查找学生信息 ☆ ★〓〓〓〓〓〓〓〓〓\n"); + printf("〓〓〓〓〓〓〓〓〓★ ☆ 4.删除学生信息 ☆ ★〓〓〓〓〓〓〓〓〓\n"); + printf("〓〓〓〓〓〓〓〓〓★ ☆ 5.修改学生信息 ☆ ★〓〓〓〓〓〓〓〓〓\n"); + printf("〓〓〓〓〓〓〓〓〓★ ☆ 6.保存学生信息 ☆ ★〓〓〓〓〓〓〓〓〓\n"); + printf("〓〓〓〓〓〓〓〓〓★ ☆ 7.读取学生信息 ☆ ★〓〓〓〓〓〓〓〓〓\n"); + printf("〓〓〓〓〓〓〓〓〓★ ☆ 0. 退出系统 ☆ ★〓〓〓〓〓〓〓〓〓\n"); + printf("请选择:"); + scanf("%d",&a); + if(a>=0&&a<=9) + { + switch(a) + { + case 1: + add(); + break; + case 2: + print(); + break; + case 3: + find(); + break; + case 4: + Delete(); + break; + case 5: + amend(); + break; + case 6: + save(); + break; + case 7: + read(); + break; + + } + } + else + { + printf(" 您输入的不符合要求,将返回主菜单!\n"); + system("pause"); + } + } +} +void find1 () +{ + char a[20]; + printf("请输入要查找的姓名:"); + scanf("%s",&a); + p=head; + do + { + if(strcmp(a,p->name)==0) + { + printf("\n信息已被找到:\n姓名\t学号\t\t班级\t年龄\t性别\t\t备注\n"); + printf("%-8s%-16s%-8s%-8d%-16s%-8s\n\n",p->name,p->num,p->Class,p->age,p->sex,p->ps); + } + p=p->next; ////指针指向下一个节点 + }while(p!=NULL); + system("pause"); + system("cls"); + +} +void find2 () +{ + char a[20]; + printf("请输入要查找的学号:"); + scanf("%s",&a); + p=head; + do + { + //指针指向开头 + if(strcmp(a,p->num)==0) + { + printf("\n信息已被找到:\n姓名\t学号\t\t班级\t年龄\t性别\t\t备注\n"); + printf("%-8s%-16s%-8s%-8d%-16s%-8d\n\n",p->name,p->num,p->Class,p->age,p->sex,p->ps); + } + p=p->next; //指针指向下一个节点 + }while(p!=NULL); + system("pause"); + system("cls"); +} + +void find3 () +{ + char a[20]; + printf("请输入要查找的性别:"); + scanf("%s",&a); + p=head; + do + { + //指针指向开头 + if(strcmp(a,p->sex)==0) + { + printf("\n信息已被找到:\n姓名\t学号\t\t班级\t年龄\t性别\t\t备注\n"); + printf("%-8s%-16s%-8s%-8d%-16s%-8d\n\n",p->name,p->num,p->Class,p->age,p->sex,p->ps); + } + p=p->next; //指针指向下一个节点 + }while(p!=NULL); + system("pause"); + system("cls"); +} + +void find4 () +{ + char a[20]; + printf("请输入要查找的年龄:"); + scanf("%s",&a); + p=head; + do + { + //指针指向开头 + if(strcmp(a,p->age)==0) + { + printf("\n信息已被找到:\n姓名\t学号\t\t班级\t年龄\t性别\t\t备注\n"); + printf("%-8s%-16s%-8s%-8d%-16s%-8d\n\n",p->name,p->num,p->Class,p->age,p->sex,p->ps); + } + p=p->next; //指针指向下一个节点 + }while(p!=NULL); + system("pause"); + system("cls"); +} + diff --git a/Classmates_MSystem.exe b/Classmates_MSystem.exe new file mode 100644 index 0000000000000000000000000000000000000000..32f4832d7ab984bf288eecf8f024e0c04be850e9 GIT binary patch literal 34936 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