


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、WORD格式课程设计说明书题目:数据构造与算法课程设计学院系:专业班级:学号:学生*:指导教师:教师职称:起止时间:专业资料整理WORD格式课程设计论文任务及评语院系:教研室:软件工程学 号学生*专业班级课程设计论文数据构造与算法课程设计题目1从十个题目中选择一个题目,,要求每个题目用标准的C 语言程序实现, 另外 ,课完成思考题一题,思考题须写出相应的类C 算法即可。程设2每个题目编写源程序时,要求有主菜单,每个子功能定义为相应的子函数,在计主函数中调用各子函数,程序构造清晰。3根据题目 ,选择适宜的逻辑构造和存储构造。论 4输入的数据由键盘输入。文) 5分析算法的时间复杂度,要求算法的效率
2、尽可能高。任 6验证排序算法的稳定性。务指导教师评语及成绩成绩:指导教师签字:专业资料整理WORD格式2021年月日专业资料整理WORD格式目录第 1 章课程设计目的与要求11.1课程设计目的11.2课程设计的实验环境11.3课程设计的预备知识11.4课程设计要求1第 2 章 课程设计内容22.1题目的选择22.2题目的具体实现22.3思考题解析12总结:14参考文献错误!未定义书签。专业资料整理WORD格式第 1章课程设计目的与要求1.1 课程设计目的本课程设计是计算机科学与技术专业、软件工程专业的专业技术实践课。本实践课的主要目的是:使学生学会利用在课堂中学过的理论知识,解决相应的实际问题
3、,深入理解和灵活掌握所学的内容,培养学生理论和实践相结合的能力, 培养学生分析问题解决问题的能力。同时,在实验步骤标准化、程序设计方法等方面受到比较系统和标准的训练。 通过实践设计使学生进一步加深对程序设计的标准化及对复杂程序设计步骤的理解。通过课程设计,加深对"数据构造"这一课程所学内容的进一步理解与稳固。通过课程设计,加深对构造化设计思想的理解,能对系统功能进展分析,并设计合理的模块化构造。通过课程设计,提高程序开发功能, 能运用合理的控制流程编写清晰高效的程序。通过课程设计,训练 C 程序调试能力,能将一个中小型各级组织系统联调通过。通过课程设计,开发一个中小型系统,
4、掌握系统研发全过程。通话课程设计,培养分析问题、解决实际问题的能力。1.2 课程设计的实验环境PC 机, WindowsXP,C+。1.3 课程设计的预备知识C 语言程序设计、数据构造。1.4 课程设计要求1认真查找资料,分析每个题目应选择的数据构造逻辑构造和物理构造 ;2按时到实验室调试程序,遵守实验室的规章制度,保护设备;3每个题目编写源程序时,每个子功能定义为相应的子函数,在主函数中调用各子函数,程序构造清晰,有必要的注释,可读性强。4程序强健性强,当数据输入错误时,要进展相应的处理;5分析算法的时间复杂度,要求算法的效率尽可能高;6对于排序算法,要验证排序算法的稳定性。专业资料整理WO
5、RD格式1专业资料整理WORD格式第 2 章 课程设计内容2.1 题目的选择6、学生成绩管理系统2.2 题目的具体实现1题目应实现的具体功能;1录入学生成绩信息并保存;2可查询显示所有学生的个人信息;3可查询显示所有学生的所学课程信息;4按学号或*查询成绩信息;5能添加、删除和修改学生的成绩信息;2题目所选择的数据构造及存储构造;采用线性数据构造及链式存储构造3完整的源程序#include<stdio.h>#include<stdlib.h>#include<string.h>struct studlong num;char name20;double sc
6、ore1,score2;typedef struct stucodestruct stud student ;struct stucode *next;L;void menu();void createlist(struct stucode *r);void out(struct stucode *r);void search1(struct stucode *r);void search2(struct stucode *r);void del(struct stucode *r);专业资料整理WORD格式2专业资料整理WORD格式void insert(struct stucode *r)
7、;void change(struct stucode *r);void main()char choose;int flag=1;struct stucode *r=NULL;while(flag)system("cls");menu();choose=getchar();switch(choose)case '1':createlist(&r);out(r);printf("Testing function 1nPress any key to continuen");getchar();getchar();break;cas
8、e '2':search1(r);printf("Testing function 1nPress any key to continuen"); getchar();getchar();break;case '3':search2(r);printf("Testing function 1nPress any key to continuen"); getchar();getchar();break;case '4':del(&r);out(r);printf("Testing func
9、tion 1nPress any key to continuen");getchar();getchar();break;case '5':insert(&r);out(r);printf("Testing function 1nPress any key to continuen"); getchar();专业资料整理WORD格式3专业资料整理WORD格式getchar();break;case '6':out(r);printf("Testing function 1nPress any key to con
10、tinuen");getchar();getchar();break;case '7':change(&r);out(r);printf("Testing function 1nPress any key to continuen"); getchar();getchar();break;case '0':flag=0;printf("The end.n");break;default: printf("nWrong Selection!( 选择错误 ,请重选 !)n"); getch
11、ar();getchar();void createlist(struct stucode *r)struct stucode *p,*t;long n;char a20;double s1,s2;if(*r) *r=NULL;printf(" n 请输入: n 学号* 分数 1分数 2假设要完毕请输入四个为零n");scanf("%ld%s%lf%lf",&n,a,&s1,&s2);if(n=0) return;p=(L *)malloc(sizeof(L);p->student.num=n;strcpy(p->st
12、,a);p->student.score1=s1;p->student.score2=s2;p->next=NULL;*r=p;scanf("%ld%s%lf%lf",&n,a,&s1,&s2);while(n)专业资料整理WORD格式4专业资料整理WORD格式t=p;p=(L *)malloc(sizeof(L);p->student.num=n;strcpy(p->,a);p->student.score1=s1;p->student.score2=s2;p-&
13、gt;next=NULL;t->next=p;scanf("%ld%s%lf%lf",&n,a,&s1,&s2);void search1(struct stucode *r)long x; struct stucode *p=r;if(!r)printf(" 没有学生信息可查询 !n");return ;printf(" 请输入要查询的学生信息的学生学号:n");scanf("%ld",&x);while(p&&p->student.num!=x)p=p
14、->next;if(p=NULL)printf("Error! No such student !n");elseprintf("%ld%s%.2lf%.2lfn",p->student.num,p->,p->student.score1,p->student.score2);void search2(struct stucode *r)char m20;if(!r)printf(" 没有学生信息可查询 !n");return ;printf(" 请输入要查询的学生信息的
15、学生*:n");scanf("%s",m);while(r&&strcmp(r->,m)r=r->next;if(r=NULL)printf("Error! No such student !n");elseprintf("%ld%s%.2lf%.2lfn",r->student.num,r->,r->student.score1,r->student.sc专业资料整理WORD格式5专业资料整理WORD格式ore2);void
16、 del(struct stucode *r)long k;struct stucode *p=*r,*t;if(!(*r)printf(" 没有学生信息可删除!n");return ;printf(" 请输入要删除的学生信息的学生学号 :n"); scanf("%ld",&k);if(p->student.num=k)*r=(*r)->next,free(p);elsewhile(p->next&&p->next->student.num!=k)p=p->next;if(p
17、->next=NULL)printf("Error! No such student !n");elset=p->next;p->next=p->next->next;free(t);void insert(struct stucode *r)long n;char a20;double s1,s2;L *p,*t,*k;printf(" 请输入要插入的学生信息的学生学号* 分数 1 分数 2 :n");scanf("%ld%s%lf%lf",&n,a,&s1,&s2);p=(L
18、*)malloc(sizeof(L);p->student.num=n;p->student.score1=s1;p->student.score2=s2;strcpy(p->,a);if(!(*r)*r=p;专业资料整理WORD格式6专业资料整理WORD格式(*r)->next=NULL;return ;if(p->student.num<(*r)->student.num)p->next=(*r),(*r)=p;elset=*r;k=t;while(t->next&&t->next-&
19、gt;student.num<=p->student.num)t=t->next;p->next=t->next;t->next=p;*r=k;void out(struct stucode *r)printf("nn");if(!r)printf(" 没有学生信息可输出 !n");return ;while(r)printf("%ld%s%.2lf%.2lfn",r->student.num,r->,r->student.score1,r->stud
20、ent.score2);r=r->next;printf("nn");void change(struct stucode *r)struct stucode *p=*r;long x;long n;char a20;double s1,s2;printf(" 更改的学生的信息 n");printf("请输入要查询的学生信息的学生学号:n");scanf("%ld",&x);while(p&&p->student.num!=x)p=p->next;if(p=NULL)pri
21、ntf("Error! No such student !n");elseprintf("%ld%s%.2lf%.2lfn",p->student.num,p->,p->student.score1,p->student.s专业资料整理WORD格式7专业资料整理WORD格式core2);printf("请输入要修改的学生信息:n");scanf("%ld%s%lf%lf",&n,a,&s1,&s2);p->student.num=n;st
22、rcpy(p->,a);p->student.score1=s1;p->student.score2=s2;void menu()printf("n学生成绩管理系统 n");printf("n菜单 nn");printf("n 1建立链表 n");printf("n 2查找某学号的学生信息 n");printf("n 3查找某*的学生信息 n");printf("n 4删除某学号的学生信息 n");printf("n 5插入
23、新的学生信息 n");printf("n 6显示所有学生的个人信息 n");printf("n 7更改学生个人信息 n");printf("n 0退出 n");printf("n请选择您要执行的选项 :n");4程序的输入和输出专业资料整理WORD格式8专业资料整理WORD格式图 1按学生学号查找结果:图 2专业资料整理WORD格式9专业资料整理WORD格式按学生*查找:图 3删除某学生的运行结果:图 4专业资料整理WORD格式10专业资料整理WORD格式插入某学生的运行结果:图 5显示所有学生的信息:图
24、 6专业资料整理WORD格式11专业资料整理WORD格式5调试程序中遇到的问题及解决方案在调试 search1子函数由于在查找中移动了原指针, 导致 search1中不能查找,解决方法设一构造体类型的指针,将原指针赋给该指针,将该指针进展移动查找。在调试 chance()中,如何对已有的记录进展从新输入更改。解决方案为在chance()子函数中参加一个查找的程序,也就是说先找到要修改的学生信息,用 scanf 语句对要修改的学生的信息进展重新输入, 再将所赋的信息通过赋值语句将修改后的学生信息赋给该学生对应的构造体。如何返回一个构造体*息,解决方案是采用指针类型, 将变量的地址作为实参赋给子函
25、数。数组名代表数组首地址,用 scanf 语句赋值字符串时,不用加地址操作符。2.3 思考题解析所选择的思考题:编写一个算法,构造一棵哈夫曼树。程序如下:typedef structunsigned int weight;unsigned int parent,lchild,rchild;HTNode,*HuffmanTree;typedef char * *HuffmanCodevoid HnffCodeding(HnffmanTree &HT,&HC,int *w,int n)if(n<=1) return;m=2*n-1;HT=(HuffmanTree)malloc
26、(m+1)*sizeof(HTNode);for(p=HT;i=1;i<=n;+i,+,+w) *p= *w,0,0,0;for(;i<=m;+i,+p) *p= *w,0,0,0;for(i=n+1;i<=m;+i)Select(HT,i-1,s1,s2);HTs1.parent=i; HTs2.parent=i;HTi.lchild=s1; HTi.rchild=s2;HTi.weight=HTs1.weight+HTs2.weight;HC=(HuffmanCode)malloc(n+1)*size(char *);cd=(char *)malloc(n*sizeof(
27、char);cdn-1=0;for(i=1;i<=n;+i)专业资料整理WORD格式12专业资料整理WORD格式start=n-1;for(c=i;f=HTi.parent;f!=0;c=f,f=HTf.parent)if(HTf.lchild=c) cd-start="0"else cd-start="1"HCi=(char*)malloc(n-start)*sizeof(char);strcpy(HCi,&cdstart);free(cd);算法分析:哈夫曼树构造方法如下:1 根 据 给 定 的n 个 权 值 W1,W2, .Wn 构 成 n 课 二 叉 树 的 集 合 F=T1,T2 .Tn ,其中每棵二叉树 Ti 中只有一个带权为 Wi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《创伤急救止血技巧》课件
- 《探索生态平衡之美:市级公开课自然生态的奥秘课件》
- 农产品软件设计
- 小蜗牛的儿童诗课件
- 三基医师题库与参考答案解析
- 班主任沟通技能培训课件
- 2024年生物化学习题库与答案(附解析)
- 2023年6月验光技术考试题及答案(附解析)
- 《抑郁与失眠》课件
- 船舶力学分析考核试卷
- 消防维修期间无水应急预案
- DNA鉴定技术在刑事侦查中的运用
- (完整word版)体检报告单模版
- 警示片制作策划方案
- 掌握认知重构的基本技巧
- 新能源综合能源系统的设计与优化
- 中国居民膳食指南(全)
- 《数据可视化》期末考试复习题库(含答案)
- 环境社会学考试必考点
- 多模态医学影像融合
- 2023发电企业运行管理办法
评论
0/150
提交评论