è¿æ¯æç¨çï¼æåå¦åçï¼æä¹æ²¡ä»ç»çï¼å¦æå¯ä»¥çè¯å°±ç¨è¿ä¸ªå§ã
#include<stdio.h> /*å¼ç¨åºå½æ°*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*å®ä¹ç»æä½æ°ç»*/
{
char num[10]; /*å¦å·*/
char name[20]; /*å§å*/
int score; /*æ绩*/
}Student;
Student stu[80]; /*ç»æä½æ°ç»åé*/
int menu_select() /*èåå½æ°*/
{
char c;
do{
system("cls"); /*è¿è¡åæ¸
å±*/
printf("\t\t****Students' Grade Management System****\n"); /*èåéæ©*/
printf("\t\t | 1. Input Records |\n");
printf("\t\t | 2. Display All Records |\n");
printf("\t\t | 3. Sort |\n");
printf("\t\t | 4. Insert a Record |\n");
printf("\t\t | 5. Delete a Record |\n");
printf("\t\t | 6. Query |\n");
printf("\t\t | 7. Statistic |\n");
printf("\t\t | 8. Add Records from a Text File|\n");
printf("\t\t | 9. Write to a Text file |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /*读å
¥éæ©*/
}while(c<'0'||c>'9');
return(c-'0'); /*è¿åéæ©*/
}
int Input(Student stud[],int n) /*è¾å
¥è¥å¹²æ¡è®°å½*/
{int i=0;
char sign,x[10]; /*x[10]为æ¸
é¤å¤ä½çæ°æ®æç¨*/
while(sign!='n'&&sign!='N') /*å¤æ*/
{ printf("\t\t\tstudent's num:"); /*交äºè¾å
¥*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i].score);
gets(x); /*æ¸
é¤å¤ä½çè¾å
¥*/
printf("\t\t\tany more records?(Y/N)");
scanf("\t\t\t%c",&sign); /*è¾å
¥å¤æ*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*æ¾ç¤ºææè®°å½*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*æ ¼å¼å¤´*/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循ç¯è¾å
¥*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%10==0) /*æ¯å个æå*/
{printf("\t\t\t-----------------------------------\n"); /*æ ¼å¼*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /*æå¦å·æåº*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*å泡æ³æåº*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
int Insert_a_record(Student stud[],int n) /*æå
¥ä¸æ¡è®°å½*/
{char x[10]; /*æ¸
é¤å¤ä½è¾å
¥æç¨*/
printf("\t\t\tstudent's num:"); /*交äºå¼è¾å
¥*/
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n); /*è°ç¨æåºå½æ°*/
printf("\t\t\tInsert Successed!\n"); /*è¿åæåä¿¡æ¯*/
return(n);
}
int Delete_a_record(Student stud[],int n) /*æå§åæ¥æ¾ï¼å é¤ä¸æ¡è®°å½*/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /*交äºå¼é®å¯»*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*æ¥æ¾å¤æ*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*è¿å失败信æ¯*/
return(n);
}
for(j=i;j<n-1;j++) /*å é¤æä½*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDelete Successed!\n"); /*è¿åæåä¿¡æ¯*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*æ¥æ¾å¹¶æ¾ç¤ºä¸ä¸ªè®°å½*/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /*交äºå¼è¾å
¥*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*æ¥æ¾å¤æ*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*è¾å
¥å¤±è´¥ä¿¡æ¯*/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i].num); /*è¾åºè¯¥å¦çä¿¡æ¯*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*æ°å¢åè½ï¼è¾åºç»è®¡ä¿¡æ¯*/
{ int i,j=0,k=0,sum=0;
float aver; /*æ绩平åå¼*/
for(i=0;i<n;i++) /*循ç¯è¾å
¥å¤æ*/
{
sum+=stud[i].score;
if(stud[j].score>stud[i].score) j=i;
if(stud[k].score<stud[i].score) k=i;
}
aver=1.0*sum/n;
printf("\t\t\tthere are %d records.\n",n); /*æ»å
±è®°å½æ°*/
printf("\t\t\tthe hignest score:\n"); /*æé«å*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\tthe lowest score:\n"); /*æä½å*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);
printf("\t\t\tthe average score is %5.2f\n",aver); /*å¹³åå*/
}
int AddfromText(Student stud[],int n) /*ä»æ件ä¸è¯»å
¥æ°æ®*/
{ int i=0,num;
FILE *fp; /*å®ä¹æ件æé*/
char filename[20]; /*å®ä¹æ件å*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /*è¾å
¥æ件å*/
if((fp=fopen(filename,"rb"))==NULL) /*æå¼æ件*/
{ printf("\t\t\tcann't open the file\n"); /*æå¼å¤±è´¥ä¿¡æ¯*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*读å
¥æ»è®°å½é*/
while(i<num) /*循ç¯è¯»å
¥æ°æ®*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*å
³éæ件*/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /*å°ææè®°å½åå
¥æ件*/
{
int i=0;
FILE *fp; /*å®ä¹æ件æé*/
char filename[20]; /*å®ä¹æ件å*/
printf("\t\t\tWrite Records to a Text File\n"); /*è¾å
¥æ件å*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*æå¼æ件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循ç¯åå
¥æ°æ®*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*å
³éæ件*/
printf("Successed!\n"); /*è¿åæåä¿¡æ¯*/
}
void main() /*主å½æ°*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*éæ©å¤æ*/
{
case 1:
printf("\t\t\tInput Records\n"); /*è¾å
¥è¥å¹²æ¡è®°å½*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /*æ¾ç¤ºææè®°å½*/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /*æå¦å·æåº*/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /*æå
¥ä¸æ¡è®°å½*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /*æå§åæ¥æ¾ï¼å é¤ä¸æ¡è®°å½*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /*æ¥æ¾å¹¶æ¾ç¤ºä¸ä¸ªè®°å½*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*æ°å¢åè½ï¼è¾åºç»è®¡ä¿¡æ¯*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*æ°å¢åè½ï¼è¾åºç»è®¡ä¿¡æ¯*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循ç¯åå
¥æ°æ®*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*ç»æç¨åº*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
åãå½æ°è°ç¨å
³ç³»å¾
注ï¼âââ代表è°ç¨
Inputå½æ°
æå°é¾è¡¨è®°å½
Displayå½æ°
è¾å
¥è¥å¹²æ¡è®°å½
menu_select()å½æ°
éæ©èå
Sort_by_numå½æ°
æ¾ç¤ºææè®°å½
Delete_a_recordå½æ°
æå§åæ¥æ¾ï¼å é¤ä¸æ¡è®°å½
Query_a_recordæ¥æ¾å¹¶æ¾ç¤ºä¸æ¡è®°å½
Statisticå½æ°
è¾åºç»è®¡ä¿¡æ¯ ï¼æ°å¢ï¼
AddfromTextå½æ°
ä»æ£æä¸æ·»å æ°æ®å°ç»æä½æ°ç»ä¸
Mainå½æ°
Insert_a_recordæå
¥ä¸æ¡è®°å½
WritetoTextå½æ° å°æææ°æ®åå
¥æ件ä¸
éåºç¨åº
Reverse(head)å½æ°
æå¦å·æåº
äºã设计æµè¯æµç¨
1ãè¿å
¥çé¢
2ãè¾å
¥é项1ï¼å车ï¼
ææ示è¾å
¥æ°æ®ï¼
3ãåå°ä¸»èåï¼
è¾å
¥é项7ï¼å车ï¼
è¾å
¥æ件åï¼data.txtï¼å车ï¼
åºç°æåæ示ï¼å读å
¥æ件æä½æåã
4ãåå°ä¸»èåï¼è¾å
¥2ï¼å车
æ¯10个æåæ¾ç¤ºæ°æ®
5ãåå°ä¸»èåï¼è¾å
¥3ï¼å车
åºç°æåºæåä¿¡æ¯ã
6ãåå°ä¸»èåï¼è¾å
¥4ï¼å车
ææ示æå
¥ä¸ç»æ°æ®
7ãåå°ä¸»èåï¼è¾å
¥5ï¼å车
ææ示è¾å
¥å§åï¼å é¤æ°æ®
åºç°å é¤æåçä¿¡æ¯
8ãåå°ä¸»èåï¼è¾å
¥6ï¼å车
è¾å
¥å§åè¿è¡æ¥è¯¢
9ãåå°ä¸»èåï¼è¾å
¥7ï¼å车
åºç°ç»è®¡ä¿¡æ¯
10ãåå°ä¸»èåï¼è¾å
¥9ï¼å车
è¾å
¥result.txtï¼å车
åºç°æååå
¥æ件çä¿¡æ¯
11ãåå°ä¸»èåï¼è¾å
¥0ï¼å车éåºç³»ç»
温馨提示:答案为网友推荐,仅供参考