最新C语学生成绩管理系统程序.docx
- 文档编号:9472738
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:18
- 大小:18.92KB
最新C语学生成绩管理系统程序.docx
《最新C语学生成绩管理系统程序.docx》由会员分享,可在线阅读,更多相关《最新C语学生成绩管理系统程序.docx(18页珍藏版)》请在冰豆网上搜索。
最新C语学生成绩管理系统程序
#include
#include
#include
#include
typedefstruct/*定义结构体数组*/
{
intterm;//学期
charnum[10];//保存学号
charname[20];//保存姓名
intcgrade;//保存C语言成绩
intmgrade;//保存数学成绩
integrade;//保存英语成绩
intsum;//总分
floataverage;//平均分
}Student;
Studentscore[1000];/*结构体数组变量*/
intmenu_select()/*菜单函数*/
{
intc;
do{
system("cls");//运行前清屏
printf("\t\t★★★★★★学生成绩管理系统★★★★★★\n");//菜单选择
printf("\t\t§1.输入学生信息及数据§\n");
printf("\t\t§2.输出学生信息及数据§\n");
printf("\t\t§3.按姓名、学号及学期查找学生信息§\n");
printf("\t\t§4.按姓名、学号及学期修改学生信息§\n");
printf("\t\t§5.插入学生信息§\n");
printf("\t\t§6.按学号及学期删除信息§\n");
printf("\t\t§7.按单科降序(选择)排序§\n");
printf("\t\t§8.按总分降序(选择)排序§\n");
printf("\t\t§9.统计各科总分和平均分信息§\n");
printf("\t\t§10.内存数据写入磁盘中§\n");
printf("\t\t§11.磁盘中数据读入内存§\n");
printf("\t\t§0.结束程序§\n");
printf("\t\t★★★★★★★★★★★★★★★★★★★★\n");
printf("\t\t请选择您要运行的选项按(0-11):
");
scanf("%d",&c);//读入选择
}while(c<0||c>11);
return(c);//返回选择
}
intInput(Studentgrade[],intn)/*输入学生信息及数据*/
{
inti=0;
charsign;
do
{
printf("\t\t学期:
");/*交互输入*/
scanf("\t\t%d",&grade[n+i].term);
printf("\t\t学号:
");
scanf("\t\t%s",grade[n+i].num);
printf("\t\t姓名:
");
scanf("\t\t%s",grade[n+i].name);
printf("\t\tC语言成绩:
");
scanf("\t\t%d",&grade[n+i].cgrade);
printf("\t\t数学成绩:
");
scanf("\t\t%d",&grade[n+i].mgrade);
printf("\t\t英语成绩:
");
scanf("\t\t%d",&grade[n+i].egrade);
printf("\t\t是否继续输入?
(Y/N)");
scanf("\t\t%s",&sign);/*输入判断*/
i++;
if(sign=='N'||sign=='n')break;
}while(sign=='Y'||sign=='y');/*判断*/
return(n+i);
}
voidDisp(Studentgrade[],intn)/*输出学生信息及数据*/
{
inti=0;
printf("\t\t--------------------------------------------------\n");
printf("\t\t学期学号姓名c语言成绩数学成绩英语成绩\n");
printf("\t\t--------------------------------------------------\n");
for(i=0;i { printf("%20d%s%s%d%d%d\n", grade[i].term,grade[i].num,grade[i].name, grade[i].cgrade,grade[i].mgrade,grade[i].egrade); if(i>1&&i%10==0)/*每十个暂停*/ { printf("\t\t--------------------------------------------------\n"); printf("\t\t"); system("pause"); printf("\t\t--------------------------------------------------\n"); } } printf("\t\t"); system("pause"); } voidQur_info(Studentgrade[],intn)//按姓名、学号及学期查找学生信息 { charname[20]; charnum[20]; intterm; inti=0; printf("\t\t输入他(她)的姓名: "); scanf("\t\t%s",&name); printf("\t\t输入他(她)的学号: "); scanf("\t\t%s",&num); printf("\t\t输入他(她)的学期: "); scanf("\t\t%d",&term); for(i=0;i { if(strcmp(grade[i].name,name)==0 &&strcmp(grade[i].num,num)==0 &&grade[i].term==term) { printf("\t\t他(她)的C语言成绩: %d\n",grade[i].cgrade); printf("\t\t他(她)的数学语言成绩: %d\n",grade[i].mgrade); printf("\t\t他(她)的英语语言成绩: %d\n",grade[i].egrade); return; } elseif(i==n-1) { printf("\t\t对不起没找到该学生! \n"); return; } } } voidModify_info(Studentgrade[],intn)//按姓名、学号及学期修改学生信息 { charname[20]; charnum[20]; intterm; inti=0; printf("\t\t输入他(她)的姓名: "); scanf("\t\t%s",&name); printf("\t\t输入他(她)的学号: "); scanf("\t\t%s",&num); printf("\t\t输入他(她)的学期: "); scanf("\t\t%d",&term); for(i=0;i { if(strcmp(grade[i].name,name)==0 &&strcmp(grade[i].num,num)==0 &&grade[i].term==term) { printf("\t\t请输入修改的C语言成绩: "); scanf("\t\t%d",&grade[i].cgrade); printf("\t\t请输入修改的数学成绩: "); scanf("\t\t%d",&grade[i].mgrade); printf("\t\t请输入修改的英语成绩: "); scanf("\t\t%d",&grade[i].egrade); return; } elseif(i==n-1) { printf("\t\t对不起没找到该学生! \n"); return; } } } intInsert(Studentgrade[],intn)//插入学生信息 { printf("\t\t学期: "); scanf("\t\t%d",&grade[n].term); printf("\t\t学号: "); scanf("\t\t%s",grade[n].num); printf("\t\t姓名: "); scanf("\t\t%s",grade[n].name); printf("\t\tC语成绩: "); scanf("\t\t%d",&grade[n].cgrade); printf("\t\t数学语成绩: "); scanf("\t\t%d",&grade[n].mgrade); printf("\t\t英语成绩: "); scanf("\t\t%d",&grade[n].egrade); n++; printf("\t\t插入记录成功! \n"); returnn; } intDel_info(Studentgrade[],intn)//按学号及学期删除信息 { charnum[20]; intterm; inti=0; printf("\t\t输入他(她)的学号: "); scanf("\t\t%s",&num); printf("\t\t输入他(她)的学期: "); scanf("\t\t%d",&term); for(i=0;i { if(strcmp(grade[i].num,num)==0&&grade[i].term==term) { grade[i].term=grade[i+1].term; strcpy(grade[i].num,grade[i+1].num); strcpy(grade[i].name,grade[i+1].name); grade[i].cgrade=grade[i+1].cgrade; grade[i].mgrade=grade[i+1].mgrade; grade[i].egrade=grade[i+1].egrade; printf("\t\t删除记录成功! \n"); return(n-1); } elseif(i==n-1) { printf("\t\t对不起没找到该学生! \n"); return(n); } } } intcompareCgrade(constvoid*a,constvoid*b)//C语降序排序 { Student*s1=(Student*)a; Student*s2=(Student*)b; if(s1->cgrade>s2->cgrade) { return1; } else { return0; } } intcompareMgrade(constvoid*a,constvoid*b)//数学降序排序 { Student*s1=(Student*)a; Student*s2=(Student*)b; if(s1->mgrade>s2->mgrade) { return1; } else { return0; } } intcompareEgrade(constvoid*a,constvoid*b)//英语降序排序 { Student*s1=(Student*)a; Student*s2=(Student*)b; if(s1->egrade>s2->egrade) { return1; } else { return0; } } intcompareTotal(constvoid*a,constvoid*b)//总分降序排序 { Student*s1=(Student*)a; Student*s2=(Student*)b; inttotal1=s1->cgrade+s1->egrade+s1->mgrade; inttotal2=s2->cgrade+s2->egrade+s2->mgrade; if(total1>total2) { return1; } else { return0; } } voidSort(Studentgrade[],intn,intchoice)//选择排序的科目 { if(choice==1) { qsort(grade,n,sizeof(grade[0]),compareCgrade); } elseif(choice==2) { qsort(grade,n,sizeof(grade[0]),compareMgrade); } elseif(choice==3) { qsort(grade,n,sizeof(grade[0]),compareEgrade); } else { printf("选择无效\n"); } } voidSort_sub(Studentgrade[],intn)//按单科降序(选择)排序 { intchoice=0; printf("选择排序科目\n"); printf("1-C语言,2-数学,3-英语\n"); scanf("%d",&choice); Sort(grade,n,choice); } voidSort_sum(Studentgrade[],intn)//按总分降序排序 { qsort(grade,n,sizeof(grade[0]),compareTotal); } voidAverage(Studentgrade[],intn)//统计各科总分和平均分信息 { intcsum=0; intmsum=0; intesum=0; intsum=0; inti; floataver=0; for(i=0;i { csum=csum+grade[i].cgrade; msum=msum+grade[i].mgrade; esum=esum+grade[i].egrade; } sum=csum+msum+esum; aver=(float)sum/3; printf("\n"); printf("\t\tC语言总分是: %d\n",csum); printf("\t\t数学总分是: %d\n",msum); printf("\t\t英语总分是: %d\n",esum); printf("\t\t平均分是: %3.1f\n",aver); } voidSave(Studentgrade[],intn)//内存数据写入磁盘中 { inti=0; FILE*fp;/*定义文件指针*/ if((fp=fopen("mydata.txt","w"))==NULL)/*打开文件*/ { printf("\t\t无法打开该文件\n"); system("pause"); return; } fprintf(fp,"%d\n",n);/*循环写入数据*/ while(i { fprintf(fp,"%-10d%-20s%-10s%-10d%-10d%-10d\n",grade[i].term,grade[i].num,grade[i].name,grade[i].cgrade,grade[i].mgrade,grade[i].egrade); i++; } fclose(fp);/*关闭文件*/ printf("写入成功! \n");/*返回成功信息*/ } intRead(Studentgrade[],intn)//磁盘中数据读入内存 { inti=0,num; FILE*fp;/*定义文件指针*/ if((fp=fopen("mydata.txt","rb"))==NULL)/*打开文件*/ { printf("\t\t无法打开该文件\n");/*打开失败信息*/ printf("\t\t"); system("pause"); return(n); } fscanf(fp,"%d",&num);/*读入总记录量*/ while(i { fscanf(fp,"%d%s%s%d%d%d", &grade[n+i].term,grade[n+i].num,grade[n+i].name,&grade[n+i].cgrade, &grade[n+i].mgrade,&grade[n+i].egrade); i++; } n+=num; fclose(fp);/*关闭文件*/ printf("\t\t读入成功! \n"); return(n); } intmain()/*主函数*/ { intn=0; while (1) { switch(menu_select())/*选择判断*/ { case1: printf("\t\t输入记录\n");/*输入若干条记录*/ n=Input(score,n); break; case2: printf("\t\t显示记录\n");/*显示所有记录*/ Disp(score,n); break; case3: printf("\t\t查找并显示一个记录\n");/*查找学生信息*/ Qur_info(score,n); printf("\t\t"); system("pause"); break; case4: printf("\t\t查找并修改一个记录\n");/*修改学生信息*/ Modify_info(score,n); printf("\t\t"); system("pause"); break; case5: printf("\t\t插入一条记录\n");/*插入一条记录*/ n=Insert(score,n); printf("\t\t"); break; case6: printf("\t\t按学号及姓名找,删除一条记录\n");/*按学号及学期删除信息*/ n=Del_info(score,n); printf("\t\t"); system("pause"); break; case7: printf("\t\t按单科排序并显示\n");/*按单科降序(选择)排序*/ Sort_sub(score,n); printf("\t\t\t排序成功! \n"); Disp(score,n); printf("\t\t"); break; case8: printf("\t\t按总分排序并显示\n");/*按总分降序排序*/ Sort_sum(score,n); printf("\t\t\t排序成功! \n"); Disp(score,n); printf("\t\t"); break; case9: printf("\t\t各科总分和平均分信息");/*统计各科总分和平均分信息*/ Average(score,n); system("pause"); break; (2)缺乏经营经验case10: printf("\t\t循环写入数据\n");/*循环写入数据*/ (三)DIY手工艺品的“自助化”Save(score,n); 喜欢□一般□不喜欢□printf("\t\t"); 300元以下□300~400元□400~500□500元以上□system("pause"); (二)DIY手工艺品的“热卖化”break; case11: printf("\t\t从文件中读入数据\n");/*从文件中读入数据*/ 据上述部分的分析可见,我校学生就达4000多人。 附近还有两所学校,和一些居民楼。 随着生活水平的逐渐提高,家长给孩子的零用钱也越来越多,人们对美的要求也越来越高,特别是大学生。 他们总希望自己的无论是衣服还是首饰都希望与众不同,能穿出自己的个性。 但在我们美丽的校园里缺少自己的个性和琳琅满目的饰品,所以我们的小饰品店存在的竞争力主要是南桥或是市区的。 这给我们小组的创业项目提供了一个很好的市场机会。 n=Read(score,n); printf("\t\t"); 在现代文化影响下,当今大学生对新鲜事物是最为敏感的群体,他们最渴望为社会主流承认又最喜欢标新立异,他们追随时尚,同时也在制造时尚。 “DIY自制饰品”已成为一种时尚的生活方式和态度。 在“DIY自制饰品”过程中实现自己的个性化追求,这在年轻的学生一代中尤为突出。 “DIY自制饰品”的形式多种多样,对于动手能力强的学生来说更受欢迎。 system("pause"); break; case0: (3)个性体现printf("\t\t谢谢使用,祝您好运,再见! \n");/*结束程序*/ printf("\t\t"); system("pause"); exit(0); 手工艺品,它运用不同的材料,通过不同的方式,经过自己亲手动手制作。 看着自己亲自完成的作品时,感觉很不同哦。 不论是01年的丝带编织风铃,02年的管织幸运星,03年的十字绣,0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 学生 成绩管理系统 程序