数据结构课程设计报告

合集下载

数据结构课程设计实验报告完整版

数据结构课程设计实验报告完整版

数据结构课程设计实验报告完整版【正文】一、实验目的本实验主要目的是通过实践,掌握数据结构的基本概念、常见数据结构的实现方式以及在实际应用中的应用场景和效果。

二、实验背景数据结构是计算机科学与技术领域中的一个重要概念,是研究数据的组织方式、存储方式、访问方式以及操作等方面的方法论。

在计算机科学领域,数据结构是实现算法和解决问题的基础,因此对数据结构的理解和应用具有重要意义。

三、实验内容本次数据结构课程设计实验主要分为以下几个部分:1. 实验环境的准备:包括选择合适的开发平台、安装必要的软件和工具。

2. 实验数据的收集和处理:通过合适的方式收集实验所需的数据,并对数据进行处理和整理。

3. 数据结构的选择和实现:根据实验需求,选择合适的数据结构,并进行相应的数据结构实现。

4. 数据结构的测试和优化:对所实现的数据结构进行测试,包括性能测试和功能测试,并根据测试结果对数据结构进行优化和改进。

5. 实验报告的撰写:根据实验过程和结果,撰写完整的实验报告,包括实验目的、实验背景、实验内容、实验结果和结论等。

四、实验过程1. 实验环境的准备本实验选择了Visual Studio作为开发平台,安装了相应版本的Visual Studio,并根据官方指引进行了相应的配置和设置。

2. 实验数据的收集和处理本实验选取了一份包含学生信息的数据集,包括学生姓名、学号、性别、年龄等信息。

通过编写Python脚本,成功提取了所需信息,并对数据进行了清洗和整理。

3. 数据结构的选择和实现根据实验需求,我们选择了链表作为数据结构的实现方式。

链表是一种常见的动态数据结构,能够高效地插入和删除元素,适用于频繁插入和删除的场景。

在实现链表时,我们定义了一个节点结构,包含数据域和指针域。

通过指针的方式将节点连接起来,形成一个链式结构。

同时,我们还实现了相关的操作函数,包括插入、删除、查找等操作。

4. 数据结构的测试和优化在完成链表的实现后,我们对其进行了性能测试和功能测试。

数据结构期末课程设计

数据结构期末课程设计

数据结构期末课程设计一、引言数据结构是计算机科学中的重要基础课程,它研究数据的组织、存储和管理方式,以及数据之间的关系和操作。

数据结构的课程设计是对学生在课程学习过程中所掌握的知识和技能的综合应用,旨在提高学生的问题解决能力和编程能力。

本次课程设计要求学生设计一个基于数据结构的应用程序,通过对问题的分析和设计,运用数据结构的知识和算法,实现对数据的高效管理和操作。

二、设计目标本次课程设计的目标是设计一个学生信息管理系统,实现对学生信息的录入、查询、修改和删除等功能。

具体设计要求如下:1. 学生信息包括学号、姓名、性别、年龄、专业等基本信息;2. 学生信息可以通过键盘输入或者从文件中读取;3. 支持按学号、姓名、专业等关键字进行查询;4. 支持对学生信息的修改和删除;5. 支持将学生信息保存到文件中。

三、设计思路为了实现上述设计目标,可以采用以下的设计思路:1. 设计一个学生类,包含学号、姓名、性别、年龄、专业等属性;2. 使用链表或者数组等数据结构来存储学生信息,每一个节点或者元素表示一个学生对象;3. 设计一个菜单界面,通过用户输入选择不同的功能;4. 根据用户的选择,调用相应的函数实现对学生信息的录入、查询、修改和删除等操作;5. 将学生信息保存到文件中,可以使用文件读写操作实现。

四、详细设计1. 学生类的设计学生类包含以下属性:- 学号(字符串类型)- 姓名(字符串类型)- 性别(字符串类型)- 年龄(整数类型)- 专业(字符串类型)2. 数据结构的选择可以使用链表来存储学生信息。

链表的每一个节点包含一个学生对象和指向下一个节点的指针。

3. 菜单界面的设计设计一个菜单界面,显示以下选项:- 1. 录入学生信息- 2. 查询学生信息- 3. 修改学生信息- 4. 删除学生信息- 5. 保存学生信息到文件- 6. 退出程序4. 功能函数的设计- 录入学生信息函数:根据用户输入,创建一个学生对象,将其插入到链表中。

数据结构课程设计(5篇)

数据结构课程设计(5篇)

数据结构课程设计(5篇)第一篇:数据结构课程设计课程设计说明书设计名称:数据结构课程设计题目:设计五:二叉树的相关操作学生姓名:专业:计算机科学与技术班级:学号:指导教师:日期: 2012 年 3 月 5 日课程设计任务书计算机科学与技术专业年级班一、设计题目设计五二叉树的相关操作二、主要内容建立二叉树,并对树进行相关操作。

三、具体要求1)利用完全二叉树的性质建立一棵二叉树。

(层数不小于4层)2)统计树叶子结点的个数。

3)求二叉树的深度。

4)能够输出用前序,中序,后序对二叉树进行遍历的遍历序列。

四、进度安排依照教学计划,课程设计时间为:2周。

本设计要求按照软件工程的基本过程完成设计。

建议将时间分为三个阶段:第一阶段,根据题目要求,确定系统的总体设计方案:即系统包括哪些功能模块,每个模块的实现算法,并画出相应的流程图.同时编写相应的设计文档;第二阶段,根据流程图编写程序代码并调试,再将调试通过的各个子模块进行集成调试;第三阶段,归纳文档资料,按要求填写在《课程设计说明书》上,并参加答辩。

三个阶段时间分配的大概比例是:35: 45: 20。

五、完成后应上交的材料本课程设计要求按照学校有关规范的要求完成,在课程设计完成后需要提交的成果和有关文档资料包括课程设计的说明书,课程设计有关源程序及可运行程序(含运行环境)。

其中课程设计说明书的格式按学校规范(见附件),其内容不能过于简单,必须包括的内容有:1、课程设计的基本思想,系统的总功能和各子模块的功能说明;2、课程设计有关算法的描述,并画出有关算法流程图;3、源程序中核心代码的说明。

4、本课程设计的个人总结,主要包括以下内容:(1)课程设计中遇到的主要问题和解决方法;(2)你的创新和得意之处;(3)设计中存在的不足及改进的设想;(4)本次课程设计的感想和心得体会。

5、源代码要求在关键的位置有注释,增加程序的可读性。

程序结构和变量等命名必须符合有关软件开发的技术规范(参见有关文献)。

数据结构课程设计报告总结

数据结构课程设计报告总结

数据结构课程设计报告总结一、背景与目的数据结构是计算机科学中的一门核心课程,它涉及到如何有效地组织、存储和处理数据。

本次课程设计的目的是通过实际项目,加深对数据结构基本概念和原理的理解,提高解决实际问题的能力。

二、项目内容与实现本次课程设计,我们选择了“学生信息管理系统”作为项目主题。

该系统需要存储和管理学生信息,包括学号、姓名、年龄、成绩等。

为了满足这些需求,我们采用了多种数据结构,如数组、链表、栈、队列和二叉搜索树等。

在实现过程中,我们首先定义了学生类,包含各种属性。

然后,我们使用数组来存储学生信息。

为了方便查找,我们采用二叉搜索树对学生信息进行排序。

此外,我们还实现了添加、删除、查找和修改学生信息的功能。

三、遇到的问题与解决方案在实现过程中,我们遇到了以下几个问题:1. 如何在O(log n)的时间内查找学生信息?解决方案:我们采用了二叉搜索树来存储学生信息,从而实现了在O(log n)的时间内查找学生信息。

2. 如何有效地实现对学生信息的批量修改?解决方案:我们采用链表作为底层数据结构,对学生信息进行动态管理。

当我们需要修改大量学生信息时,只需遍历链表,修改对应节点的值即可。

3. 如何处理大量数据的存储和查询?解决方案:我们采用数据库作为存储系统,将学生信息存储在数据库中。

通过编写SQL语句,我们可以方便地对学生信息进行查询和修改。

四、总结与展望通过本次课程设计,我们不仅加深了对数据结构基本概念和原理的理解,还提高了解决实际问题的能力。

在实现过程中,我们学会了如何将理论知识应用到实际项目中,也意识到了数据结构在软件开发中的重要性。

展望未来,我们将继续深入学习数据结构相关知识,努力提高自己的编程能力和算法水平。

同时,我们也希望能够将所学的数据结构知识应用到更多的实际项目中,为软件开发做出更大的贡献。

数据结构课程设计实验报告 完整版

数据结构课程设计实验报告 完整版

第一章链表的应用线性表是数据结构中最简单、最常用的一种线性结构,也是学习数据结构全部内容的基础,其掌握的好坏直接影响着后继课程的学习。

线性表的顺序存储结构,即顺序表的概念相对比较简单,因此,本章的主要任务是使用有关单链表的操作来实现通讯录信息系统的管理。

1.1设计要求本章的设计实验要求使用有关链表的操作来实现通讯录信息系统的管理。

为了验证算法,通讯录管理包括单通讯录链表的建立、通讯者的插入、通讯者的删除、通讯者的查询及通讯录表的输出等。

主控菜单的设计要求使用数字0—5来选择菜单项,其他输入则不起作用。

程序运行后,给出6个菜单项的内容和输入提示:1.通讯录链表的建立2. 通讯者结点的插入3. 通讯者结点的查询4. 通讯者结点的删除5. 通讯录链表的输出0. 退出管理系统请选择0—5:1.2设计分析1.2.1主控菜单函数设计分析1.实现循环和功能选择首先编写一个主控菜单驱动程序,输入0—5以进入相应选择项。

假设输入选择用变量sn存储,它作为menu_select函数的返回值给switch语句。

使用for循环实现重复选择,并在主函数main()中实现。

实际使用时,只有选择大于5或小于0的值,程序才能结束运行,这就要使用循环控制。

这里使用for循环语句实现菜单的循环选择,为了结束程序的运行,使用了“return”语句,也可以使用“exit(0);”语句。

2.得到sn的合理值如前所述,应该设计一个函数用来输出提示信息和处理输入,这个函数应该返回一个数值sn,以便供给switch语句使用。

假设函数名为menu_select,对于sn的输入值,在switch 中case语句对应数字1—5,对于不符合要求的输入,提示输入错误并要求重新输入。

将该函数与主函数合在一起,编译运行程序,即可检查并验证菜单选择是否正确。

1.2.2功能函数设计分析1.建立通讯录链表的设计这里实际上是要求建立一个带头结点的单链表。

建立单链表有两种方法,一种称之为头插法,另一种称为尾插法。

《数据结构》课程设计报告范本(doc 8页)

《数据结构》课程设计报告范本(doc 8页)

《数据结构》课程设计报告范本(doc 8页)《数据结构》课程设计报告一、课程设计的内容、要求1 线性表的另一种实现。

对顺序表空间被耗尽问题的一个解决办法是:当数组溢出时,用一个更大的数组替换该数组。

一个较好的法则是:当出现溢出时,数组长度加长一倍具有较高的时间和空间效率。

参照教材中顺序表的有关内容,按上面的要求实现顺序表,并测试当数组溢出时你的实现的运作情况。

二、所采用的数据结构ADT List{数据对象: D = {a i|a i ∈ElemSet, i=1,2…n>=0}数据关系: R1={<a i-1, a i>|a i-1, a i∈D, i=1,2,…,n}基本操作:void IniList(SqList& L);void DestroyList(SqList& L);bool ListEmpty(SqList L);int ListLength(SqList L);void GetElem(SqList L, int i, Elem &e);bool PriorElem(SqList L, Elem cur_e, Elem &pre_e);bool NextElem(SqList L, Elem cur_e, Elem &next_e);void ListInsert(SqList &L, int i, Elem e);void ListDelete(SqList &L, int i);void ClearList(SqList& L);}三、主要模块(或函数)及其功能typedef struct LIST{ElemType *data;int size;int max_size;}LIST;void InitList(LIST *list)//初始化{list->data = (int*)malloc(sizeof(ElemType)*INIT_SIZE);list->size = 0;list->max_size = INIT_SIZE;}void DestroyList(LIST &list){}bool NextElem(LIST list,int cur_e,int &next_e)//后继{if(cur_e < 0 || cur_e > list.size) return false;else{next_e = cur_e + 1;return true;}}void Insert(LIST *list,ElemType value){if(list->size>=list->max_size){int i;ElemType *temp = (int*)malloc(sizeof(ElemType)*list->size*2);cout<<endl<<"线性表原容量改变:原大小为"<<list->max_size;for(i=0;i<list->size;i++){temp[i] = list->data[i];}free(list->data);list->data = temp;list->max_size*=2;cout<<"改变后大小"<<list->max_size<<endl;}list->data[list->size] = value;list->size++;}void Insert_Back(LIST *list,int idx,ElemType value){if(list->size>=list->max_size){int i;ElemType *temp = (int*)malloc(sizeof(ElemType)*list->size*2);cout<<endl<<"线性表原容量改变:原大小为"<<list->max_size;for(i=0;i<list->size;i++){temp[i] = list->data[i];}free(list->data);list->data = temp;list->max_size*=2;cout<<"改变后大小"<<list->max_size<<endl;}if(idx>list->size){list->data[list->size] = value;}else{int i;for(i=list->size;i>idx;i--){list->data[i] = list->data[i-1];}list->data[idx] = value;}list->size++;}void ListDelete(LIST *list,int i,ElemType *e)//删除一个元素{int j;*e=list->data[i];for(j=i+1;j<=list->size-1;j++)list->data[j-1]=list->data[j];list->size--;}void Print_list(LIST *list){int i;if(list->size == 0){cout<<"当前线性表内没有元素。

《数据结构》课程设计报告

《数据结构》课程设计报告

《数据结构》课程设计报告一、课程目标《数据结构》课程旨在帮助学生掌握计算机科学中数据结构的基本概念、原理及实现方法,培养其运用数据结构解决实际问题的能力。

本课程目标如下:1. 知识目标:(1)理解数据结构的基本概念,包括线性表、栈、队列、串、数组、树、图等;(2)掌握各类数据结构的存储表示和实现方法;(3)了解常见算法的时间复杂度和空间复杂度分析;(4)掌握排序和查找算法的基本原理和实现。

2. 技能目标:(1)能够运用所学数据结构解决实际问题,如实现字符串匹配、图的遍历等;(2)具备分析算法性能的能力,能够根据实际问题选择合适的算法和数据结构;(3)具备一定的编程能力,能够用编程语言实现各类数据结构和算法。

3. 情感态度价值观目标:(1)培养学生对计算机科学的兴趣,激发其探索精神;(2)培养学生团队合作意识,提高沟通与协作能力;(3)培养学生面对问题勇于挑战、善于分析、解决问题的能力;(4)引导学生认识到数据结构在计算机科学中的重要地位,激发其学习后续课程的兴趣。

本课程针对高年级学生,课程性质为专业核心课。

结合学生特点,课程目标注重理论与实践相结合,强调培养学生的实际操作能力和解决问题的能力。

在教学过程中,教师需关注学生的个体差异,因材施教,确保课程目标的达成。

通过本课程的学习,学生将具备扎实的数据结构基础,为后续相关课程学习和职业发展奠定基础。

二、教学内容根据课程目标,教学内容主要包括以下几部分:1. 数据结构基本概念:线性表、栈、队列、串、数组、树、图等;教学大纲:第1章 数据结构概述,第2章 线性表,第3章 栈和队列,第4章 串。

2. 数据结构的存储表示和实现方法:教学大纲:第5章 数组和广义表,第6章 树和二叉树,第7章 图。

3. 常见算法的时间复杂度和空间复杂度分析:教学大纲:第8章 算法分析基础。

4. 排序和查找算法:教学大纲:第9章 排序,第10章 查找。

教学内容安排和进度如下:1. 第1-4章,共计12课时,了解基本概念,学会使用线性表、栈、队列等解决简单问题;2. 第5-7章,共计18课时,学习数据结构的存储表示和实现方法,掌握树、图等复杂结构;3. 第8章,共计6课时,学习算法分析基础,能对常见算法进行时间复杂度和空间复杂度分析;4. 第9-10章,共计12课时,学习排序和查找算法,掌握各类算法的实现和应用。

数据结构课程设计报告 (4)

数据结构课程设计报告 (4)

数据结构课程设计报告1、引言数据结构是计算机科学中的重要基础课程,它研究如何组织和管理数据以及数据之间的关系。

掌握良好的数据结构对于程序设计和算法的实现至关重要。

本报告将介绍在数据结构课程中完成的设计项目,主要包括设计目标、设计思路、实现细节以及结果分析等内容。

2、设计目标本设计项目的目标是实现一个简单的学生成绩管理系统,该系统能够实现对学生的基本信息以及各门课程成绩的管理和查询。

设计的关键要求如下:1.能够添加学生信息并关联其各门课程成绩;2.能够根据学号查询学生信息以及其各门课程成绩;3.能够计算学生的总成绩和平均成绩;4.能够实现对学生信息和成绩的修改和删除操作。

3、设计思路为了实现上述设计目标,我们采用了链表数据结构来保存学生信息和成绩。

链表的节点用来存储学生的基本信息,如学号、姓名、性别等,同时还包含一个指向课程成绩链表的指针。

课程成绩链表的节点用来存储每门课程的成绩。

在添加学生信息时,我们按照学号的顺序将学生节点插入到链表中。

通过遍历链表,我们可以根据学号查找到对应的学生节点,并进一步查找到该学生的课程成绩链表。

对于查询操作,我们可以通过遍历链表找到匹配的学生节点,然后输出其基本信息和课程成绩。

计算总成绩和平均成绩可以通过遍历课程成绩链表并累加每门课程的成绩来实现。

修改和删除操作可以通过遍历链表找到匹配的学生节点,并进行相应的修改或删除操作。

4、实现细节该学生成绩管理系统的具体实现细节如下:•使用C++编程语言实现;•采用链表数据结构,分别设计了学生信息链表和课程成绩链表;•学生信息链表的节点包括学号、姓名、性别等信息,以及指向课程成绩链表的指针;•课程成绩链表的节点包括课程名称和成绩信息;•提供了添加学生信息、添加课程成绩、查询学生信息、查询课程成绩、计算总成绩和平均成绩等功能;•通过遍历链表实现对学生信息和成绩的修改和删除操作。

5、结果分析经过测试和验证,该学生成绩管理系统能够满足设计目标,并能够正常运行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计设计题目:学生日常行为管理系统院系:计算机科学与技术学院班级:信息安全(2)班学号:110420209设计者:方建辉哈尔滨工业大学(威海)目录一、需求分析-----------------------------------------3二、概要设计-----------------------------------------4三、详细设计-----------------------------------------4四、调试分析-----------------------------------------6五、用户使用说明-------------------------------------7六、遇到的难题及解决办法-----------------------------7七、测试结果及运行界面-------------------------------9八、源代码-------------------------------------------12九、总结---------------------------------------------22学生日常行为管理系统一、需求分析:1、选题的意义:随着学校在全国甚至世界的全面扩张,学生人数急剧增加,对于大学生的日常管理的难处也相应增加。

大学学生虽然都具有一定的自控能力,但是还需要学校及教师的监督。

课堂上的点名和作业的统计过程都耗费了大量时间。

计算机在生活中的作用越来越重要,开发出一种用于记录学生课堂签到和作业完成状况的程序,节省大时间,为教师提供方便,有助于提高教学质量。

使用程序对学生日常行为进行管理记录,方便快捷,防止数据丢失,提高工作效率。

2、软件系统需求分析:学生日常行为管理系统记录了学生的缺课情况及其信息管理,它包括:课堂签到、成绩记录、学生人员管理、学生行为评价。

现设计学生日常行为管理系统,使之能提供以下功能:图1 整体功能模块图二、概要设计:1、课堂签到:进入课堂签到界面时,可以先随机选择点名,也可以以随机点名的那名同学为基础,选择和他(她)同寝室的或者同班的进行点名,还可以对整个大班进行全员点名。

该功能也包含了历史未到标记及其相应的记录未到和取消记录。

2、成绩记录:可以显示出所以学生信息,也可以按照顺序一个个显示,还可以按照学号或者姓名或者班级进行查找,最后录入学生的平时成绩进行加分。

3、学生人员管理:可以对新加入的新同学进行添加,然后更新出添加后的学生相应信息。

4、学生行为评价:可以对全部学生信息进行查询,也可以按成绩查询,还可以按课堂未到查询,还可以按照学号或者姓名或者性别或者班级或者寝室进行查询。

5、系统以菜单方式工作。

(所谓菜单指用户可以自由选择所要执行的功能。

老师可以通过以上功能对学生进行课堂点名、成绩录入、学生人员管理、学生行为评价),除了要实现上述的基本功能之外,本系统还应该在细节上下工夫,使用户使用方便,在使用的过程中保持一个愉快的心情。

学生考勤管理系统有广大的用户群,这其中有老师、有教务处主任、有公司管理人员,也可以供给一般用户使用。

总之该系统可以满足用户需求,实现对其管理的人员的考勤工作。

三、详细设计:1、学生点名功能模块:课堂签到界面,可实现随机点名,按同寝室人员点名,按同班级人员点名,按全体人员点名(防止同寝人员或者同班人员代替签到)和按历史未到人员点名;图2 学生点名功能模块设计图2、学生成绩录入模块:成绩录入界面,通过按键实现学生成绩录入;并设置查询按钮,方便指定条件学生查找录入,输入一个学号或姓名或班级号进行查找录入;图3 学生成绩录入功能模块设计图3、学生信息录入删除模块:学生人员管理界面,包括学生学号、姓名、性别、班级、专业、寝室等主要信息的录入和删除;4、学生信息查询模块:学生日常表现界面,显示学生及相关信息,并能通过成绩排序、课堂未到排序,并且输入一个学号或姓名或性别或班级号或寝室号进行查询,有序输出学生信息。

图4 学生信息查询功能模块设计图四、调试分析:程序编写完成后,我进行了程序调试。

调试过程中,出现了以下问题:当录入学生基本信息时,出现了无法退出录入函数的情况,主要原因是输入函数中while循环语句没有设置跳出循环的条件。

除此之外,修改某学生基本信息时,如果没有该学生的基本信息,系统没有提示用户不存在该学生的信息,也没有建议用户重新输入要修改的学生姓名。

由此我发现了该系统修改学生基本信息的不足。

于是,我对修改函数进行了修改与完善。

在该函数中,我设置了if语句用来判断系统中是否存有用户要修改的学生缺课信息。

如果没有,则提示用户没有该学生的缺课信息,用户可以选择继续输入要修改的学生姓名或者退出修改环节,可以在循环语句中改变循环进行的条件从而终止循环。

至于在修改后显示该学生的缺课信息,运行时发现系统并没有做到这一点,对源代码检查之后发现是修改函数中显示函数的调用出了点问题,显示函数的实参有误,应该把要修改缺课信息的学生所在的信息类对象作为实参,然后用显示函数的形参引用实参对象,通过对象调用信息类的成员函数,从而实现显示功能。

至于该系统的查询功能的实现,在调试时发现还有欠缺,当随便输入一个学生姓名时,系统没有显示该学生的缺课信息,也没有提示系统没有找到该学生的有关信息,经过在查询函数while 循环中加入一个if条件语句后,系统实现了提示用户的功能,如果系统中没有你要查询的学生缺课信息,系统将会提示用户,用户可以继续输入要查询的学生姓名也可以通过按系统设置的退出键选择退出查询环节。

至于两个统计功能至今没有完善,主要是特定时间学生缺课次数和课程的缺课人次的统计问题尚待解决,现如今只完成了一两条学生缺课信息的统计。

主要问题是特定时间这个前提条件对我造成了一定的障碍。

对系统中存储的信息进行查找和统计运用对象指针比较方便,但我没有使用,也算有点遗憾。

在调试过程中我出现的最严重的问题是函数形参引用对象数组,结果系统提示将近几十个错误,在我把函数形参改为对象数组后,错误一下减少了很多。

还有比较突出的问题是整个程序不知哪掉了个}号系统会提示有错,但就不懂那专业术语啥意思。

还有就是我以为派生类公有继承的基类的保护成员在派生类内为公有成员,可编译时才发现是不对的。

通过认真调试,我发现我有了收获。

五、用户使用说明:点击相应按键使用相应的功能,严格按照要求使用。

六、遇到的难点及解决办法:这次的课设,我写的程序也没有什么独到之处,我觉得唯一可以从我的程序可以看出的是数组用得比较多,反正是没啥特色,不仅如此,还写得功能不全,实在是惭愧。

现在在这里也只能说说它的不足之处了。

类层次不够清晰,纵观整个程序可以发现四个类之间的关系不甚恰当,我有这个感觉,但我不知如何改进。

函数参数设定不够完美,整个程序中对指针的运用比较少。

对于指针的巧妙运用把握得不够。

还有就是容易missing;或者是},这都是些应该改掉的毛病。

除此以外,我对于怎样用文件保存数据还没深入了解,但我将数据保存到文件后又因文件打不开而无法访问文件中的数据,对于动态链表,我不是很清晰,也就是说无法做到熟稔运用。

在调试过程中我发现在主函数中把字符数组名name赋值给字符指针p即p=name;然后用cout<<p;语句可以输出字符数组里全部的内容,但利用函数返回指针值却不能做到这一点,在我思考一番后终于明白了,这与内存中的地址值有关。

具体为什么我是解释不清了在调用系统的显示功能时,如果在getname()函数前加一个*号输出的只是一个字符,不加反而能输出所有字符。

getname()函数的返回值为指针类型,但前面说过利用函数返回指针类型的值并不能输出字符数组中所有的字符,为什么这里又可以呢?老天,这是为什么?我不知道这一知识,这也算我的程序的不足之处吧!对于两个统计函数的功能不全,我感到无能为力,我为了这两函数苦思了两天,硬是没凑合来。

到后来,脑子里都乱了,运行时屏幕上尽是些乱七八糟的东西。

老师帮我看看,看有没有什么简单的方法一下搞定它。

结果不是很好,但过程够了就行。

这也是自欺欺人的看法,让我再一次自责吧。

七、主要窗口界面:学生日常表现功能模块:成绩录入功能模块:课堂查到功能模块:学生管理功能模块:八、源程序://txt文本存入数组charla[99][20],lb[99][20],lc[99][20],ld[99][20],le[99][20],lf[99][20],lg[99][20],li[99][20],l j[99][20];int lh[99];BOOL check::OnInitDialog(){CDialog::OnInitDialog();FILE *fp;int tmp=0;fp = fopen("list.txt","r+");while(tmp<99){fscanf(fp,"%s",&la[tmp]);fscanf(fp,"%s",&lb[tmp]);fscanf(fp,"%s",&lc[tmp]);fscanf(fp,"%s",&ld[tmp]);fscanf(fp,"%s",&le[tmp]);fscanf(fp,"%s",&lf[tmp]);fscanf(fp,"%s",&lg[tmp]);fscanf(fp,"%d",&lh[tmp]);fscanf(fp,"%s",&li[tmp]);fscanf(fp,"%s",&lj[tmp]);if(fp==NULL)break;tmp++;}// TODO: Add extra initialization herereturn TRUE; // return TRUE unless you set the focus to a control// EXCEPTION: OCX Property Pages should return FALSE }void check::OnSelchangeList1() //课堂查到显示框关联编辑框{int t= m_checklist.GetCurSel();if(t < 0)return;else{m_checknumber=lb[t];m_checksex=lc[t];m_checkname=ld[t];m_checkproject=le[t];m_checkclass=lf[t];m_checkdormitory=lg[t];UpdateData(false);}// TODO: Add your control notification handler code here}void check::OnRandom()int a=rand()%90;if(a<0||a>90)return;else{m_checknumber=lb[a];m_checksex=lc[a];m_checkname=ld[a];m_checkproject=le[a];m_checkclass=lf[a];m_checkdormitory=lg[a];UpdateData(false);}}void check::Onmark() //标记未到{int p=0;for(p;p<90;p++)if(lb[p]==m_checknumber){FILE* file = fopen("list.txt", "r");char buff[9999];char new_buff[9999];int i = 0;while(fgets(buff, 9999, file) != NULL){char a[10],b[10],c[10],d[10],e[10],f[10],g[10],I[10],j[10];int h;sscanf(buff, "%s %s %s %s %s %s %s %d %s %s\n", a,b,c,d,e,f,g,&h,I,j);if(strcmp(b, m_checknumber) == 0){h=h+1;//未到次数加1}sprintf(new_buff+i, "%s %s %s %s %s %s %s %d %s %s\n", a,b,c,d,e,f,g,h,I,j);i = strlen(new_buff);}fclose(file);FILE* file2 = fopen("list.txt", "w");fwrite(new_buff, sizeof(char), strlen(new_buff), file2);fclose(file2);AfxMessageBox("标记成功!");}void performance::OnButton7() //按照相关条件查询显示{m_performancelist.ResetContent();CString a,b,c,d,e,f,g,h,str;int i;GetDlgItem(IDC_EDIT3)->GetWindowText(str);m_performancelist.AddString(" id 学号姓名性别专业班级寝室");for(i=0;i<99;i++){if(qb[i]==str||qd[i]==str||qf[i]==str||qc[i]==str||qg[i]==str){a=qb[i];b=qc[i];c=qd[i];d=qe[i];e=qf[i];f=qg[i];g=qh[i];h=qa[i];if(a!=""&&b!=""&&c!=""&&d!=""&&e!=""&&f!="")m_performancelist.AddString(h+" "+a+" "+c+" "+b+" "+d+" "+e+" "+f);}}}void student::OnButton10() //学生信息修改{charaa[99][20],ab[99][20],ac[99][20],ad[99][20],ae[99][20],af[99][20],ag[99][20],ah[99][ 20],ai[99][20],aj[99][20];FILE *fp;int tmp=0;fp = fopen("list.txt","r+");while(!feof(fp)){fscanf(fp,"%s",&aa[tmp]);fscanf(fp,"%s",&ab[tmp]);fscanf(fp,"%s",&ac[tmp]);fscanf(fp,"%s",&ad[tmp]);fscanf(fp,"%s",&ae[tmp]);fscanf(fp,"%s",&af[tmp]);fscanf(fp,"%s",&ag[tmp]);fscanf(fp,"%s",&ah[tmp]);fscanf(fp,"%s",&ai[tmp]);fscanf(fp,"%s",&aj[tmp]);tmp++;}fclose(fp);fp = fopen("list.txt","w+");fputs("",fp);fclose(fp);CFile File;int t=0;CStdioFile myFile;//信息重新写入txtCFileException fileException;char* pszFileName="list.txt";CString stri;if(myFile.Open(pszFileName,CFile::typeText|CFile::modeCreate|CFile::modeRe adWrite|CFile::modeNoTruncate),&fileException){GetDlgItem(IDC_EDIT8)->GetWindowText(stri);while(t<tmp-1){if(aa[t]!=stri){myFile.SeekToEnd();myFile.WriteString(aa[t]); myFile.WriteString(" "); myFile.WriteString(ab[t]); myFile.WriteString(" "); myFile.WriteString(ac[t]); myFile.WriteString(" "); myFile.WriteString(ad[t]); myFile.WriteString(" "); myFile.WriteString(ae[t]); myFile.WriteString(" "); myFile.WriteString(af[t]); myFile.WriteString(" "); myFile.WriteString(ag[t]); myFile.WriteString(" "); myFile.WriteString(ah[t]); myFile.WriteString(" "); myFile.WriteString(ai[t]); myFile.WriteString(" "); myFile.WriteString(aj[t]); myFile.WriteString("\n");}t++;}myFile.Close();CString str;//修改后的信息写入txt fp=fopen("list.txt","a+");fseek(fp,0L,SEEK_END);GetDlgItem(IDC_EDIT8)->GetWindowText(str);fwrite(str.GetBuffer(0),1,str.GetLength(),fp);fputs(" ",fp);GetDlgItem(IDC_EDIT2)->GetWindowText(str);fwrite(str.GetBuffer(0),1,str.GetLength(),fp);fputs(" ",fp);GetDlgItem(IDC_EDIT4)->GetWindowText(str);fwrite(str.GetBuffer(0),1,str.GetLength(),fp);fputs(" ",fp);GetDlgItem(IDC_EDIT3)->GetWindowText(str);fwrite(str.GetBuffer(0),1,str.GetLength(),fp);fputs(" ",fp);GetDlgItem(IDC_EDIT5)->GetWindowText(str);fwrite(str.GetBuffer(0),1,str.GetLength(),fp);fputs(" ",fp);GetDlgItem(IDC_EDIT6)->GetWindowText(str);fwrite(str.GetBuffer(0),1,str.GetLength(),fp);fputs(" ",fp);GetDlgItem(IDC_EDIT7)->GetWindowText(str);fwrite(str.GetBuffer(0),1,str.GetLength(),fp);fputs(" 0 0 0",fp);fputs("\r\n",fp);fclose(fp);}AfxMessageBox("修改成功!");}九、总结:学生日常行为管理系统要求至少要有四个类,在起初,对于定义哪四个类我是不清楚的,通过仔细的研读问题描叙终于在脑海里确定了这四个类。

相关文档
最新文档