版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计说明书题目:数据结构与算法课程设计学院(系):专业班级:学 号:学生姓名: 指导教师:教师职称:起止时间: 课程设计(论文)任务与评语院(系):教研室:软件工程学号学生姓名专业班级课程设 计(论 文)题目数据结构与算法课程设计课程设计(论文)任务1 .从十个题目中选择一个题目,要求每个题目用标准的 C语言程序实现,另外,完成思考题一题,思考题须写出相应的类C算法即可。2 .每个题目编写源程序时,要求有主菜单 ,每个子功能定义为相应的子函数,在主函数中调用各子函数,程序结构清晰。3. 根据题目,选择合适的逻辑结构和存储结构。4. 输入的数据由键盘输入。5. 分析算法的时间复杂度,要求算法
2、的效率尽可能高。6. 验证排序算法的稳定性。指导教师评语与成绩成绩:指导教师签字:2012 年月日第1章 课程设计目的与要求 41.1课程设计目的 41.2课程设计的实验环境51.3课程设计的预备知识51.4课程设计要求5第2章课程设计内容2.1题目的选择62.2题目的具体实现62.3思考题解析 24总结:26参考文献 错误!未定义书签。第1章 课程设计目的与要求1.1课程设计目的本课程设计是计算机科学与技术专业、软件工程专业的专业技术实践课。本实践课的主要目的是:使学生学会利用在课堂中学过的理论知识,解决相应的实际问题,深入理解和灵活掌握所学的内容, 培养学生理论和实践相结合的能力,培养学生
3、分析问题解决问题的能力。同时,在实验步骤规范化、程序设计 方法等方面受到比较系统和规范的训练。通过实践设计使学生进一步加深对程序 设计的规范化与对复杂程序设计步骤的理解。通过课程设计,加深对数据结构这一课程所学内容的进一步理解与巩固。通过课程设计,加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。通过课程设计,提 高程序幵发功能,能运用合理的控制流程编写清晰高效的程序。通过课程设计, 训练C程序调试能力,能将一个中小型各级组织系统联调通过。通过课程设计, 幵发一个中小型系统,掌握系统研发全过程。通话课程设计,培养分析问题、解 决实际问题的能力。1.2课程设计的实验环境P
4、C 机,WindowsXP ,C+。1.3课程设计的预备知识C语言程序设计、数据结构。1.4课程设计要求(1)认真查找资料,分析每个题目应选择的数据结构(逻辑结构和物理结构)(2 )按时到实验室调试程序,遵守实验室的规章制度,爱护设备;(3 )每个题目编写源程序时,每个子功能定义为相应的子函数,在主函数中调用各子函数,程序结构清晰,有必要的注释,可读性强。(4)程序健壮性强,当数据输入错误时,要进行相应的处理;(5 )分析算法的时间复杂度,要求算法的效率尽可能高;(6)对于排序算法,要验证排序算法的稳定性。第2章课程设计内容2.1题目的选择6、学生成绩管理系统2.2题目的具体实现(1)题目应实
5、现的具体功能;1录入学生成绩信息并保存;?可查询显示所有学生的个人信息;可查询显示所有学生的所学课程信息;1按学号或姓名查询成绩信息;53能添加、删除和修改学生的成绩信息;(2 )题目所选择的数据结构与存储结构;采用线性数据结构与链式存储结构(3)完整的源程序#in clude<stdio.h>#in clude<stdlib.h>#include<string.h>struct studlong num;char name20;double score1,score2;typedef struct stucodestruct stud student ;s
6、truct 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);void insert(struct stucode *r); void change(struct stucode *r);void main()char choose;int flag=1;struct stuco
7、de *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;case '2':search1(r);printf("Testing function 1nPress any key to c
8、ontinuen"); 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 function 1nPress any key to continuen"); getchar();getchar();break;case
9、9;5':insert(&r);out(r);printf("Testing function 1nPress any key to continuen"); getchar();getchar();break;case '6':out(r);printf("Testing function 1nPress any key to continuen"); getchar();getchar();break;case '7': change(&r);out(r);printf("Testin
10、g function 1nPress any key to continuen"); getchar();getchar();break;case '0':flag=0;printf("The end.n");break;default: printf("nWrong Selection!( 选择错误 ,请重选 !)n"); getchar();getchar();void createlist(struct stucode *r)struct stucode *p,*t;long n;char a20;double s1,s2
11、;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->,a);p->student.score1=s1;p->student.score2=s2;p->next=NULL;*r=p;scanf("%ld%
12、s%lf%lf",&n,a,&s1,&s2);while(n)t=p;p=(L *)malloc(sizeof(L); p->student.num=n; strcpy(p->,a); p->student.score1=s1; p->student.score2=s2; p->next=NULL;t->next=p; scanf("%ld%s%lf%lf",&n,a,&s1,&s2);void search1(struct stucode *r)long
13、x; struct stucode *p=r;if(!r)printf(" 没有学生信息可查询 !n");return ;:n");printf(" 请输入要查询的学生信息的学生学号 scanf("%ld",&x);while(p&&p->student.num!=x) p=p->next;if(p=NULL)printf("Error! No such student !n");elseprintf("%ld%s%.2lf%.2lfn",p->stud
14、ent.num,p->,p->studen t.score1,p->student.score2);void search2(struct stucode *r)char m20;if(!r)printf(" 没有学生信息可查询 !n");return ;printf(" 请输入要查询的学生信息的学生姓名 :n"); scanf("%s",m);while(r&&strcmp(r->,m)r=r->next;if(r=NULL)printf(
15、"Error! No such student !n");elseprintf("%ld%s%.2lf%.2lfn",r->student.num,r->,r->student. score1,r->student.score2);void del(struct stucode *r)long k;struct stucode *p=*r,*t;if(!(*r)printf(" 没有学生信息可删除 !n");return ;:n");printf(" 请输入要删除的学
16、生信息的学生学号 scanf("%ld",&k);if(p->student.num=k)*r=(*r)->next,free(p);else while(p->next&&p->next->student.num!=k) p=p->next;if(p->next=NULL) printf("Error! No such student !n");elset=p->next;p->next=p->next->next;free(t);void insert(stru
17、ct 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 *)malloc(sizeof(L);p->student.num=n;p->student.score1=s1;p->student.score2=s2;strcpy(p->,a);if(!(*r)*r=p;(
18、*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->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(
19、" 没有学生信息可输出 !n");return ;while(r)printf("%ld%s%.2lf%.2lfn",r->student.num,r->,r->student. score1,r->student.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(" 更改的
20、学生的信息 n");printf(" 请输入要查询的学生信息的学生学号 :n"); scanf("%ld",&x);while(p&&p->student.num!=x)p=p->next;if(p=NULL)printf("Error! No such student !n");elseprintf("%ld%s%.2lf%.2lfn",p->student.num,p->,p->student.score1,p->st
21、udent.score2);printf(" 请输入要修改的学生信息 :n");scanf("%ld%s%lf%lf",&n,a,&s1,&s2);p->student.num=n;strcpy(p->,a);p->student.score1=s1;p->student.score2=s2;void menu()printf("n学生成绩管理系统 n");printf("n菜单 nn");printf("n 1建立链表 n"
22、;);printf("n 2查找某学号的学生信息n");printf("n 3查找某姓名的学生信息n");printf("n 4删除某学号的学生信息n");printf("n 5插入新的学生信息 n");printf("n 6显示所有学生的个人信息n");printf("n 7更改学生个人信息 n");printf("n 0退出 n");prin tf("n请选择您要执行的选项:n");(4)程序的输入和输出学生成绩管理系统菜单1建立链
23、表2查找某学号的学生信息?查找某姓名的学生信息 娜除某学号的学生信息5插入新的学 生信息百显三斫有学主打个人信恵7更改学生个人宿息0退出请选择您要扶行的选琢按学生学号查找结果:1建立链表,查找某学号的学生信息耳查找某姓名的学生信息、删除某学号的学生信息百插入新的学生信息右显示所有学生的个人信息7更改学生个人信息0退出请选S您要扶行的选顶::諭入要査询的学竺信息的学生学号: 1010S21010021139,0092.00Testing function 1Press any key to continue按学生姓名查找:1建立链表2查找某学号的学生信息查找某姓名的学生信息、删除某学号的学生信息
24、百插入新的学生信息血示所有学主的个人信息更改学生个人信息退岀情选S您要牧行的选顶匕3f输入要査询的羊三信息的学生姓名:li1010&21139.0992,00Testiing function 1Press anv kev to Gonitinue图3删除某学生的运行结果:、查找某学号的学生信息事査找某姓名的学生信息4删除某学号的学生信息5插入新的学生信息百显示所有学生的个人信息硬改学生个人信息退出:il选8您更删亍的说珈f请输入要删除的学生信息的学生学号:lltLOU161SQ3vjang&5 “BE164.Q&插入某学生的运行结果:i建立椎表、查我某学号的学生信息日
25、查找某姓名的学生信息4删除某学号的学生唁息、插入新的学生信息、显示所有学生的个人信息、更改学生个人信息E退出:情选择您要执行的选项:r请输入雯插入的学生信息的学生学号姓名分数i分数*: 1Q1002 11 39 921010021137,0092.00101卵3昨“牺§-00£4-00显示所有学生的信息:i建立链表、查钱某学号的学生信息 、查钱某姓名的学生信息4删除某学号的学生信息 、插入新的学生信息 、显示所有学生的个人信息 "更改学生个人信息D退岀请选择您要执行的选恥61B1SS21139.0092.M101083uang85.60&4,00(5)调试
26、程序中遇到的问题与解决方案在调试searchi子函数由于在查找中移动了原指针,导致searchi中不能查找,解决方法设一结构体类型的指针,将原指针赋给该指针,将该指针进 行移动查找。在调试 chance()中,如何对已有的记录进行从新输入更改。解决 方案为在chance()子函数中加入一个查找的程序,也就是说先找到要修改的学 生信息,用scanf语句对要修改的学生的信息进行重新输入,再将所赋的信息通 过赋值语句将修改后的学生信息赋给该学生对应的结构体。如何返回一个结构体中信息,解决方案是采用指针类型,将变量的地址作为实参赋给子函数。数组名 代表数组首地址,用scanf语句赋值字符串时,不用加地
27、址操作符。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(m+1)*sizeof(HTNode);for(p=HT;i=1
28、;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(char);cdn-1=0;for(i=1;i<=n;+i)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)*sizeo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版人工智能技术研发与应用合同15篇
- 常州2025版二手房过户税费处理与过户手续办理合同2篇
- 二零二五版智慧城市建设合作合同范本2篇
- 二零二五版在线教育管理系统定制开发合同3篇
- 二零二五版ISO9001质量管理体系认证与质量管理体系审核与监督合同3篇
- 水电工程2025年度施工安全评估合同2篇
- 二零二五版LED显示屏户外广告位租赁合同协议3篇
- 二零二五年海鲜餐饮业特色菜品开发与销售合同3篇
- 二零二五年度虚拟现实游戏开发电子合同承诺3篇
- 二零二五版智能零售企业兼职销售员劳动合同3篇
- 福建省地方标准《先张法预应力混凝土管桩基础技术规程》DBJ13-2023
- 危险作业监护人员培训
- 职业病防治企业台账样本
- 充电桩验收表
- 城市水环境新型污染物的去除新技术课件
- 中长期贷款按实际投向统计统计制度
- 新媒体营销完整版教学课件最全ppt整套教程电子讲义(最新)
- 锅炉专业2020年防非停措施
- 鼻炎营销模式策划书课件(PPT 40页)
- 中国铁塔股份有限公司通信铁塔、机房施工及验收规范(试行)
- 线路综合检修施工方案
评论
0/150
提交评论