分享
分享赚钱 收藏 举报 版权申诉 / 27

类型数据结构课程设计模板.doc

  • 上传人:精品资料
  • 文档编号:10793923
  • 上传时间:2020-01-09
  • 格式:DOC
  • 页数:27
  • 大小:419.50KB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    数据结构课程设计模板.doc
    资源描述:

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

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

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

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

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

    6、);排序的子函数 print();查找的子函数search();文件保存的子函数 wfile();文件读取的子函数 frile();插入信息的子函数 insert();修改信息的子函数 xg();删除转学学生的信息的子函数 del();然后在 main()函数中使用一个 switch()语句实现对各个子函数的调用。为了使用的方便,程序中将设计三种排序的方式,按照学号排序 funnum(),按照姓名的首字母排序funname(),按照分数排序 funmarks()。 在排序子函数 print()中还要用一个 switch()语句用于对不同的排序方法的函数的调用.为了直观的看到操作以后的结果,还要

    7、有一个输出显示的函数 listall()。程序运行中,为了保持屏幕的清楚和美观,时刻进行清屏也是必要的。抽象数据类型线性表的定义如下:ADT List数据对象:D=a i| 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;char name10;double marks; stu1000,temp;2)主函数的算法如下:void main()jm:s

    8、ystem(“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:insert();goto jm;break;case 7:xg();goto jm;break;case 8:del();goto

    9、 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);/输入学号stun.num=atoi(numstr);gets(stun.name);/输入姓名gets(numstr);/输入成

    10、绩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(); /*调用按成绩查找的函数 */getchar();break;case c:funnum();/*调用按学号查找的函数*/getchar();break;funname

    11、(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(void)/*写入文件*/FILE *fptr;if(n0) /*比较姓名的首字母进行相应交换操作*/ temp=stui;stui=stuj;stuj=temp;listall();/*调

    12、用 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(void)/*按照学号排序 */int i,j; int listall(void);/*函数声明*/if(nstuj.num)数据结构课程设计报告 第 19 页,共 26 页tem

    13、p=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)/*输出显示排序的信息 */int j;double mark;if(n0)printf(“ntt 空文件!“);printf(“t 按任意键返回 .“);getchar();else printf(“t 学号

    14、 姓名 成绩“);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 按任意键返回 .“);ge

    15、tchar();return 0;printf(“t 请输入要保存的路径及文件名 (例如 c:stus.txt):“);scanf(“%s“,numstr);getchar();/*输入需要保存的磁盘,可以是 c,d,e 等任意磁盘*/if(fptr=fopen(numstr,“wb“)=NULL) printf(“ntt 无法打开!%sn“,numstr);printf(“t 按任意键返回 .“);getchar();elsefwrite(stu,sizeof(stu0),n,fptr);/*把信息写入磁盘的函数*/fclose(fptr);printf(“tt 有%d 个记录保存成功!n“

    16、,n);printf(“t 按任意键返回 .“);getchar();return 0;frile(void)/*读出文件 */FILE *fptr;int i=0;printf(“t 请输入要打开的文件 (例如 c:stus.txt):“);scanf(“%s“,numstr);getchar();if(fptr=fopen(numstr,“rb“)=NULL)数据结构课程设计报告 第 21 页,共 26 页printf(“ntt 不能打开 %s!n“,numstr);printf(“t 按任意键返回 .“);getchar();elsewhile(fread(n=i;printf(“tt

    17、成功打开 %d 个记录!n“,i);fclose(fptr);printf(“t 按任意键返回 .“);getchar(); return 0;search(void)/*查找*/ int i,flag=0;printf(“t 请输入要查询的关键字。例:姓名、学号 n“);gets(numstr);for(i=0;in;i+) if(strcmp(numstr,stui.name)=0)|atol(numstr)=stui.num)/*把要查找的信息和存储的信息进行比较,如果相同就找到,并输出。用|表示可以有姓名或者学号两种查找方式。*/printf(“t 学号 tt 姓名tt 成绩n“);p

    18、rintf(“t%ldtt“,stui.num);printf(“t%stt“,stui.name);printf(“t%.2fn“,stui.marks);flag=1;printf(“t 按任意键返回 .“);getchar(); return 0;数据结构课程设计报告 第 22 页,共 26 页if(flag!=1)/*当计数不为 1 的时候,查不到所要的信息*/ printf(“tt 不存在这样的信息 !n“);printf(“t 按任意键返回 .“);getchar();return 1;insert(void)/*插入*/ int funnum(void);printf(“t 请输

    19、入学号: “);gets(numstr);stun.num=atoi(numstr);printf(“t 请输入姓名: “);gets(stun.name);printf(“t 请输入成绩: “);gets(numstr);stun+.marks=atof(numstr);funname();/*调用按照姓名排序的函数,显示添加以后所有学生的信息,并且按照姓名排序的方式输出*/printf(“t 按任意键返回 .“);getchar();return 0;del(void) /*删除*/ char ch;int i,j,flag; printf(“tt 请输入要删除的学号 :n“);gets(

    20、numstr);printf(“tt 确定?(y/n)n“);ch=getchar();getchar();if(ch=y|ch=Y)for(i=0;in;i+)if(stui.num=atol(numstr)/*比较学号相同时找到相应得信息进行删除*/数据结构课程设计报告 第 23 页,共 26 页j=i;flag=1;if(flag=1)printf(“t 正在删除,请稍后n“);for(i=j;in;i+)stui=stui+1;printf(“tt 删除成功!n“);n-;funname();printf(“t 按任意键返回.“);getchar();return 0; xg(void

    21、)/*修改*/int i,j,flag=0;char ch;printf(“t 输入您要修改的学号: “);gets(numstr);for(i=0;in;i+)if(stui.num=atol(numstr) j=i;flag=1;if(flag=1) printf(“t0.退出修改 1.姓名 2.成绩n“);printf(“t 请输入您要修改的项: n“);ch=getchar();getchar();数据结构课程设计报告 第 24 页,共 26 页switch(ch)/*循环语句选择相应的修改选项*/case 1:printf(“t 请输入修改后的姓名:“);gets(stuj.name

    22、);printf(“修改成功n“);break;case 2:printf(“t 请输入修改后的成绩: “);gets(numstr);stuj.marks=atof(numstr);printf(“tt 修改成功n“);break;case 0: return 0; if(flag!=1)printf(“t 不存在这样的信息 .n“);printf(“t 按任意键返回 .“);getchar(); return 0;void main()char choice;jm:system(“cls“);printf(“n“);数据结构课程设计报告 第 25 页,共 26 页printf(“ +学生成

    23、绩管理系统+n“);printf(“ +-+n“);printf(“ +(请按相应的数字键选择您所需要的操作)+n“);printf(“ +-+n“);printf(“ + 1.创建信息系统 2.浏览信息 +n“);printf(“ + 3.查找成绩 4.保存入文件 +n“);printf(“ + 5.打开文件 6.插入信息 +n“);printf(“ + 7.修改信息 8.删除信息 +n“);printf(“ + 0.退出系统 +n“);printf(“ +n“);do choice=getchar();getchar();switch(choice)/*switch 语句用于循环选择所要的

    24、选项*/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:insert();goto jm;break;case 7:xg();goto jm;break;case 8:del();goto jm;break;case 0:exit(0);default: /*用户使用错误 */puts(“nEnter only selections lis

    25、ted“);break;/*结束 switch 语句 */while(1);/*结束 while 语句*/*结束 main 函数*/数据结构课程设计报告 第 26 页,共 26 页八.课程设计心得以前做实验题目的时候总是感觉很难,因为根本就不知道从哪里开始。这次课程设计让我对编程有了新的认识。拿到题目的时候也是很困惑,后来看了很多有关的例子,仔细看了书上的线性表部分的知识,觉得就是上课讲到的一些内容,不题目难,是自己先把自己吓住了。后来,参照书上的和网上的诸多例子,一个模块一个模块的编写,调试,一个功能一个功能去完善。发现越做越顺利,由于以前的实验中对于改错的经验积累和几个学得不错的同学的帮助,我的程序中的错误也一个一个的顺利解决。再后来,等我的程序完全做好以后,我竟然可以独立的帮同学修改一些以前根本不知所以然的错误,同学也竟然佩服的称我为“高手” ,都找我帮忙,其实,从这次实验中我认识到,我距离高手还很远,编程有很多的乐趣也有很多的技巧性和知识性。我将在以后的日子里继续认真的学习知识,积累经验,让自己的编程能力提高。

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:数据结构课程设计模板.doc
    链接地址:https://www.docduoduo.com/p-10793923.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开