中南大学《C语言程序设计》课程设计报告课题名称:学生成绩管理系统专业电气信息学生姓名舒畅班级0914学号0909091424指导教师穆帅完成日期2010年7月10日信息科学与工程学院1目录1课程设计的目的............................................................................................................................................12设计内容与要求............................................................................................................................................13主要技术指标及特点....................................................................................................................................23.1登录界面显示...................................................................................................................................23.2登记学生资料...................................................................................................................................43.3保存学生资料................................................................................................................................53.4删除学生资料...................................................................................................................................63.5修改学生资料................................................................................................................................73.6查询学生资料...................................................................................................................................83.6统计学生资料................................................................................................................................83.8对学生资料进行排序....................................................................................................................93.9程序主要代码................................................................................................................................94设计小结......................................................................................................................................................311成绩管理系统1课程设计的目的1.加深对《C语言程序设计》课程知识的理解,掌握C语言应用程序的开发方法和步骤;2.进一步掌握和利用C语言进行程设计的能力;3.进一步理解和运用结构化程序设计的思想和方法;4.初步掌握开发一个小型实用系统的基本方法;5.学会调试一个较长程序的基本方法;6.学会利用流程图或N-S图表示算法;7.掌握书写程设计开发文档的能力(书写课程设计报告)。2设计内容与要求设计内容:成绩管理系统现有学生成绩信息,内容如下:姓名学号C数学英语shuchang12999899jiutian32876887changzi33988999jiutia1374345设计要求:封面(参见任务书最后一页)系统描述:分析和描述系统的基本要求和内容;功能模块结构:包括如何划分功能模块,各功能模块之间的结构图,以及各模块的功能描述;数据结构设计:设计数据结构以满足系统的功能要求,并加以注释说明;主要模块的算法说明:即实现该模块的思路;运行结果:包括典型的界面、输入和输出数据等;总结:包括C语言程序设计实践中遇到的问题,解决问题的过程及体会、收获、2对程序开发的认识与思考等。附录:包括主要程序清单,要有适当的注释,使程序容易阅读。3主要技术指标及特点程序流程图如下:3.1登录界面显示学生成绩管理系统输入学生信息更新学生信息查询学生成绩统计学生成绩从键盘输入从文件中获取修改学生成绩删除学生成绩排序学生成绩按照学号查找按照姓名查找按照课程名及分数段进行统计按照学号删除按照姓名删除按课程得分降序排列3此登录界面是预先设定好作为菜单来显示的,在主函数中以menu()来实现的,在函数中,是通过switch……case来实现选择功能的,用户可以通过需要进行选择,方便了用户的使用,非常人性化。43.2登记学生资料当系统中没有保存学生信息时,就会提示没有学生记录!也就是说不能从文件中导出,这时就需要用户进行学生资料的导入,当输入的学号已经存在时,系统会提示用户重新输入一个未被占用的学号信息,否则就重新分配内存空间。53.3保存学生资料该操作是将用户输入的学生信息进行保存,用文件的方法进行调试,当用户输入对象的个数超过0时,显示保存成功,否则提示,系统连接为空。63.4删除学生资料这里又是通过switch……case函数的调用,让用户进行选择,共有两种方法:1.按照学号2.按照姓名,操作完成后,系统会自动提示,该学生已经成功删除,当再次显示的时候,函数中的链表就不再指向该学号,从而起到删除的作用。删除完成后,再次保存一下学生资料,不然系统仍然默认为原始人数。73.5修改学生资料通过选择到达修改界面:此时将呈现出现有的学生资料,按照要求将新的信息输入其中,再保存资料,如果输入的学号系统中未显示,那么系统则提示没有资料可以修改。这个为修改完的图片83.6查询学生资料按照选择,则会呈现出用户需要查找的所有信息,每次呈现出来的时候都要用之前定义的printheader()函数,这个很好地将数据按照格式化的形式显现出来。此为按照学号查找的例子,按照姓名查找是同样道理。3.6统计学生资料(自加功能)统计学生资料主要还是用的switch……case函数,通过选择,用printheader(),printdata(r),printf(END)等函数用表格的形式将符合条件的学生信息全部显示出来,不过唯一不足的就是所有的学生信息没有能够连贯起来,每个学生信息前面都有表头,没处理好。93.8对学生资料进行排序该图显示的是按照语文成绩排序完的结果,用链表将数据进行一个接一个的比较,按照降序将学生信息排列下来,最后提示排序已经完成,并将所有结果按照用户要求显示出来。3.9程序主要代码主函数#includestdio.h/*标准输入输出函数库*/#includestdlib.h/*标准函数库*/#includestring.h/*字符串函数库*/10#includeconio.h/*屏幕操作函数库*/#defineHEADER1----------------------------student'sinformation----------------------------\n#defineHEADER2|Number|Name|C|Math|English|Total|Average|\n#defineHEADER3|---------------|---------------|----|----|----|--------|-------|#defineFORMAT|%-10s|%-15s|%4d|%4d|%4d|%4d|%.2f|\n#defineDATAp-data.num,p-data.name,p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.total,p-data.ave#defineEND--------------------------------------------------------------\nintshoudsave=0;/**/structstudent{charnum[10];/*Number*/charname[20];charsex[4];intcgrade;intmgrade;integrade;inttotal;floatave;charneartime[10];/*最近更新时间*/};typedefstructnode{structstudentdata;structnode*next;}Node,*Link;菜单函数voidmenu(){system(cls);/*调用DOS命令,清屏.与clrscr()功能相同*/cprintf(\n);printf(@@@@@Students'performancemanagementsystem@@@@@@\n\n);printf(@@@@@@@@@@@@@@@@@@@@@@@Menu@@@@@@@@@@@@@@@@@@@@@@@@\n);printf(*1input2delete*\n);printf(*3search4modify*\n);printf(*5insert6count*\n);11printf(*7sort8save*\n);printf(*9dispaly0exit*\n);printf(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n);/*cprintf()送格式化输出至文本窗口屏幕中*/}voidprintheader()/*格式化输出表头*/{printf(HEADER1);printf(HEADER2);printf(HEADER3);}voidprintdata(Node*pp)/*格式化输出表中数据*/{Node*p;p=pp;printf(FORMAT,DATA);}voidWrong(){printf(\n=====error!\n);}voidNofind(){printf(\n=====Norecordnow!PleasepressEnter\n);}voidDisp(Linkl)/*显示单链表l中存储的学生记录,内容为student结构中定义的内容*/{Node*p;p=l-nex