C语言程序设计上机实训报告单
第二篇:C实习程序2
#include <stdio.h>
#include <conio.h>
#include<string.h>
#include<stdlib.h>
int COUNT=0;
typedef struct athlete
{
char name[20];
int sex;
char univ[20];
char mathname[20];
int range;
}ATH;
ATH at[50];
typedef struct university
{
char name[20];
int Mprog;
int Wprog;
int score;
}UNI;
UNI uu[10];
typedef struct program
{
char name[20];
int place[5][2];
}PRO;
PRO pp[10];
void main(); void Information(); void save(int n); void Exit(void); int LoadUni(); void printn(int n); char menu(void); int LoadAth();
void printm(int m); int LoadProg(); void Readin(); void SearchRecord(); char RearchMenu(void); void orderBYscore(); void PrintUni();
void printBack(); void printAth(ATH*nowReA); void printUni(UNI*nowReU); void printPro(PRO*nowReP); UNI*BrowUnInf(char name);
ATH*SearAtInf(char name); PRO*SearPrInf(char name);
main()
{
while(1)
{ switch(menu())
{
case 1:Information();break;
case 2:Readin();break;
case 3:SearchRecord();break;
case 4:PrintUni();
case 5:exit(0);break;
default:printf("error!\n");
getch();
}
printf("\nPress anykey to main menu:");
}
}
void Information()
{int n,m;
n=LoadUni(); printn(n);
m=LoadAth(); printm(m);
LoadProg();
}
int loadUni()
{
FILE *fp; int i;
if((fp=fopen("UNIVERSITY.TXT","r"))==NULL)
{
printf("\n Cannot open file\n");
return 0;
}
for(i=0;!feof(fp);i++)
fscanf(fp,"%s %s %d",&uu[i].name,&uu[i].prog,&uu[i].score);
fclose(fp); return(i);
}
void printn(int n)
{ int i;
for(i=0;i<n;i++)
printf("%s%d%d%d\n",&uu[i].name,&uu[i].Wprog,&uu[i].Mprog,&uu[i].score); getch();
}
int loadAth()
{
FILE *fp; int i,j,k;
if((fp=fopen("ATHLETE.TXT","r"))==NULL)
{
printf("\nCannot open file\n");
return 0;
}
for(i=0;!feof(fp);i++)
fscanf(fp,"%s%d%s%s%d%d",&at[i].name,
&at[i].sex,&at[i].univ,&at[i].mathname,&at[i].range,&at[i].score); fclose(fp); return(i);
}
void printm(int m)
{
int i; for(i=0;i<m;i++)
{
printf("%s%d%s%s%d",&at[i].name,&at[i].sex,&at[i].univ,
&at[i].mathname,&at[i].range);
}
getch();
}
int LoadProg()
{
FILE *fp; int i,j;
if((fp=fopen("PROGRAM.TXT","r"))==NULL)
{
printf("\nCannot open file\n");
return 0;
}
for(i=0;!feof(fp);i++)
fscanf(fp,"%s%d",&pp[i].name,&pp[i].place);
fclose(fp); return(i);
}
void Exit()
{
char c;
printf(" Do you want to exit ? (y:exit! else:return!)"); c=getch(); printf("%c",c);
if(c=='y'||c=='Y') exit(0);
else return ;
}
void Readin()
{ int i,j;
for(i=0;i<50;i++)
{ printf("\nInput the place (1-15):[ ]");
scanf("%d",&at[i].range);
for(j=0;j<10;j++)
{
if(strcmp(at[i].univ,uu[j].name)==0)
{ if(at[i].sex==0) uu[j].Wprog+=1; else uu[j].Mprog+=1; switch(at[i].range)
{
case 1:uu[j].score+=7;break;
case 2:uu[j].score+=5;break;
case 3:uu[j].score+=3;break;
case 4:uu[j].score+=2;break;
case 5:uu[j].score+=1;break;
}
}
}
return;
}
}
void save(int n)
{
FILE *fp; int i;
if((fp=fopen("ATHLETE.TXT","wb"))==NULL)
{
printf("\n Cannot open file\n");
return NULL;
}
for(i=0;i<n;i++)
{
if(fwrite(&at[i],sizeof(ATH),1,fp)!=1)
printf("file write error\n");
}
fclose(fp);
}
void SearchRecord(void)
{
ATH*nowReU;UNI*nowReA;PRO*nowReP;
char name[20]; int n;
while(1)
{
n=RearchMenu();
switch(n)
{
case 1:cprintf("Input name of univeristy for searching:");
scanf("%s",&name);
nowReU=BrowUnInf(*name); break;
case 2:cprintf("Input name of athlete for searching:");
scanf("%s",&name);
nowReA=SearAtInf(*name); break;
case 3:cprintf("Input name of program for searching:");
scanf("%s",&name);
nowReP=SearPrInf(*name); break;
case 4:menu();
}
}
}
char RearchMenu(void)
{ int n;
printf("\n\n\n");
puts("\t\t***^__^ Welcome to load sports system! ^__^***\n"); puts("\t\t*************************MENU*************************\n"); puts("\t\t******** 1.search university information **********\n"); puts("\t\t******** 2.search athlete information **********\n"); puts("\t\t******** 3.search program information **********\n"); puts("\t\t******** 4.back **********\n"); puts("\t\t**********************************************************\n");
printf("Choic your number(1-4):[ ]\b\b");
scanf("%d",&n);
while(n<1||n>4)
{printf("\nPlease input again:");
scanf("%d",&n);
}
return n;
}
UNI*BrowUnInf(char name)
{
UNI*next=uu;
if(strcmp(next->name,name)!=0) next++;
if(strcmp(next->name,name)==0)
{
printUni(next); return next;
}
return NULL;
}
ATH*SearAtInf(char name)
{
ATH*next=at;
if(strcmp(next->name,name)!=0) next++;
if(strcmp(next->name,name)==0)
{
printAth(next); return next;
}
return NULL;
}
PRO*SearPrInf(char name)
{ PRO*next=pp;
if(strcmp(next->name,name)!=0; next++;
if(strcmp(next->name,name)==0)
{
printPro(next); return next;
}
return NULL;
}
void printAth(ATH*nowReA)
{
if(nowReA!=NULL)
{
printf("\n\n%5s%5s%10s%10s %5s",nowReA->name,nowReA->sex,
nowReA->univ,nowReA->mathname,nowReA->range);
}
else
printf("\nCan't find!"); printBack();
}
void printUni(UNI*nowReU)
{
if(nowReU!=NULL)
{
printf("\n\n%5s%5S%5d ",nowReU->name,nowReU->Mprog,
nowReU->Wprog,nowReU->score);
}
else
printf("\nCan't find!"); printBack();
}
void printPro(PRO*nowReP)
{int i=0,j=0;
if(nowReP!=NULL)
{
printf("\n\n%5s",nowReP->name);
for(i=0;i<5;i++)
for(j=0;j<2;j++)
{printf("The%dth",nowReP->place[i][j]);j++;printf("score %d",nowReP->place[i][j]);}
}
else
printf("\nCan't find!"); printBack();
}
void orderBYscore()
{
int i,j,k;
UNI u;
for(i=0;i<9;i++)
{
k=i; for(j=i+1;j<10;j++)
if(uu[j].score>uu[i].score)
k=j;
u=uu[i];uu[i]=uu[k];uu[k]=u;
}
}
void PrintUni()
{ int i; orderBYscore();
printf("\n\nThe order of the university is:\n");
printf("order name MProNum WProNum score\n"); for(i=0;i<10;i++)
{
printf("%5d%10s%5d%5d %d\n",i+1,uu[i].name,
uu[i].Mprog,uu[i].Wprog,uu[i].score);
}
getch(); printBack();
}
void printBack()
{
int k,w;
printf("\n\n\tSUCCESSFUL!\n\n");
printf("What do you want to do next?\n\n1.Exit 2.Back:[ ]\b\b");
scanf("%d",&w);
if(w==1)
exit(0);
else menu();
}
int menu()
{ int n;
printf("\n\n\n");
puts("\t\t***^__^ Welcome to load sports system! ^__^***\n"); puts("\t\t*************************MENU*************************\n"); puts("\t\t******** 1.Enter the information **************\n"); puts("\t\t******** 2.Score **************\n"); puts("\t\t******** 3.Search **************\n"); puts("\t\t******** 4.produce uni infor **************\n"); puts("\t\t******** 5.Exit **************\n"); puts("\t\t******************************************************\n"); printf("Choice your number(1-5):[ ]\b\b");
scanf("%d",&n);
while(n<1||n>5)
{printf("\nPlease input again:");
scanf("%d",&n);
}
return n;
}