當前位置:編程學習大全網 - 編程語言 - 學生成績管理系統 c語言TC環境運行

學生成績管理系統 c語言TC環境運行

#include"stdio.h"

#include"stdlib.h"

#include"conio.h"

#include"string.h"

#include"mem.h"

#include"alloc.h"

#include"ctype.h"

#define N 3

typedef struct student

{ char num[20];

char name[20];

char xi[10];

float sum;

float avg;

int order;

int score[N];

struct student *next;

}ST;

main()

{ int i;

ST *init(), *create(), *delete(),*insert(), *sort(), *load(), *head,*index();

void print(),search(),save(),append(),total(),copy();

int menu_select();

head=init();

for(;;)

{

switch(menu_select())

{ case 0:head=init();break;

case 1:head=create();break;

case 2:print(head);break;

case 3:search(head);break;

case 4:head=delete(head);break;

case 5:head=insert(head);break;

case 6:head=sort(head);break;

case 7:save(head);break;

case 8:head=load();break;

case 9:append();break;

case 10:head=index(head);break;

case 11:total(head);break;

case 12:copy();break;

case 13:exit(0);

}

}

}

int menu_select()

{ char *menu[]={"************MENU***************",

"0.init list",

"1.Enter list",

"2.print list",

"3.Search list",

"4.Delete a record from list",

"5.insert record to list",

"6.sort to make new file",

"7.save the file",

"8.load the file",

"9.append record to file" ,

"10.index on number",

"11.total on number",

"12.copy the file to new file",

"13.Quit" } ;

char s[3];int c; int i;

gotoxy(1,25);

printf("press any key enter menu......\n");

getch();

clrscr();

gotoxy(6,1);

textcolor(YELLOW);

textbackground(LIGHTGRAY);

gotoxy(16,2);

putch(0xc9);

for(i=1;i<46;i++)

putch(0xcd);

putch(0xbb);

for(i=3;i<20;i++)

{ gotoxy(16,i);putch(0xba);

gotoxy(62,i);putch(0xba);

}

gotoxy(16,20);putch(0xc8);

for(i=1;i<46;i++)

putch(0xcd);

putch(0xbc);

window(17,3,61,19);

textbackground(BLUE);

clrscr();

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

{ gotoxy(9,i+1);printf("%s",menu[i]);}

textbackground(BLACK);

window(1,1,80,25);

gotoxy(16,21);

do { printf("\n enter your choice(0~13):");

scanf("%s",&s);

c=atoi(s);

}while(c<0||c>13);

return c;

}

ST *init()

{

return NULL;

}

ST *create()

{ int i, s;

ST *head=NULL,*info;

for(;;)

{ info=(ST *)malloc(sizeof(ST));

if(!info)

{ printf("\n out of memery");

return NULL;

}

inputs("enter num:",info->num,12);

if(info->num[0]=='@') break;

inputs("enter name:",info->name,15);

inputs("enter xi:",info->xi,10);

printf("please input your score \n",N);

s=0;

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

{ do { printf("score %d:",i+1);

scanf("%d",&info->score[i]);

if(info->score[i]>100||info->score[i]<0)

printf("bad data ,repeat input\n");

}while(info->score[i]>100||info->score[i]<0);

s=s+info->score[i];

}

info->sum=s;

info->avg=(float)s/N;

info->order=0;

info->next=head;

head=info;

}

return (head);

}

inputs(char *prompt,char *s,int count)

{ char p[255];

do { printf(prompt);

scanf("%s",p);

if(strlen(p)>count) printf("\n too long \n");

}while(strlen(p)>count);

strcpy(s,p);

}

void print(ST *head)

{ int i=0,j=0;

ST *p,*q;

clrscr();

p=head;q=p;

printf("\n\n\n******************student******************\n");

printf("|rec|num | name |zhuanye |sc1|sc2|sc3| sum | avg |order|\n");

printf("|---|------------|---------------|--------|---|---|---|-------|------|-----|\n");

while(p!=NULL)

{ i++;

printf("|%3d|%-12s|%-15s|%8s|%3d|%3d|%3d|%3.2f |%3.2f |%5d|\n",i,

p->num,p->name,p->xi,p->score[0],p->score[1],p->score[2],

p->sum,p->avg,p->order);

p=p->next;

}

printf("******************end*********************\n");

printf("*************chongxiu*********************\n");

while(q!=NULL)

{ while(j<N)

{ if(q->score[j]>=60)

j++;

else

{ printf(" |%-12s|%-15s|%8s|di%2d ke|\n",q->num,q->name,q->xi,j+1);j++; }

}

q=q->next;j=0;

}

printf("******************end*********************\n");

}

void search(ST *head)

{ ST *p;

char s[15];

clrscr();

printf("please enter your name for search \n");

scanf("%s",&s);

p=head;

while(strcmp(p->name,s)&&p!=NULL)

p=p->next;

if(p==NULL)

printf("\n list no %s student\n",s);

else

{ printf("\n\n*************havefound***************\n");

printf("|num | name |zhuanye |sc1|sc2|sc3| sum | avg |order|\n");

printf("|----------|---------------|--------|---|---|---|-----|-----|-----|\n");

printf("|%10s|%-15s|%8s|%3d|%3d|%3d|%3.2f |%3.2f |%5d|\n",p->num,p->name,p->xi,

p->score[0],p->score[1],p->score[2],p->sum,p->avg,p->order);

printf("*****************end********************\n");

}

}

ST *delete(ST *head)

{ ST *p,*q;

char s[12];

clrscr();

printf("please delete num \n");

scanf("%s",&s);

p=q=head;

while(strcmp(p->num,s)&&p!=NULL)

{ q=p;

p=p->next;

}

if(p==NULL)

printf("\n list no %s student\n",s);

else

{ printf("\n\n*************havefound***************\n");

printf("|num | name | zhuanye |sc1|sc2|sc3| sum | avg |order|\n");

printf("|------------|---------------|---------|---|---|---|------|------|-----|\n");

printf("|%12s|%-15s|%8s|%3d|%3d|%3d|%4.2f |%4.2f |%5d|\n",p->num,p->name,p->xi,

p->score[0],p->score[1],p->score[2],p->sum,p->avg,p->order);

printf("*****************end********************\n");

getch();

if(p==head)

head=p->next;

else

q->next=p->next;

free(p);

printf("\n have delete num %s student \n",s);

printf("don't forget save \n");

}

return(head);

}

ST *insert(ST *head)

{ ST *p,*q,*info;

char s[12];

int s1,i;

printf("please enter location before the num \n");

scanf("%s",&s);

printf("\n please new record\n");

info=(ST *)malloc(sizeof(ST));

if(!info)

{ printf("\n out of memery");

return NULL;

}

inputs("enter num:",info->num,12);

inputs("enter name:",info->name,15);

inputs("enter xi:",info->xi,10);

printf("please input your score \n",N);

s1=0;

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

{ do { printf("score %d:",i+1);

scanf("%d",&info->score[i]);

if(info->score[i]>100||info->score[i]<0)

printf("bad data ,repeat input\n");

}while(info->score[i]>100||info->score[i]<0);

s1=s1+info->score[i];

}

info->sum=s1;

info->avg=(float)s1/N;

info->order=0;

info->next=NULL;

p=head;

q=head;

while(strcmp(p->num,s)&&p!=NULL)

{ q=p;

p=p->next;

}

if(p==NULL)

if(p==head)

head=info;

else

q->next=info;

else

if(p==head){ info->next=p;head=info; }

else{ info->next=p;q->next=info; }

printf("\n----have inserted %s student----\n",info->name);

printf("----don't forget to save----\n");

return (head);

}

ST *sort(ST *head)

{ int i=0;

ST *p,*q,*t,*h1;

h1=head->next;

head->next=NULL;

while(h1!=NULL)

{ t=h1;

h1=h1->next;

p=head;q=head;

while(t->sum<p->sum&&p!=NULL){q=p;p=p->next;}

if(p==q){t->next=p;head=t;}

else{t->next=p;q->next=t;}

}

p=head;

while(p!=NULL){i++;p->order=i;p=p->next;}

printf("sort success!!!!\n");

return head;

}

void save (ST *head)

{ FILE *fp; ST *p;

char outfile[10];

printf("enter outfile name,for example c:\\f1\\te.txt:\n");

scanf("%s",&outfile);

if((fp=fopen(outfile,"wb"))==NULL)

{ printf("can not open file \n");

exit(1);

}

printf("\n saving file.......\n");

p=head;

while(p!=NULL){fwrite(p,sizeof(ST),1,fp);p=p->next;}

fclose(fp);

printf("----- save success -----");

}

ST *load()

{ ST *p,*q,*head=NULL;

FILE *fp;char infile[10];

printf("enter infile name,for example c:\\f1\\te.txt:\n");

scanf("%s",&infile);

if((fp=fopen(infile,"rb"))==NULL)

{ printf("can not open file \n");

exit(1);

}

printf("\n-----loading file!-----\n");

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

if(!p){printf("out of memery!\n" );return head;}

head=p;

while(!feof(fp))

{ if(1!=fread(p,sizeof(ST),1,fp)) break;

p->next=(ST *)malloc(sizeof(ST));

if(!p->next){printf("out of memery\n");return head;}

q=p;p=p->next;

}

q->next=NULL;

fclose(fp);

printf("----you have success read data from file!---\n");

return head;

}

void append()

{ FILE *fp;

ST *info; int s1,i;

char infile[10];

printf("\nplease new record \n");

info=(ST *)malloc(sizeof(ST));

if(!info)

{ printf("\n out of memery ");

return;

}

inputs("enter num:",info->num,12);

inputs("enter name:",info->name,15);

inputs("enter xi:",info->xi,10);

printf("please input your score \n",N);

s1=0;

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

{ do { printf("score %d:",i+1);

scanf("%d",&info->score[i]);

if(info->score[i]>100||info->score[i]<0)

printf("bad data ,repeat input\n");

}while(info->score[i]>100||info->score[i]<0);

s1=s1+info->score[i];

}

info->sum=s1;

info->avg=(float)s1/N;

info->order=0;

info->next=NULL;

printf("enter infile name,for example c:\\f1\\te.txt:\n");

scanf("%s",infile);

if((fp=fopen(infile,"ab"))==NULL)

{ printf("can not open file \n");

exit(1);

}

printf("\n------appending record!-------\n");

if(1!=fwrite(info,sizeof(ST),1,fp))

{ printf("------file write error------");

return;

}

printf("------append success------\n");

fclose(fp);

}

ST *index(ST *head)

{ ST *p,*q,*t,*h1;

h1=head->next;

head->next=NULL;

while(h1!=NULL)

{ t=h1;

h1=h1->next;

p=head;

q=head;

while(strcmp(t->num,p->num)>0&&p!=NULL)

{ q=p;p=p->next;

}

if (p==q)

{ t->next=p;head=t; }

else { t->next=p;q->next=t;}

}

printf("index success!!\n");

return head;

}

void total(ST *head)

{ ST *p,*q;

char snum[14],qnum[14];

float s1,ave;

int i,m,n,k;

clrscr();

printf("\n\n***************total***************\n");

printf("----class----------sum-----------average-----\n");

p=head;

while(p!=NULL)

{ memcpy(snum, p->num, 10);

snum[10]='\0';

q=p->next;

s1=p->sum;

ave=p->avg;

i=1;

while(q!=NULL);

{ memcpy (qnum, q->num, 10);

qnum[10]='\0';

k=0,m=0,n=0;

if( while(k<10){ snum[m]=qnum[n];k++;})

{ s1+=q->sum;

ave+=q->avg;

i++;

q=q->next;

}

else

break;

}

printf("%s %10.2f %5.2f\n",snum,s1,ave/i);

if(q==NULL)

break;

else

p=q;

}

printf("----------------------------------------");

}

void copy ()

{ char outfile[10],infile[10];

FILE *oldfp,*newfp;

ST *p=NULL;

clrscr();

printf("enter infile name,for example c:\\f1\\te.txt:\n");

scanf("%s",infile);

if((oldfp=fopen(infile,"rb"))==NULL)

{ printf("can not open input file\n");

exit(0);

}

printf("enter outfile name,for example c:\\f1\\te.txt:\n");

scanf("%s",outfile);

if((newfp=fopen(outfile,"wb"))==NULL)

{ printf("can not open output file\n");

exit(0);

}

while(!feof(oldfp))

{ if(1!=fread(p,sizeof(ST),1,oldfp))

break;

fwrite(p,sizeof(ST),1,newfp);

}

fclose(oldfp);

fclose(newfp);

printf("you have success copy file!!!!!\n");

}

  • 上一篇:寧夏警官職業學院中專部官網師資怎麽樣
  • 下一篇:我是壹個英語菜鳥,能有什麽辦法壹步登天?
  • copyright 2024編程學習大全網