#include #include #include #include #include struct student { char id[12]; char name[20]; char sex[3]; int age; char note[100]; struct student *next; }; void setposition(int x,int y) { HANDLE win = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos = {x,y}; SetConsoleCursorPosition(win,pos); } void menu() { system("cls"); printf("\n\n\n\n\n"); printf("\t\t|-------------班级档案管理系统----------------|\n"); printf("\t\t|\t a.学生基本信息录入 |\n"); printf("\t\t|\t b.学生基本信息显示 |\n"); printf("\t\t|\t c.学生基本信息保存 |\n"); printf("\t\t|\t d.学生基本信息删除 |\n"); printf("\t\t|\t e.学生基本信息修改 |\n"); printf("\t\t|\t f.学生基本信息查询 |\n"); printf("\t\t|\t g.退出系统 |\n"); printf("\t\t|---------------------------------------------|\n"); } int iCount; struct student* Create() { struct student* phead=NULL; struct student *pEnd,*pNew; iCount=0; pNew=(struct student*)malloc(sizeof(struct student)); printf("\t\t\t######请输入学生基本信息######\n"); printf("\t\t\t学号:"); scanf("%s",pNew->id); printf("\t\t\t姓名;"); scanf("%s",pNew->name); printf("\t\t\t性别;"); scanf("%s",pNew->sex); printf("\t\t\t年龄;"); scanf("%d",&pNew->age); printf("\t\t\t备注:");scanf("%s",pNew->note); pNew->next=NULL; pEnd=pNew; phead=pNew; char key; printf("\t\t\t是否继续录入(y/任意):\n"); key = getch(); while(key=='y') { pNew=(struct student*)malloc(sizeof(struct student)); printf("\t\t\t#####请输入学生基本信息######\n"); printf("\t\t\t学号:"); scanf("%s",pNew->id); printf("\t\t\t姓名;"); scanf("%s",pNew->name); printf("\t\t\t性别;"); scanf("%s",pNew->sex); printf("\t\t\t年龄;"); scanf("%d",&pNew->age); printf("\t\t\t备注:");scanf("%s",pNew->note); pNew->next=NULL; pEnd->next=pNew; pEnd=pNew; printf("\t\t\t是否继续录入(y/任意):\n"); key = getch(); } struct student *pTemp; pTemp=phead; FILE *fp; if((fp=fopen("D:\\学生信息.txt","a"))!=NULL) { while(pTemp!=NULL) { fprintf(fp,"%s ",pTemp->id); fprintf(fp,"%s ",pTemp->name); fprintf(fp,"%s ",pTemp->sex); fprintf(fp,"%d ",pTemp->age); fprintf(fp,"%s ",pTemp->note); pTemp=pTemp->next; } } fclose(fp); } void Print() { printf("\t\t\t******学生基本信息*******\n"); FILE *fp; fp=fopen("D:\\学生信息.txt","r+"); char a[4][100]; int b; fscanf(fp,"%s%s%s%d%s",a[0],a[1],a[2],&b,a[3]); while(!feof(fp)) { printf("学号:%s\n",a[0]); printf("姓名;%s\n",a[1]); printf("性别;%s\n",a[2]); printf("年龄;%d\n",b); printf("备注:%s\n",a[3]); fscanf(fp,"%s%s%s%d%s",a[0],a[1],a[2],&b,a[3]); } fclose(fp); system("pause"); } void Save(struct student *phead) { struct student *pTemp; pTemp=phead; FILE *fp; if((fp=fopen("D:\\学生信息.txt","w"))!=NULL) { while(pTemp!=NULL) { fprintf(fp,"%s ",pTemp->id); fprintf(fp,"%s ",pTemp->name); fprintf(fp,"%s ",pTemp->sex); fprintf(fp,"%d ",pTemp->age); fprintf(fp,"%s ",pTemp->note); pTemp=pTemp->next; } fclose(fp); return; } else printf("文件打开失败"); } struct student* Delete() { char s[20]; int i=1; struct student *pTemp,*pre; FILE *fp; fp=fopen("D:\\学生信息.txt","r"); struct student *phead=NULL; struct student *pEnd,*pNew,*pNow; pNew=(struct student*)malloc(sizeof(struct student)); fscanf(fp,"%s",pNew->id); fscanf(fp,"%s",pNew->name); fscanf(fp,"%s",pNew->sex); fscanf(fp,"%d",&pNew->age); fscanf(fp,"%s",pNew->note); pNew->next=NULL; pEnd=pNew; phead=pNew; while(!feof(fp)) { pNew=(struct student*)malloc(sizeof(struct student)); fscanf(fp,"%s",pNew->id); fscanf(fp,"%s",pNew->name); fscanf(fp,"%s",pNew->sex); fscanf(fp,"%d",&pNew->age); fscanf(fp,"%s",pNew->note); pNew->next=NULL; pEnd->next=pNew; pEnd=pNew; } pNow = phead; while(pNow->next->next!=NULL) { pNow = pNow->next; } pNow->next=NULL; pre=pTemp=phead; printf("\t\t\t请输入学号:"); renew: scanf("%s",s); while(strcmp(pTemp->id,s)) { i++; pTemp=pTemp->next; if(pTemp==NULL) { printf("\t\t\t学号输入有误!!!"); printf("\t\t\t请重新输入:"); goto renew; } } if(i>1) { pre=pTemp=phead; int j; for(j=1;jnext; } pre->next=pTemp->next; free(pTemp); } else { pTemp=phead; phead=phead->next; free(pTemp); } fclose(fp); system("pause"); return phead; } void search() { struct student *pTemp; FILE *fp; fp=fopen("D:\\学生信息.txt","r"); struct student *phead=NULL; struct student *pEnd,*pNew,*pNow; pNew=(struct student*)malloc(sizeof(struct student)); fscanf(fp,"%s",pNew->id); fscanf(fp,"%s",pNew->name); fscanf(fp,"%s",pNew->sex); fscanf(fp,"%d",&pNew->age); fscanf(fp,"%s",pNew->note); pNew->next=NULL; pEnd=pNew; phead=pNew; while(!feof(fp)) { pNew=(struct student*)malloc(sizeof(struct student)); fscanf(fp,"%s",pNew->id); fscanf(fp,"%s",pNew->name); fscanf(fp,"%s",pNew->sex); fscanf(fp,"%d",&pNew->age); fscanf(fp,"%s",pNew->note); pNew->next=NULL; pEnd->next=pNew; pEnd=pNew; } pNow = phead; while(pNow->next->next!=NULL) { pNow = pNow->next; } pNow->next=NULL; fclose(fp); int x; char s[20]; printf("\t\t\t请选择查询方式\n1.学号查询\n2.姓名查询\n3.性别查询\n4.年龄查询\n"); RE: scanf("%d",&x); fflush(stdin); //清空缓冲区 pTemp=phead; int Y=0; switch(x) { case 1: printf("\t\t\t请输入学号:"); break; case 2: printf("\t\t\t请输入姓名:"); break; case 3: printf("\t\t\t请输入性别:"); break; case 4: printf("\t\t\t请输入年龄:"); scanf("%d",&Y); goto jump; break; default: printf("\t\t\t输入有误!\n\t\t\t请重新选择:"); goto RE; } scanf("%s",s); jump: while(pTemp!=NULL) { switch(x) { case 1: if(strcmp(s,pTemp->id)==0) { printf("学号:%s\n",pTemp->id); printf("姓名;%s\n",pTemp->name); printf("性别;%s\n",pTemp->sex); printf("年龄;%d\n",pTemp->age); printf("备注:%s\n",pTemp->note); } break; case 2: if(strcmp(s,pTemp->name)==0) { printf("学号:%s\n",pTemp->id); printf("姓名;%s\n",pTemp->name); printf("性别;%s\n",pTemp->sex); printf("年龄;%d\n",pTemp->age); printf("备注:%s\n",pTemp->note); } break; case 3: if(strcmp(s,pTemp->sex)==0) { printf("学号:%s\n",pTemp->id); printf("姓名;%s\n",pTemp->name); printf("性别;%s\n",pTemp->sex); printf("年龄;%d\n",pTemp->age); printf("备注:%s\n",pTemp->note); } case 4: if(Y==pTemp->age) { printf("学号:%s\n",pTemp->id); printf("姓名;%s\n",pTemp->name); printf("性别;%s\n",pTemp->sex); printf("年龄;%d\n",pTemp->age); printf("备注:%s\n",pTemp->note); } break; } pTemp=pTemp->next; } system("pause"); } struct student* Change() { struct student *pTemp; FILE *fp; fp=fopen("D:\\学生信息.txt","r"); struct student *phead=NULL; struct student *pEnd,*pNew,*pNow; pNew=(struct student*)malloc(sizeof(struct student)); fscanf(fp,"%s",pNew->id); fscanf(fp,"%s",pNew->name); fscanf(fp,"%s",pNew->sex); fscanf(fp,"%d",&pNew->age); fscanf(fp,"%s",pNew->note); pNew->next=NULL; pEnd=pNew; phead=pNew; while(!feof(fp)) { pNew=(struct student*)malloc(sizeof(struct student)); fscanf(fp,"%s",pNew->id); fscanf(fp,"%s",pNew->name); fscanf(fp,"%s",pNew->sex); fscanf(fp,"%d",&pNew->age); fscanf(fp,"%s",pNew->note); pNew->next=NULL; pEnd->next=pNew; pEnd=pNew; } pNow = phead; while(pNow->next->next!=NULL) { pNow = pNow->next; } pNow->next=NULL; pTemp=phead; char s[20]; printf("\t\t\t请输入要修改学生的学号:"); scanf("%s",s); while(pTemp!=NULL) { if(strcmp(s,pTemp->id)==0) { printf("\t\t\t学号:"); scanf("%s",pTemp->id); printf("\t\t\t姓名;"); scanf("%s",pTemp->name); printf("\t\t\t性别;"); scanf("%s",pTemp->sex); printf("\t\t\t年龄;"); scanf("%d",&pTemp->age); printf("\t\t\t备注:"); scanf("%s",pTemp->note); break; } pTemp=pTemp->next; } system("pause"); fclose(fp); return phead; } int main() { system("mode con cols=80 lines=30"); system("color F5"); char x=0; char m[7]; struct student *head; Re: setposition(40,14); printf("请输入密码: "); setposition(39,13); printf("*********************"); setposition(39,15); printf("*********************"); setposition(39,14); printf("*"); setposition(59,14); printf("*"); setposition(51,14); scanf("%s",m); if(strcmp(m,"aaaaaa")==0) { while(1) { if(x=='g') exit(0); switch(x) { case'a': Create(); break; case'b': Print(); break; case'c': Save(head); break; case'd': head=Delete(); break; case'e': head=Change(); break; case'f': search(); break; } menu(); printf("\t\t\t请选择你要执行的操作:"); scanf("%c",&x); } } else { printf("\t\t\t密码错误,请重试!!!\n"); goto Re; } return 0; }