2022年成绩管理系统C语言课程方案.docx
个人资料整理仅限学习使用运算机文化基础C 语言>程序设计报告指导老师学号同学姓名专业班级电话成果*测控*二九年七月十日一设计题目题目编号: C10<难度系数 C+)题目名称:在 C 语言环境下实现成果治理二题目的意义1. 用 C 语编辑一个成果治理系统,要求输入一个班同学的学号和各门功课的成果,应用结构体数组储存输入的信息,求出每个同学的平均成果;再按平均成果排序,并输出排序的结果;通过对该程序的编辑,有效的把握结构体数组的应用,以及常用的排序方法,提高自身的程序的懂得和读程序的才能;2. 提高自身独立摸索和解决问题的才能,有助于自身摸索问题才能的提升;三程序设计功能图程序由 7 个功能模块组成,功能模块图如下:mainIntroduction Input AverageSortOutput系统终止运行提示<end)各功能模块及参数和变量说明如下:1.模块名称Struct student stuN模块功能结构体数组模块说明定义结构体类型的数组,用于存放同学成果和和学号类型变量名初值值域变量说明charnum00-20同学学号floatsore0>0同学分数floataverage0>0同学平均分2.模块名称main模块功能主控函数模块说明初始化、输入,排序,输出类型变量名初值值域变量说明inti00-10循环变量,代表课程数intj00-100循环变量,代表同学数intk0>0循环变量Intsum0>0同学总分intOrderN00-100排序时引用的代表数组元素下脚标四具体设计程序设计流程图:开头Int i,j,k,sum,orderN ;x>0&&x<11&&y>0&&y<10i=0 ,printf"please input the right number:n"> ;i<yi+system"pause">;Average,求平均分Sort,排序 output 输终止1. 程序运行介绍模块,包括留意事项等printf"*SystemIntroduction*nn">;/* 提示以下部分为程序运行留意事项*/printf"t|1.The NO you write in must be more than zero|n">;/* 输入数据必需大于 0*/printf"t|2.The score you write in must be more than zero|n"> ;/* 输入分数大于 0*/printf"*Message End*n">;/* 提示程序使用留意事项终止 * /printf"nn"> ;2. 数据输入模块: <确认课程数和同学数 )printf"Please input the number of Class:">;/* 输入课程数量 */ scanf"%d",&x> ;printf"Please input the number of student:">;/* 输入同学数量 * / scanf"%d",&y> ;printf"student number:%dn",y>;/输出用户输入数据,确认是否有错 */ printf"Class number:%dn",x> ;3 数据输入及挑选模块 <input)ifx>0&&x<11&&y>0&&y<100>/* 当用户输入数据满意条件才执行下面程序*/fori=0 ;i<y ;i+>printf"nInput records of student %d:n",i+1> ;printf"NO:"> ;/* 输入同学学号 */ scanf"%s",stui.num>;forj=0 ;j<x ;j+>printf"score %d:",j+1> ;scanf"%d",&stui.scorej> ; /* 输入同学分数 */elseprintf"please input the right number:n">;/* 当用户输入数据不符合运行条件时,跳出,并提示用户确认 */system"pause">;4.求平均数模块 :Averagefori=0;i<y ;i+> sum=0;/* 变量初始化 */ orderi=i ;forj=0;j<x ;j+> sum+=stui.scorej;/* 求和函数 */stui.average=sum/x;/* 求平均数函数 */5 排序模块 sort.fori=0 ;i<y-1 ;i+>/* 变量掌握语句 */ forj=i+1 ;j<y ;j+>/* 变量掌握语句 */ifstuorderi.average<stuorderj.average> /* 循环体*/k=orderi ;/* 满意条件就将 orderi 的值赋给 k*/ orderi=orderj ;/* 将 orderj 的 值赋给 orderi*/ orderj=k ;/* 将 k 的值赋给 orderj*/6, outputprintf"NOSco1 Sco2 Sco3 Sco4 Sco5 Sco6 Sco7 Sco8 Sco9 Sco10 Averagen">;/* 输出名称 */fori=0 ;i<y ;i+> printf"%-11s",stuorderi.num> ;/* 输出同学学号,位于对应的NO 下*/forj=0 ;j<10;j+>printf"%-6d",stuorderi.scorej> ;/* 输出分数 */ printf"%-8.1fn",stuorderi.average> ;/* 输出平均分 */五程序运行界面1. 程序开头运行界面: <进入欢迎和程序使用提示界面)2. 程序运行窗口 只输入三名同学和三门考试成果的运行情形>3. 输入成果为 10 门功课, 4 名同学的程序运行界面:六调试、分析及总结序遇到问题解决措施号1 数 组 元 素 个数 不 能 用 变量 定 义 , 但是 在 不 用 链表 处 理 的 前提 下 , 无 法达 到 程 序 具有 可 扩 充 性的目的!2 数 组 元 素 小于 100时, 未 被 赋 值 的数 组 元 素 也会 输 出 , 从而 难 以 观 察输出结果;3 程 序 运 行 时无 法 输 出 同学 成 绩 , 系统显示为 04 程 序 运 行 时无 法 按 照 正确 的 顺 序 输出 , 没 有 进行 排 序 , 而编译无错5 程 序 编 译 时出 错 , 提 示statement minssing, 检查 程 序 无错;1. 一个两个全局变量,在主函数运行时,输出提示语句,让用户输入所要处理的数据的课程数和同学数量2. 定义一个结构体变量,由于程序用于处理一个班的成果,数量不大,所以定义一个元素个数为 100 的结构体数组,当用户输入的同学数大于 100 时就中止运行,返回主界面;<未参考资料!)1.运用之前定义的全局变量x,y,运用循环程序使输入的 x, y 小于最大值时,只输出用户输入的学生学号和成果信息;未赋值的分数输出0.< 参考 C 语言程序设计哈工程版)单步运行,跟踪数据的出入,最终发觉问题在于输 入数据时,数据的储存位置有误,原本应当储存在scorei 的分数,储存到 stui, 从而导致成果结果为0.<参考百度关于常见 C 语言编程问题处理方法) 单步运行,发觉求平均数的函数出错,程序运行到 求平均数程序段时自动跳过,重写求平均数函数,更换变量,通过运行可行误删一个分号,添加后程序编译无错;6 通过对本次程序的编辑,摸索,培育了自身的独立摸索的才能,同时熟悉到了 C 语言在处理程序问题的便利以及局限性,同时把握了部分相应的处理方法;七参考资料1. C程序设计教程,哈尔滨工程高校版;2. C 语言帝国网站: 3. C 语言程序设计精品网站: