成绩管理程序.docx
- 文档编号:5222176
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:16
- 大小:16.85KB
成绩管理程序.docx
《成绩管理程序.docx》由会员分享,可在线阅读,更多相关《成绩管理程序.docx(16页珍藏版)》请在冰豆网上搜索。
成绩管理程序
成绩管理系统
设计题目:
设计一个小型
#include
intnumStus=0;
StuInfo*records=NULL;
charsaveTag=0;
intarraySize;
char*subject[]={"chinese","math","English","physics","chemistry"};
intmain()
{records=(StuInfo*)malloc(sizeof(StuInfo)*INITIAL_SIZE);/**/
if(records==NULL)
{printf("memoryfail!
");
exit(-1);}
arraySize=INITIAL_SIZE;
printf("\n");
handle_menu();}
/**/
intmenu_select()
{inti;
printf("welcometochengjiguanlixitong\n");
printf("\t0:
newchengji\n");/**/
printf("\t1:
showchengji\n");/**/
printf("\t2:
shengxu\n");/**/
printf("\t3:
addchengji\n");/**/
printf("\t4:
searchchengji\n");/**/
printf("\t5:
chaxunchengji\n");/**/
printf("\t6:
xiugaichengji\n");/**/
printf("\t7:
deletechengji\n");/**/
printf("\t8:
copychengji\n");/**/
printf("\t9:
paixuchengji\n");/**/
printf("\t10:
inputchengji\n");/**/
printf("\t11:
outputchengji\n");/**/
printf("\t12:
quit\n");/**/
printf("selectachoice:
");
scanf("%d",&i);
printf("%d\n",i);
returni;}
voidhandle_menu()
{intmenu_select();
for(;;)
{switch(menu_select())
{case0:
newRecords();break;
case1:
display();break;
case2:
break;
case3:
addRecords();break;
case4:
break;
case5:
queryInfo();break;
case6:
modifyRecord();break;/**/
case7:
removeRecord();break;
case8:
break;
case9:
sortInfo();break;
case10:
saveRecords();break;
case11:
loadRecords();break;
case12:
quit();break;}
}}
voidnewRecords()
{charstr[5];
if(numStus!
=0)
{if(saveTag==1)
{printf("therearerecprds,makeachoic");
printf("whetherrecordornot\n");
gets(str);
if(str[0]!
='n'&&str[0]!
='N')
saveRecords();}}
numStus=0;
addRecords();}
voidquit()
{charstr[5];
if(saveTag==1)
{printf("whethersaverecords?
Y/n");
gets(str);
if(str[0]!
='n'&&str[0]!
='N')
saveRecords();}
free(records);
exit(0);
}
voidshowTable()
{intj;
printf("nunbers\tname\tsex");
for(j=0;j printf("\t%s",subject[j]); printf("\tsum\taverage\tindex\n"); } /**/ voiddisplay(void) {inti,j; if(numStus==0) {printf("therearenorecords"); return;} showTable(); for(i=0;i { printf("%s\t%s\t%s",records[i].number,records[i].name,records[i].gender); for(j=0;j printf("\t%.1f",records[i].score[j]); printf("\t%.1f\t%.1f\t%d\n",records[i].sum,records[i].average,records[i].index); if(i%20==0&&i! =0) {printf("inputanywordsandcontinue\n"); getch(); printf("\n\n"); showTable();} } } voidaddRecords() {charstr[10]; intj; floatmark,sum; if(numStus==0) printf("therearenorecords\n"); elseprintf("creatnewrecords\n"); while (1) { printf("addanewrecordsure? (y/n)"); gets(str); if(str[0]=='n'&&str[0]! ='N')/**/ break; if(numStus>=arraySize)/*,*/ {records=realloc(records,(arraySize+INCR_SIZE)*sizeof(StuInfo)); if(records==NULL) {printf("memoryfailed! "); exit(-1);} arraySize=arraySize+INCR_SIZE; } printf("pleaseinputnumber: "); gets(records[numStus].number); printf("pleaseinputname: "); gets(records[numStus].name); printf("pleaseinputsex(0womam,1man)"); gets(str); if(str[0]=='0') strcpy(records[numStus].gender,"woman"); else strcpy(records[numStus].gender,"man"); sum=0; for(j=0;j {printf("input%schengji",subject[j]); gets(str); mark=(float)atof(str); records[numStus].score[j]=mark; sum+=mark; } records[numStus].sum=sum; records[numStus].average=sum/NUM_SUBJECT; records[numStus].index=getIndex(sum); numStus++; } printf("thereare%dmessages\n",numStus); saveTag=1; } intgetIndex(floatsum) {inti; intcount=0; for(i=0;i {if(records[i].sum {records[i].index++; } elseif(records[i].sum>sum) {count++;} } returncount+1; } #include intsaveRecords() {FILE*fp; charfname[30]; if(numStus==0) {printf("therearenorecordstosave"); return-1;} printf("inputthenameoffileyouwillsave: "); gets(fname); if(strlen(fname)==0) strcpy(fname,"stu_info"); if((fp=fopen(fname,"wb"))==NULL) {printf("cannotsavefile\n"); return-1;} printf("\nsavefile....\n"); fwrite(records,sizeof(StuInfo)*numStus,1,fp); saveTag=0; return0; } intloadRecords(void) { FILE*fp; charfname[30]; charstr[5]; if(numStus! =0&&saveTag==0) {printf("choicewhethertocoverrecords(y),or"); printf("addtorepresentrecords(n)? \n"); printf("pressentertocoverrecords\n"); gets(str); if(str[0]=='n'||str[0]=='N') {saveTag=1;} else {if(saveTag==1) { printf("loadfilewillmodifytherecords,"); printf("whethersavetherecordsornot? (y/n)"); gets(str); if(str[0]! ='n'&&str[0]! ='N') saveRecords();} numStus=0; } } printf("inputfilenametoload: pressentertoselectstu_info."); gets(fname); if(strlen(fname)==0) strcpy(fname,"stu_info"); if((fp=fopen(fname,"rb"))==NULL) {printf("cannotopenfile\n"); return-1;} printf("\ngetfile...\n"); while(! feof(fp)) {if(numStus>=arraySize) {records=realloc(records,(arraySize+INCR_SIZE)*sizeof(StuInfo)); if(records==NULL) {printf("memoryfailed"); exit(-1); } arraySize=arraySize+INCR_SIZE; } if(fread(&records[numStus],sizeof(StuInfo),1,fp)! =1) break;/*ø'add_«",'*/ records[numStus].index=getIndex(records[numStus].sum); numStus++; } fclose(fp); printf("thereare%drecords.",numStus); return0; } intfindRecord(char*target,inttargetType,intfrom) {inti; for(i=from;i {if((targetType==0&&strcmp(target,records[i].number)==0)|| (targetType==1&&strcmp(target,records[i].name)==0)|| (targetType==2&&atoi(target)==records[i].index)) returni; } return-1; } voidqueryInfo() {charstr[5]; chartarget[20]; inttype; intcount; inti,j; if(numStus==0) {printf("norecords"); return; } while (1) {printf("choicehowtocheck: \n"); printf("1.numbers\n"); printf("2.name\n"); printf("3.index"); gets(str); if(strlen(str)==0)break; if(str[0]=='1') {printf("inputthenumbertocheck: "); gets(target); type=0; } elseif(str[0]=='2') {printf("inputnametocheck: "); gets(target); type=1; } else {printf("inputtheindextocheck: "); gets(target); type=2; } i=findRecord(target,type,0); if(i==1) {showTable(); } count=0; while(i! =-1) {count++; printf("%s\t%s\t%s",records[i].number,records[i].name,records[i].gender); for(j=0;j printf("\t%.1f\t%.1f\t%d\n",records[i].sum,records[i].average, records[i].index); i=findRecord(target,type,i+1); } if(count==0) printf("nostudentsuitable\n"); else printf("findtotal%drecords.\n\n",count); } } voidremoveRecord() {charstr[5]; chartarget[20]; inttype; inti,j; inttmpi; if(numStus==0) {printf("norecordtodelete"); return; } while (1) {printf("howtofindrecordstodelete: "); printf("pressentertoover\n"); printf("1.number\n"); printf("2.name\n"); printf("3.index\n"); gets(str); if(strlen(str)==0)break; if(str[0]=='1') {printf("inputnumber: "); gets(target); type=0; }else if(str[0]=='2') {printf("inputname: "); gets(target); type=1; } else{printf("inputindex: "); gets(target); type=2;} i=findRecord(target,type,0); if(i==-1) printf("nosuitablerecord\n"); while(i! =-1) {showTable(); printf("%s\t%s\t%s",records[i].number,records[i].name,records[i].gender); for(j=0;j printf("\t%.1f",records[i].score[j]); printf("\t%.1f\t%.1f\t%d\n",records[i].sum,records[i].average,records[i].index); printf("suretodeletetherecord? (y/n)"); gets(str); if(str[0]! ='y'||str[0]! ='Y') {numStus--; tmpi=records[i].index; for(j=i;j {copyRecord(&records[j+1],&records[j]);} for(j=0;j {if(records[j].index>tmpi) records[j].index--; } } i=findRecord(target,type,i+1); } } saveTag=1; } voidcopyRecord(StuInfo*src,StuInfo*dest) { intj; strcpy(dest->number,src->number); strcpy(dest->name,src->name); strcpy(dest->gender,src->gender); for(j=0;j {dest->score[j]=src->score[j]; }dest->sum=src->sum; dest->average=src->average; dest->index=src->index; } voidmodifyRecord() {charstr[5];chartarget[20]; inttype; inti,j; inttmpi; floatsum,mark; intcount=0; if(numStus==0) {printf("norecords"); return;} while (1) {printf("choicehowtocheck: \n"); printf("1.numbers\n"); printf("2.name\n"); printf("3.index"); gets(str); if(strlen(str)==0)break; if(str[0]=='1') {printf("inputthenumbertocheck: "); gets(target); type=0; } elseif(str[0]=='2') {printf("inputnametocheck: "); gets(target); type=1; } else {printf("inputtheindextocheck: "); gets(target); type=2; } i=findRecord(target,type,0); if(i==-1) printf("norecordsavailable\n"); while(i! =-1) {showTable(); printf("%s\t%s\t%s",records[i].number,records[i].name,records[i].gender); for(j=0;j printf("\t%.1f\t%.1f\t%d\n",records[i].sum,records[i].average,records[i].index); printf("suretomodifyrecords? : (y/n)"); gets(str); if(str[0]=='y'||str[0]=='Y') {tmpi=records[i].index; printf("pleaseinputanewrecord: \n"); printf("inputnumber: "); gets(records[i].number); printf("inputname: "); gets(records[i].name); printf("inputsex(0: woman,1: man): "); gets(str); if(str[0]=='0') strcpy(records[i].gender,"woman"); else strcpy(records[i].gender,"man"); sum=0; for(j=0;j {printf("input%sscores: ",subject[j]); gets(str); mark=(float)atof(str); records[i].score[j]=mark; sum+=mark; } records[i].sum=sum; records[i].average=sum/NUM_SUBJECT; count=0; for(j=0;j {if(j==i)continue; if(records[j].index>tmpi&&records[j].sum>sum) records[j].index--; elseif(records[j].index<=tmpi&&records[j].sum records[j].index++; if(records[j].sum>sum) count++;} records[i].index=count+1; } i=findRecord(target,type,i+1);} }saveTag=1; } #include voidsortInfo() {charstr[5]; inti,j; StuInfotmps; if(numStus==0) {printf("norecords"); return; } printf("choicehowtosort: \n"); printf("1.numberup\n"); printf("2.numberdown\n"); p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 成绩 管理程序
![提示](https://static.bdocx.com/images/bang_tan.gif)