C语言课设学生成绩管理.docx
- 文档编号:7787534
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:19
- 大小:151.80KB
C语言课设学生成绩管理.docx
《C语言课设学生成绩管理.docx》由会员分享,可在线阅读,更多相关《C语言课设学生成绩管理.docx(19页珍藏版)》请在冰豆网上搜索。
C语言课设学生成绩管理
课程设计说明书NO.1
设计题目:
学生成绩管理系统
1.课程设计的目的
C语言程序设计课程设计是通信工程专业一门重要的专业技术基础课程,也是一门核心课程,更是学习其他语言的基础课程。
本课程设计的目的是为了配合C语言程序设计课程的开设,能使同学们更了解C语言更熟悉C语言,并能够培养学生应用计算机解决和处理实际问题的思维方法与基本能力,为进一步学习和应用计算机的专业知识打下基础。
2.课程设计的方案论证
2.1设计思路
程序要求模块化管理。
分为:
主函数、输入函数、输出函数、查找函数、添加函数、退出控制几个部分,从而将程序简单化的处理分析。
通过指针函数定义实现以上各个函数的功能,并完成题目要求。
2.2框架图
图1学生成绩管理系统的总体框图
沈阳大学
课程设计说明书NO.1
设计题目:
学生成绩管理系统
1.课程设计的目的
熟练掌握C语言的基本知识级程序设计的基本方法与编程技巧,进一步掌握各种函数的应用以及文件的读写操作等,并且能够培养我们应用计算机解决和处理实际问题的思维方法与基本能力为进一步学习和应用计算机的专业知识打下基础。
2.课程设计的方案论证
2.1设计思路
该系统是在DOS环境下,人机界面为命令性文本界面。
该程序的任务是对学生成绩进行管理,且数据保存到文件中。
实现的主要功能是:
主函数:
调用其它功能模块。
窗口操作:
预定义一些常用的窗口及信息提示函数供其它模块调用。
数据输入:
输入学生的基本信息(学号、姓名、性别等)和各科成绩。
全部显示:
显示全部学生各科成绩及平均分信息。
条件查找:
学号或姓名查找并显示某个学生的各科成绩平均分。
顺序输出:
按课程成绩或总分由高到低排序显示。
成绩统计:
对各科成绩统计分析(总分、平均分、最高分、最低分、及格率等)。
2.2源程序
#include
#include
#include
#include
typedefstruct/*定义结构体数组*/
{
沈阳大学
课程设计说明书NO.2
charnum[10];/*学号*/
charname[20];/*姓名*/
intscore;/*成绩*/
}Student;
Studentstu[80];/*结构体数组变量*/
intmenu_select()/*菜单函数*/
{
charc;
do{
system("cls");/*运行前清屏*/
printf("\t\t****Students'GradeManagementSystem****\n");/*菜单选择*/
printf("\t\t|1.InputRecords|\n");
printf("\t\t|2.DisplayAllRecords|\n");
printf("\t\t|3.Sort|\n");
printf("\t\t|4.InsertaRecord|\n");
printf("\t\t|5.DeleteaRecord|\n");
printf("\t\t|6.Query|\n");
printf("\t\t|7.Statistic|\n");
printf("\t\t|8.AddRecordsfromaTextFile|\n");
printf("\t\t|9.WritetoaTextfile|\n");
printf("\t\t|0.Quit|\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGiveyourChoice(0-9):
");
c=getchar();/*读入选择*/
}while(c<'0'||c>'9');
return(c-'0');/*返回选择*/
}
沈阳大学
课程设计说明书NO.3
intInput(Studentstud[],intn)/*输入若干条记录*/
{inti=0;
charsign,x[10];/*x[10]为清除多余的数据所用*/
while(sign!
='n'&&sign!
='N')/*判断*/
{printf("\t\t\tstudent'snum:
");/*交互输入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\tstudent'sname:
");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent'sscore:
");
scanf("\t\t\t%d",&stud[n+i].score);
gets(x);/*清除多余的输入*/
printf("\t\t\tanymorerecords?
(Y/N)");
scanf("\t\t\t%c",&sign);/*输入判断*/
i++;
}
return(n+i);
}
voidDisplay(Studentstud[],intn)/*显示所有记录*/
{inti;
printf("\t\t\t-----------------------------------\n");/*格式头*/
printf("\t\t\tnumbernamescore\n");
printf("\t\t\t-----------------------------------\n");
for(i=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)/*每十个暂停*/ 沈阳大学 课程设计说明书NO.4 {printf("\t\t\t-----------------------------------\n");/*格式*/ printf("\t\t\t"); system("pause"); printf("\t\t\t-----------------------------------\n"); } } printf("\t\t\t"); system("pause"); } voidSort_by_num(Studentstud[],intn)/*按学号排序*/ {inti,j,*p,*q,s; chart[10]; for(i=0;i for(j=0;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; } 沈阳大学 课程设计说明书NO.5 } intInsert_a_record(Studentstud[],intn)/*插入一条记录*/ {charx[10];/*清除多余输入所用*/ printf("\t\t\tstudent'snum: ");/*交互式输入*/ scanf("\t\t\t%s",stud[n].num); printf("\t\t\tstudent'sname: "); scanf("\t\t\t%s",stud[n].name); printf("\t\t\tstudent'sscore: "); scanf("\t\t\t%d",&stud[n].score); gets(x); n++; Sort_by_num(stud,n);/*调用排序函数*/ printf("\t\t\tInsertSuccessed! \n");/*返回成功信息*/ return(n); } intDelete_a_record(Studentstud[],intn)/*按姓名查找,删除一条记录*/ {chars[20]; inti=0,j; printf("\t\t\ttellmehis(her)name: ");/*交互式问寻*/ scanf("%s",s); while(strcmp(stud[i].name,s)! =0&&i if(i==n) {printf("\t\t\tnotfind! \n");/*返回失败信息*/ return(n); } for(j=i;j { 沈阳大学 课程设计说明书NO.6 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\tDeleteSuccessed! \n");/*返回成功信息*/ return(n-1); } voidQuery_a_record(Studentstud[],intn)/*查找并显示一个记录*/ {chars[20]; inti=0; printf("\t\t\tinputhis(her)name: ");/*交互式输入*/ scanf("\t\t\t%s",s); while(strcmp(stud[i].name,s)! =0&&i if(i==n) {printf("\t\t\tnotfind! \n");/*输入失败信息*/ return; } printf("\t\t\this(her)number: %s\n",stud[i].num);/*输出该学生信息*/ printf("\t\t\this(her)score: %d\n",stud[i].score); } voidStatistic(Studentstud[],intn)/*新增功能,输出统计信息*/ {inti,j=0,k=0,sum=0; floataver;/*成绩平均值*/ for(i=0;i { 沈阳大学 课程设计说明书NO.7 sum+=stud[i].score; if(stud[j].score>stud[i].score)j=i; if(stud[k].score } aver=1.0*sum/n; printf("\t\t\tthereare%drecords.\n",n);/*总共记录数*/ printf("\t\t\tthehignestscore: \n");/*最高分*/ printf("\t\t\tnumber: %sname: %sscore: %d\n",stud[j].num,stud[j].name,stud[j].score); printf("\t\t\tthelowestscore: \n");/*最低分*/ printf("\t\t\tnumber: %sname: %sscore: %d\n",stud[k].num,stud[k].name,stud[k].score); printf("\t\t\ttheaveragescoreis%5.2f\n",aver);/*平均分*/ } intAddfromText(Studentstud[],intn)/*从文件中读入数据*/ {inti=0,num; FILE*fp;/*定义文件指针*/ charfilename[20];/*定义文件名*/ printf("\t\t\tInputthefilename: "); scanf("\t\t\t%s",filename);/*输入文件名*/ if((fp=fopen(filename,"rb"))==NULL)/*打开文件*/ {printf("\t\t\tcann'topenthefile\n");/*打开失败信息*/ printf("\t\t\t"); system("pause"); return(n); } fscanf(fp,"%d",&num);/*读入总记录量*/ while(i { 沈阳大学 课程设计说明书NO.8 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); } voidWritetoText(Studentstud[],intn)/*将所有记录写入文件*/ { inti=0; FILE*fp;/*定义文件指针*/ charfilename[20];/*定义文件名*/ printf("\t\t\tWriteRecordstoaTextFile\n");/*输入文件名*/ printf("\t\t\tInputthefilename: "); scanf("\t\t\t%s",filename); if((fp=fopen(filename,"w"))==NULL)/*打开文件*/ { printf("\t\t\tcann'topenthefile\n"); system("pause"); return; } fprintf(fp,"%d\n",n);/*循环写入数据*/ while(i { 沈阳大学 课程设计说明书NO.9 fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score); i++; } fclose(fp);/*关闭文件*/ printf("Successed! \n");/*返回成功信息*/ } voidmain()/*主函数*/ { intn=0; for(;;) { switch(menu_select())/*选择判断*/ { case1: printf("\t\t\tInputRecords\n");/*输入若干条记录*/ n=Input(stu,n); break; case2: printf("\t\t\tDisplayAllRecords\n");/*显示所有记录*/ Display(stu,n); break; case3: printf("\t\t\tSort\n"); Sort_by_num(stu,n);/*按学号排序*/ printf("\t\t\tSortSuceessed! \n"); printf("\t\t\t"); system("pause"); 沈阳大学 课程设计说明书NO.10 break; case4: printf("\t\t\tInsertaRecord\n"); n=Insert_a_record(stu,n);/*插入一条记录*/ printf("\t\t\t"); system("pause"); break; case5: printf("\t\t\tDeleteaRecord\n"); n=Delete_a_record(stu,n);/*按姓名查找,删除一条记录*/ printf("\t\t\t"); system("pause"); break; case6: printf("\t\t\tQuery\n"); Query_a_record(stu,n);/*查找并显示一个记录*/ printf("\t\t\t"); system("pause"); break; case7: printf("\t\t\tStatistic\n"); Statistic(stu,n);/*新增功能,输出统计信息*/ printf("\t\t\t"); system("pause"); break; case8: 沈阳大学 课程设计说明书NO.11 printf("\t\t\tAddRecordsfromaTextFile\n"); n=AddfromText(stu,n);/*新增功能,输出统计信息*/ break; case9: printf("\t\t\tWritetoaTextfile\n"); WritetoText(stu,n);/*循环写入数据*/ printf("\t\t\t"); system("pause"); break; case0: printf("\t\t\tHaveaGoodLuck,Bye-bye! \n");/*结束程序*/ printf("\t\t\t"); system("pause"); exit(0); } } } 沈阳大学 课程设计说明书NO.12 3.课程设计结果与分析 将程序进行编译链接后生成“学生成绩管理系统.exe”,运行,并输入学生信息如图 选择菜单中的第二项,运行情况如图所示。 沈阳大学 课程设计说明书NO.13 选择菜单中的第三项,运行情况如图所示。 选择菜单中的第四项,运行情况如图所示。 沈阳大学 课程设计说明书NO.14 选择菜单中的第五项,运行情况如图所示。 选择菜单中的第六项,运行情况如图所示。 沈阳大学 课程设计说明书NO.15 选择菜单中的第七项,运行情况如图所示。 选择菜单中的第八项,运行情况如图所示。 沈阳大学 课程设计说明书NO.16 选择菜单中的第九项,运行情况如图所示。 选择菜单中的第零项,运行情况如图所示。 程序运行过程结束。 沈阳大学 课程设计说明书NO.17 4.设计体会 该系统实现了输入、显示、查找、修改等功能。 通过这次对学生信息管理系统的程序设计,我意识到了很多以前在课堂上没有注意到的一些细小问题。 比如在利用for循环时,我错把i.j的输入范围扩大或缩小,进而影响程序的正常运行。 也有时我因为粗心大意,把关键字的几个特定字母漏写,这些都导致设计的程序在TurboC2.0中无法运行。 5.参考文献 [1]徐士良,C语言程序设计题解与实验指导,[M],人民邮电出版社,2001.1: 42-46 [2]孙家启等,C语言程序设计题解与实验,[M],安徽大学出版社,2002.6: 52-62 [3]祝胜林,张明武,C语言程序设计实验教程,[M],华南理工大学出版社,2005.3.1: 87-90 [4]黄维通,乔林,孟威,C语言程序设计习题解析与应用案例分析,[M],清华大学出版社,2003.5.4: 34-57 [5]李岚,李莉,金一宁.C语言程序设计与上机指导[M].北京: 清华电子工业出版社,2005.5: 198—202 沈阳大学 课程设计说明书NO.18 5.参考文献 [1]谢宋和,甘勇.单片机模糊控制系统设计与应用实例[M].北京: 电子工业出版社,1999.5: 20-25 [2]范立南,韩晓微,王忠石等.基于多结构元的噪声污染灰度图像边缘检测研究[J].武汉大学学报(工学版),2003,49(3): 45-49 [3]卜小明,龙全求.一种薄板弯曲问题的四边形位移单元[J].力学学报,1991,23 (1): 53-60 [4]范立南,谢子殿.单片机原理及应用教程[M].北京: 北京大学出版社,2006.1: 123-130 [5]潘新民,王燕芳.微型计算机控制技术[M],第2版.北京: 电子工业出版社,2003.4: 305-350
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 成绩 管理
![提示](https://static.bdocx.com/images/bang_tan.gif)