黄淮学院计算机科学系

上传人:飞*** 文档编号:44939413 上传时间:2018-06-14 格式:DOC 页数:28 大小:405KB
返回 下载 相关 举报
黄淮学院计算机科学系_第1页
第1页 / 共28页
黄淮学院计算机科学系_第2页
第2页 / 共28页
黄淮学院计算机科学系_第3页
第3页 / 共28页
黄淮学院计算机科学系_第4页
第4页 / 共28页
黄淮学院计算机科学系_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《黄淮学院计算机科学系》由会员分享,可在线阅读,更多相关《黄淮学院计算机科学系(28页珍藏版)》请在金锄头文库上搜索。

1、 黄淮学院计算机科学系课程设计报告设计名称:设计名称: 数据结构课程设计 姓姓 名:名: 学学 号:号: 专业班级:专业班级: 计算机科学与技术 系系 (院):院): 计计算机科学系算机科学系 设计时间:设计时间: 20072008 学年第二学期 设计地点:设计地点: 9#二楼机房 指导教师评语:签名: 年 月 日成绩:成绩:数据结构课程设计报告 第 1 页,共 26 页1课程设计目的1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。 2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和

2、方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。2课程设计任务与要求:任务任务学生成绩管理 问题描述:已知某学生成绩表中现有 N 位同学的成绩(要求各人数据不同) ,如:学号姓名成绩01101李平7501202王露7001205张强8501118曹雨90现需要删除已转学的某位同学的成绩,同时添加某位同学的成绩(学号、姓名、成绩自定) ,插入位置按姓名升序排列。请根据所学过的线性表知识用 C/C+编程实现此操作。程序要求: (1)现有 N 位同学的数据要求从数据文件中读入

3、,不用交互方式录入;(2)拟删除同学的姓名及新添加同学的数据采用交互方式输入;(3)删除及插入操作完毕,需将成绩表中的所有记录按姓名升序方式显示出来;(4)将更新后的成绩表保存到另一个数据文件中;(5)可以增加功能:如修改某位同学的成绩。要求:要求:1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。 2、设计的题目要求达到一定工作量(300 行以上代码) ,并具有一

4、定的深度和难度。3、程序设计语言推荐使用 C/C+,程序书写规范,源程序需加必要的注释;知识点提示知识点提示: 在线性表中删除 某个指定元素,并在规定位置插 入一个新元素,要求操作后的结 果按元素(姓名)升序的方式显 示出来。数据结构课程设计报告 第 2 页,共 26 页4、每位同学需提交可独立运行的程序;5 、每位同学需独立提交设计报告书(每人一份) ,要求编排格式统一、规范、内容充实,不少于 10页(代码不算) ;6、课程设计实践作为培养学生动手能力的一种手段,单独考核。3课程设计说明书一一 需求分析需求分析 要求用到数据结构课上学到的线性表的知识,所以就要充分而清晰的理解关于线性表的知识

5、。 要求实现的基本功能很简单,只有删除和插入,增加功能也不过是加上修改。这些在数据结构课上已 经讲过,只要能够理解关于线性表的几个相关的基本算法就可以了。 问题是将输入的信息保存入文件和从文件输出。这里基本是自学的内容,而且要考虑到是否要自行选 择保存的磁盘。 综上,做这个课题,要具备的知识就是线性表的基本算法,文件的保存和读取算法,必要的 C 或者 C+知识(本次我将使用 C 实现) ,以及丰富的程序调适经验。 二二 概要设计概要设计首先由于程序中要有对学生信息的增加和减少,定义一个全局变量 n,在此程序的任意的模块中均可 以使用。宏定义,用 LEN 来代替开辟地址空间,定义三个结构体变量,

6、学号 num,姓名 name,分数 marks.设计实现主要功能的函数有:创建学生信息的子函数 creat();排序的子函数 print();查找的子函数 search();文件保存的子函数 wfile();文件读取的子函数 frile();插入信息的子函数 insert();修改信息 的子函数 xg();删除转学学生的信息的子函数 del();然后在 main()函数中使用一个 switch()语句实现对各 个子函数的调用。 为了使用的方便,程序中将设计三种排序的方式,按照学号排序 funnum(),按照姓名的首字母排序 funname(),按照分数排序 funmarks()。 在排序子函数

7、 print()中还要用一个 switch()语句用于对不同的 排序方法的函数的调用. 为了直观的看到操作以后的结果,还要有一个输出显示的函数 listall()。 程序运行中,为了保持屏幕的清楚和美观,时刻进行清屏也是必要的。 抽象数据类型线性表的定义如下:ADT List数据对象:D=ai| ai ElemSet,i=1,2,3,n,n0 数据关系:R1=| ai-1,ai D,i=1,2,3,,n 基本操作:Insert(/*n 为静态全局变量,本文件模块中各函数均可使用它*/char numstr100;/*全局变量*/struct student/*定义结构体*/long num;c

8、har name10;double marks; stu1000,temp;2)主函数的算法如下: void main()jm:system(“cls“);do choice=getchar();getchar();switch(choice)/*switch 语句用于循环选择所要的选项*/case 1:creat();goto jm;break;case 2:print();goto jm;break;case 3:search();goto jm;break;case 4:wfile();goto jm;break;case 5:frile();goto jm;break;case 6:i

9、nsert();goto jm;break;case 7:xg();goto jm;break;case 8:del();goto jm;break;case 0:exit(0);default: /*用户使用错误*/puts(“nEnter only selections listed“);break;/*结束 switch 语句*/while(1);/*结束 while 语句*/数据结构课程设计报告 第 4 页,共 26 页/*结束 main 函数*/3)创建学生信息的算法如下: creat(void)/*创建学生成绩信息*/ while(ch=Y|ch=y) gets(numstr);/

10、输入学号 stun.num=atoi(numstr); gets(stun.name);/输入姓名 gets(numstr);/输入成绩 stun+.marks=atof(numstr); ch=getchar(); getchar();/*用于输入 y 或者 n*/ 4)排序函数的算法如下: int print(void)/*排序输出*/ ch=getchar();/*输入 a,b,c 的语句*/ switch(ch)/*选择排序的方式*/ case a: funname();/*调用按姓名查找的函数*/ getchar();break; case b:funmarks();/*调用按成绩查

11、找的函数*/ getchar();break; case c: funnum();/*调用按学号查找的函数*/ getchar();break; funname(void)/*按照姓名排序*/if(n0) temp=stui; stui=stuj; stuj=temp; funmarks(void)/*按照成绩排序*/ if(nstuj.marks) temp=stui; stui=stuj; stuj=temp; funnum(void)/*按照学号排序*/ if(nstuj.num) temp=stui; stui=stuj; stuj=temp;5)写入文件的算法如下: wfile(vo

12、id)/*写入文件*/FILE *fptr;if(n0) /*比较姓名的首字母进行相应交换操作*/temp=stui;stui=stuj;stuj=temp;listall();/*调用 listall 函数显示排序以后的信息*/return 0;funmarks(void)/*按照成绩排序*/int i,j; int listall(void);/*函数声明*/if(nstuj.marks)/*如果前面的成绩大于后面的就进行交换*/temp=stui;stui=stuj;stuj=temp;listall();/*调用 listall 函数显示盘许以后的信息*/return 0;funnum

13、(void)/*按照学号排序*/int i,j; int listall(void);/*函数声明*/if(nstuj.num)数据结构课程设计报告 第 19 页,共 26 页temp=stui;stui=stuj;stuj=temp;listall();/*调用 listall 函数显示盘许以后的信息*/return 0;double sub(void)/*求总分数的函数*/int i;double sub=0;for(i=0;in;i+)sub+=stui.marks;return sub;/*把学生的分数相加,返回总分数 sub*/listall(void)/*输出显示排序的信息*/in

14、t j;double mark;if(n0)printf(“ntt 空文件!“);printf(“t 按任意键返回.“);getchar();elseprintf(“t 学号 姓名 成绩“);for(j=0;jn;j+)printf(“nt%ldt“,stuj.num);printf(“t%st“,stuj.name);printf(“t%.2f“,stuj.marks);mark=sub()/n;/*调用求总分数的子函数,除以学生人数 n 求出平均分*/数据结构课程设计报告 第 20 页,共 26 页printf(“nt 平均分是:%.2f“,mark);printf(“n“);return 0;wfile(void)/*写入文件*/FILE *fptr;if(n1)printf(“t 文件为空,无法写操作!n“);printf(“t 按任意键返回.“);getchar();return 0;printf(“t 请输入要保存的路径及文件名(例如 c:stus.txt):“);scanf(“%s“,numstr);getchar();/*输入需要保存的磁盘,可以是 c,d,e 等任意磁盘*/if(fptr=fopen(numstr,“wb“)=NULL) printf(“ntt 无法打开!%s

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号