本系统包括以下功能:1、学生信息的整体注册2、学生信息的修改3、学生成绩信息的录入4、学生信息的添加5、恢复误删的学生信息6、学生信息的删除7、密码修改保存函数8、学生信息的查询9、密码修改函数10、学生信息管理系统的菜单函数 #include "stdio.h" #include "malloc.h" #include "string.h" #include "stdlib.h" #include "conio.h" #define M 3 struct student { char num[10]; /* 学生的学号 */ char name[20]; /* 学生的姓名 */ char sex[5]; /* 学生的性别 */ int age; /* 学生的年龄 */ char birth[20]; /* 学生的出生年月 */ long tele; /* 学生的电话号码 */ char addr[30]; /* 学生的地址 */ char party[10]; /* 学生是否为党员 */ float score[M]; /* 学生各门学科成绩 */ float total; /* 学生的学科成绩总分 */ struct student *next; }stud[100]; struct secret { char user[30]; char code[30]; }use[100]; int len; //学生人数 / /*学生信息写入到文件中-----系统函数*/ / void writetxt(struct student *head) { struct student *p; p=head; FILE *fp; fp=fopen("d://student.txt","wb"); if(fp==NULL) { printf("cannot open"); return ; } while(p!=NULL) { fwrite(p,sizeof(struct student),1,fp); p=p->next; } fclose(fp); } / /* 学生信息的整体注册*/ / struct student *create( ) { char ch; char ok; int i; struct student *p,*p1,*head,*p2; FILE *fp; fp=fopen("d://student.txt","rb"); if(fp==NULL) { printf("/n 文件还不存在,是否创建?(Y/N)/n"); ch=getchar(); len=1; scanf("%c",&ok); if(ok=='Y'||ok=='y') { p1=p2=(struct student *) malloc(sizeof(struct student)); if((len)<10) printf("请输入0%d的学号:",len); else printf("请输入%d的学号:",len); scanf("%s",p1->num); if((len)<10) printf("请输入0%d的姓名:",len); else printf("请输入%d的姓名:",len); scanf("%s",p1->name); if((len)<10) printf("请输入0%d的性别:",len); else printf("请输入%d的性别:",len); scanf("%s",p1->sex); ch=getchar(); if((len)<10) printf("请输入0%d的年龄:",len); else printf("请输入%d的年龄:",len); scanf("%d",&p1->age); if((len)<10) printf("请输入0%d的生日:",len); else printf("请输入%d的生日:",len); scanf("%s",p1->birth); if((len)<10) printf("请输入0%d的电话:",len); else printf("请输入%d的电话号:",len); scanf("%ld",&p1->tele); if((len)<10) printf("请输入0%d的地址:",len); else printf("请输入%d的地址:",len); scanf("%s",p1->addr); if((len)<10) printf("请输入0%d是否为党员:",len); else printf("请输入%d是否为党员:",len); scanf("%s",p1->party); head=NULL; while(strcmp(p1->num,"0")!=0) { len++; if(head==NULL) head=p1=p2; else p2->next=p1; p2=p1; p1=(struct student *) malloc(sizeof(struct student)); if((len)<10) printf("请输入0%d的学号:",len); else printf("请输入%d的学号:",len); scanf("%s",p1->num); if((len)<10) printf("请输入0%d的姓名:",len); else printf("请输入%d的姓名:",len); scanf("%s",p1->name); if((len)<10) printf("请输入0%d的性别:",len); else printf("请输入%d的性别:",len); scanf("%s",p1->sex); ch=getchar(); if((len)<10) printf("请输入0%d的年龄:",len); else printf("请输入%d的年龄:",len); scanf("%d",&p1->age); if((len)<10) printf("请输入0%d的生日:",len); else printf("请输入%d的生日:",len); scanf("%s",p1->birth); if((len)<10) printf("请输入0%d的电话:",len); else printf("请输入%d的电话号:",len); scanf("%ld",&p1->tele); if((len)<10) printf("请输入0%d的地址:",len); else printf("请输入%d的地址:",len); scanf("%s",p1->addr); if((len)<10) printf("请输入0%d是否为党员:",len); else printf("请输入%d是否为党员:",len); scanf("%s",p1->party); } p2->next=NULL; writetxt(head); return (head); } } if(ok=='N'||ok=='n') { printf("请重新选择/n"); return NULL; } else { printf("/n 文件已经存在/n"); fp=fopen("d://student.txt","rb"); p=stud; for(i=0;!feof(fp);i++) fread(stud+i,sizeof(struct student),1,fp); len=i-1; printf(" 文件里含有%d条学生信息/n",len); printf("/n 是否使用已经存在的学生数据?(Y/N)/n"); ch=getchar(); scanf("%c",&ok); if(ok=='Y'||ok=='y') { head=p1=p2=NULL; fp=fopen("d://student.txt","rb"); if(fp==NULL) { printf("open error/n"); return NULL; } else { printf("学号 姓名 性别 年龄 出生年月 电话号码 地址 是否党员/n"); for(i=0;i<len;i++) { p1=(struct student *)malloc(sizeof(struct student)); fread(p1,sizeof(struct student),1,fp); if(head==NULL) head=p2=p1; else p2->next=p1; p2=p1; printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p1->num,p1->name,p1->sex,p1->age,p1->birth,p1->tele,p1->addr,p1->party); } fclose(fp); return(head); } } if(ok=='N'||ok=='n') { len=1; p1=p2=( struct student *) malloc(sizeof(struct student )); if((len)<10) printf("请输入0%d的学号:",len); else printf("请输入%d的学号:",len); scanf("%s",p1->num); if((len)<10) printf("请输入0%d的姓名:",len); else printf("请输入%d的姓名:",len); scanf("%s",p1->name); if((len)<10) printf("请输入0%d的性别:",len); else printf("请输入%d的性别:",len); scanf("%s",p1->sex); ch=getchar(); if((len)<10) printf("请输入0%d的年龄:",len); else printf("请输入%d的年龄:",len); scanf("%d",&p1->age); if((len)<10) printf("请输入0%d的生日:",len); else printf("请输入%d的生日:",len); scanf("%s",p1->birth); if((len)<10) printf("请输入0%d的电话:",len); else printf("请输入%d的电话号:",len); scanf("%ld",&p1->tele); if((len)<10) printf("请输入0%d的地址:",len); else printf("请输入%d的地址:",len); scanf("%s",p1->addr); if((len)<10) printf("请输入0%d是否为党员:",len); else printf("请输入%d是否为党员:",len); scanf("%s",p1->party); head=NULL; while(strcmp(p1->num,"0")!=0) { if(head==NULL) head=p1=p2; else p2->next=p1; p2=p1; p1=(struct student *) malloc(sizeof(struct student)); if((len)<10) printf("请输入0%d的学号:",len); else printf("请输入%d的学号:",len); scanf("%s",p1->num); if((len)<10) printf("请输