C语言实现的学生成绩管理系统设计

版权申诉
0 下载量 48 浏览量 更新于2024-07-01 收藏 83KB DOC 举报
“学生成绩管理系统C语言课程设计” 在本次C语言课程设计中,学生被要求开发一个《学生成绩管理系统》,旨在加深对C语言的理解和应用能力,同时提升软件设计和报告撰写技能。设计任务主要包括收集信息、分析问题、编写程序模块、调试程序以及编写设计报告。 设计要求涵盖以下几个方面: 1. 首先,需要进行充分的资料收集,全面分析课题,并将其分解成可编程的子任务。 2. 其次,深入研究每个小问题,编写对应的程序模块,确保每个模块都能独立完成特定功能。 3. 对关键函数进行详细说明,结合实际应用场景进行解释。 4. 最后,通过上机调试确保整个程序的正确运行。 设计目标主要为: 1. 提高学生对C语言的实际运用能力,认识到其在实际项目中的重要性。 2. 强化C语言基础知识,特别是C语句的准确使用。 3. 学习软件设计的一般方法和思维过程。 4. 锻炼学生的报告撰写技巧,以清晰地呈现设计过程和结果。 课题《学生成绩管理系统》要求实现的功能包括: 1. 学号范围查询,便于快速定位学生信息。 2. 数据录入功能,用于输入学生的各项成绩。 3. 添加和修改功能,允许增加新学生或更新已有学生的成绩。 4. 成绩处理功能,如计算平均分、最高分和最低分等统计信息。 数据结构在本系统中扮演着关键角色,采用非线性数据结构的树结构。在树结构中,“学生成绩管理系统”作为根节点,其他如“查看数据”、“插入数据”、“查找数据”、“更新数据”以及“数据保留和统计”等功能作为子节点,它们是树的叶子,代表了系统的主要操作。 软件模块划分如下: 1. main()主函数,作为程序的入口点,负责调用其他函数并控制程序流程。 2. 各种辅助函数,如输入输出函数、数据处理函数等,这些函数分别实现系统中的各项具体功能,如打印菜单、读写文件、查找、添加和修改数据等。 通过这个课程设计,学生不仅可以巩固C语言基础,还能学习到如何使用C语言构建一个实用的管理软件,理解软件设计的流程和数据结构的应用,这有助于他们在未来的学习和工作中更好地应对复杂的编程挑战。
2023-05-31 上传
#include<stdio.h> #include<string.h> #include<math.h> #include<conio.h> #include<stdlib.h> struct chengji /* 成绩结构体*/ { int point; char subject[20]; }; struct student /* 学生结构体*/ { int w; char name[20]; int number; struct chengji cheng[30]; float sum; float average; }stu[40]; void pjun(); /*按平均分排序*/ void pfen(); /*按总分排序*/ void addnew(); /*录入学生成绩*/ void pall(); /*显示所有成绩*/ void check(); /*查询菜单*/ void pnum(); /*按学号排序*/ void pjing(); /*精确查找*/ /*************************************************************************** ****************************/ /*主菜单*/ main() { char choose; while(1) { printf("\n\t\t**************************************"); printf("\n\t\t* 欢迎使用成绩管理系统 *"); printf("\n\t\t* *"); printf("\n\t\t* 请选择 *"); printf("\n\t\t* 1. 录入学生成绩 *"); printf("\n\t\t* 2. 查询学生成绩 *"); printf("\n\t\t* 3. 清屏 *"); printf("\n\t\t* 0. 退出程序 *"); printf("\n\t\t* *"); printf("\n\t\t**************************************"); printf("\n\n"); printf("请选择:"); scanf("%c",&choose);getchar(); switch(choose) { case '1': addnew(); break; case '2': check(); break; case '3': system("cls"); break; case '0': exit(0); break; default: printf("输入错误,请从新输入!\n\n"); } } } /*************************************************************************** *************************/ /*录入学生成绩*/ void addnew() { int n,m,i,p; float sum; float average; FILE *file; sum=0.00000; average=0.00000; if((file=fopen("c:\\student.dat","rb"))==NULL) { file = fopen("c:\\student.dat", "wb+"); /* 创建一个文件*/ } printf("请输入需要录入的学生人数: "); scanf("%d",&n); for(i=0;i<n;i++) { printf("输入第%d个同学信息:\n",i+1); printf("姓名:"); scanf("%s",&stu[i].name); printf("学号:"); scanf("%d",&stu[i].number); printf("输入科目个数: "); scanf("%d",&m); stu[i].w=m; printf("按科目(回车)成绩(回车)……的顺序输入: \n"); /* 录入成绩*/ for(p=0;p<m;p++) { scanf("%s",&stu[i].cheng[p].subject); scanf("%d",&stu[i].cheng[p].point); stu[i].sum=stu[i].sum+stu[i].cheng[p].point; stu[i].average=stu[i].sum/m; } /* printf("总分%f , 平均分%f\n ",stu[i].sum,stu[i].average);*/ fwrite(&stu[i],sizeof(stu),1,file); /*