《大作业开发报告 举例2(c语言程序).doc》由会员分享,可在线阅读,更多相关《大作业开发报告 举例2(c语言程序).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、大作业开发报告题目:学生成绩管理程序的改进第1组姓名:方亚杰班级:08软件2班学号:日期:2009.6.12一、 题目分析。该作业的要求是设计一个实用的小型学生成绩管路系统,不用链表,而用数组来设计这个程序。该设计由5个C文件(17个函数)和一个头文件组成,每个C文件都代表着某种特定的功能。但该程序所涉及到需要实现的功能较多,它需要实现新建,增加,显示,修改, 删除,储存信息等功能,是一个带有记忆化的程序。而且对于所有的学生,在显示信息中要以字典序显示。而且在实现查询功能时, 可以提供多种信息多样化的查询,这是一个略有难度的操作。文件及函数列表图如下:源文件函数名或其他成分功能 Student
2、.cppMain总控函数Menu_select菜单选择Handle_menu菜单处理newRecords新建学生信息记录quit结束运行 Add_disp.cppshowTable打印表头getIndex按升序排序的位置addRecord在表尾追加信息display显示信息 Quee_remv_modi.cppremoveRecord删除指定的记录findRecord查找指定的记录queryInfo 查找指定学生的信息copyRecord复制记录modifyRecord修改指定学生的信息 Save_loadsave文件存储load文件读取 Sort.cppsortInfo排序 Student.
3、h常数提供常数结构声明学生成绩结构库函数及函数原型声明引用库函数及函数二、 负责部分分析我所负责的部分是撰写add_disp.c这个子文件,这个文件所要实现的功能正如这个文件名字所示, 就是把已经储存在学生管理信息系统中的学生系统调用出来,然后把它展示在大屏幕上;增加新信息;输出在记录中按升序排序的位置。接下来,我详细解释一下我的设计过程。首先,为了实现一个良好人机对话功能,我必须要用户知道,他所需要执行的操作步骤以及他现在所在的操作环境以及状态!所以我先要构造一个人机对话界面,当没有学生信息的时候,由于没有信息可以显示, 所以界面上便会输出“没有可供显示的记录”, 然后返回之前的操作菜单,但
4、是当信息管理系统中有存在学生信息,那么将会有FOR循环来实现这个输出的功能,将原本排好序的信息,以一位学生一行来输出。 但是,对话框的长度有限,但信息储存量巨大时,如果将所有的信息一并输出,那么这显然是一个不合理的设计,用户很可能无法清晰的看到所储存的全部信息!于是,这也便是我的一个改进,我以20个信息为一组,每显示20条信息来提示用户是否继续显示!这样20个信息足以在屏幕清晰显示出来,以供读者更舒适,以及清楚的浏览数据!增加新信息的功能是运用增加新信息函数addRecord用来在当前表的尾部增加新信息,这只要将新信息保存到RecordnumStus中即可,然后numStus自加1,完成操作。
5、每新增加一个学生记录,就通过总分来计算名次,该学生的名词是总分高于他的学生的总数加1,并且所有总分小于他的学生的名次均增1。在这个实现过程中,我自定义了一个showTable函数,来帮助人机对话信息的显示!使程序看起来更整洁,美观!三、 实现技术 由于该程序所涉及的功能相当广泛,相对设计要求也较高,从整体上来说,我们将设计的要求分类成对应的类别,分别通过不同的模块来实现,具体有add_disp.cpp,quee_remv_modi.cpp,sav_load.cpp,sort.cpp以及student.cpp等来构成的工程文件!该文件及函数组成已在题目分析中列图。首先来具体介绍一下各个文件分别所
6、实现的功能:student.h文件,毫无疑问,这是一个头文件,它包含了整个工程所有用到函数的声明,以及所需要用到的变量和调用函数库的声明(即所需用到库函数头文件的输入),虽然这个文件所需的技术含量较低,但他宏观囊括了整个程序设计的框架,此作用可见一般!student.cpp文件,这个事包含了主文件的一个程序, 他一个很总要的功能就是一个菜单的人机对话显示,这个过程我们使用了一个for循环和一个swich来实现,为了实现程序的健壮性,当用户不慎的输入错误数据时,我们人性化的提供了再次输入的功能,程序会自主地去判断是否符合输入要求。也提供了退出整个程序一个选项选择。当然如果一个在运行完之后直接退出
7、,然后所有信息初始化,这样的结构式相当不合理的,于是在这个退出选项中,我们还调用了newRecoreds来储存对这个信息库中所修改后的信息 add_disp.cpp文件,该文件之前有介绍过,功能也显而易见,在此就不再加说明。quee_remv_modi.cpp文件这个文件所实现的工程是查找以及修改,它调用了findRecord这个函数来查找记录,通过反复调用,来使每次的I值都符合条件的记录序号!而modifyRecord这个函数所实现的功能是修改,他会根据用户的需求来显示每一条符合条件的信息,然后来询问用户是否需要修改!在修改之后,将所在信息库中的信息重新排序.sav_load.cpp文件实现
8、了对文件的存储和读取功能,sort.cpp文件实现用不同的方法对系统信息重新排列的功能。四、 与其他功能模块的联系我负责的部分是add_disp.cpp文件,其中包括的函数showTable, getIndex, addRecord, display分别有打印表头,按升序排序的位置,在表尾追加信息,显示信息的功能,这个模块的联系可大可小,下面我分别说下这几个函数于整个程序的联系:showTable 函数主要是在信息输入后使整个程序看起来更整洁,美观;getIndex联系最大的就是sort.cpp文件,因为整个程序的设计要求,输出时要以字典序形式来输出,所以每次当要有信息存储进来对其显示时,都要
9、对其进行排序,而getIndex函数这一段可以说是sort.cpp文件的基础;addRecord函数在整个程序中可以算是最终要的一块之一,程序在开始时是没有任何信息的,要查找,删除等管理的信息必须要在学生信息加入后,才能真正体现这个管理程序的用途;display函数能够使整个程序信息在经过一系列的管理后,把所有信息显示出来。当然,所有的这些函数的运行都要经过菜单函数menu_selected才能打开运行。每个文件在这个程序中都有一定的联系,他们必须紧密相连才能是整个程序更加完整。五、 技术难点和创新点在程序的设计以及开发过程中,我们确实也遇到了不小的麻烦,首先,就比如说在信息的修改和查找时,对
10、无用信息的处理,和多样形式的查找方式的处理,着实让我们头痛了一把。我们通过翻阅书本,找到一些有用的处理方式,在多次的商讨修改之后,终于把这部分搞定了。还有在排序过程中,也是一个相当繁琐的过程!但是我们通过共同合作,一一克服了!至于创新点,在技术层面上,之前有所提到,而其实本身的程序要求,把程序的这么多要求基于一体,本身也是一种创新。六、 使用介绍和操作方法首先找到一个名为student.exe的应用文件,双击打开后,会显示一个菜单:* 这是一个 * 学生成绩管理程序 * 可以对学生成绩进行管理 * 欢迎使用管理程序 *0. 增加学生信息1. 修改学生信息2. 显示学生信息3. 查询学生信息4.
11、 删除学生信息5. 对学生信息进行排序6. 保存学生信息至记录文件7. 从记录文件读取学生信息8. 新建学生信息文件9. 结束运行左边数字对应功能选择,请选0-9:根据对应的编号选择你要进行的操作。当输入09以外的数字时会自动提示输入错误,请重新输入。选择0时,如果没有数据会提示新建一组数据输入接下来按照提示输入对应学生的学号、姓名、性别(由0和1代替),接下来将是各科的成绩。输入完一个学生的信息后会提醒是否继续输入下一个学生的。选择1时,会提示是按学号、姓名、排名的其中的一种方式进行选择修改学生的信息,在进行修改时会提示先删除后再重新输入。选择2时,会显示当前的所有的学生信息。选择3时,会提
12、示是按学号、姓名、排名的其中的一种方式进行选择查询学生的信息。选择4时,会提示是按学号、姓名、排名的其中的一种方式进行选择删除学生的信息。选择5时,会进入一个选择进行选择排序的方式菜单,你可以进行对学生的学号、名称、名次的升序或者降序进行排列,或者是选择“7.按错了,我并不想进行排序”。选择6时,会直接进行输入保存的文件名或者按回车,直接保存为stu_info的文件。选择7时,在当前操作中有学生的信息时,会提示是直接覆盖掉原来的学生信息还是添加到现有的学生信息后面。选择8时,将自动清空当前的所有学生信息,输入新的一组学生信息。选择9时,若未保存,则提醒是否保存,保存后则自动退出操作界面。七、
13、特点与不足说到特别,功能的广泛无疑是它的一个亮点,文件的储存读取功能也是一个值得称道的地方。当然不能王婆卖瓜自卖自夸,对于整个程序的设计而言,缺点无疑是存在的,比如说对信息储存量的限定,以及一些步骤的未优化导致非操作过于多,在信息的储存中,也对内存产生浪费;对每次查找学生信息时,信息的修改和删除都比较繁琐。这些都是我们的程序需要改进的地方,所以,我还是觉得我们的程序还有一定的提升空间的!八、 体会当然,对每项工程的顺利完成,离不开的肯定是每位成员的辛苦工作!我觉得这次我们也很好的发挥了合作精神,在面对困难时,我们共同的去寻找答案.在面对难题的过程以及遇到一些始料未及的新事物以及困难时,我们踏实地去寻找答案,每次的点滴成功,都是对我们的一次激励与学习!我觉得这个工程所带给我们的价值不仅是他本身的价值,更是一种学习方向!最后,也祝贺我们自己能够顺利完成这项工程,我们成功了!