⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 system.c

📁 《C语言程序设计》课程的课程设计
💻 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 + -