学生信息管理系统

来源:互联网 发布:基本降序算法 编辑:程序博客网 时间:2024/05/22 02:18

主文件:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include "create.h"#include "duqu.h"#include "search.h"#include "xiugai.h" #include "delete.h"#include "paixu.h"int print(){system("cls");printf("                             ★★★首页★★★\n\n");printf("                                         ◎东北林业大学◆信息学院¢苗光辉   \n\n"); printf("★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n");printf("★   ╔════════════════════════════════╗   ★\n");printf("★   ║                                                                ║   ★\n");printf("★   ║       ☆1.增加学生信息             ☆5.删除学生信息            ║   ★\n");  printf("★   ║                                                                ║   ★\n"); printf("★   ║       ☆2.修改学生信息             ☆6.学生信息排序            ║   ★\n"); printf("★   ║                                                                ║   ★\n"); printf("★   ║       ☆3.显示学生信息             ☆7.运行结束                ║   ★\n"); printf("★   ║                                                                ║   ★\n"); printf("★   ║       ☆4.查询学生信息                                         ║   ★\n"); printf("★   ║                                                                ║   ★\n");  printf("★   ╚════════════════════════════════╝   ★\n");printf("★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n");printf("\n");return 0;   }int main(int argc, char *argv[]){  int da;  while(print()!=EOF&&printf("请输入相应执行代码:"))  {do  {scanf("%d",&da);   if(da!=1&&da!=2&&da!=3&&da!=4&&da!=5&&da!=6&&da!=7) printf("输入错误,请重新输入!\n");  } while(da!=1&&da!=2&&da!=3&&da!=4&&da!=5&&da!=6&&da!=7);                                                          if(da==1) {system("cls");main1();}if(da==3) {system("cls");main2();}  if(da==4) {system("cls");main3();} if(da==2) {system("cls");main4();}    if(da==5) {system("cls");main5();}if(da==6) {system("cls");main6();}             if(da==7&&!ppq)  {printf("程序结束! Loading.......\n");break;}     if(da==7&&ppq)    {printf("您已经进行删除操作,是否覆盖信息至文件?(y/n)");           char gg[20];scanf("%s",gg);           if(strcmp("y",gg)==0)  {FILE *f=fopen("d:/student.txt","w");                                   pp=head;                                   luru(f,pp);                                   fclose(f);                                   printf("信息已覆盖,程序结束!Loading.......\n");}           else if(strcmp("n",gg)==0) printf("信息未覆盖,程序结束!Loading.......\n");           else printf("输入错误!     信息未覆盖,程序结束!Loading.......\n");            break;}               getchar();getchar();}     system("PAUSE");  return 0;}


创建链表:

#ifndef FILE2_H_#define FILE2_H_int ppq=0;FILE *fpp=NULL;struct student *pp=NULL;struct student *head=NULL;void jiaohuan(struct student *aa,struct student *bb);     //排序的声明 void paixu(struct student *head1,int a,int b); struct student *cha();                                   //3.录入链表声明 struct student {    long num,position;    char sex[5];char name[20];double score_math,score_chinese,score_english,score_c,score_wuli,score_ping,score;struct student *next;};double su(struct student *p){return p->score_math+p->score_chinese+p->score_english+p->score_c+p->score_wuli;}int luru(FILE *f,struct student *p){double sum;  while(p!=NULL)  { sum=su(p);  p->score_ping=sum/5;p->score=sum;  fwrite(p,sizeof(struct student),1,f);  p=p->next;   } return 0;}   struct student *create(int n){struct student *p,*q,*h;    int t=0,d;q=(struct student *)malloc(sizeof(struct student));printf("请输入学生姓名:");scanf("%s",q->name);printf("请输入学生学号:");scanf("%ld",&q->num);printf("请输入学生性别(男生1,女生0):");{do{     scanf("%d",&d);     if(d!=1&&d!=0) printf("输入错误,请重新输入!\n");     }while(d!=1&&d!=0);         if(d==1) strcpy(q->sex,"男");     else if(d==0) strcpy(q->sex,"女");    }    printf("请依次输入学生成绩(数学,语文,英语,c++,物理):");    scanf("%lf%lf%lf%lf%lf",&q->score_math,&q->score_chinese,&q->score_english,&q->score_c,&q->score_wuli);    if(n!=1) printf("\n               *********************录入成功!***********************\n\n");    t++;h=NULL;while(t<=n){if(t==1) {h=q;p=q;}else {q=(struct student *)malloc(sizeof(struct student));p->next=q;p=q;    printf("请输入学生姓名:");    scanf("%s",q->name);    printf("请输入学生学号:");    scanf("%ld",&q->num);    printf("请输入学生性别(男生1,女生0):");    {do{         scanf("%d",&d);         if(d!=1&&d!=0) printf("输入错误,请重新输入!\n");         }while(d!=1&&d!=0);                if(d==1) strcpy(q->sex,"男");         if(d==0) strcpy(q->sex,"女");        }        printf("请依次输入学生成绩(数学,语文,英语,c++,物理):");        scanf("%lf%lf%lf%lf%lf",&q->score_math,&q->score_chinese,&q->score_english,&q->score_c,&q->score_wuli);        if(t!=n) printf("\n               *********************录入成功!***********************\n\n");}t++;}p->position=1;p->next=NULL;printf("\n               *********************输入完成!**********************\n\n");return h;};int main1() {                                                    // main1主程序声明 struct student *p;                int n;                printf("\n                                 1.增加学生信息\n\n");                printf("请输入学生的数目:");                 scanf("%d",&n);                if(n>=1)                {p=create(n);                char tutu[10];printf("您确定录入信息至文件?(y/n)");                scanf("%s",tutu);                if(strcmp(tutu,"y")==0)                { if(ppq)    {ppq=0;              printf("您已经进行删除操作,是否覆盖信息至文件?(y/n)");                              char gg[20];scanf("%s",gg);                              if(strcmp("y",gg)==0)  {FILE *f=fopen("d:/student.txt","w");                                   pp=head;                                   luru(f,pp);                                   fclose(f);                                   printf("信息已覆盖!Loading.......\n");}                     else if(strcmp("n",gg)==0) printf("信息未覆盖!Loading.......\n");                     else printf("输入错误!     信息未覆盖!Loading.......\n");                    }FILE *fp=fopen("d:/student.txt","a+");                luru(fp,p);                                 printf("\n               *********************录入成功!***********************\n\n");                 fclose(fp);head=pp=cha();                 }                else if(strcmp(tutu,"n")==0) printf("信息未保存!   ");                else printf("输入错误!\n");                }                else {printf("                              输入错误!程序结束!\n");getchar();getchar();exit(0);}                printf("按任意键继续......");                                return 0;                }                          #endif


读取信息:

#ifndef FILE3_H_#define EILE3_H_struct student *cha(){  fpp=fopen("d:/student.txt","a+"); if(!fpp) {printf("打开失败!");} else {struct student *h,*p1,*p2;     int i=0;     fseek(fpp,0,SEEK_END);      long len = ftell(fpp);     len /= sizeof(struct student);     if(len == 0)     return NULL;     rewind(fpp);      p1=p2=(struct student *)malloc(sizeof(struct student));     fread(p1,sizeof(struct student),1,fpp);     h= p1;      for(i=1;i<len; i++)     {          p1=(struct student *)malloc(sizeof(struct student));         fread(p1,sizeof(struct student),1,fpp);          p2->next=p1;         p2=p1;      }     paixu(h,3,1);     p1=h;int buf=1;     while(p1!=NULL)     {p1->position=buf++;      p1=p1->next;     }     fclose(fpp);     return (h);     }}void shuchu(struct student *ppw){   printf("----------------------------------------------------------------------------\n");printf("    学号          姓名           性别             名次\n");printf("    %ld             %s              %s               %ld\n\n",ppw->num,ppw->name,ppw->sex,ppw->position);    printf("    语文          数学           英语              c++            物理 \n");   printf("%8.2lf        %8.2lf      %8.2lf         %8.2lf      %8.2lf\n\n   平均分         总分\n",           ppw->score_chinese,ppw->score_math,ppw->score_english,ppw->score_c,ppw->score_wuli);   printf("%8.2lf        %8.2lf \n",ppw->score_ping,ppw->score);printf("----------------------------------------------------------------------------\n\n");}int main2(){  if(pp==NULL) {head=pp=cha();  }  else pp=head;  printf("                                 3.显示学生信息\n\n\n");  int nu=0;  if(pp==NULL) {printf("                            文件中未存储任何信息!\n");nu=1;}  int ggu=1;   while(pp!=NULL)   {printf("学生(%d)\n",ggu++);   shuchu(pp);   pp=pp->next;   }  pp=head; if(nu==0) printf("         *************************输出完成*************************** \n");}#endif


查找信息:

#ifndef FILE4_H_#define FILE4_H_void print2(){ printf("                          ☆☆☆查找选项☆☆☆\n\n");     printf("                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");    printf("                    ☆                            ☆\n");     printf("                    ☆       1.按学号查找         ☆\n"); printf("                    ☆       2.按姓名查找         ☆\n"); printf("                    ☆       3.按名次查找         ☆\n"); printf("                    ☆                            ☆\n");  printf("                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");  printf("请输入相应代码:");           }int main3(){print2();    if(pp==NULL) head=pp=cha();   else pp=head;    int dd;   do   {scanf("%d",&dd);   if(dd!=1&&dd!=2&&dd!=3) printf("输入错误!请重新输入......\n");   }while(dd!=1&&dd!=2&&dd!=3);      if(dd==1)     {printf("请输入学生学号:");     long num;    scanf("%ld",&num);    while(pp!=NULL&&pp->num!=num)     {pp=pp->next;}}         if(dd==2)         {printf("请输入学生姓名:");         char name[20];         scanf("%s",name);         while(pp!=NULL&&strcmp(pp->name,name)!=0)         {pp=pp->next;}     }          if(dd==3)     {printf("请输入学生名次:");     long num;    scanf("%ld",&num);    while(pp!=NULL&&pp->position!=num)     {pp=pp->next;}}                   if((dd==2||dd==1||dd==3)&&pp==NULL) {printf("未找到该学生.......\n");}      else  if(dd==1||dd==2||dd==3) {shuchu(pp);  } pp=head;  }#endif


修改信息:

#ifndef FILE5_H_#define FILE5_H_int print3(){ printf("                          ☆☆☆修改选项☆☆☆\n\n");     printf("                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");    printf("                    ☆                              ☆\n");     printf("                    ☆       1.按学号查找修改       ☆\n"); printf("                    ☆       2.按姓名查找修改       ☆\n"); printf("                    ☆       3.按名次查找修改       ☆\n");  printf("                    ☆                              ☆\n");  printf("                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");  printf("请输入相应代码:");       return 0;      }int print4(){ printf("                          ☆☆☆修改☆☆☆\n\n");     printf("                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");    printf("                    ☆                        ☆\n");     printf("                    ☆       1.修改学号       ☆\n"); printf("                    ☆       2.修改姓名       ☆\n"); printf("                    ☆       3.修改语文       ☆\n"); printf("                    ☆       4.修改数学       ☆\n");  printf("                    ☆       5.修改英语       ☆\n");  printf("                    ☆       6.修改c++        ☆\n");  printf("                    ☆       7.修改物理       ☆\n");   printf("                    ☆                        ☆\n");  printf("                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");  printf("请输入相应代码:");          }int main4(){  if(pp==NULL) head=pp=cha();  else pp=head;  int num=0;  print3();  int nn;  long mm;  double ppt;  char xx[20];  do  {scanf("%d",&nn);  if(nn!=1&&nn!=2&&nn!=3) printf("输入错误!请重新输入......\n");  }while(nn!=1&&nn!=2&&nn!=3);   if(nn==1){printf("请输入学号:");scanf("%ld",&mm);           while(pp!=NULL&&pp->num!=mm)              {pp=pp->next;}  }             if(nn==2) {printf("请输入名字:");scanf("%s",xx);              while(pp!=NULL&&strcmp(pp->name,xx)!=0)              {pp=pp->next;}    }                if(nn==3){printf("请输入名次:");scanf("%ld",&mm);           while(pp!=NULL&&pp->position!=mm)              {pp=pp->next;}  }                                                                           if(pp==NULL) printf("未找到该学生.......\n");           else {shuchu(pp);         print4();int pnn=0;                 do                 {scanf("%d",&pnn);                 if(pnn!=1&&pnn!=2&&pnn!=3&&pnn!=4&&pnn!=5&&pnn!=6&&pnn!=7) printf("输入错误!请重新输入......\n");                 }while(pnn!=1&&pnn!=2&&pnn!=3&&pnn!=4&&pnn!=5&&pnn!=6&&pnn!=7);                                  printf("请输入修改后的信息:");                                                          //已经添加排序                  if(pnn==1) {scanf("%ld",&mm);pp->num=mm;}                 if(pnn==2) {scanf("%s",xx);strcpy(pp->name,xx);}                 if(pnn==3) {scanf("%lf",&ppt);pp->score_chinese=ppt;ppt=su(pp);pp->score=ppt;pp->score_ping=ppt/5;}                 if(pnn==4) {scanf("%lf",&ppt);pp->score_math=ppt;ppt=su(pp);pp->score=ppt;pp->score_ping=ppt/5;}                 if(pnn==5) {scanf("%lf",&ppt);pp->score_english=ppt;ppt=su(pp);pp->score=ppt;pp->score_ping=ppt/5;}                 if(pnn==6) {scanf("%lf",&ppt);pp->score_c=ppt;ppt=su(pp);pp->score=ppt;pp->score_ping=ppt/5;}                 if(pnn==7) {scanf("%lf",&ppt);pp->score_wuli=ppt;ppt=su(pp);pp->score=ppt;pp->score_ping=ppt/5;}                                  printf("\n                       修改成功!\n");                                   if(pnn>=3&&pnn<=7)                 {paixu(head,3,1);   pp=head;int buf=1;                                     //排序            while(pp!=NULL)          {pp->position=buf++;           pp=pp->next;} } FILE *f=fopen("d:/student.txt","w");                 pp=head;                 luru(f,pp);                 fclose(f);                }  pp=head;               return 0;   }#endif


删除信息:

#ifndef FILE6_H_#define FILE6_H_int print5(){ printf("                          ☆☆☆删除选项☆☆☆\n\n");     printf("                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");    printf("                    ☆                              ☆\n");     printf("                    ☆       1.按学号查找删除       ☆\n"); printf("                    ☆       2.按姓名查找删除       ☆\n"); printf("                    ☆       3.按名次查找删除       ☆\n");  printf("                    ☆                              ☆\n");  printf("                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");  printf("请输入相应代码:");       return 0;      }int main5(){struct student *mn1,*mn2;  if(pp==NULL) head=pp=cha();  else pp=head;  long mm;  char xx[20];  mn1=pp;  int nn,kl=0;  print5();  do  {scanf("%d",&nn);  if(nn!=1&&nn!=2&&nn!=3) printf("输入错误!请重新输入......\n");  }while(nn!=1&&nn!=2&&nn!=3);    if(nn==1){printf("请输入学号:");scanf("%ld",&mm);           while(pp!=NULL&&pp->num!=mm)              {mn1=pp;pp=pp->next;kl=1;}  }             if(nn==2) {printf("请输入名字:");scanf("%s",xx);              while(pp!=NULL&&strcmp(pp->name,xx)!=0)              {mn1=pp;pp=pp->next;kl=1;}    }                 if(nn==3){printf("请输入名次:");scanf("%ld",&mm);           while(pp!=NULL&&pp->position!=mm)              {mn1=pp;pp=pp->next;kl=1;}  }                    if((nn==1||nn==2||nn==3)&&pp==NULL) printf("未找到该学生.......\n");  else if(nn==1||nn==2||nn==3) {shuchu(pp);         printf("您是否确认删除该学生信息?(y/n)");         do {scanf("%s",xx); if(!(strcmp("y",xx)==0)&&!(strcmp("n",xx)==0)) printf("输入错误!请重新输入......\n");         }while(!(strcmp("y",xx)==0)&&!(strcmp("n",xx)==0));          if(strcmp("y",xx)==0) { if(!kl) {head=head->next;ppq=1;} else{ppq=1;mn2=pp->next;mn1->next=mn2;pp=head;}  pp=head;int buf=1;                                     //排序  while(pp!=NULL) {pp->position=buf++;  pp=pp->next;}   printf("                      删除成功!   按任意键继续......\n");}         else if(strcmp("n",xx)==0)  printf("                      信息未删除!   按任意键继续......\n");         else printf("                         输入错误!!     按任意键继续......  \n");        }       pp=head;      }#endif


信息排序:

#ifndef FILE7_H_#define FILE7_H_int print6(){printf("                          ☆☆☆排序选项☆☆☆\n\n");     printf("                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");    printf("                    ☆                          ☆\n");     printf("                    ☆       1.按学号排序       ☆\n"); printf("                    ☆       2.按姓名排序       ☆\n"); printf("                    ☆       3.按名次排序       ☆\n"); printf("                    ☆                          ☆\n");  printf("                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");  printf("请输入相应代码:");  return 0;}int print7(){  printf("                          ☆☆☆选项☆☆☆\n\n");    printf("                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");  printf("                    ☆                          ☆\n");   printf("                    ☆       1.按升序排序       ☆\n");  printf("                    ☆       2.按降序排序       ☆\n");  printf("                    ☆                          ☆\n");     printf("                    ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");    printf("请输入相应代码:");   return 0;} void jiaohuan(struct student *aa,struct student *bb){ long num;double co;char cco[20];strcpy(cco,aa->name);    // 姓名 strcpy(aa->name,bb->name);strcpy(bb->name,cco);strcpy(cco,aa->sex);    //性别  strcpy(aa->sex,bb->sex);strcpy(bb->sex,cco);num=aa->num;            //学号 aa->num=bb->num;bb->num=num;co=aa->score_chinese;    //语文aa->score_chinese=bb->score_chinese;bb->score_chinese=co; co=aa->score_math;    //数学 aa->score_math=bb->score_math;bb->score_math=co; co=aa->score_english;    //英语 aa->score_english=bb->score_english;bb->score_english=co; co=aa->score_c;    //c++aa->score_c=bb->score_c;bb->score_c=co; co=aa->score_wuli;    //物理 aa->score_wuli=bb->score_wuli;bb->score_wuli=co; co=aa->score_ping;    //平均 aa->score_ping=bb->score_ping;bb->score_ping=co;co=aa->score;    //总分 aa->score=bb->score;bb->score=co;num=aa->position;            //学号 aa->position=bb->position;bb->position=num; }void paixu(struct student *head1,int a,int b){struct student *p,*q;        if(a==1){  if(b==1)  for(p=head1;p->next!=NULL;p=p->next)      for(q=p->next;q!=NULL;q=q->next)   if(p->num>q->num)jiaohuan(p,q);    if(b==2)  for(p=head1;p->next!=NULL;p=p->next)      for(q=p->next;q!=NULL;q=q->next)   if(p->num<q->num)jiaohuan(p,q);}if(a==3) { if(b==1)  for(p=head1;p->next!=NULL;p=p->next)      for(q=p->next;q!=NULL;q=q->next)   if(p->score<q->score)jiaohuan(p,q);    if(b==2)  for(p=head1;p->next!=NULL;p=p->next)      for(q=p->next;q!=NULL;q=q->next)   if(p->score>q->score)jiaohuan(p,q);}if(a==2){  if(b==1)  for(p=head1;p->next!=NULL;p=p->next)      for(q=p->next;q!=NULL;q=q->next)   if(strcmp(p->name,q->name)>0)jiaohuan(p,q);    if(b==2)  for(p=head1;p->next!=NULL;p=p->next)      for(q=p->next;q!=NULL;q=q->next)   if(strcmp(p->name,q->name)<0)jiaohuan(p,q);}}int main6(){ if(pp==NULL) head=pp=cha();    else pp=head;    if(head==NULL) printf("\n                            文件中未存储任何信息!\n");else    {        int oo,ee;        print6();        do        {scanf("%d",&oo);        if(oo!=1&&oo!=2&&oo!=3) printf("输入错误!请重新输入......\n");        }while(oo!=1&&oo!=2&&oo!=3);    print7();    do{    scanf("%d",&ee);    if(ee!=1&&ee!=2) printf("输入错误!请重新输入......\n");    }while(ee!=1&&ee!=2);    paixu(head,oo,ee);    printf("\n\n                              排序完成!\n\n输出如下:\n\n");    int ggu=1;    while(pp!=NULL)       {printf("学生(%d)\n",ggu++);       shuchu(pp);       pp=pp->next;         }         pp=head;      if(pp) printf("         *************************输出完成*************************** \n");   }}#endif


 

 

 

原创粉丝点击