📄 system.c
字号:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define Longest 30
#define Numlong 11
#define Sexlong 5
int shoudsave=0;
struct student
{char num[Numlong];
char name[25];
char sex[Sexlong];
int Cprogram;
int math;
int english;
int total;
int average;
char neartime[10];
};
typedef struct node
{struct student data;
struct node *next;
}Node,*Link;
void menu()
{
printf("\t\t\tStudent Score System\n\t\t\t\t\tGuangdong University of Technology\n\t\t\t\t\t Software Engineering Class3\n\t\t\t\t\t\t Num:3107006839 LinRuihong\n\t\t\t\t\t\t Email:327451947@qq.com\n");
printf("**************************************************************************\n");
printf("*\t1>Add Records 2>Delete Records \t\t\t *\n");
printf("*\t3>Find Out 4>Modify Records \t\t\t *\n");
printf("*\t5>Sort Records 6>Save Records \t\t\t\t *\n");
printf("*\t7>Display Records 8>Tongji \t\t\t\t *\n");
printf("*\t9>Help 0>Exit System \t\t\t\t *\n");
printf("**************************************************************************\n");
}
void printstart()
{printf("--------------------------------------------------------------------------\n");
}
void Wrong()
{printf("=====>Input error!\n");
}
void Continue()
{printf("=====>Please press any key to continue.\n");
getch();
}
void Nofind()
{printf("\n=====>Not find records !\n");
}
void printc()
{printf(" number name sex eng math Cpro total aver\n");
}
void printe(Node *p)
{printf("%-10s %-25s%-5s%5d %5d %5d %5d %5d\n",p->data.num,p->data.name,p->data.sex,p->data.english,p->data.math,p->data.Cprogram,p->data.total,p->data.average);
}
Node* Locate(Link l,char findmess[],char nameornum[])
{Node *r;
if(strcmp(nameornum,"num")==0)
{r=l->next;
while(r!=NULL)
{if(strcmp(r->data.num,findmess)==0)
return r;
r=r->next;
}
}
else if(strcmp(nameornum,"name")==0)
{r=l->next;
while(r!=NULL)
{if(strcmp(r->data.name,findmess)==0)
return r;
r=r->next;
}
}
return 0;
}
void Add(Link l)
{Node *p,*r,*s;
char num[Numlong];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next;
while(1)
{printf("Please input 10 number(Input '0' to exit.):");
scanf("%s",num);
if(strcmp(num,"0")==0)
{Continue();
break;
}
while(s)
{if(strcmp(s->data.num,num)==0)
{printf("=====>The number '%s' is in the file.(Input '4' to modify !)\n",num);
printstart();
printc();
printe(s);
printstart();
Continue();
return;
}
s=s->next;
}
p=(Node *)malloc(sizeof(Node));
strcpy(p->data.num,num);
printf("Please input name:");
scanf("%s",p->data.name);
printf("Please input sex(boy/girl):");
scanf("%s",p->data.sex);
printf("Please input C program score:");
scanf("%d",&p->data.Cprogram);
printf("Please input math score!:");
scanf("%d",&p->data.math);
printf("Please input english score!:");
scanf("%d",&p->data.english);
p->data.total=p->data.english+p->data.Cprogram+p->data.math;
p->data.average=p->data.total/3;
p->next=NULL;
r->next=p;
r=p;
shoudsave=1;
}
}
void Qur(Link l)
{int sel;
char findmess[Longest];
Node *p;
if(!l->next)
{printf("\n=====>Cannot find anything !\n");
return;
}
printf("=====> 1> Number.\n=====> 2> Name.\n");
scanf("%d",&sel);
if(sel==1)
{printf("input the number:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{printf("\t\t\t\tRESULT\n");
printstart();
printc();
printe(p);
printstart();
Continue();
}
else
{Nofind();
Continue();
}
}
else if(sel==2)
{printf("input the name:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{printf("\t\t\t\tRESULT\n");
printstart();
printc();
printe(p);
printstart();
Continue();
}
else
{Nofind();
Continue();
}
}
else
{Wrong();
Continue();
}
}
void Del(Link l)
{int sel;
Node *p,*r;
char findmess[Longest];
if(!l->next)
{printf("\n=====>Nothing can delete !\n");
Continue();
return;
}
printf("=====>1 Number\n=====>2 Name\n");
scanf("%d",&sel);
if(sel==1)
{printf("Please input the number:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("=====>Delete success!\n");
Continue();
shoudsave=1;
}
else
{Nofind();
Continue();
}
}
else if(sel==2)
{printf("Please input the name:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("=====>Delete success!\n");
Continue();
shoudsave=1;
}
else
{Nofind();
Continue();
}
}
else
{Wrong();
Continue();
}
}
void Modify(Link l)
{Node *p;
char findmess[Longest];
if(!l->next)
{printf("\n=====>Nothing can modify!\n");
Continue();
return;
}
printf("input the number:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{printf("new number(the old is %s):",p->data.num);
scanf("%s",p->data.num);
printf("new name(the old is %s):",p->data.name);
scanf("%s",p->data.name);
printf("new sex(the old is %s):",p->data.sex);
scanf("%s",p->data.sex);
printf("new C program score(the old is %d):",p->data.Cprogram);
scanf("%d",&p->data.Cprogram);
printf("new math score(the old is %d):",p->data.math);
scanf("%d",&p->data.math);
printf("new english score(the old is %d):",p->data.english);
scanf("%d",&p->data.english);
p->data.total=p->data.english+p->data.Cprogram+p->data.math;
p->data.average=p->data.total/3;
printf("\n=====>Modify success !\n");
Continue();
shoudsave=1;
}
else
{Nofind();
Continue();
}
}
void Display(Link l)
{int page=0;
Node *p;
p=l->next;
if(!p)
{printf("\n=====>Nothing !\n");
Continue();
return;
}
while(p)
{if(page%20==0)
{printf("\nGo to next page?");
getch();
clrscr();
printf("\t\t\tRESULT\n");
printstart();
printc();
}
printe(p);
p=p->next;
page++;
}
printstart();
Continue();
}
void Tongji(Link l)
{Node *pm,*pe,*pc,*pt,*pa;
Node *r=l->next;
if(!r)
{printf("\n=====>Nothing to tongji!\n");
Continue();
return ;
}
pm=pe=pc=pt=pa=r;
while(r!=NULL)
{if(r->data.Cprogram>=pc->data.Cprogram)
pc=r;
if(r->data.math>=pm->data.math)
pm=r;
if(r->data.english>=pe->data.english)
pe=r;
if(r->data.total>=pt->data.total)
pt=r;
if(r->data.average>=pa->data.average)
pa=r;
r=r->next;
}
printf("------------------------------ RESULT --------------------------------\n");
printf("highest total:\t%s %d\n",pt->data.name,pt->data.total);
printf("highest average:\t%s %d\n",pa->data.name,pa->data.average);
printf("highest english:\t%s %d\n",pe->data.name,pe->data.english);
printf("highest math:\t%s %d\n",pm->data.name,pm->data.math);
printf("highest C program:\t%s %d\n",pc->data.name,pc->data.Cprogram);
printstart();
Continue();
}
void Sort(Link l)
{Link ll;
Node *p,*rr,*s;
ll=(Link)malloc(sizeof(Node));
ll->next=NULL;
if(l->next==NULL)
{printf("\n=====>Nothing can sort!\n");
Continue();
return ;
}
p=l->next;
while(p)
{s=(Node*)malloc(sizeof(Node));
s->data=p->data;
s->next=NULL;
rr=ll;
while(rr->next!=NULL&&rr->next->data.total>=p->data.total)
rr=rr->next;
if(rr->next==NULL)
rr->next=s;
else
{s->next=rr->next;
rr->next=s;
}
p=p->next;
}
free(l);
l->next=ll->next;
printf("=====>Sort success!\n");
Continue();
}
void Save(Link l)
{FILE* fp;
Node *p;
int flag=1,count=0;
fp=fopen("C.TXT","wb");
if(fp==NULL)
{printf("\n=====>Open file error!\n");
Continue();
exit(1);
}
p=l->next;
while(p)
{if(fwrite(p,sizeof(Node),1,fp)==1)
{p=p->next;
count++;
}
else
{flag=0;
break;
}
}
if(flag)
{printf("=====>Congratulate,%d records have been saved !\n",count);
getch();
shoudsave=0;
}
fclose(fp);
}
void main()
{Link l;
FILE *fp;
int sel;
char ch;
char jian;
int count=0;
Node *p,*r;
clrscr();
textcolor(WHITE);
textbackground(BLUE);
l=(Node*)malloc(sizeof(Node));
l->next=NULL;
r=l;
fp=fopen("C.TXT","rb");
if(fp==NULL)
{printf("\n=====>No file,open a new one?(y/n)\n");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("C.TXT","wb");
else exit(0);
}
while(!feof(fp))
{p=(Node*)malloc(sizeof(Node));
if(fread(p,sizeof(Node),1,fp))
{p->next=NULL;
r->next=p;
r=p;
count++;
}
}
fclose(fp);
while(1)
{clrscr();
menu();
printf("Please input your choice:");
scanf("%d",&sel);
if(sel==0)
{if(shoudsave==1)
{printf("=====>File has been modify,save or not (y/n)?\n");
ch=getch();
if(ch=='y'||ch=='Y')
Save(l);
}
printf("=====>good bye!\n");
getch();
break;
}
switch(sel)
{case 1:Add(l);break;
case 2:Del(l);break;
case 3:Qur(l);break;
case 4:Modify(l);break;
case 5:Sort(l);break;
case 6:Save(l);break;
case 7:Display(l);break;
case 8:Tongji(l);break;
case 9:printf("\t\t\t========== help ==========\n");Continue();break;
default: Wrong();getch();break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -