#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<direct.h>
#include<dirent.h>
#include<io.h>
//学生
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]='\0';
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]='\0';
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]='\0';
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("登陆成功!\n\n");
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("登陆成功!\n\n");
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("登陆成功!\n\n");
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%s\t",add.name);
printf("请输入教师ID:");
scanf("%s",add.ID);
fprintf(fp,"%s\t",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("%s\t%s\t%s\n",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,"%s\t",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<length;i++){
arr[i]=name[i];
}
arr[length]='\0';
char file[100];
sprintf(file,"%s/%s","C:\\Users\\hhy\\Desktop\\学籍管理系统\\学生信息",name);
FILE * fp;
int caozuo=1;
fp = fopen(file,"a");
struct student add;
while(caozuo==1){
printf("请输入添加学生姓名:");
scanf("%s",add.namee);
fprintf(fp,"\n%s\t",add.namee);
printf("请输入添加学生ID:");
scanf("%s",add.stdID);
fprintf(fp,"%s\t",add.stdID);
printf("请输入学生班级:");
scanf("%s",add.classs);
fprintf(fp,"%s\t",add.classs);
printf("请输入学生性别:");
scanf("%s",add.sex);
fprintf(fp,"%s\t",add.sex);
printf("请输入学生入学时间:");
scanf("%s",add.data);
fprintf(fp,"%s\t",add.data);
fprintf(fp,"%s\t",arr);
int length=strlen(add.stdID);
for(int i=0;i<length;i++){
add.cryptogram[i]=add.stdID[i];
}
add.cryptogram[length+1]='\0';
fprintf(fp,"%s\t",add.cryptogram);
printf("是否需要继续添加\?是请输入1否则输入0:");
scanf("%d",&caozuo);
}
fclose(fp);
}
void tchangeStd(const char* stdID)//删除该学号学生信息
{
printf("请选择你所在的学院:\n");
char* name=ChooseCollege();
char file[100];//记录文件详细位置
sprintf(file,"%s\\%s","C:\\Users\\hhy\\Desktop\\学籍管理系统\\学生信息",name);
struct Student*p,*ret,*head=extractionS(file);
ret=head;
p=head;
if(strcmp(stdID,head->stdID)==0){
p=head->next;
free(head);
}
head=head->next;
while(head){
if(strcmp(stdID,head->stdID)==0){
ret->next=head->next;
free(head);
break;
}
head=head->next;
ret=ret->next;
}
writeS(file,p);//将学生信息重新写入文件
releaseS(p);//释放内存
}
void changeCry(const char* stdID)//学生修改密码
{
printf("请选择你所在的学院:\n");
char* name=ChooseCollege();
char file[100];//记录文件详细位置
sprintf(file,"%s\\%s","C:\\Users\\hhy\\Desktop\\学籍管理系统\\学生信息",name);
struct Student*ret,*head=extractionS(file);
ret=head;
while(head){
if(strcmp(stdID,head->stdID)==0){
break;
}
head=head->next;
}
//char*temp=head->data;
char incry[17];
for(int i=0;i<17;i++){
incry[i]='\0';
}
printf("请输入原密码:");
scanf("%s",incry);
if(strcmp(incry,head->cryptogram)==0){
printf("请输入新密码:");
//for(int i=0;i<17;i++){
// head->cryptogram[i]='\0';
//}
scanf("%s",head->cryptogram);
printf("修改密码成功!");
}else{
printf("原密码错误!");
return;
}
//for(int i=0;i<7;i++){
// head->data[i]=temp[i];
//}
writeS(file,ret);
releaseS(ret);
}
void entersorce()//录入成绩
{
printf("请选择需要录入成绩的课程:\n");
char* name=ChooseCourse();
char file[100];
sprintf(file,"%s/%s","C:\\Users\\hhy\\Desktop\\学籍管理系统\\课程明细",name);
struct CoursesStd*p,*head=extractionC(file);
p=head;
printf("请依次输入学生的成绩:\n");
while(head->next){
printf("%s\t%s\t",head->name,head->stdID);
printf("请输入该学生成绩:");
scanf("%d",&head->sorce);
head=head->next;
}
writes(file,p);
releaseC(p);
}
void ChecksorceT()//教师查询成绩,按排名
{
printf("请选择需要查询成绩的课程:");
printf("\n");
char* name=ChooseCourse();
char file[100];
sprintf(file,"%s/%s","C:\\Users\\hhy\\Desktop\\学籍管理系统\\课程明细",name);
int sum=peoplequality(file)+1;
struct CoursesStd arr[sum];
FILE * fp;
fp=fopen(file,"r");
char title[100];
if((fp=fopen(file,"r"))==NULL){
printf("打开文件失败!");
exit(1);
}
fgets(title,100,fp);
int i=0;
while(!feof(fp)){
fscanf(fp,"%s%s%d",arr[i].name,arr[i].stdID,&arr[i].sorce);
i++;
}
fclose(fp);
//排序
qsort(arr,sum,sizeof(struct CoursesStd),cmp);
printf("成绩排名由高到底依次为:\n");
printf(" %s",title);
for(int j=0;j<sum;j++){
printf("第%d名:",j+1);
printf("%s\t%s\t%d\n",arr[j].name,arr[j].stdID,arr[j].sorce);
}
}
void ChecksorceS()//学生查询成绩
{
printf("请选择查询成绩的课程:\n");
char *name=ChooseCourse();
char file[100];//记录文件详细位置
sprintf(file,"%s\\%s","C:\\Users\\hhy\\Desktop\\学籍管理系统\\课程明细",name);
int sum=peoplequality(file)+1;
struct CoursesStd arr[sum];
FILE * fp;
fp=fopen(file,"r");
char title[100];
if((fp=fopen(file,"r"))==NULL){
printf("打开文件失败!");
exit(1);
}
fgets(title,100,fp);
int i=0;
while(!feof(fp)){
fscanf(fp,"%s%s%d",arr[i].name,arr[i].stdID,&arr[i].sorce);
i++;
}
fclose(fp);
printf("请输入学号:");
char in[10];
int count=0;
scanf("%s",in);
for(int j=0;j<sum;j++){
if(strcmp(in,arr[j].stdID)==0){
count++;
printf("%s",title);
printf("%s\t%s\t%d",arr[j].name,arr[j].stdID,arr[j].sorce);
break;
}
}
if(count==0){
printf("你没有学习该课程,成绩不存在!");
}
}
void checkourself()//输出学生个人信息
{
printf("请选择你所在的学院:\n");
char* name=ChooseCollege();
char file[100];//记录文件详细位置
sprintf(file,"%s\\%s","C:\\Users\\hhy\\Desktop\\学籍管理系统\\学生信息",name);
printf("请输入学号:");
char stdID[10];
stdID[8]='\0';
scanf("%s",stdID);
struct Student*ret,*head=extractionS(file);
ret=head;
while(head){
if(strcmp(stdID,head->stdID)==0){
printf("成功");
break;
}
head=head->next;
}
printf("你的详细信息如下:\n");
printf("姓名:%s\n学号:%s\n班级:%s\n性别:%s\n入学时间:%s\n所在学院:",head->namee,head->stdID,head->classs,head->sex,head->data);
int length=strlen(head->college);
for(int i=0;i<length-4;i++){
printf("%c",head->college[i]);
}
}
void ChooseCourses()//学生选课 传入学生的学号和姓名
{
printf("请输入学号:");
char ID[10];
scanf("%s",ID);
ID[10]='\0';
char nameee[12];
printf("请输入姓名:");
scanf("%s",nameee);
char*stdID=ID;
char*namee=nameee;
int caozuo=1;
while(caozuo){
printf("请选择你要选择的课程:\n");
char *name=ChooseCourse();
printf("%s",name);
int length=strlen(name);
char arr[length+1];
for(int i=0;i<length;i++){
arr[i]=name[i];
}
arr[length]='\0';
char file[100];
sprintf(file,"%s/%s","C:\\Users\\hhy\\Desktop\\学籍管理系统\\课程明细",name);
FILE * fp;
fp = fopen(file,"a");
struct CoursesStd add;
fprintf(fp,"\n%s\t",namee);
fprintf(fp,"%s\t",stdID);
printf("是否需要继续选\?是请输入1否则输入0:");
scanf("%d",&caozuo);
}
}
int filequantity(const char *name)//获取文件夹下文件的个数
{
int sum=0;
const char *path = "学生信息\\*.txt"; // 输出这个目录下所有csv文件名
long handle; //用于查找的句柄
struct _finddata_t fileinfo; // io.h
handle = _findfirst(path, &fileinfo); // 第一次查找
if(handle == -1){
//printf("%d.%s\n",sum,fileinfo.name);
return -1;
}else{
sum++;
}
while(!_findnext(handle, &fileinfo)){ //循环查找其他符合的文件,直到找不到其他的为止
//printf("%d.%s\n",sum,fileinfo.name);
sum++;
}
_findclose(handle);
return sum;
}
int peoplequality(const char *name)//获取文件中学生的数量
{
int ret=0;
FILE * fp;
char ch;
fp = fopen(name, "r");
if(fp == NULL)
{
printf("fopen failed!\n");
return -1;
}
while((ch=fgetc(fp))!=EOF)
{
if(ch=='\n'){
ret++;
}
}
fclose (fp);
return ret-1;
}
void releaseT(struct Teacher *head)
{
struct Teacher *p;
while(head){
p=head->next;
free(head);
head=p;
}
}
void releaseS(struct Student *head)
{
struct Student *q;
while(head){
q=head->next;
free(head);
head=q;
}
}
void releaseC(struct CoursesStd *head)
{
struct CoursesStd *q;
while(head){
q=head->next;
free(head);
head=q;
}
}
struct Teacher* extractionT(const char *name)//将文件中的老师信息存取到链表中
{
FILE * fp;
char title[200];
struct Teacher *head,*p,*q;
p=(struct Teacher*)malloc(sizeof(struct Teacher));
if((fp=fopen(name,"r"))==NULL){
printf("打开文件失败!");
exit(1);
}
fgets(title,100,fp);
head=p;
fscanf(fp,"%s%s%s",p->name,p->ID,p->cryptogram);
p->next=NULL;
while(!feof(fp)){
q=(struct Teacher*)malloc(sizeof(struct Teacher));
fscanf(fp,"%s%s%s",q->name,q->ID,q->cryptogram);
p->next=q;
q->next=NULL;
p=q;
}
fclose(fp);
return head;
}
struct Student* extractionS(const char *name)//将文件中的学生信息存取到链表中
{
FILE * fp;
char title[200];
struct Student *head,*p,*q;
p=(struct Student*)malloc(sizeof(struct Student));
if((fp=fopen(name,"r"))==NULL){
printf("打开文件失败!");
exit(1);
}
fgets(title,100,fp);
//printf("%s",title);
head=p;
fscanf(fp,"%s%s%s",p->namee,p->stdID,p->classs);
fscanf(fp,"%s%s%s%s",p->sex,p->data,p->college,p->cryptogram);
p->next=NULL;
while(!feof(fp)){
q=(struct Student*)malloc(sizeof(struct Student));
fscanf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s",q->namee,q->stdID,q->classs,q->sex,q->data,q->college,q->cryptogram);
p->next=q;
q->next=NULL;
p=q;
}
fclose(fp);
return head;
}
struct CoursesStd* extractionC(const char* name)//将文件中的学生课程信息存取到链表中
{
FILE * fp;
char title[200];
struct CoursesStd *head,*p,*q;
p=(struct CoursesStd*)malloc(sizeof(struct CoursesStd));
if((fp=fopen(name,"r"))==NULL){
printf("打开文件失败!");
exit(1);
}
fgets(title,100,fp);
//printf("%s",title);
head=p;
fscanf(fp,"%s%s",p->name,p->stdID);
p->next=NULL;
while(!feof(fp)){
q=(struct CoursesStd*)malloc(sizeof(struct CoursesStd));
fscanf(fp,"%s%s",q->name,q->stdID);
p->next=q;
q->next=NULL;
p=q;
}
fclose(fp);
return head;
}
char * ChooseCollege()//获取学院
{
int answer,length,sum=filequantity("C:\\Users\\hhy\\Desktop\\学籍管理系统\\学生信息");
char College[sum][30];
sum=0;
const char *path = "C:\\Users\\hhy\\Desktop\\学籍管理系统\\学生信息\\*.txt"; // 输出这个目录下所有csv文件名
long handle; //用于查找的句柄
struct _finddata_t fileinfo; // io.h
handle = _findfirst(path, &fileinfo); // 第一次查找
if(handle == -1){
return;
}else{
sum++;
printf("%d.%s\n",sum,fileinfo.name);
length=strlen(fileinfo.name);
for(int i=0;i<length;i++){
College[sum-1][i]=fileinfo.name[i];
}
College[sum-1][length]='\0';
}
while(!_findnext(handle, &fileinfo)){ //循环查找其他符合的文件,直到找不到其他的为止
sum++;
printf("%d.%s\n",sum,fileinfo.name);
length=strlen(fileinfo.name);
for(int i=0;i<length;i++){
College[sum-1][i]=fileinfo.name[i];
}
College[sum-1][length]='\0';
}
_findclose(handle);
scanf("%d",&answer);
for(length=0;College[answer-1][length]!='\0';length++){
}
char namee[length+1];
for(int i=0;i<length;i++){
namee[i]=College[answer-1][i];
}
namee[length]='\0';
char *ret=namee;
return ret;
}
char * ChooseCourse()//选择课程
{
int answer,length,sum=filequantity("C:\\Users\\hhy\\Desktop\\学籍管理系统\\课程明细");
char College[sum][30];
sum=0;
const char *path = "C:\\Users\\hhy\\Desktop\\学籍管理系统\\课程明细\\*.txt"; // 输出这个目录下所有csv文件名
long handle; //用于查找的句柄
struct _finddata_t fileinfo; // io.h
handle = _findfirst(path, &fileinfo); // 第一次查找
if(handle == -1){
return;
}else{
sum++;
printf("%d.%s\n",sum,fileinfo.name);
length=strlen(fileinfo.name);
for(int i=0;i<length;i++){
College[sum-1][i]=fileinfo.name[i];
}
College[sum-1][length]='\0';
}
while(!_findnext(handle, &fileinfo)){ //循环查找其他符合的文件,直到找不到其他的为止
sum++;
printf("%d.%s\n",sum,fileinfo.name);
length=strlen(fileinfo.name);
for(int i=0;i<length;i++){
College[sum-1][i]=fileinfo.name[i];
}
College[sum-1][length]='\0';
}
_findclose(handle);
scanf("%d",&answer);
for(length=0;College[answer-1][length]!='\0';length++){
}
char namee[length+1];
for(int i=0;i<length;i++){
namee[i]=College[answer-1][i];
}
namee[length]='\0';
char *ret=namee;
return ret;
}
void writeS(const char*name,struct Student* add)//将链表中的学生信息写入到新的文件中
{
FILE * fp;
fp=fopen(name,"w");
struct Student * head=add;
fprintf(fp,"姓名 学号 班级 性别 入学时间 学院 密码");
while(head->next){
fprintf(fp,"\n%s\t%s\t%s\t",head->namee,head->stdID,head->classs);
fprintf(fp,"%s\t%s\t",head->sex,head->data);
fprintf(fp,"%s\t",head->college);
fprintf(fp,"%s\t",head->cryptogram);
head=head->next;
}
fclose(fp);
}
void writes(const char*name,struct CoursesStd* add)
{
FILE * fp;
fp=fopen(name,"w");
struct CoursesStd * head=add;
fprintf(fp,"姓名 学号 成绩");
while(head->next){
fprintf(fp,"\n%s\t%s\t%d\t",head->name,head->stdID,head->sorce);
head=head->next;
}
fclose(fp);
}
int cmp(const void* a,const void*b){
int c,d;
c=((struct CoursesStd *)a)->sorce;
d=((struct CoursesStd *)b)->sorce;
return d-c;
}
void changesorceT()
{
}
void changecollege()
{
}
学籍管理系统
最新推荐文章于 2024-07-15 13:32:43 发布