您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 学生信息管理课程设计报告
程序设计课程设计题目:学生基本信息管理软件设计课程名称:程序设计课程设计班级与班级代码:14电子商务2班专业:电子商务任课教师:胡建军提交日期:2016年5月3日广东财经大学教务处制评语:完成基本设计任务格式正确,内容完整设计科学,功能丰富代码简洁,算法清晰,可读性强无抄袭且体会深刻注:对号:正确、完整、详细、合理半对号:部分正确、不完整、不详细、基本合理错号:错误、缺失、较差抄袭一票否决小组成员名单:(第一名默认为组长)姓名学号工作量百分比分数吴丽纯1425110320320%梁小燕1425110323715%刘淑明1425110322815%麦国咏1425110321615%陆炳瑜1425110322315%郑建鑫1425110321920%指导教师(签名)胡建军1目录1系统功能要求................................................22.系统分析与总体设计..........................................23.详细设计...................................................3主界面和退出程序模块(模块1).............................3学生信息增加处理模块(模块2).............................5学生信息录入处理模块(模块3).............................7学生信息显示模块(模块4).................................8学生信息删除模块(模块5).................................9学生信息查询模块(模块6)................................11学生信息统计模块(模块7)................................12学生信息修改模块(模块8)................................13学生信息排列模块(模块9)................................144.课程设计总结...............................................165.附录.......................................................1621系统功能要求:本系统是一个学生信息管理软件,主要用来管理学生基本信息及成绩信息。系统功能包括:学生基本信息录入(学号、姓名、性别、学院、专业班级、外语、计算机、数学)以及对学生信息进行删除、增加、查找、排列、统计、修改操作。整个系统是通过VC++6.0实现。2.系统分析与总体设计学生管理系统由九大功能模块组成:主界面和退出程序、信息增加、信息录入、信息显示、信息删除、信息查找、信息排列、信息统计、信息修改。系统功能模块结构内容示例如下图:图1学生管理系统结构图欢迎界面主菜单增加学生信息录入学生信息删除学生信息查询学生信息排列学生信息统计学生信息退出程序修改学生信息按学号删除按学号查询按姓名查询按三门课总分按学院统计按班级统计33.详细设计主界面和退出程序模块(模块1)功能:菜单是应用程序的界面,用户可以通过菜单选择来实现自己想要完成的功能。退出程序则退出学生信息管理软件。程序说明:通过使用for循环语句来实现菜单的循环选择,使用数字0-9来选择菜单项,用“exit(0);”语句来结束程序的运行。函数组成:voidhandle_menu(STU*);intmenu_select(void);流程图:4图2模块1流程图进入主菜单真真真真真真真真真真开始欢迎界面,菜单选择输入选择项Case2Case333If00exit(0)saving(head)load(head)结束Case4display(head)Case1add(head)breakCase5del(head)Case6find(head)Case7counting(head)Case8sort(head)Case9change(head)breakbreakbreakbreakbreakbreakbreakbreak假假假假假假假假假5操作方法(流程):首先调用菜单处理函数menu_handle(),然后调用菜单选择函数menu_select,通过输入变量cn进行菜单选择,限定输入必须在0-9之间才有效,根据所选的数字使用switch语句来调用函数实现程序功能。测试:学生信息增加处理模块(模块2)功能:添加新学生信息并将其存入指定文件“学生信息管理.TXT”中。程序说明:有2个变量用来作为标记:一个是num域,用来设置输入结束标记;一个是记录计数器count,用来判别是否是第一个记录。只有在第一次输入记录时,才自动读取文件。一旦内存有了数据,就不能再取文件,否则取入的文件内容将覆盖现在的输入信息。6函数组成:STU*add(STU*head)流程图:图3模块2流程图操作方法:从尾部开始逐个追加记录,报告文件是否已经存在,如果存在,则将其取入并将新纪录追加在记录尾部。如果还没建立“学生信息管理.TXT”文件,则提醒用户退出时不要忘记保存添加的记录。测试:Case1进入增加学生信息页面输入学号、姓名、性别、学院、班级、外语成绩、计算机成绩、数学成绩输出三门成绩的总分是否输入0是进入菜单选择,重新输入选项否7学生信息录入处理模块(模块3)功能:可以单独存取文件,将内存中的信息存储到文件中。程序说明:这个模块包括文件读取操作函数load和将文件存储的操作函数saving。在存文件时,需要先判别是否有记录可存;在取文件时,需要将计数器复零,然后对读入的信息记录计数。函数组成:intmenu_select(void);voidsaving(STU*head);流程图:图4模块3流程图Case2count=0?没有记录可存不能打开文件文件是否为空存文件是否是否Case3文件是否为空取文件打不开文件是否8操作方法:打开文件,新建指针p指向头结点,通过记录计数器判断是否有记录可存以及能否正常打开文件,根据要求执行存入操作将学生所有信息输入到文件中,并将p指向下一个结点,直到p为空,即输入了信息,并报告存入记录条数和读取记录条数。测试:学生信息显示模块(模块4)功能:可以随时显示内存中的学生信息。程序说明:display函数显示内存动态记录的内容,参数为常量指针,为了使用这个参数,必须将p也声明为与它的类型一致的指针,返回结构指针head。函数组成:voiddisplay(STU*);流程图:9图5模块4流程图操作方法:先新建一个指针p指向头结点,然后判断记录计数器count是否为0,若是,则输出现在没有记录;若否,则输出它的指针域所指向节点存储的学生信息,并将该指针指向下一个结点,直到p指向空,即输出了所有学生信息。测试:学生信息删除模块(模块5)功能:通过按“学号”的方式删除学生信息并更新文件。Case4进入显示学生信息模块count=0?显示所有学生的所有信息没有记录或没有读取文件是否10程序说明:删除操作仅限于内存,只有存入学生信息时,才能覆盖原纪录。如果已经是空表,删除时给出提示信息并返回主菜单。如果没有要删除的信息,输出没有找到信息并退出删除操作。函数组成:STU*del(STU*)流程图:图6模块5流程图操作方法:根据查找原理,通过输入的信息,找到要更改的学生信息删除这一结点,并将其前驱结点的指针域指向其后继结点,完成学生信息的删除测试:Case5进入删除学生信息模块输入1或21输入要删除学生的学号2退出操作已经删除该学生记录11学生信息查询模块(模块6)功能:通过按“学号”或按“姓名”的方式查询学生信息。程序说明:若文件存在,并且指针不为空,可以根据用户输入的学生学号或者姓名来输出查询结果,若输入错误,则显示未能搜到查询结果。函数组成:voidfind(STU*head)流程图:图7模块6流程图操作方法:首先新建一个指针p指向头结点,若它的指针域为空,则输出未打开任何文件,若不为空,输入需要按什么方式查询,然后根据所选方式,输入一个需要查找的学生信息,判断p的指针域所指向的结点所存储的信息是否与输入的信息是否相同,若相同则输出这个学生的所有信息,并将指针p指向下一个结点,再次进行判断,直到p为空,则输出了所有查询信息。若不相等,则p指向下个结点,再次进行判断,直到p指向空。测试:Case6进入查询学生信息模块输入1或21按学号查询2按姓名查询显示所要查询学生的信息12学生信息统计模块(模块7)功能:分别通过学院和专业班级的方式统计学生信息。程序说明:若记录为空,则退出统计操作。若不为空,则打开文件,按所输入的信息统计学生数。函数组成:STU*counting(STU*head)流程图:图8模块7流程图Case7进入统计学生信息模块请输入需统计人数的学院请输入需统计人数的班级学院人数班级人数13操作方法:用户在程序中输入需要统计的学院和专业班级,新建一个指针p1指向头结点,若它的指针域不为空,比较p1所指结点是否与输入的数据相同,如果是,则该信息记录数加1,并且p1指向下一个结点,直到p1为空为止,若没有找到相等的信息,则输出没找到相应的记录。测试:学生信息修改模块(模块8)功能:修改学生信息。程序说明:打开文件,输入要修改的学生学号,程序将查询到相应的学号,用户按提示输入修改后的学生信息即可完成对学生信息的修改,若未查询到相应的学号,则输出未能找到记录。函数组成:STU*change(STU*head)14流程图:图9模块8流程图操作方法:根据查找原理,输入要修改的学生学号,查询要修改信息的学生,按提示输入修改后的学生信息,最后返回头指针head。测试:学生信息排列模块(模块9)功能:按学生英语、计算机、数学三门课总分排列学生信息。程序说明:通过指针循环遍历链表,反复从还未排好序的已有学生信息中找到三门课Case8进入修改学生信息模块输入要修改的学生的学号输入学生新的学号、姓名、性别、学院、班级、外语成绩、计算机成绩、数学成绩学生三门课总分修改成功15总分最大的学生,依次输出学生所有信息。函数组成:STU*sort(STU*head)流程图:图10模块9流程图操作方法:设置排列后的头指针和尾指针,先循环遍历链表中的节点,找出此时最大的节点,找到一个后就把它放到另一个空的链表中;空链表中安放第一个进来的节点,产生一个有序链表,并且让它在原链表中分离出来,继续在原链表中找下一个最大的结点,找到后把它放入有序链表的尾指针的next,然后它变成其尾指针,循环结束即可得到有序链表。测试:Case9进入排列学生信息模块显示按三门课总分从高到低排序后的所有学生信息164.课程设计总结在这次的课程设计中,我们组获得了许多收获。首先,通过这次课程设计,我们更深刻地理解了链表与文件,这两个知识点在大一只是大概地接触过,没有深入了解过。因而通过自学收获了很多在课堂上没有学过的知识,并且在对链表和相关函数的编写中,对C语言代码更为敏感,写代码更为熟练,以前很难理解的知识点也变的容易理解了,巩固了课堂上学到的知识。第二,之前上课都是照着书本打代码,理解后再自己重新打一遍,结果程序调试时往往会出现很多错误,通常是些很细微容易忽略的错误,比如符号,字符类型等,但不容易发现,做实验效率低,容易引起情绪波动,通过这次课程设计,我们明白了程序员并非想象中容易当,需要细心、有耐心和毅力。第三,这次实验是划分小组做,大家彼此分工,每个人负责不同的模块和函数编写,最后汇总,修改。虽然分小组写出的代码很散,变量参数很多,需要改正,但是也正因此,我们小组成员每次上课时都积极讨论,不会的问题互相提问帮忙解决,因调试错误烦恼时互相安慰勉励,增进了彼此之间的感情,在最后程序成功运行时大家的心情都特别激动,所有努力都没有白费。总之,在这次课程设计中我们不仅
本文标题:学生信息管理课程设计报告
链接地址:https://www.777doc.com/doc-2489526 .html