13187261606 6 years ago
commit 97c9adba4c

@ -0,0 +1,459 @@
#include<stdio.h>
#include<string.h>
#include<process.h>
#include<stdlib.h>
#include<windows.h>
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/任意):");
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("请输入学号:");
renew: scanf("%s",s);
while(strcmp(pTemp->id,s))
{
i++;
pTemp=pTemp->next;
if(pTemp==NULL)
{
printf("学号输入有误!!!");
printf("请重新输入:");
goto renew;
}
}
if(i>1)
{
pre=pTemp=phead;
int j;
for(j=1;j<i;j++)
{
pre=pTemp;
pTemp=pTemp->next;
}
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);
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("请输入要修改学生的学号:");
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("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("密码错误,请重试!!!\n");
goto Re;
}
return 0;
}

Binary file not shown.
Loading…
Cancel
Save