淮阴工学院数据结构课程设计报告选题名称:学生成绩管理系统系(院):数理学院专业:信息和计算科学班级:计科1102班姓名:徐连喜学号:1104101233指导教师:周海岩学年学期:2011~2012学年第1学期2012年06月06日【摘要】21世纪,科学技术突飞猛进,经济知识和信息产业初见端倪,特别是信息技术和网络技术的讯速发展和广泛使用,对社会的政治,经济,军事,文化等领域产生越来越深刻。学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。本论文叙述到的学生成绩管理系统是用IIS+ASP网页编程+ACCESS数据库+DREAMWEAVERMX2004+SQL查询语言实现的。重点介绍了学生成绩管理系统的实现过程:包括系统分析,系统调查,功能设计,数据库设计,系统实现,系统测试和调试等。本系统主要功能有查询学生成绩、单个添加学生成绩、批量添加学生成绩、删除学生成绩、管理页面和修改管理员密码等内容。【关键词】成绩管理;成绩查询;C++目录中文摘要。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。11绪论。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。41.1选题背景。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。51.2需求分析。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。62总体设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。72.1程序设计组成框图。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。82.2模块功能说明。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。92.3程序流程图。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。102.4主要函数之间相互调用。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。113在设计过程中的感受。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。12致谢。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。13参考文献。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。14附录:源程序清单。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。151.绪论1.1选题背景为了提高高校学生信息的管理效率,方便对学生信息进行管理、学校里面的学生和管理员方便去管理和查询学生信息,如再要进行查询,就得在众多的学生信息中查找自己的成绩信息,面对学院大量的学生信息,怎么可以即时而方便的管理,学生只要登录本系统就可以查找到自己的成绩信息,而管理员也方便去管理每学期的学生的成绩信息。建立一个学生信息管理系统,使学生信息管理工作规范化,系统化,程序化,避免学生管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改学生信息是必须而且十分迫切的工作。2.1需求分析学生管理系统功能的信息量大,数据安全性和保密性要求最高。本功能实现对专业信息、学生信息、教师信息情况信息的管理和统计、课程信息和成绩信息查看及维护。系统管理员可以浏览、查询、学生的基本信息,能添加、删除和修改学生信息,这部分功能应该由系统管理员执行,但是,删除某条专业基本信息记录时,应实现对该专业的相关信息也级联删除。并且还应具有查询,并打印输出的功能设计不同用户的操作权限和登陆方法、对所有用户开放的用户提供学生成绩信息查询、由于本系统功能实现方面并不太复杂,所以上面只是相关的学生信息管理查询的总体分析,具体实现就主要体现在学生管理,教师的管理和课程的管理这一块,也就是重点实现查询和添加学生信息,以及对成绩信息管理。2.总体设计(1)程序设计组成框图(2)模块功能说明1输出功能:完成全部学生记录的显示。学生成绩管理系统1.按班级输出学生成绩单2.按姓名查询3.增加学生4.删除学生5.按班级修改学生成绩6.按班学期改学生成绩7.保存所有学生信息8.显示不及格学生成绩9.按平均成绩排序并输出成绩10.退出2查询功能:输入姓名可以查询学生的详细信息。3增加功能:增加新学生的信息。4删除功能:删除学生信息。5修改功能:修改学生的错误信息。6保存功能:保存已输入信息。7读取功能:读取已输入信息。8显示功能:按要求显示学生记录。9排序功能:按要求完成对学生信息的排序。10退出系统。(3)程序流程图(4)主要函数之间相互调用如下:开始输入指令(1~10)学生成绩单按姓名查询增加学生删除学生按班级修改按学期修改保存信息不及格成绩平均分排序退出123456789100结束主函数main()的调用switch(choice){case1:OutputInformation();break;case2:DesplayInfoBystudentName();break;case3:p=MallocNode();GetInformation(p);InsertOneNode(p);break;case4:DeleteNodeBystudentNumber();break;总结首先经过一周的编程实习,并在后一段的报告总结,我对数据结构这门科有新的认识,本人实在是获益不浅!要想编写一个准确、高效并有使用价值的程序,一定先要对课本知识熟悉,还要掌握必要的上机操作能力,写程序其实很容易而关键在于调试程序。这次设计,让我重新掌握了数据结构,而且还得到了用数据结构解决实际问题的宝贵经验。其次,通过此次编程我也发现了自己在学习中的错误和不足,复习了以前学过的知识。同时也学到了一些没学过的知识,让我从中收益非浅,也为期末测试准备了一下!更重要的是培养了独立思考问题和解决问题的能力,熟悉了一些基本操作和解决问题的方法!致谢因为初次接触等原因此次设计遇到了许多问题,我深刻体会到老师发挥的重要作用,数据结构程序对我们来说比较难,在匆忙的学习中更是难上加难,似乎觉得自己仅是个匆匆过客,但在老师的帮助下我学会了如何调试,如何查找系统没有提示的错误,最后终于排除万难把程序搞定,体会到原来编程也挺有意思的快感.我想没有老师的帮助我很难在短期内把程序设计做的这样好,在此特地感谢老师的帮助。参考文献[1]李丽娟.C语言程序设计教程(第二版).北京:人民邮电出版社2009[2]刁成嘉.C语言程序设计论文[D].北京:清华大学出版社2004[3]杨文军,杨柳.C语言程序设计教程[M].北京:清华大学出版社2010[4]周启海.C语言程序设计报告[R].北京:中国水利工程出版社2005[5]谭浩强.C程序设计(第三版)[M].北京:清华大学出版社2005附录源程序清单#includestdio.h#includeconio.h#includemalloc.h#includestring.htypedefstructSTUDENT{charstudentNumber[10];/*学生学号*/charstudentName[20];/*学生姓名*/charclassName[20];/*班级名称*/charyearName[20];/*学期名称*/floatmark1;/*第1门成绩*/floatmark2;/*第2门成绩*/floatmark3;/*第3门成绩*/structSTUDENT*next;}STUDENT;STUDENT*headLink;/*链表表头指针*//*以下是函数声明*/voidReadInfoFormFile(void);voidDesplayMenu(void);voidCreateHeadLink(void);STUDENT*MallocNode(void);voidGetInformation(STUDENT*t);voidOutputInformation(void);voidDesplayInfoBystudentName(void);voidDesplayOneNode(STUDENT*t);voidInsertOneNode(STUDENT*t);voidDeleteNodeBystudentNumber(void);voidChangeMarkByName(void);voidChangeMarkByNumber(void);voidSaveLinkToFile(void);voidDesplayMarkSegment(void);voidCompositorByTotalMark(void);intchoose;/*用于接受用户的选择*//*主函数*/voidmain(){CreateHeadLink();ReadInfoFormFile();DesplayMenu();}/************************************函数功能:从文件中读学生信息到链表中************************************/voidReadInfoFormFile(void){FILE*fp;STUDENT*p;fp=fopen(student.txt,r);if(!fp){printf(文件不存在\n);return;}p=MallocNode();while(fscanf(fp,%s%s%s%f%f%f,p-studentNumber,p-studentName,p-className,&(p-mark1),&(p-mark2),&(p-mark3))0){InsertOneNode(p);p=MallocNode();}fclose(fp);}/************************************函数功能:显示菜单,根据用户的输入完成相应的功能************************************/voidDesplayMenu(void){STUDENT*p;printf(-------请选择相应功能------------\n\n);printf(|1按班级输出学生成绩单|\n);printf(|2按姓名查询|\n);printf(|3增加学生|\n);printf(|4删除学生|\n);printf(|5按班级修改学生成绩|\n);printf(|6按学期修改学生成绩|\n);printf(|7保存所有学生信息|\n);printf(|8显示不及格学生成绩|\n);printf(|9按平均成绩排序并输出绩|\n);printf(|10退出|\n\n);scanf(%d,&choose);/*取得用户的选择*/switch(choose){case1:OutputInformation();/*显示所有学生的信息*/break;case2:DesplayInfoBystudentName();break;case3:p=MallocNode();/*先申请一个新结点*/GetInformation(p);/*要求用户输入信息到新结点中*/InsertOneNode(p);/*将新结点加到链表中*/break;case4:DeleteNodeBystudentNumber();/*根据用户输入的学号删除该学生*/break;case5:ChangeMarkByName();/*根据用户输入的姓名修改学生成绩*/break;case6:ChangeMarkByNumber();/*根据用户输入的学号修改学生成绩*/break;case7:SaveLinkToFile();/*保存数据*/break;case8:DesplayMarkSegment();/*显示不及格的学生成绩*/break;c