#include#include #include #include #include #include //学生 struct student{ char stdID[10];//学号 char namee[10];//姓名 char sex[4];//性别 char classs[20];//班级 char cryptogram[17];//密码 char data[8];//入学时间 char college[30];//学院 }; struct Student{ char stdID[10]; char namee[10]; char sex[4]; char classs[20]; char cryptogram[17]; char data[10]; char college[30]; struct Student * next; }; //记录成绩 struct CoursesStd{ char name[20]; char stdID[10]; int sorce; struct CoursesStd* next; }; //教师 struct teacher{ char name[10]; char ID[9]; char cryptogram[17]; }; struct Teacher{ char name[10]; char ID[9]; char cryptogram[17]; struct teacher *next; }; int Begin(); int intendentShow(); int teacherShow(); int studentshow(); void AddTeacher(); void AddStudent(); void CreateTheCollege(); void SetupCourses(); void tchangeStd(const char* stdID);//教师删除该学号学生信息 void changeCry(const char* stdID);//学生修改该学号学生信息 void ChooseCourses();//学生选课 void entersorce();//录入学生成绩 void ChecksorceT();//教师查询成绩 void ChecksorceS();//学生查询成绩 void checkourself();//查看自己信息 void changesorceT();//教师修改成绩/ void changecollege();//修改学院/// ///怎么限制选课学院????? //学生修改自己的信息。。可直接复制粘贴 struct Teacher* extractionT(const char *name);//将文件中的老师信息存取到链表中 struct Student* extractionS(const char *name);//将文件中的学生信息存取到链表中 struct CoursesStd* extractionC(const char* name);//将文件中的学生课程信息存取到链表中 void releaseT(struct Teacher *head);//释放动态分配的内存 void releaseS(struct Student *head);//释放动态分配的内存 void releaseC(struct CoursesStd *head);//释放动态分配的内存 int filequantity(const char *name);//获取文件夹下文件的个数 int peoplequality(const char *name);//获取文件中存储的人数 char* ChooseCollege();//选择学院 char* ChooseCourse();//选择课程 void writeS(const char*name,struct Student* add);//将学生信息写入文件 void writes(const char*name,struct CoursesStd* add);//将链表中的学生成绩信息写入到新的文件中 int cmp(const void* a,const void*b); int main() { system("cls"); int answer=Begin(); if(answer==1){ int count=0; int num=1; while(num){ count++; if(count==1){ num=intendentShow(); }else{ system("cls"); printf("****************************************************n"); printf("========================菜单========================n"); printf("* 1.创建学院 *n"); printf("* 2.教师信息录入 *n"); printf("* 3.退出系统 *n"); printf("* *n"); printf("****************************************************n"); printf("请选择你的操作:"); scanf("%d",&num); while(1){ if(num>3||num<1){ printf("输入错误,请重新输入有效数字!"); }else{ break; } } } switch(num){ case -1:num=0;break; case 1:CreateTheCollege();break; case 2:AddTeacher();break; case 3:num=0;break; } } }else if(answer==2){ int jishu=0; int num=1; while(num){ jishu++; int count=1; if(jishu==1){ num=teacherShow(); }else{ int i=0; printf("输入1继续"); scanf("%d",&i); if(i==1){ system("cls"); printf("****************************************************n"); printf("========================菜单========================n"); printf("* *n"); printf("* 1.录入学生信息 *n"); printf("* 2.删除学生信息 *n"); printf("* 3.开设课程 *n"); printf("* 4.录入成绩 *n"); printf("* 5.查询成绩 *n"); printf("* 6.退出系统 *n"); printf("* *n"); printf("****************************************************n"); printf("请选择你的操作:"); scanf("%d",&num); while(1){ if(num>6||num<1){ printf("输入错误,请重新输入有效数字!"); }else{ break; } } }else{ num=0; } } switch(num){ case -1:{ num=0; break; } case 1:AddStudent();break; case 2:{ printf("请输入要删除学生的学号:"); char ID[10]; scanf("%s",ID); ID[8]=' '; tchangeStd(ID); break; } case 3:SetupCourses();break; case 4:entersorce();break; case 5:ChecksorceT();break; case 6:num=0;break; } } }else if(answer==3){ int num=1; int count=0; while(num){ count++; if(count==1){ num=studentshow(); }else{ int i=0; printf("输入1继续"); scanf("%d",&i); if(i==1){ system("cls"); printf("****************************************************n"); printf("========================菜单========================n"); printf("* *n"); printf("* 1.查看个人信息 *n"); printf("* 2.选课 *n"); printf("* 3.修改密码 *n"); printf("* 4.查询成绩 *n"); printf("* 5.退出系统 *n"); printf("* *n"); printf("****************************************************n"); printf("请选择你的操作:"); scanf("%d",&num); while(1){ if(num>5||num<1){ printf("输入错误,请重新输入有效数字!"); }else{ break; } } }else{ num=0; } } switch(num){ case -1:{ num=0; break; } case 1:checkourself();break; case 2:ChooseCourses();break; case 3:{ printf("请输入学号:"); char ID[10]; scanf("%s",ID); ID[8]=' '; changeCry(ID); break; } case 4:ChecksorceS();break; case 5:num=0;break; } } } //ChooseCourses(); //checkourself(); return 0; } int Begin() { int num; system("cls"); printf("************************************************************************n"); printf("*======================================================================*n"); printf("* *n"); printf("* 西安邮电大学学籍管理系统 *n"); printf("* *n"); printf("*======================================================================*n"); printf("* *n"); printf("* *n"); printf("* 1.我是管理员 *n"); printf("* 2.我是教师 *n"); printf("* 3.我是学生 *n"); printf("* *n"); printf("* *n"); printf("************************************************************************n"); printf(" 请根据以上序号选择您的信息:"); scanf("%d",&num); while(1){ if(num>3&&num<1){ printf("输入错误,请重新输入有效数字!"); }else{ break; } } return num; } int intendentShow()//管理员登陆(唯一)账号4211100 密码165417 { int num,answer=1,count=0; system("cls"); char myid="4211100"; char cryptogram="165417"; char inid[10]; char incryptogram[16]; while(1){ system("cls"); if(count==3){ return -1; } printf("请输入您的账号:"); if(count>0){ printf("(输入错误,你还有%d次机会)",3-count); } count++; scanf("%s",inid); inid[7]=' '; answer=strcmp("4211100",inid); if(answer==0){ break; } } count=0; while(1){ system("cls"); if(count==3){ return -1; } printf("请输入您的密码:"); if(count>0){ printf("(输入错误,你还有%d次机会)",3-count); } count++; scanf("%s",incryptogram); answer=strcmp("165417",incryptogram); if(answer==0){ break; } } system("cls"); printf("登陆成功!nn"); printf("****************************************************n"); printf("========================菜单========================n"); printf("* 1.创建学院 *n"); printf("* 2.教师信息录入 *n"); printf("* 3.退出系统 *n"); printf("* *n"); printf("****************************************************n"); printf("请选择你的操作:"); scanf("%d",&num); while(1){ if(num>3||num<1){ printf("输入错误,请重新输入有效数字!"); }else{ break; } } return num; } int teacherShow() { int ret; struct teacher in; int answer,count=3; struct Teacher *head,*p; head=extractionT("Teacher.txt");/ p=head; while(count){ system("cls"); if(count!=3){ printf("该账号不存在!请重新输入n"); head=extractionT("Teacher.txt"); printf("你还有%d次机会。",count); } printf("请输入您的账号:"); scanf("%s",in.ID); while(head){ answer=strcmp(in.ID,head->ID); if(answer==0){ break; } head=head->next; } if(answer==0){ break; } if(head==NULL){ count--; } if(count==0){ return -1; } } count=3; while(count){ if(count!=3){ printf("密码不正确!请重新输入n"); printf("你还有%d次机会。",count); } printf("请输入密码:"); scanf("%s",in.cryptogram); answer=strcmp(in.cryptogram,head->cryptogram); if(answer!=0){ printf("密码错误!"); count--; }else{ break; } if(count==0){ return -1; } } releaseT(p);/ system("cls"); printf("登陆成功!nn"); printf("****************************************************n"); printf("========================菜单========================n"); printf("* *n"); printf("* 1.录入学生信息 *n"); printf("* 2.删除学生信息 *n"); printf("* 3.开设课程 *n"); printf("* 4.录入成绩 *n"); printf("* 5.查询成绩 *n"); printf("* 6.退出系统 *n"); printf("* *n"); printf("****************************************************n"); printf("请选择你的操作:"); scanf("%d",&ret); while(1){ if(ret>6||ret<1){ printf("输入错误,请重新输入有效数字!"); }else{ break; } } return ret; } int studentshow() { system("cls"); //获取学生信息所在的文件位置 printf("请选择你所在的学院:n"); char* name=ChooseCollege();/ char file[100];//记录文件详细位置 sprintf(file,"%s\%s","C:\Users\hhy\Desktop\学籍管理系统\学生信息",name); //登陆 int ret,count=3; int answer; struct student in; struct Student *head,*p,*q; while(count){ if(count!=3){ printf("请重新输入学号!"); printf("你还有%d次机会",count); } printf("请输入学号:"); scanf("%s",in.stdID); head=extractionS(file); p=head; while(head){ answer=strcmp(in.stdID,head->stdID); if(answer==0){ break; } head=head->next; } if(answer==0){ break; } if(head==NULL){ printf("该账号不存在!"); count--; } } count=3; while(count){ if(count!=3){ printf("请重新输入密码!"); printf("你还有%d次机会",count); } printf("请输入密码:"); scanf("%s",in.cryptogram); answer=strcmp(in.cryptogram,head->cryptogram); if(answer==0){ break; } //printf("%d",answer); if(answer!=0){ printf("密码错误!"); count--; } } releaseS(p); system("cls"); printf("登陆成功!nn"); printf("****************************************************n"); printf("========================菜单========================n"); printf("* *n"); printf("* 1.查看个人信息 *n"); printf("* 2.选课 *n"); printf("* 3.修改密码 *n"); printf("* 4.查询成绩 *n"); printf("* 5.退出系统 *n"); printf("* *n"); printf("****************************************************n"); printf("请选择你的操作:"); scanf("%d",&ret); while(1){ if(ret>5||ret<1){ printf("输入错误,请重新输入有效数字!"); }else{ break; } } return ret; } void AddTeacher() { FILE * fp; int caozuo=1; fp = fopen("Teacher.txt","a"); struct teacher add; while(caozuo==1){ printf("请输入教师的姓名:"); scanf("%s",add.name); fprintf(fp,"n%st",add.name); printf("请输入教师ID:"); scanf("%s",add.ID); fprintf(fp,"%st",add.ID); printf("请输入密码:"); scanf("%s",add.cryptogram); fprintf(fp,"%s",add.cryptogram); printf("是否要继续添加教师? 是请输入1,否则请输入0:"); scanf("%d",&caozuo); } //刷新缓冲区,将缓冲区的内容写入文件 fflush(fp); //重置文件内部位置指针,让位置指针指向文件开头 rewind(fp); fclose(fp); printf("n当前所有老师信息为:n"); //输出文件第一行 char title[100]; fp=fopen("Teacher.txt","r"); fgets(title,100,fp); printf("%s",title); fclose(fp); struct Teacher * head,*p; head=extractionT("Teacher.txt"); p=head; while(p){ printf("%st%st%sn",p->name,p->ID,p->cryptogram); p=p->next; } releaseT(head); } void CreateTheCollege()//创建学院 { char name[100]; printf("请输入要添加学院名称:"); scanf("%s",name); FILE * fp; char*str=name; char file[100]; sprintf(file,"%s/%s.txt","学生信息",str); fp=fopen(file,"w"); fprintf(fp,"姓名 学号 班级 性别 入学时间 学院 密码"); if(fp==NULL){ printf("创建学院错误。"); }else{ printf("创建成功。"); } fclose (fp); } void SetupCourses()//开设课程 { char name[100]; printf("请输入要添加课程名称:"); scanf("%s",name); FILE * fp; char*str=name; char file[100]; sprintf(file,"%s/%s.txt","课程明细",str); fp=fopen(file,"w"); fprintf(fp,"姓名 学号 成绩"); if(fp==NULL){ printf("开设课程错误。n"); }else{ printf("开设课程成功。n"); } fclose (fp); //限制可选学院(暂时没有) //int caozuo=1; //while(caozuo==1){ // printf("请输入可学习该课程的学院:n"); // // char* college=ChooseCollege();//获取可学习该课程学院 // FILE * fp; // fp=fopen(file,"a"); // fprintf(fp,"%st",college); // fclose (fp); // printf("是否添加可选该课程的学院:是请输入1否则输入0:"); // scanf("%d",&caozuo); //} } void AddStudent() { printf("请选择学生所在学院:n"); char *name=ChooseCollege();/用函数获取学院 int length=strlen(name); char arr[length+1]; for(int i=0;i


