C语言学生成绩管理系统课程设计报告_第1页
C语言学生成绩管理系统课程设计报告_第2页
C语言学生成绩管理系统课程设计报告_第3页
C语言学生成绩管理系统课程设计报告_第4页
C语言学生成绩管理系统课程设计报告_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言学生成绩管理系统课程设计报告摘要:本报告详细介绍了使用C语言开发的学生成绩管理系统。该系统实现了学生信息的录入、成绩的录入与修改、查询、统计以及排序等功能。通过模块化设计,提高了代码的可读性和可维护性。本文阐述了系统的功能需求分析、总体设计、详细设计以及测试结果等内容。

关键词:C语言;学生成绩管理系统;课程设计

一、引言(一)项目背景在学校的教学管理中,学生成绩管理是一项重要且繁琐的工作。传统的手工管理方式效率低下、容易出错,难以满足现代教育管理的需求。因此,开发一个功能完善、操作简便的学生成绩管理系统具有重要的现实意义。

(二)课程设计目标本次课程设计旨在运用C语言实现一个学生成绩管理系统,该系统应具备以下功能:1.能够方便地录入学生的基本信息和成绩。2.可以对学生的成绩进行修改、删除操作。3.支持按多种条件查询学生成绩。4.能够对学生的成绩进行统计分析,如平均分、最高分等。5.可以对学生成绩进行排序。

二、需求分析(一)功能需求1.学生信息管理-录入学生的基本信息,包括学号、姓名、性别、专业等。-修改学生的基本信息。-删除学生的基本信息。2.成绩管理-录入学生的课程成绩,包括课程编号、课程名称、成绩等。-修改学生的课程成绩。-删除学生的课程成绩记录。3.查询功能-按学号查询学生的基本信息和成绩。-按姓名查询学生的基本信息和成绩。-按专业查询学生的基本信息和成绩。4.统计功能-计算某门课程的平均分。-找出某门课程的最高分和最低分。-统计每个学生的总成绩和平均成绩。5.排序功能-按学号升序或降序排列学生信息和成绩。-按总成绩升序或降序排列学生信息和成绩。

(二)性能需求1.系统应具有较高的响应速度,在合理的时间内完成各项操作。2.对于大量数据的处理,应保证系统的稳定性和准确性。3.界面应简洁明了,易于操作。

(三)用户界面需求1.提供清晰的菜单选项,方便用户选择不同的功能。2.在操作过程中,给出相应的提示信息,引导用户正确操作。3.对于查询、统计等操作的结果,应进行合理的显示,便于用户查看。

三、总体设计(一)系统架构设计本系统采用模块化设计,主要包括以下几个模块:1.主函数模块:负责调用各个功能模块,实现系统的整体控制。2.学生信息管理模块:处理学生基本信息的录入、修改、删除等操作。3.成绩管理模块:负责学生成绩的录入、修改、删除等操作。4.查询模块:实现按不同条件查询学生成绩的功能。5.统计模块:进行成绩的统计分析。6.排序模块:对学生成绩进行排序。7.数据存储模块:负责学生信息和成绩数据的存储和读取。

(二)数据库设计本系统采用文件存储数据,通过结构体数组来存储学生信息和成绩。1.学生信息结构体```ctypedefstruct{intid;charname[20];chargender[10];charmajor[20];}Student;```2.学生成绩结构体```ctypedefstruct{intid;intcourseId;charcourseName[20];floatscore;}Score;```

(三)模块间的关系主函数模块调用其他各个功能模块,每个功能模块完成特定的任务,并通过数据存储模块进行数据的交互。例如,学生信息管理模块和成绩管理模块在操作数据时,会调用数据存储模块进行数据的读写;查询模块、统计模块和排序模块在获取数据时,也会从数据存储模块读取相应的数据。

四、详细设计(一)主函数模块主函数负责显示系统菜单,根据用户的选择调用相应的功能模块。```cintmain(){intchoice;while(1){displayMenu();scanf("%d",&choice);switch(choice){case1:studentInfoManagement();break;case2:scoreManagement();break;case3:queryFunction();break;case4:statisticsFunction();break;case5:sortingFunction();break;case6:exitSystem();break;default:printf("无效选择,请重新输入!\n");}}return0;}```

(二)学生信息管理模块1.录入学生信息```cvoidaddStudent(Studentstudents[],int*count){printf("请输入学号:");scanf("%d",&students[*count].id);printf("请输入姓名:");scanf("%s",students[*count].name);printf("请输入性别:");scanf("%s",students[*count].gender);printf("请输入专业:");scanf("%s",students[*count].major);(*count)++;saveStudents(students,*count);printf("学生信息录入成功!\n");}```2.修改学生信息```cvoidmodifyStudent(Studentstudents[],intcount){intid,found=0;printf("请输入要修改的学生学号:");scanf("%d",&id);for(inti=0;i<count;i++){if(students[i].id==id){printf("请输入新的姓名:");scanf("%s",students[i].name);printf("请输入新的性别:");scanf("%s",students[i].gender);printf("请输入新的专业:");scanf("%s",students[i].major);saveStudents(students,count);found=1;printf("学生信息修改成功!\n");break;}}if(!found){printf("未找到该学号的学生!\n");}}```3.删除学生信息```cvoiddeleteStudent(Studentstudents[],int*count){intid,found=0;printf("请输入要删除的学生学号:");scanf("%d",&id);for(inti=0;i<*count;i++){if(students[i].id==id){for(intj=i;j<*count-1;j++){students[j]=students[j+1];}(*count)--;saveStudents(students,*count);found=1;printf("学生信息删除成功!\n");break;}}if(!found){printf("未找到该学号的学生!\n");}}```

(三)成绩管理模块1.录入成绩```cvoidaddScore(Scorescores[],int*count,Studentstudents[],intstudentCount){intid,courseId,found=0;floatscore;printf("请输入学生学号:");scanf("%d",&id);for(inti=0;i<studentCount;i++){if(students[i].id==id){found=1;printf("请输入课程编号:");scanf("%d",&courseId);printf("请输入课程名称:");scanf("%s",scores[*count].courseName);printf("请输入成绩:");scanf("%f",&score);scores[*count].id=id;scores[*count].courseId=courseId;scores[*count].score=score;(*count)++;saveScores(scores,*count);printf("成绩录入成功!\n");break;}}if(!found){printf("未找到该学号的学生!\n");}}```2.修改成绩```cvoidmodifyScore(Scorescores[],intcount){intid,courseId,found=0;floatnewScore;printf("请输入学生学号:");scanf("%d",&id);printf("请输入课程编号:");scanf("%d",&courseId);for(inti=0;i<count;i++){if(scores[i].id==id&&scores[i].courseId==courseId){printf("请输入新的成绩:");scanf("%f",&newScore);scores[i].score=newScore;saveScores(scores,count);found=1;printf("成绩修改成功!\n");break;}}if(!found){printf("未找到该学生的该课程成绩记录!\n");}}```3.删除成绩```cvoiddeleteScore(Scorescores[],int*count){intid,courseId,found=0;printf("请输入学生学号:");scanf("%d",&id);printf("请输入课程编号:");scanf("%d",&courseId);for(inti=0;i<*count;i++){if(scores[i].id==id&&scores[i].courseId==courseId){for(intj=i;j<*count-1;j++){scores[j]=scores[j+1];}(*count)--;saveScores(scores,*count);found=1;printf("成绩删除成功!\n");break;}}if(!found){printf("未找到该学生的该课程成绩记录!\n");}}```

(四)查询模块1.按学号查询```cvoidqueryById(Studentstudents[],intstudentCount,Scorescores[],intscoreCount){intid,found=0;printf("请输入要查询的学号:");scanf("%d",&id);for(inti=0;i<studentCount;i++){if(students[i].id==id){printf("学号:%d,姓名:%s,性别:%s,专业:%s\n",students[i].id,students[i].name,students[i].gender,students[i].major);for(intj=0;j<scoreCount;j++){if(scores[j].id==id){printf("课程编号:%d,课程名称:%s,成绩:%.2f\n",scores[j].courseId,scores[j].courseName,scores[j].score);}}found=1;break;}}if(!found){printf("未找到该学号的学生!\n");}}```2.按姓名查询```cvoidqueryByName(Studentstudents[],intstudentCount,Scorescores[],intscoreCount){charname[20];printf("请输入要查询的姓名:");scanf("%s",name);intfound=0;for(inti=0;i<studentCount;i++){if(strcmp(students[i].name,name)==0){printf("学号:%d,姓名:%s,性别:%s,专业:%s\n",students[i].id,students[i].name,students[i].gender,students[i].major);for(intj=0;j<scoreCount;j++){if(scores[j].id==students[i].id){printf("课程编号:%d,课程名称:%s,成绩:%.2f\n",scores[j].courseId,scores[j].courseName,scores[j].score);}}found=1;}}if(!found){printf("未找到该姓名的学生!\n");}}```3.按专业查询```cvoidqueryByMajor(Studentstudents[],intstudentCount,Scorescores[],intscoreCount){charmajor[20];printf("请输入要查询的专业:");scanf("%s",major);intfound=0;for(inti=0;i<studentCount;i++){if(strcmp(students[i].major,major)==0){printf("学号:%d,姓名:%s,性别:%s,专业:%s\n",students[i].id,students[i].name,students[i].gender,students[i].major);for(intj=0;j<scoreCount;j++){if(scores[j].id==students[i].id){printf("课程编号:%d,课程名称:%s,成绩:%.2f\n",scores[j].courseId,scores[j].courseName,scores[j].score);}}found=1;}}if(!found){printf("未找到该专业的学生!\n");}}```

(五)统计模块1.计算课程平均分```cvoidcalculateCourseAverage(Scorescores[],intscoreCount){intcourseId;floattotal=0,count=0;printf("请输入课程编号:");scanf("%d",&courseId);for(inti=0;i<scoreCount;i++){if(scores[i].courseId==courseId){total+=scores[i].score;count++;}}if(count>0){printf("该课程的平均分为:%.2f\n",total/count);}else{printf("未找到该课程的成绩记录!\n");}}```2.找出课程最高分和最低分```cvoidfindCourseMaxMin(Scorescores[],intscoreCount){intcourseId;floatmax=-1,min=101;printf("请输入课程编号:");scanf("%d",&courseId);for(inti=0;i<scoreCount;i++){if(scores[i].courseId==courseId){if(scores[i].score>max){max=scores[i].score;}if(scores[i].score<min){min=scores[i].score;}}}if(max!=-1&&min!=101){printf("该课程的最高分是:%.2f,最低分是:%.2f\n",max,min);}else{printf("未找到该课程的成绩记录!\n");}}```3.统计学生总成绩和平均成绩```cvoidcalculateStudentTotalAverage(Studentstudents[],intstud

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论