数据结构设计和评价_第1页
数据结构设计和评价_第2页
数据结构设计和评价_第3页
数据结构设计和评价_第4页
数据结构设计和评价_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构设计和评价案例分析(一)案例分析(一) 数据结构设计案例一:数据结构设计案例一:v问题:我校拟开发在校人员信息管理系统,问题:我校拟开发在校人员信息管理系统,主要管理学生成绩信息,老师工资课程信主要管理学生成绩信息,老师工资课程信息,行政人员工资信息等息,行政人员工资信息等,请设计合适的数请设计合适的数据结构据结构,开发出相应的信息管理系统开发出相应的信息管理系统该问题的数据结构设计要点a. 数据节点设计学生节点:学生节点:struct student int studentnumber; char studentname10; float maths; ; 教师节点:教师节点:str

2、uct teacher int teachernumber; char teachername10; char subjectname10; float salary; ; 行政人员节点:行政人员节点: struct carder int cardernumber; char cardername20; char carderposition10; float salary;b.数据组织和数据结构管理v将学生,教师,行政人员数据分别存放在三个数组将学生,教师,行政人员数据分别存放在三个数组中中.v用一个结构体类型管理数组的首地址和每个数组的用一个结构体类型管理数组的首地址和每个数组的实际长度实

3、际长度vtypedef struct student *elemstudent; /学生数组首地址学生数组首地址 teacher *elemteacher; / 教师数组首地址教师数组首地址 carder *elemcarder; / 行政人员数组首地址行政人员数组首地址 int studentlength;/ 学生数组实际长度学生数组实际长度 int teacherlength;/ 教师数组实际长度教师数组实际长度 int carderlength; /行政人员数组实际长度行政人员数组实际长度 int maxsize; /数组最大值数组最大值v sqlist;/ 此为管理类型此为管理类型vb

4、.数据组织和数据结构管理 将学生,教师,行政人员数据分别存放在三个数组中将学生,教师,行政人员数据分别存放在三个数组中.用一个结构体类型管理数组的首地址和每个数组的实际用一个结构体类型管理数组的首地址和每个数组的实际typedef struct student *elemstudent;/学生数组首地址学生数组首地址 teacher *elemteacher;/ 教师数组首地址教师数组首地址 carder *elemcarder;/ 行政人员数组首地址行政人员数组首地址 int studentlength;/ 学生数组实际长度学生数组实际长度 int teacherlength;/ 教师数组实

5、际长度教师数组实际长度 int carderlength; /行政人员数组实际长度行政人员数组实际长度 int maxsize;/数组最大值数组最大值 sqlist;/ 此为管理类型此为管理类型c、主题算法设计、主题算法设计v主要算法为:主要算法为:1.生成空顺序表算法生成空顺序表算法 status initlist_sq(sqlist & l) l.elemstudent=(student *)malloc(100*sizeof(student); l.elemteacher=(teacher *)malloc(100*sizeof(teacher); l.elemcarder=(carde

6、r *)malloc(100*sizeof(carder); l.studentlength+; l.teacherlength+; l.carderlength+; 有了空表,如何向表中加入数据呢?思考此处的问题与书有何异同?有了空表,如何向表中加入数据呢?思考此处的问题与书有何异同? 2.数据数据 生成算法生成算法status student_ insert(sqlist & l,int i,student e) 此处代码如何写此处代码如何写 思考v刚才是一次插入一个数据的算法,能否写一个算法一次读多个数据vstatus student_read(sqlist&l)student x; i

7、nt i=0;scanf(“%d%s%f”,&x.studentnumber,x.studentname,&x.maths);while(x.studentnumber!=0) l.elemstudenti=x; scanf(“%d%s%f”,&x.studentnumber,x.studentname,&x.maths); i+;l.studentlength=i; return ok; 3.数据的打印v 数据打印函数设计:数据打印函数设计: 应该设计三个函数,分别打印学生,教师,行政应该设计三个函数,分别打印学生,教师,行政人员人员vvoid studentdataprint(sqlist

8、&l)v int i;v for(i=0;il.studentlength;i+)v printf(“%d%s%f”,l.elemstudenti.studentnumber, v l.elemstudenti.studentname,v l.elemstudenti.maths);v printf(“n”);v /学生数据打印程序结束v 4.其它算法设计v其他函数设计。查找,排序函数设计等其他函数设计。查找,排序函数设计等 主函数设计v主函数设计主函数设计v void main()v sqlist datastructuremanger;/管理变量管理变量v struct student x

9、1;v struct teacher x2;v struct carder x3;v initlist_sq(datastrcturemanger);/生成空顺序表生成空顺序表v/从键盘读入数据从键盘读入数据vprintf(“n 请读入学生数据请读入学生数据”);vstudent_read(datastruremanger);/学生数据读取v/思考,教师和行政人员的数据如何读?思考,教师和行政人员的数据如何读?v 能从文件读入吗?能从文件读入吗?v/打印函数调用打印函数调用vstudentdataprint(datastructuremanger);/学生数据打印v/其他函数调用其他函数调用数

10、据结构评价va. 算法设计的一致性算法设计的一致性。算法中的形参应有数据结构的理者,算法描述应简单,算法中的形参应有数据结构的理者,算法描述应简单,有效,各算法基本上风格一致。有效,各算法基本上风格一致。有些函数用了管理变量,有些函数不用,这就是风格的有些函数用了管理变量,有些函数不用,这就是风格的不一致。此外还要注意函数名,标始符的规范一致不一致。此外还要注意函数名,标始符的规范一致性性vb.数据组织和管理效率数据组织和管理效率。v在组织数据时是采用线性表还是树或图,要在组织数据时是采用线性表还是树或图,要具体问题具体分析。比如要设计一个股份制具体问题具体分析。比如要设计一个股份制家族成员的财务信息管理系统,重点是管理家族成员的财务信息管理系统,重点是管理他们的财务,这时就不能盲目的采用树去组他们的财务,这时就不能盲目的采用树去组织每个成员的数据。亲兄弟明算帐,没必要织每个成员的数据。亲兄弟明算帐,没必要考虑血缘辈分关系。但要你设计一个家谱管考虑血缘辈分关系。但要你设计一个家谱管理系统时,用树结构是最合适的选择理系统时,用树结构是最合适的选择 vc.算法选择算法选择v 在设计部分算法时,有很多方法可供在设计部分算法时,有很多方法可供选择,比如那么多的查找和排序算法,我们选择,比如那么多的查找和排序算法,我们究竟选择那种算法?原则是在兼顾算法复杂究竟选择那种算法?原

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论