源程序.docx

上传人:b****4 文档编号:5463830 上传时间:2022-12-16 格式:DOCX 页数:15 大小:17.75KB
下载 相关 举报
源程序.docx_第1页
第1页 / 共15页
源程序.docx_第2页
第2页 / 共15页
源程序.docx_第3页
第3页 / 共15页
源程序.docx_第4页
第4页 / 共15页
源程序.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

源程序.docx

《源程序.docx》由会员分享,可在线阅读,更多相关《源程序.docx(15页珍藏版)》请在冰豆网上搜索。

源程序.docx

源程序

#include "stdio.h"

#include  "stdlib.h"

#include  "string.h"

#include  "conio.h"

#define HEADER1"  --------------------------STUDENT-----------------------------\n"

#define HEADER2"  |  number  |  name         |Comp|Math|Eng | sum  | ave  |mici|\n"

#define HEADER3"  |----------|---------------|----|----|----|------|------|----|\n"

#define FORMAT "  |%-10s|%-15s|%4d|%4d|%4d|%6d|%6.2f|%4d|\n"

#define DATA p->data.num,p->data.name,p->data.cgrade,p->data.mgrade,p->data.egrade,p->data.total,p->data.ave,p->data.mingci

#define END      "--------------------------------------------------------------\n"

int flag=0;

 typedef struct student

{

 char num[10];

 char name[15];

int cgrade;

int mgrade;

int egrade;

int total;

float ave;

int mingci;

};

typedef struct node

{

struct student data;

struct node *next;

}Node,*Link;

void menu();

void printfdata(Node *pp);

void printheader();

void Nofind();

Node *Locate(Link l,char findmess[],char nameornum[]);

void stringinput(char *t,int lens,char *notice);

int numberinput(char *notice);

void Add(Link l);

void Qur(Link l);

void Modify(Link l);

void Tongji(Link l);

void Sort(Link l);

void Save(Link l);

void Wrong();

void Disp(Link l);

void Del(Link l);

void Insert(Link l);

/***************************************************/

void main()

{

Link l;

FILE *fp;

int select;

char ch;

int count=0;

int flag=0;

Node *p,*r;

l=(Node*)malloc(sizeof(Node));

if(!

l)

 {

 printf("\n allocate memory faliue ");

 return;

}

l->next=NULL;

r=l;

fp=fopen("C:

\\student","ab+");

  if(fp==NULL)

  {

     printf("\n=====>can not open file!

\n ");

     exit(0);

  }

while(!

feof(fp))

{

  p=(Node*)malloc(sizeof(Node));

  if(!

p)

   {

     printf("memory malloc failure!

\n");

     exit(0);

}

if(fread(p,sizeof(Node),1,fp)==1)

{

p->next=NULL;

r->next=p;

r=p;

count++;

}

}

fclose(fp);

printf("\n=====>open file sucess,the total records number is:

%d.\n",count);

menu();

while(l)

{

system("cls");

menu();

p=r;

printf("\n        Please Enter your choice(0-9):

") ;

scanf("%d",&select);

if(select==0)

{if(flag==1)

{getchar();printf("\n=====>Whether save the modified record to file?

(y/n):

");

scanf("%c",&ch);

if(ch=='y'||ch=='Y')

Save(l);

}

printf("=====>thank you for useness!

");

getchar();

break;

}

switch(select)

{

case 1:

Add(l);break;

case 2:

Del(l);break;

case 3:

Qur(l);break;

case 4:

Modify(l);break;

case 5:

Insert(l);break;

case 6:

Tongji(l);break;

case 7:

Sort(l);break;

case 8:

Save(l);break;

case 9:

system("cls");Disp(l);break;

default:

Wrong();getchar();break;

}

}

}

/***************************************************/

void menu()

{

system("cls");

textcolor(10);

gotoxy(10,5);

cprintf("         The   Students'  Grade  Management  System \n");

gotoxy(10,8);

cprintf("     **************************Menu*************************\n");

gotoxy(10,9);

cprintf("     *   1    input    record        2  delect  record     *\n");

gotoxy(10,10);

cprintf("     *   3    search   record        4  modify  record     *\n");

gotoxy(10,11);

cprintf("     *   5    insert    record       6  count    record    *\n");

gotoxy(10,12);

cprintf("     *   7    sort      record       8   save    record    *\n");

gotoxy(10,13);

cprintf("     *   9   display   record        0   quit    system    *\n");

gotoxy(10,14);

cprintf("     ********************************************************\n");

}

/***************************************************/

void printfdata(Node *pp)

 {

Node* p;

p=pp;

 printf(FORMAT,DATA);

}

/***************************************************/

void Wrong()

{

printf("\n\n\n\n\n***********Eroor:

input has wrong!

press any key to continue**********\n");

 getchar();

}

/***************************************************/

void Nofind()

{

printf("\n=====>Not find this student!

\n");

  }

/****************************************************/

void Disp(Link l)

{

Node *p;

p=l->next;

if(!

p)

 {

printf("\n=====>Not studebt record!

\n");

 getchar();

return;

}

printf("\n\n");

printheader();

 while(p)

{

 printfdata(p);

p=p->next;

printf(HEADER3);

}

getchar();

}

/**************************************************

 **************************************************/

void printheader()

{  printf(HEADER1);fflush(stdin);

   printf(HEADER2);fflush(stdin);

   printf(HEADER3);fflush(stdin);

}

/****************************************************/

Node* Locate(Link l,char findmess[],char nameornum[])

{

Node *r;

if(strcmp(nameornum,"num")==0)

 {

r=l->next;

while(r)

 {

 if(strcmp(r->data.num,findmess)==0)

return r;

r=r->next;

}

}

else if(strcmp(nameornum,"name")==0)

{

r=l->next;

while(r)

{

if(strcmp(r->data.name,findmess)==0)

return r;

 r=r->next;

}

}

return 0;

}

/***************************************************/

void stringinput(char *t,int lens,char *notice)

{

char n[255];

 do

{

 printf(notice);

scanf("%s",n);

if(strlen(n)>lens)

printf("\n excced the required length!

\n");

}

while(strlen(n)>lens);

strcpy(t,n);

}

/***************************************************/

int numberinput(char *notice)

{

int t=0;

 do{

printf(notice);

scanf("%d",&t);

if(t>100||t<0)

printf("\n score must in [0,100]!

\n");

      }

while(t>100||t<0);

return t;

}

/***************************************************/

void Add(Link l)

{

Node *p,*r,*s;

char ch,flag=0,num[10];

 r=l;

s=l->next;

system("cls");

Disp(l);

while(r->next!

=NULL)

r=r->next;

while(l)

{

while(l)

{

stringinput(num,10,"input number(press'0'return menu):

");

flag=0;

if(strcmp(num,"0")==0)

{return;}

s=l->next;

while(s)

{

if(strcmp(s->data.num,num)==0)

{

flag=1;

break;

}

s=s->next;

}

if(flag==1)

{getchar();

printf("=====>The number %s is not existing,try again?

(y/n):

",num);

 scanf("%c",&ch);

 if(ch=='y'||ch=='Y')

continue;

else

return;

}

else

{break;}

}

p=(Node *) malloc(sizeof(Node));

if(!

p)

{

printf("\n allocate memory falure ");

return;

}

strcpy(p->data.num,num);

stringinput(p->data.name,15,"Name:

");

p->data.cgrade=numberinput("C language Score[0-100]:

");

p->data.mgrade=numberinput("Math Score[0-100]:

");

p->data.egrade=numberinput("English  Score[0-100]:

");

p->data.total=p->data.egrade+p->data.cgrade+p->data.mgrade;

p->data.ave=(float)(p->data.total/3);

p->data.mingci=0;

p->next=NULL;

r->next=p;

r=p;

flag=1;

}

return;

}

/***************************************************/

void Qur(Link l)

{

int select;

char searchinput[20];

Node *p;

if(!

l->next)

{

  system("cls");

  printf("\n=====>No student record!

\n");

  getchar();

  return;

}

system("cls");

printf("\n     =====>1 Search by number =====>2 Search by name\n ");

printf("       please choice[1,2]:

 ");

scanf("%d",&select);

if(select==1)

 {

   stringinput(searchinput,10,"input the existing student number:

");

p=Locate(l,searchinput, "num");

   if(p)

   {

     printheader();

     printfdata(p);

     printf(END);

     printf("press any key to return");

     getchar();

   }

else

 Nofind();

 getchar();

 }

else if(select==2)

{

     stringinput(searchinput,15,"input the existing student name:

");

     p=Locate(l,searchinput, "name");

     if(p)

    {

      printheader();

      printfdata(p);

      printf(END);

      printf("press any key to return");

      getchar();

    }

     else

  Nofind();

  getchar();

}

else

     Wrong();

     getchar();

}

/***********************************************/

void Del(Link l)

{

int sel;

Node *p,*r;

char findmess[20];

if(!

l->next)

{ system("cls");

  printf("\n=====>No student record!

\n");

  getchar();

  return;

}

system("cls");

Disp(l);

printf("\n      =====>1 Delete by number     =====>2 Delete by name\n ");

printf("     please choice[1,2]:

");

scanf("%d",&sel);

if(sel==1)

{

  stringinput(findmess,10,"input the existing student number:

");

  p=Locate(l,findmess,"num");

  if(p)

  {

r=l;

while(r->next!

=p)

 r=r->next;

r->next=p->next;

free(p);

printf("\n=====>delete success!

\n");

getchar();

flag=1;

  }

  else

Nofind();

getchar();

}

else if(sel==2)

{

stringinput(findmess,15,"input the existing student name");

p=Locate(l, findmess,"name");

if(p)

{

 r=l;

 while(r->next!

=p)

  r=r->next;

r->next=p->next;

free(p);

printf("\n==========>delete success!

\n");

getchar();

flag=1;

   }

   else

     Nofind();

     getchar();

}

else

 Wrong();

 getchar();

}

/****************************************************/

void Modify(Link l)

{

Node *p;

char findmess[20];

if(!

l->next)

{ system("cls");

  printf("\n==========>No student record!

\n");

  getchar();

  return;

}

system("cls");

printf("modify student recorder");

Disp(l);

stringinput(findmess,10," the existing student number:

");

p=Locate(l,findmess,"num");

if(p)

{

  printf("Number:

%s,\n",p->data.num);

  printf("Name:

%s,",p->data.name);

  stringinput(p->data.name,15,"input new name:

");

  printf("C language score:

%d,",p->data.cgrade);

  p->data.cgrade=numberinput("C language Score[0-100]:

");

  printf("Math score:

%d,",p->data.mgrade);

  p->data.mgrade=numberinput("Math Score[0-100]:

");

  printf("English score:

%d,",p->data.egrade);

   p->data.egrade=numberinput("English Score[0-100]:

");

  p->data.total=p->data.egrade+p->data.cgrade+p->data.mgrade;

  p->data.ave=(float)(p->data.total/3);

  p->data.mingci=0;

  printf("\n=====

\n");

  Disp(l);

  flag=1;

}

else

  Nofind();

  getchar();

}

/*************************************************/

void Insert(Link l)

{

  Link p,v,newinfo;

  char ch,num[10],s[10];

  int flag=0;

  v=l->next;

  system("cls");

  Disp(l);

  while

(1)

  { stringinput(s,10,"please input insert location  after the Number:

");

flag=0;v=l->next;

while(v)

{

 if(strcmp(v->data.num,s)==0) {flag=1;break;}

     v=v->next;

}

 if(flag==1)

   break;

else

   {   getchar();

   printf("\n========>Th

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1