学生信息管理系统(C++语言版)

来源:互联网 发布:毛姆最好看的作品知乎 编辑:程序博客网 时间:2024/06/05 05:29

学生信息管理系统(C语言版)  

#include "stdio.h"

#include "bios.h"

#include "conio.h"

#include "STRING.H"

#include "DOS.h"

#include "process.h"

#include "stdlib.h"

#include "math.h"

#define key_down 80

#define key_up 72

#define key_esc 1

#define key_alt_f 33

#define key_alt_x 45

#define key_enter 28

#define key_alt_c 46

#define key_alt_e 18

#define key_alt_s 31

#define key_alt_d 32

#define key_alt_r 19

#define key_alt_p 25

#define key_alt_o 24

 struct student

 {

 char name[20];

 long num;

 char age[2];

 char sex[4];

 char xibie[16];

 char jiguan[50];

 struct{

 float chinese;

 float english;

 float math;

 float total;

 float ave;}score;

 struct student *next;

 };

struct student agent[50];

struct student *head,*this1,*new1,*new2,*stud;

char numstr[40]={' ',' '};

int n=0;

int r=0;

int k=0;

long num;

int get_key();

void box(int startx,int starty,int high,int width);

void new1name(void),listall(void),wfile(void),rfile(void);

struct student *insert(struct student *head ,struct student *stud);

void cjlr(),cjtj(),cjpx(),cxxs(),list(),cxcj();

void del();

int mmm();

int nnn();

void ab();

  mmm()

{char aaa[6],bbb[6];

 char d; //int r=0;

 int i=0;

 FILE *fp;

 char a[6];

 char b[6];

 clrscr();

 if((fp=fopen("file1","r"))==NULL)

  {  window(1,1,80,25);

   textbackground(1);

    textcolor(0);

  clrscr();

   window(20,8,60,20);

  textbackground(14);

   textcolor(0);

        clrscr();

        gotoxy(8,2);

    cprintf("NO UER!");

  fclose(fp);

  fp=fopen("file1","w");

  gotoxy(2,4);

   printf("Please input name:");

  gets(a);fwrite(a,6,1,fp);

  gotoxy(2,8);

   printf("Please input key:");

 gets(b); fwrite(b,6,1,fp);

    fclose(fp);

     ab();

     }

  else

   { window(1,1,80,25);

textbackground(1);

textcolor(0);

  clrscr();

   window(20,8,60,20);

  textbackground(14);

   textcolor(0);

        clrscr();

      gotoxy(8,2);

       cprintf("Input Your Name And Password:");

      gotoxy(2,8);

     cprintf(" PWD:");

  gotoxy(2,4);

       cprintf("NAME:");

   scanf("%s",aaa);

     gotoxy(7,8);

      while(d=getch())

     {

  if(d==13)

         break;

       cprintf("*");

         bbb[i]=d;

         i++;

    }

    fp=fopen("file1","r");

    fread(a,6,1,fp);

    fread(b,6,1,fp);

     fclose(fp);

   for(i=0;i<=5;i++)

      {

    if(aaa[i]!=a[i] || bbb[i]!=b[i])

   exit(0);

     }

 }

 ab();

}

nnn()

{union REGS inregs ,outregs;

inregs.h.ah=0x2a;

intdos(&inregs,&outregs);

window(60,24,80,25);

textbackground(14);

textcolor(0);

clrscr();

cprintf("Data is 2004-%d-%d.\n",outregs.h.dh,outregs.h.dl);

return 0;

}

void ab()

{int i;

clrscr();

window(1,1,80,25);

textbackground(1);

textcolor(0);

clrscr();

window(20,8,62,20);

textbackground(14);

textcolor(128);

clrscr();

 for(i=0;i<=11;i++)

 {window(20,8+i,62,9+i);

 textbackground(i);

 textcolor(128+i*2);

 clrscr();

  cprintf("  Welcome To Students Management System!");

 }

getch();

}

 main()

{int i,key,x,y,l;

char *menu[]={"input(F)","print1(O)","del(D)","find(C)","print(P)","save(S)","exit(X)"};

char *red[]={"input","printf1","del","find","print","cpoy","exit"};

char *f[]={"xueji luru","chengji luru","chenji tongji","add student","chengji paixu"};

char *c[]={"student","chengji"};

char buf[16*10*4],buf1[16*4];

struct student *stud;

if(k++==0)

mmm();

window(1,2,80,25);

textbackground(15);

textcolor(0);

clrscr();

textbackground(1);

clrscr();

window(1,1,80,1);

textbackground(15);

textcolor(0);

clrscr();

window(1,1,80,2);

gotoxy(1,1);

for(i=0,l=0;i<7;i++)

{x=wherex();

y=wherey();

cprintf("   %s",menu[i]);

l=strlen(menu[i]);

gotoxy(x,y);

textcolor(RED);

cprintf("  %s",red[i]);

x=x+l+4;

gotoxy(x,y);

textcolor(BLACK);

}

nnn();

if(r++==0)

main();

window(1,2,80,25);

while(1)

{

key=0;

while(bioskey(1)==0);

key=get_key();

if(key==key_alt_x) exit(0)   ;

if(key==key_alt_s) wfile();

if(key==key_alt_d) del();

if(key==key_alt_r)  rfile();

if(key==key_alt_p) listall();

if(key==key_alt_o) list();

if(key==key_alt_f)

{textbackground(0);

textcolor(15);

gotoxy(4,1);

cprintf("%s",menu[0]);

gettext(4,2,18,12,buf);

window(4,2,18,8);

textbackground(15);

textcolor(0);

clrscr();

window(4,2,19,9);

box(1,1,7,16);

for(i=2;i<7;i++)

{gotoxy(2,i);

cprintf("%s",f[i-2]);}

gettext(2,2,18,3,buf1);

textbackground(0);

textcolor(15);

gotoxy(2,2);

cprintf("%s",f[0]);

y=2;

key=get_key();

while(key!=key_alt_x && key!=key_enter && key!=key_esc)

{if(key==key_up || key==key_down)

{puttext(2,y,18,y+1,buf1);

if(key==key_up)

y=y==2?6:y-1;

if(key==key_down)

y=y==6?2:y+1;

gettext(2,y,18,y+1,buf1);

textbackground(0);

textcolor(15);

gotoxy(2,y);

cprintf("%s",f[y-2]);

}

key=get_key();

}

if(key==key_alt_x) exit(0);

if(key==key_enter)

{switch(y-1)

{case 1  :  new1name();break;

case  2  :  cjlr();break;

case  3  :  cjtj();break;

case  4  :  insert(head,stud);break;

case  5  :  cjpx();break;

default  : break;

}

}

}

else

{

window(1,1,80,1);

puttext(2,2,19,10,buf);

textbackground(15);

textcolor(0);

gotoxy(4,1);

cprintf("%s",menu[0]);

}

if(key==key_alt_c)

{textbackground(0);

textcolor(15);

gotoxy(39,1);

cprintf("%s",menu[3]);

gettext(39,2,50,7,buf1);

window(39,2,49,5);

textbackground(15);

textcolor(0);

clrscr();

window(39,2,49,6);

box(39,1,4,11);

for(i=2;i<4;i++)

{

gotoxy(2,i);

cprintf("%s",c[i-2]);

}

gettext(39,2,49,3,buf1);

textbackground(0);

textcolor(15);

gotoxy(2,2);

cprintf("%s",c[0]);

y=2;

key=get_key();

while(key!=key_alt_x&&key!=key_enter&&key!=key_esc)

{if(key==key_up||key==key_down)

  {puttext(39,y,49,y+1,buf1);

   if(key==key_up)

   y=y==2?3:y-1;

   if(key==key_down)

   y=y==3?2:y+1;

   gettext(39,y,49,y+1,buf1);

   textbackground(0);

   textcolor(15);

   gotoxy(2,y);

  cprintf("%s",c[y-2]);

 }

   key=get_key();

}

  if(key==key_alt_x) exit(0);

  if(key==key_enter)

  {switch(y-1)

  {case 1: cxxs();break;

  case 2: cxcj();break;

  default:break;

  }

  }

  }

  else

  {window(1,1,80,2);

  puttext(39,2,49,7,buf);

  textbackground(15);

  textcolor(0);

  gotoxy(39,1);

  cprintf("%s",menu[3]);

  }

  }           }

  int get_key()

  {  union REGS rg;

    rg.h.ah=0;

    int86(0x16,&rg,&rg);

    return rg.h.ah;

  }

  void box(int startx,int starty,int high,int width)

  {   int i;

      gotoxy(startx,starty);

      putch(0xda);

      for(i=starty+1;i<width;i++)

      putch(0xc4);

      putch(0xbf);

      for(i=starty+1;i<high;i++)

      {gotoxy(startx,i);

      putch(0xb3);

      gotoxy(width,i);putch(0xb3);}

      gotoxy(startx+1,width);

      putch(0xc0);

      for(i=startx+1;i<width;i++)

      putch(0xc4);

      putch(0xd9);

      return;

   }

      /* void new1name(void)

   { int key;

   window(1,2,80,25);

     textbackground(BLUE);

    clrscr();

     cprintf("Are you sure input?");

   key=get_key();

 while(key!=key_alt_x && key!=key_esc)

  {

   window(1,2,80,25);

     textbackground(BLUE);

     clrscr();

     new1=new2=(struct student *)malloc(sizeof(struct student));

     if(head==NULL)

     head=new1;

     else

    { this1=head;

    while(this1->next!=NULL)

    this1=this1->next;

    this1->next=new1;

    }

    this1=new1;

     printf("\nRecord%d:",n+1);

     printf("\nXing Ming:");

     gets(this1->name);

     printf("\nXue Hao:");

     gets(numstr);

     this1->num=atol(numstr);

     printf("\nNian Ling:");

     gets(this1->age);

     printf("\nXing Bie:");

     gets(this1->sex);

     printf("\nXue Yuan:");

     gets(this1->xibie);

     printf("\nJi Guan:");

     gets(this1->jiguan);

     n++;

     this1->next=NULL;

  printf("Are you sure input :Y/N?");

    if(getch()=='n')

     main();

   else

     new1name();

   }

} */

      void new1name(void)

   { int key;

   char a;

   window(1,2,80,25);

     textbackground(BLUE);

    clrscr();

     cprintf("Are you sure input?");

   key=get_key();

 while(key!=key_alt_x && key!=key_esc)

  {

   window(1,2,80,25);

     textbackground(BLUE);

     clrscr();

     new1=new2=(struct student *)malloc(sizeof(struct student));

     if(head==NULL)

     head=new1;

     else

    { this1=head;

    while(this1->next!=NULL)

    this1=this1->next;

    this1->next=new1;

    }

    this1=new1;

     printf("\nRecord%d:",n+1);

     printf("\nXing Ming:");

     gets(&a);

     gets(this1->name);

     printf("\nXue Hao:");

     gets(numstr);

     this1->num=atol(numstr);

     printf("\nNian Ling:");

     gets(this1->age);

     printf("\nXing Bie:");

     gets(this1->sex);

     printf("\nXue Yuan:");

     gets(this1->xibie);

     printf("\nJi Guan:");

     gets(this1->jiguan);

     n++;

     this1->next=NULL;

  printf("Are you sure input :Y/N?");

    if(getch()=='n')

     main();

   else

     new1name();

   }

   main();

}

   /*listallhanshuyonglaishuchuquanburenyuandejilu*/

   void listall(void)

   {

   int i=0;

   window(1,2,80,25);

textbackground(1);

textcolor(0);

clrscr();

   if(head==NULL)

   {cprintf("\nempty list .\n");return;

   }

   this1=head;

   do

   { cprintf("\nrecord number %d\n",++i);

   cprintf("   name:%s",this1->name);

   cprintf("   number:%ld",this1->num);

   cprintf("   age:%s",this1->age);

   cprintf("   sex:%s",this1->sex);

   cprintf("   xibie:%s",this1->xibie);

   cprintf("   jiguan:%s",this1->jiguan);

   cprintf("   chinese:%6.2f",this1->score.chinese);

   cprintf("   english:%6.2f",this1->score.english);

   cprintf("   math:%6.2f",this1->score.math);

   cprintf("   total:%6.2f",this1->score.total);

   cprintf("   ave:%6.2f\n",this1->score.ave);

   this1=this1->next;

   //this1->next=NULL;

   }while(this1!=NULL);

   getch();

   main();

   }

   //*insert

   struct student *insert(struct student *head,struct student *stud)

   {

   struct student *p0,*p1,*p2;

   p1=head;

   p0=stud;

   if(head==NULL)

   {head=p0;p0->next=NULL;}

   else

   while((p0->num>p1->num) && (p1->next!=NULL))

   {p2=p1;p1=p1->next;}

   if(p0->num<=p1->num)

   {if(head==p1)

   {head=p0;

   p0->next=p1;

   }

   else

   {p2->next=p0;

   p1->next=p1;

   }

   }

   else

   {p1->next=p0;

   p0->next=NULL;

   }

   n=n+1;

   return(head);

   }

    void wfile(void)

   {FILE *fptr;

    char a[10];

   if(n<1)

   {printf("\nCan't write empty list.\n");return;}

  // char a[10];

   cprintf("Please input filename:");

   gets(a);

   if((fptr=fopen(a,"wb"))==NULL)

   printf("\nCant' open file agents.rec\n");

   else

   {this1=head;

 while(this1->next!=NULL)

   {fwrite(this1,sizeof(struct student ),1,fptr);

   this1=this1->next;

   }

  // fwrite(this1,sizeof(struct student ),1,fptr);

   fclose(fptr);

   printf("\nFile of %d records have writen.\n",n);

   }

   getch();

   main();

   }

   //*rfile

   void rfile(void)

   {FILE *fptr;

   char b[10];

   cprintf("Please input filename:");

   gets(b);

   if((fptr=fopen(b,"rb"))==NULL)

   printf("\nCan't open file %s\n",b);

   else

   {n=0;

   head=(struct student *)malloc(sizeof(struct student));

   this1=head;

   fread(this1,sizeof(struct student),1,fptr);

   n++;

   while(1)

   {if(feof(fptr))

   {fclose(fptr);

   this1->next=NULL;printf("\nFile read.Total agents is now %d.\n",n);

getch();   main() ;

   }else{

   this1->next=(struct student *)malloc(sizeof(struct student));

      this1=this1->next;

  fread(this1,sizeof(struct student),1,fptr);

   n++;

   }}  this1->next=NULL;

  //fread(this1,sizeof(struct student),1,fptr);

  //n++;

   fclose(fptr);

   printf("\nFile read.Total agents is now %d.\n",n);

   }

   getch();

   main();

   }

    //*wfile

   /*void wfile(void)

   {char a[10];

   FILE *fptr;

   if(n<1)

   {printf("\nCan't write empty list.\n");return;}

   cprintf("Please input filename:");

   gets(a);

   if((fptr=fopen(a,"wb"))==NULL)

   {cprintf("\nCant' open file ");puts(a);cprintf("\n");

   }

   else

   {fwrite(agent,sizeof(struct student ),n,fptr);

   fclose(fptr);

   printf("\nFile of %d records writen.\n",n);

   }

   getch();

   main();

   }

   //*rfile

   void rfile(void)

   {FILE *fptr;

   char a[10];

   cprintf("Please input filename:");

   gets(a);

   if((fptr=fopen(a,"wb"))==NULL)

   {cprintf("\nCan't open file ");puts(a);

   }

   else

   {while(fread(&agent[n],sizeof(agent[n]),1,fptr)==1)

   n++;

   fclose(fptr);

   printf("\nFile read.Total agents is now %d.\n",n);

   }

   getch();

   main();

   } */

    //*cjlr

   void cjlr(void)

   {struct student *p1;

   long num;  char ddd[5];

   char ccc[5];

   window(1,2,80,25);

   textbackground(BLUE);

   clrscr();

   p1=head;

   printf("input the student' number:");

   scanf("%ld",&num);

   if(head==NULL)

   {

   printf("\nlist null!\n");

   }

   p1=head;

   while(num!=p1->num && p1->next!=NULL)

   {p1=p1->next;}

   if(p1->num==num)

   {printf("chinese:");

   scanf("%f",&p1->score.chinese);

   // gets(ccc);printf("\n");

   // p1->score.chinese=atof(ccc);

   printf("english:");

    scanf("%f",&p1->score.english);

   // gets(numstr);

   //p1->score.english=atof(numstr);

   //getch();

    printf("math:");

   scanf("%s",ddd);

  // gets(ddd);

  p1->score.math=atof(ddd);

   p1->score.total=p1->score.chinese+p1->score.english+p1->score.math;

   p1->score.ave=(p1->score.chinese+p1->score.english+p1->score.math)/3.0;

   }

   getch();

   main();

   }

   //*cjlr

   /*void cjlr(void)

   {struct student *p1;

   long num;  char ddd[4];

   window(1,2,80,25);

   textbackground(BLUE);

   clrscr();

   p1=head;

   printf("input the student' number:");

   scanf("%ld",&num);

   if(head==NULL)

   {

   printf("\nlist null!\n");

   }

   p1=head;

   while(num!=p1->num && p1->next!=NULL)

   {p1=p1->next;}

   if(p1->num==num)

   {printf("chinese:");

    scanf("%f",p1->score.chinese);

    //gets(numstr);

   //p1->score.chinese=atof(numstr);

   //getch();

   printf("english:");

    scanf("%f",p1->score.english);

    //gets(numstr);

   //p1->score.english=atof(numstr);

  // getch();

    printf("math:");

   //scanf("%f",p1->score.math);

   gets(ddd);

   p1->score.math=atof(ddd);

   p1->score.ave=(p1->score.chinese+p1->score.english+p1->score.math)/3.0;

   getch();

   }

   getch();

   main();

   } */

   //*del

   void del()

   {struct student *p1,*p2;

   long num;

    window(1,2,80,25);

   textbackground(BLUE);

   clrscr();

   printf("input the del student' number:");

   scanf("%ld",&num);

   if(head==NULL)

   {

   printf("\nlist null!\n"); exit(1);

   }

   p1=head;

   while(num!=p1->num && p1->next!=NULL)

   {p2=p1;p1=p1->next;

   }

   if(num==p1->num)

   {if(p1==head) head=p1->next;

   else

   p2->next=p1->next;

   printf("the %ld message have del\n",num);

   n=n-1;

   }

   else

   printf("No find %ld!\n",num);

   getch();

   main();

   }

   //

   void cjtj(void)

   {struct student *p;

   for(p=head;p!=NULL;p=p->next)

    { p->score.total=p->score.chinese+p->score.english+p->score.math;

      p->score.ave=p->score.total/3.0;

    }

   }

    //

    void cjpx(void)

    {

     struct student *p,*p1;

     int i,j,t;

     float temp;

     for(i=0;i<n;i++)

     {

 p=head;

 p1=p->next;

 if(p->score.total<p1->score.total)

   {temp=p->score.total;

    p->score.total=p1->score.total;

    p1->score.total=temp;

   }

  }

     }

     //

     void cxxs(void)

     { struct student *p;

     char name1[20];

     window(1,2,80,25);

      textbackground(BLUE);

      clrscr();

      printf("shu ru yao cha xun de xue sheng de xing ming:");

      gets(name1);

      for(p=head;p!=NULL;p=p->next)

       {if(strcmp(p->name,name1)==0)

       {printf("xingming:%s\n",p->name);

 printf("xuehao:%ld\n",p->num);

 printf("nianling:%s\n",p->age);

 printf("xingbie:%s\n",p->sex);

 printf("xibie:%s\n",p->xibie);

 printf("jiguan:%s\n",p->jiguan);

       }

      } getch();

   main();

     }

     /*chaxunchengji*/

     void cxcj(void)

     {  struct student *p;

 char name2[20]; int i;

 window(1,2,80,25);

 textbackground(BLUE);

 clrscr();

 printf("shu ru yao cha xu de xue sheng de xingming:");

 gets(name2);

 for(p=head;p!=NULL;p=p->next)

  {if(strcmp(p->name,name2)==0)

    {printf("xingming:%s\n",p->name);

     printf("chinese:%6.2f\n",p->score.chinese);

     printf("english:%6.2f\n",p->score.english);

     printf("math:%6.2f\n",p->score.math);

     printf("total:%6.2f\n",p->score.total);

     printf("ave:%6.2f\n",p->score.ave);

     }

    }getch();

   main();

    }

/*dayingmugexueshen*/

void list(void)

{  char name3[20];

   int i=0;

   window(1,2,80,25);

   textbackground(BLUE);

   clrscr();

   printf("shu ru yao da ying de xue sheng xingming:");

   gets(name3);

   if(head==NULL)

    { printf("\nempty list.\n");

    return;

    }

   for(this1=head;this1!=NULL;this1=this1->next)

   {

     if(strcmp(this1->name,name3)==0)

     {printf("\nnrecord number %d\n",++i);

      printf("xingmming:%s\n",this1->name);

      printf("xuehao:%ld\n",this1->num);

      printf("nianling:%d\n",this1->age);

      printf("xingbie:%s\n",this1->sex);

      printf("xueyuan:%s\n",this1->xibie);

      printf("jiguan:%s\n",this1->jiguan);

      printf("chinese:%6.2f\n",this1->score.chinese);

      printf("english:%6.2f\n",this1->score.english);

      printf("math:%6.2f\n",this1->score.math);

      printf("total:%6.2f\n",this1->score.total);

      printf("ave:%6.2f\n",this1->score.ave);

      }

    } getch();

   main();

    }

分享给你的朋友吧:

i贴吧 

新浪微博

腾讯微博

QQ空间

人人网

豆瓣

MSN

对我有帮助

4

回答时间:2007-9-6 10:28 | 我来评论 

TA求助 

回答者: denning | 四级 

擅长领域: C/C++ VC++ 

参加的活动: 暂时没有参加的活动 

相关内容 

2010-6-29 学生信息管理系统 c语言 

2010-7-19 求学生信息管理系统。C语言的!!!!!急!急!急!急!!!! 

2010-6-22 学生信息管理系统(C程序) 

2010-3-23 学生信息管理系统 C语言高手求救 4 

2009-2-28 求 学生信息管理系统 C程序源代码 

更多关于c语言 学生管理系统的问题>> 

查看同主题问题: 学生信息管理系统 语言版 

等待您来回答

1回答帮个忙 我急求 用C语言做一个学生信息管理系统 存储方式 数组 链表 文...

1回答10c语言---城区古树名木信息管理系统

1回答10基于C++语言的企业信息管理系统,可以打包成C/S结构的。主要模块:用...

0回答c语言程序设计 客户信息管理系统的完整版答案 谢谢

0回答我现在在做C语言的家庭财务管理系统,只做第一个模块就卡住了,请问我...

0回答5信息系统分析与设计 试题库系统

3回答20本人想考地理信息专业研究生,对于专业把握不稳,希望大家可以指点下。

2回答100考研 管理科学与工程 合工大PK苏州大学

更多等待您来回答的问题>>

其他回答 共1条 

#include <iostream.h>  // cin 及 cout

#include <stdlib.h>    

#include <malloc.h>       // 用到申请内存函数 malloc() 和释放内存函数 free()

#include <string.h>    // 字符串处理

#include <stdio.h>    // 文件操作(读文件)

struct address       /*家庭地址*/

  char city[10];     /*城市*/

  char town[10];        /*县城*/

  char village[10];    /*乡镇*/

};

struct telephone       /*联系方式*/

{

  char SJ[50];      /*手机*/

  char JD[30];      /*家庭电话*/

  char XD[30];      /*学校电话*/

};

struct person     /*个人信息*/

{  

  char name[20];          /*名字*/ 

  char sex[10] ;          /*性别*/ 

  char MZ[16];   /*民族*/

  char GJ[17];   /*国籍*/  

  char XL[19];   /*学历*/

}; 

struct score      //成绩

{

  char num[20];    //学号

  char english[20];

  char chinese[20];

  char math[20];

  char physics[20];

};

typedef struct linknode   //定义节点的类型

{

  char address[100];  //地址

  char birthday[100];  //出生日期

  struct score sc;  //成绩

  struct person pe;  //个人信息

  struct telephone te; //联系方式

  bool flag;

  struct linknode* next;

}nodetype;

class List

{

 nodetype* head;

public:

 List();

 List::~List();

 linknode* creatlist(int);    //创建链表

 int listlen();       //返回链表长度

 nodetype* findnode(int);    //通过查找序号返回节点的指针

 nodetype* find(char c[]);    //通过查找姓名返回节点的指针

 int find2(char c[]);     //通过查找姓名返回节点的序号

 nodetype* insnode(int);     //插入节点

 void delnode(int);      //删除节点

 nodetype* load();      //初始化:从外部读入数据

 void readstr(FILE *f,char *string);  //读行函数

 bool check(char *a, char *b);   //对比两个字符串是否相等

 void help();       //显示帮助菜单

 void editperson(nodetype*);    //编辑个人说明

 void editscore(nodetype*);    //编辑学科成绩

 void edittelephone(nodetype*);   //编辑联系方式

 void dispname();      //显示所有学生姓名

 void dispnode(nodetype* p);    //显示一个学生的所有信息

 void dispperson(nodetype*);    //显示一个学生的个人说明

 void dispscore(nodetype*);    //显示一个学生的学科成绩

 void disptelephone(nodetype*);   //显示一个学生的联系方式

};

bool List::check(char *a, char *b)  //对比两个字符串是否相等

{

 int i;

 int j=strlen(b);

 for(i=0; i<j; i++)

 {

  if(*a==*b)

  {

   a++;

   b++;

  }

  else

   return 0;

 }

 return 1;

}

nodetype* List::creatlist (int n)       //创建链表

{

 nodetype *h=NULL, *s, *t;

 int i=1;

 for(int j=0; j<n; j++)

 {

  if(i==1)            //创建第一个节点

  {

   h=(nodetype*)malloc(sizeof(nodetype));

   h->next=NULL;

   t=h;

  }

  else                 //创建其余节点

  {

   s=(nodetype*)malloc(sizeof(nodetype));

   s->next=NULL;

   t->next=s;

   t=s;            //t 始终指向生成的单链表的最后一个节点

  }

  i++;

 }

 head=h;

 return h;

}

void List::readstr(FILE *f,char *string)

 do

 {

         //①: 先读入一行文本

  fgets(string, 255, f);  //fgets(): 从文件 读入长度为 255-1 的字符串

         //    并存入到 string 

 } while ((string[0] == '/') || (string[0] == '\n'));

 return;

}

nodetype* List::load()

{

 FILE *fp;

 nodetype *p;

 char c[255];

 int num;

 if((fp=fopen("student.txt", "r"))==NULL)

 {

  cout<<"打开文件失败"<<endl;

  return 0;

 }

 readstr(fp, c);

 sscanf(c, "The Length Of Link: %d", &num);  //获取链表长度

 p=creatlist(num);        //创建链表

 for(int i=0; i<num; i++)

 {

  readstr(fp, c);

  strcpy(p->address, c);

  readstr(fp, c);

  strcpy(p->birthday, c);

  readstr(fp, c);

  strcpy(p->sc.num, c);

  readstr(fp, c);

  strcpy(p->sc.chinese, c);

  readstr(fp, c);

  strcpy(p->sc.english, c);

  readstr(fp, c);

  strcpy(p->sc.math, c);

  readstr(fp, c);

  strcpy(p->sc.physics, c);

  readstr(fp, c);

  strcpy(p->pe.name, c);

  readstr(fp, c);

  strcpy(p->pe.sex, c);

  readstr(fp, c);

  strcpy(p->pe.GJ, c);

  readstr(fp, c);

  strcpy(p->pe.MZ, c);

  readstr(fp, c);

  strcpy(p->pe.XL, c);

  readstr(fp, c);

  strcpy(p->te.SJ, c);

  readstr(fp, c);

  strcpy(p->te.JD, c);

  readstr(fp, c);

  strcpy(p->te.XD, c);

  p=p->next;

 }

 fclose(fp);

 return p;

}

void List::dispnode(nodetype* p)  //显示一个学生的所有信息

{

 if(p!=NULL)

 {

  dispperson(p);

  dispscore(p);

  disptelephone(p);

 }

}

void List::dispname()  //显示所有学生姓名

{

 nodetype* p=head;

 cout<<"现有的学生:  "<<endl;

 if(p==NULL)

  cout<<"没有任何学生数据"<<endl;

 while(p!=NULL)

 {

  cout<<"姓名: "<<p->pe.name;

  p=p->next;

 }

}

int List::listlen()       //返回链表长度

{

 int i=0;

 nodetype* p=head;

 while(p!=NULL)

 {

  p=p->next;

  i++;

 }

 return i;

}

nodetype* List::findnode (int i)      //通过查找序号返回节点的指针

{

 nodetype* p=head;

 int j=1;

 if( i>listlen()||i<=0 )          // i 上溢或下溢

  return NULL;

 else

 {

  while( p!=NULL &&  j<i )    //查找第 个节点并由 指向该节点

  {

   j++;

   p=p->next;

  }

  return p;

 }

}

nodetype* List::find(char c[])      //通过查找姓名返回节点的指针

{

 nodetype* p=head;

 int j=1;

 strcat(c, "\n");    //从外部读入的字符串末尾都带了一个换行符

 while( p!=NULL &&  !(check(c, p->pe.name)))    //查找第 个节点并由 指向该节点 

 { 

  j++; 

  p=p->next;

 }

 return p;

}

int List::find2(char c[])      //通过查找姓名返回节点的序号

{

 nodetype* p=head;

 int j=1;

 strcat(c, "\n");    //从外部读入的字符串末尾都带了一个换行符

 while( p!=NULL &&  !(check(c, p->pe.name)))    //查找第 个节点并由 指向该节点 

 { 

  j++;

  p=p->next;

 }

 return j;

}

nodetype* List::insnode(int i)

{

 nodetype *h=head, *p, *s;

 s=(nodetype*)malloc(sizeof(nodetype));    //创建节点 s

 s->next=NULL;

 if(i==0)           //i=0 时 作为该单链表的第一个节点

 {

  s->next = h;

  h=s;           //重新定义头节点

 }

 else

 {

  p=findnode(i);       //查找第 个节点,并由 指向该节点

  if(p!=NULL)

  {

   s->next=p->next;

   p->next=s;

  }

  else cout<<"输入的 值不正确"<<endl;

 }

 head=h;

 return s;

}

void List::delnode(int i)   //删除第 个节点

{

 nodetype *h=head, *p=head, *s;

 int j=1;

 if(i==1)       //删除第一个节点

 {

  h=h->next;

  free(p);

 }

 else

 {

  p=findnode(i-1);     //查找第 i-1 个节点,并由 指向这个节点

  if(p!=NULL && p->next!=NULL)

  {

   s=p->next;      // s 指向要删除的节点

   p->next=s->next;

   free(s);

  }

  else

   cout<<"输入的 值不正确"<<endl;

 }

 head=h;

}

void List::editperson(nodetype* p)

{

 char c[100];

 cout<<"请输入姓名: "<<endl;

 cin>>c;

 strcat(c, "\n");

 strcpy(p->pe.name, c);

 cout<<"请输入性别:"<<endl;

 cin>>c;

 strcat(c, "\n");

 strcpy(p->pe.sex, c);

 cout<<"请输入生日(格式举例:1982-1-1: "<<endl;

 cin>>c;

 strcat(c, "\n");

 strcpy(p->birthday, c);

 cout<<"请输入民族:"<<endl;

 cin>>c;

 strcat(c, "\n");

 strcpy(p->pe.MZ, c);

 cout<<"请输入国籍:"<<endl;

 cin>>c;

 strcat(c, "\n");

 strcpy(p->pe.GJ, c);

 cout<<"请输入学历:"<<endl;

 cin>>c;

 strcat(c, "\n");

 strcpy(p->pe.XL, c);

 cout<<"请输入家庭住址(例如:广西玉林市解放路11)"<<endl;

 cin>>c;

 strcat(c, "\n");

 strcpy(p->address, c);

 cout<<"编辑个人信息完成!"<<endl;

 dispperson(p);

}

void List::editscore(nodetype* p)

{

 char a[50];

 cout<<"请输入学号: "<<endl;

 cin>>a;

 strcat(a, "\n");

 strcpy(p->sc.num, a);

 cout<<"请输入语文成绩: "<<endl;

 cin>>a;

 strcat(a, "\n");

 strcpy(p->sc.chinese, a);

 cout<<"请输入英语成绩: "<<endl;

 cin>>a;

 strcat(a, "\n");

 strcpy(p->sc.english, a);

 cout<<"请输入数学成绩: "<<endl;

 cin>>a;

 strcat(a, "\n");

 strcpy(p->sc.math, a);

 cout<<"请输入物理成绩: "<<endl;

 cin>>a;

 strcat(a, "\n");

 strcpy(p->sc.physics, a);

 cout<<"编辑学科成绩完成!"<<endl;

 dispscore(p);

}

void List::edittelephone(nodetype* p)

{

 char c[50];

 cout<<"请输入手机号码: "<<endl;

 cin>>c;

 strcat(c, "\n");

 strcpy(p->te.SJ, c);

 cout<<"请输入家庭电话号码: "<<endl;

 cin>>c;

 strcat(c, "\n");

 strcpy(p->te.JD, c);

 cout<<"请输入学校电话号码: "<<endl;

 cin>>c;

 strcat(c, "\n");

 strcpy(p->te.XD, c);

 cout<<"编辑联系方式完成!"<<endl;

 disptelephone(p);

}

void List::dispperson(nodetype* p)

{

 cout<<"姓名:  "<<p->pe.name;

 cout<<"性别:  "<<p->pe.sex;

 cout<<"民族:  "<<p->pe.MZ;

 cout<<"国籍:  "<<p->pe.GJ;

 cout<<"学历:  "<<p->pe.XL;

 cout<<"出生日期: "<<p->birthday;

 cout<<"家庭住址: "<<p->address;

}

void List::dispscore(nodetype* p)

{

 cout<<"学号:  "<<p->sc.num;

 cout<<"语文成绩: "<<p->sc.chinese;

 cout<<"英语成绩: "<<p->sc.english;

 cout<<"数学成绩: "<<p->sc.math;

 cout<<"物理成绩: "<<p->sc.physics;

}

void List::disptelephone(nodetype* p)

{

 cout<<"手机号码是: "<<p->te.SJ;

 cout<<"家庭电话是: "<<p->te.JD;

 cout<<"学校电话是: "<<p->te.XD;

}

void List::help()

{

 cout<<endl<<endl;

 cout<<"*********************************************************"<<endl;

 cout<<"1:   编辑个人信息"<<endl;

 cout<<"2:   编辑学科成绩"<<endl;

 cout<<"3:   编辑联系方式"<<endl;

 cout<<"4:   显示个人信息"<<endl;

 cout<<"5:   显示学科成绩"<<endl;

 cout<<"6:   显示联系方式"<<endl;

 cout<<"7:   显示该学生所有信息"<<endl;

 cout<<"8:   帮助菜单"<<endl;

 cout<<"9:   返回上一级菜单"<<endl;

 cout<<"*********************************************************"<<endl;

}

List::~List()

{

 nodetype *pa=head, *pb;

 if(pa!=NULL)

 {

  pb=pa->next;

  if(pb==NULL)

   free(pa);

  else

  {

   while(pb!=NULL)

   {

    free(pa);

    pa=pb;

    pb=pb->next;

   }

   free(pa);

  }

 }

}

class Operater

{

 List L1;

public:    

 void Loop();       //主循环   

 void display();       //显示菜单 

};

List::List()

{

 head = NULL;

}

void Operater::display()

{

 cout<<endl<<endl;

 cout<<"**************************** 学生管理系统 **************************"<<endl;

 cout<<"1:   添加一个学生信息"<<endl;

 cout<<"2:   删除一个学生信息"<<endl;

 cout<<"3:   显示所有学生的姓名"<<endl;

 cout<<"4:   根据姓名显示单个学生所有信息"<<endl;

 cout<<"5:   根据姓名对单个学生进行编辑"<<endl;

 cout<<"6:   帮助菜单"<<endl;

 cout<<"7:   保存数据"<<endl;

 cout<<"0:   退出系统"<<endl;

 cout<<"********************************************************************"<<endl;

}

void Operater::Loop()

{

 List L1;        //List 对象

 char ch[20];

 nodetype *p, *head;   

 int i;      //存放节点序号

 p=L1.load(); //初始化:从外部读入数据创建链表

 head=p;

 display();

 while(1)

 {

  cout<<endl<<endl;

  cout<<"请输入选择(帮助选项--> 6 : "<<endl;

  cin>>ch;

  ////system("cls");

  if(L1.check(ch, "1"))

  {

   p=L1.insnode(0);

   head=p;

   //system("cls");

   cout<<endl;

   cout<<"************** 添加一个学生信息 ******************"<<endl;

   cout<<"下面输入个人信息: "<<endl;

   L1.editperson(p);

   cout<<"下面输入学科成绩: "<<endl;

   L1.editscore(p);

   cout<<"下面输入联系方式: "<<endl;

   L1.edittelephone(p);

  }

  if(L1.check(ch, "2"))

  {

   //system("cls");

   cout<<endl;

   cout<<"************** 删除一个学生信息 ******************"<<endl;

   L1.dispname();

   cout<<"请输入学生姓名: "<<endl;

   cin>>ch;

   i=L1.find2(ch);

   L1.delnode(i);

  }

  if(L1.check(ch, "3"))

  {

   //system("cls");

   cout<<endl;

   cout<<"************** 显示所有学生姓名 ******************"<<endl;

   L1.dispname();

  }

  if(L1.check(ch, "4"))

  {

   //system("cls");

   cout<<endl;

   cout<<"************** 根据姓名显示单个学生所有信息 ******************"<<endl;

   L1.dispname();

   cout<<"请输入学生姓名: "<<endl;

   cin>>ch;

   p=L1.find(ch);

   L1.dispnode(p);

  }

  if(L1.check(ch, "6"))

  {

   display();

  }

  if(L1.check(ch, "7"))  //保存数据

  {

   FILE *fp;

   if((fp=fopen("student.txt", "w"))==NULL)

   {

    cout<<"打开文件失败"<<endl;

    return;

   }

   int i;

   char t[255];

   //将 L1.listlen() 赋予字符串中的数字

   sprintf(t, "The Length Of Link: %d\n", L1.listlen()); 

   fputs(t, fp);

   strcpy(t, "\n");

   fputs(t, fp);

   p=L1.findnode(1);    //将链表头指针赋予 p

   for(i=0; i<L1.listlen(); i++)

   {

    fputs(p->address, fp);  //输出地址

    fputs(p->birthday, fp);  //输出生日

    fputs(p->sc.num, fp);  //输出学号

    fputs(p->sc.chinese, fp); //输出语文成绩

    fputs(p->sc.english, fp); //输出英语成绩

    fputs(p->sc.math, fp);  //输出数学成绩

    fputs(p->sc.physics, fp); //输出物理成绩

    fputs(p->pe.name, fp);  //输出姓名

    fputs(p->pe.sex, fp);  //输出性别

    fputs(p->pe.GJ, fp);  //输出国籍

    fputs(p->pe.MZ, fp);  //输出民族

    fputs(p->pe.XL, fp);  //输出学历

    fputs(p->te.SJ, fp);  //输出手机

    fputs(p->te.JD, fp);  //输出家庭电话

    fputs(p->te.XD, fp);  //输出学校电话

    fputs(t, fp);

    p=p->next;

   }

   p=head;

   fclose(fp);

  }

  if(L1.check(ch, "5"))

  {

   char c[20];

   //system("cls");

   cout<<endl;

   cout<<"************** 根据姓名对单个学生进行编辑 ******************"<<endl;

   L1.dispname();

   cout<<"请输入学生姓名: "<<endl;

   cin>>c;

   p=L1.find(c);

   //system("cls");

   cout<<endl<<endl;

   cout<<"*********************************************************"<<endl;

   cout<<"1:   编辑个人信息"<<endl;

   cout<<"2:   编辑学科成绩"<<endl;

   cout<<"3:   编辑联系方式"<<endl;

   cout<<"4:   显示个人信息"<<endl;

   cout<<"5:   显示学科成绩"<<endl;

   cout<<"6:   显示联系方式"<<endl;

   cout<<"7:   显示该学生所有信息"<<endl;

   cout<<"8:   帮助菜单"<<endl;

   cout<<"9:   返回上一级菜单"<<endl;

   cout<<"*********************************************************"<<endl;

   while(1)

   {

    cout<<endl<<endl;

    cout<<"请输入选择(帮助选项--> 8 : "<<endl;

    cin>>c;

    //system("cls");

    if(L1.check(c, "1"))

    {

     //system("cls");

     cout<<endl;

     cout<<"************** 编辑个人信息 ******************"<<endl;

     L1.editperson(p);

    }

   

    else if(L1.check(c, "2"))

    {

     //system("cls");

     cout<<endl;

     cout<<"************** 编辑学科成绩 ******************"<<endl;

     L1.editscore(p);

    }

   

    else if(L1.check(c, "3"))

    {

     //system("cls");

     cout<<endl;

     cout<<"************** 编辑联系方式 ******************"<<endl;

     L1.edittelephone(p);

    }

   

    else if(L1.check(c, "4"))

    {

     //system("cls");

     cout<<endl;

     cout<<"************** 显示个人信息 ******************"<<endl;

     L1.dispperson(p);

    }

    else if(L1.check(c, "5"))

    {

     //system("cls");

     cout<<endl;

     cout<<"************** 显示学科成绩 ******************"<<endl;

     L1.dispscore(p);

    }

    else if(L1.check(c, "6"))

    {

     //system("cls");

     cout<<endl;

     cout<<"************** 显示联系方式 ******************"<<endl;

     L1.disptelephone(p);

    }

    else if(L1.check(c, "7"))

    {

     //system("cls");

     L1.dispnode(p);

    }

    else if(L1.check(c, "8"))

    {

     //system("cls");

     L1.help();

    }

    else if(L1.check(c, "9"))

    {

     display();

     break; //用 break 跳出本循环,不要用 return return 是退出程序

    }

   }

  }

  else if(L1.check(ch, "0"))

   return;

 }

 return;

}

int main()

{

 system("color   3A"); 

 Operater chp;

 chp.Loop();

 return 0;

原创粉丝点击