c言語学生情報管理システム
28152 ワード
リストの内容システムはメニュー方式で 動作する.学生情報入力機能(学生情報用ファイル保存)—入力 学生情報閲覧機能——出力 クエリー、ソート機能——アルゴリズム1、学号クエリー2、名前クエリー 学生情報の削除と修正 インターフェースは簡単明瞭です. は一定の誤り許容能力を持っており、例えば入力の成績が0~100の間でなければ、不法であることを示し、再入力を要求する. はチェーンテーブルで実現される.
#include
#include
#include
#include
#include
typedef struct Student
{
char name[100]; //
char num[100]; //
char sex;// (w m )
int age;//
int score;//
}stu;
typedef struct LNode
{
stu data;
struct LNode *next;
}LinkList;
char nam[100];//
char nu[100];//
char s;//
int ag;//
int sc;//
void welocome()//
{
system("color b1");
printf("````````````````````````````````````````````````````````````````````````````````");
printf("
");
printf("
");
printf("
");
printf(" *********************** *************************
");
printf("
");
printf("
");
printf("
");
printf("````````````````````````````````````````````````````````````````````````````````");
}
void menu()//
{
system("color e3");
printf(" |________________________________________________|
");
printf(" | |
");
printf(" | |
");
printf(" | |
");
printf(" | 0、 |
");
printf(" | 1、 |
");
printf(" | 2、 |
");
printf(" | 3、 |
");
printf(" | 4、 |
");
printf(" | 5、 |
");
printf(" | 6、 |
");
printf(" | 7、 |
");
printf(" | |
");
printf(" |________________________________________________|
");
return ;
}
void InitList( LinkList *&L)//
{
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
}
void ListInsert(LinkList *&L,LinkList *p)//
{
LinkList *q=NULL;
q=L;
p->next=q->next;
q->next=p;
}
void addstu(LinkList *&L)//
{
system("color f2");
printf(" :
");
printf(" :");
scanf("%s",nu);
LinkList *q=L->next;
while(q!=NULL )
{
if(strcmp(q->data.num,nu)==0)//
{
printf("
");
break;
}
q=q->next;
}
if(q==NULL)
{
LinkList *p;
InitList(p);
strcpy(p->data.num,nu);
printf(" :") ;
scanf("%s",nam) ;
strcpy(p->data.name,nam);
printf(" :(w m )");
scanf(" %c",&s);
p->data.sex=s;
printf(" :");
scanf("%d",&ag);
p->data.age=ag;
printf(" :");
scanf("%d",&sc);
while(sc>100||sc<0){
printf(" ,
");
scanf("%d",&sc);
}
p->data.score=sc;
ListInsert(L,p);
}
}
void deletestu(LinkList *L)//
{
system("color f4");
printf(" :");
scanf("%s",nu);
//
LinkList *p,*pre;
if(L->next==NULL)
{
printf(" ,
");
return;
}
pre=L;
p=pre->next;
int judge=0;
while(p)
{
if(strcmp(p->data.num,nu)==0)
{
judge=1;
pre->next =p->next;
free(p);
printf("
");
break;
}
pre=p;
p=p->next;
}
if(judge==0)
printf("
");
}
void changestu(LinkList *L)//
{
int judge=1;
system("color e4");
printf(" :
");
scanf("%s",nu);
LinkList *q=L->next;
while(q!=NULL )
{
if(strcmp(q->data.num,nu)==0)
{
judge=1;
printf(" :1. 2. 3.
");
int n;
scanf("%d",&n);
switch(n)
{
case 1:
printf(" :");
scanf("%s",nam);
printf(" :%s
",nam);
strcpy(q->data.name,nam);
printf(" !
");
break;
case 2:
printf(" ");
scanf("%d",&sc);
printf(" :%d
",sc);
q->data.score=sc;
printf(" !
");
break;
case 3:
printf(" :");
scanf("%d",&ag);
printf(" :%d
",ag);
q->data.age=ag;
printf(" !
");
break;
default :
printf("
");
break;
}
}
q=q->next;
}
if(judge==0)
{
printf("
");
}
}
void findstu(LinkList *L)//
{
int flag;
system("color b1");
printf("1. :
");
printf("2. :
");
printf(" :");
scanf("%d",&flag);
if(flag==1){
printf(" :");
scanf("%s",nu);
//
LinkList *q=L->next;
while(q!=NULL )
{
if(strcmp(q->data.num,nu)==0)
{
printf(" :%s
",q->data.name);
printf(" :%s
",q->data.num);
printf(" :%c
",q->data.sex);
printf(" :%d
",q->data.age);
printf(" :%d
",q->data.score);
break;
}
q=q->next;
}
if(q==NULL)
printf("
");
}else{
printf(" :");
scanf("%s",nam);
LinkList *q=L->next;
while(q!=NULL )
{
if(strcmp(q->data.name,nam)==0)
{
printf(" :%s
",q->data.name);
printf(" :%s
",q->data.num);
printf(" :%c
",q->data.sex);
printf(" :%d
",q->data.age);
printf(" :%d
",q->data.score);
break;
}
q=q->next;
}
if(q==NULL)
printf("
");
}
}
void display(LinkList *&L)//
{
LinkList *q=L->next;
if(q==NULL)
{
printf(" ,
");
return;
}
while(q)
{
system("color c0");
printf(" :%s :%s :%d :%c :%d
",q->data.num,q->data.name,q->data.age,q->data.sex,
q->data.score);
q=q->next;
}
}
void paixu(LinkList *L)//
{
system("color f9");
LinkList *q,*p,*r=L->next;
//
if(r==NULL)
{
printf(" ,
");
return;
}
while(r) //
{
p=r;
q=r->next;
LinkList *tmp;//
InitList(tmp);
while(q)
{
if(q->data.score > p->data.score)
{
/* q tmp*/
strcpy(tmp->data.num,q->data.num);
strcpy(tmp->data.name,q->data.name);
tmp->data.sex=q->data.sex;
tmp->data.age=q->data.age;
tmp->data.score=q->data.score;
/* p q*/
strcpy(q->data.num,p->data.num);
strcpy(q->data.name,p->data.name);
q->data.sex=p->data.sex;
q->data.age=p->data.age;
q->data.score=p->data.score;
/* exchange p*/
strcpy(p->data.num,tmp->data.num);
strcpy(p->data.name,tmp->data.name);
p->data.sex=tmp->data.sex;
p->data.age=tmp->data.age;
p->data.score=tmp->data.score;
}
q=q->next;
}
r=r->next;
}
printf(" :
");
display(L);
}
void saveStuDentFile(LinkList * &L)//
{
FILE *fp;
LinkList *p=L->next;
if((fp=fopen("student.txt","w"))==NULL)// .txt
{
printf(" ,
");
exit(1);
}
while(p)
{
fprintf(fp,"%s %s %c %d %d
",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.score);
p=p->next;
printf("
");
}
fclose(fp);
}
void readStuDentput (LinkList *&L) //
{
FILE *fp;
fp=fopen("student.txt","rb"); // .txt
if(fp==NULL)
{
printf("
");
exit(0); //
}
int i=0;
while(!feof(fp))
{
char nu[100];//
char nam[100];//
char s;//
int ag;//
int sc;//
fscanf(fp," %s %s %c %d %d",nu,nam,&s,&ag,&sc);
i++;
}
fclose(fp);
FILE *FP;
FP=fopen("student.txt","rb"); // .txt
if(FP==NULL)
{
printf("
");
exit(0); //
}
int b=i-1;
int j=1;
while(!feof(FP))
{
fscanf(FP,"%s %s %c %d %d",nu,nam,&s,&ag,&sc);
LinkList *n=(LinkList *)malloc(sizeof(LinkList));
strcpy(n->data.num,nu);//
strcpy(n->data.name,nam);//
n->data.sex=s;
n->data.age=ag;
n->data.score=sc;
ListInsert(L,n);//
n=n->next;
if(j==b)
break;
j++;
}
fclose(FP); //
}
int main()
{
system("cls");//
welocome();//
Sleep(3000);// 3
LinkList *L;
InitList(L);
readStuDentput (L);//
int a;
int choose;
while(1)
{
printf(" :
");
menu();//
scanf("%d",&choose);
switch(choose)
{
case 0://
printf(" ! ");
exit(0);
case 1://
addstu(L);//
break;
case 2://
deletestu(L);//
break;
case 3://
changestu(L);//
break;
case 4://
findstu(L);//
break;
case 5://
paixu(L);
break;
case 6://
display(L);
break;
case 7://
saveStuDentFile(L);
break;
default:
printf("
");
break;
}
}
}