大数据结构与算法课程设计学生成绩管理系统_第1页
大数据结构与算法课程设计学生成绩管理系统_第2页
大数据结构与算法课程设计学生成绩管理系统_第3页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计说明书题目:数据结构与算法课程设计学院(系):专业班级:学 号:学生:指导教师:教师职称:起止时间:号 学课程设计 (论文) 题目数课程设计论文>任务外 E 另在 现O 实 子 序 勺 程劇 、H目 语 劝 C 、义 的。眺 准可加 。 标即FX高 用法I 能 目算S4W 题c、>汕 尽 个 訂 率 每美单t储效 求探0苗 呦 要腐制阳m ,肛有动闸算 目壽吋 K,呈 O , O 个5F时不歹入度性 一她序久曲输杂定 择心阳牟位帥>用 目®,亦】选血!1傀 题题予血目»法序 个號题2题的算排 十则个M据入析证 从耐每耐根输分验 宀元22”33d55

2、s指导教师评语及成绩日月指成院(系):课程设计(论文)任务及评语教研室:软件工程目录第 1 章 课程设计目的与要求 1_1.1 课程设计目的 1_1.2 课程设计的实验环境 1_1.3 课程设计的预备知识 1_1.4 课程设计要求 1_第 2 章 课程设计容 2_2.1 题目的选择 2_2.2 题目的具体实现 2_2.3 思考题解析 1_2总结: 1_4第1章 课程设计目的与要求1.1课程设计目的本课程设计是计算机科学与技术专业、软件工程专业的专业技术实践课。本实践课的主要目的是:使学生学会利用在课堂中学过的理论知识,解决相应的实 际问题,深入理解和灵活掌握所学的容,培养学生理论和实践相结合的

3、能力,培养学生分析问题解决问题的能力。同时,在实验步骤规化、程序设计方法等方面受到比较系统 和规的训练。通过实践设计使学生进一步加深对程序设计的规化及对复杂程序设计步骤 的理解。通过课程设计,加深对数据结构这一课程所学容的进一步理解与巩固。通 过课程设计,加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模 块化结构。通过课程设计,提高程序开发功能, 能运用合理的控制流程编写清晰高效的 程序。通过课程设计,训练 C程序调试能力,能将一个中小型各级组织系统联调通过。 通过课程设计,开发一个中小型系统,掌握系统研发全过程。通话课程设计,培养分析 问题、解决实际问题的能力。1.2课程设计

4、的实验环境PC 机,WindowsXP,C+。1.3课程设计的预备知识C语言程序设计、数据结构。1.4课程设计要求(1) 认真查找资料,分析每个题目应选择的数据结构(逻辑结构和物理结构);(2) 按时到实验室调试程序,遵守实验室的规章制度,爱护设备;(3) 每个题目编写源程序时,每个子功能定义为相应的子函数,在主函数中调用各子 函数,程序结构清晰,有必要的注释,可读性强。(4) 程序健壮性强,当数据输入错误时,要进行相应的处理;(5) 分析算法的时间复杂度,要求算法的效率尽可能高;(6) 对于排序算法,要验证排序算法的稳定性。第2章课程设计容2.1题目的选择6学生成绩管理系统2.2题目的具体实

5、现(1) 题目应实现的具体功能; 录入学生成绩信息并保存; 可查询显示所有学生的个人信息;可查询显示所有学生的所学课程信息;®按学号或查询成绩信息;能添加、删除和修改学生的成绩信息;(2) 题目所选择的数据结构及存储结构; 采用线性数据结构及链式存储结构(3) 完整的源程序#i nclude<stdio.h>#i nclude<stdlib.h>#i ncludevstri ng.h>struct studlong num;char n ame20;double score1,score2;typedef struct stucodestruct stu

6、d stude nt ;struct stucode *n ext;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;s

7、truct 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;case '2': search1(r);printf("Testing function 1nPres

8、s 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 function 1nPress any key to continuen"); getchar();getchar(

9、);break;case '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);pr

10、intf("Testing 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

11、 a20;double s1,s2;if(*r) *r=NULL;n");printf(" n 请输入: n 学号 分数 1 分数 2(若要结束请输入四个为零) 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=NUL

12、L;*r=p; scanf("%ld%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(struc

13、t 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->next;if(p=NULL)printf("Error! No such student !n");elseprintf("%ld%s%.2lf%.2lfn

14、",p->student.num,p->,p->student.score1,p->student.s core2);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(

15、r=NULL)printf("Error! No such student !n");elseprintf("%ld%s%.2lf%.2lfn",r->student.num,r->,r->student.score1,r->student.sc ore2);void del(struct stucode *r)long k;struct stucode *p=*r,*t;if(!(*r)printf(" 没有学生信息可删除 !n");return ;printf(" 请输入要

16、删除的学生信息的学生学号 :n"); 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);vo

17、id 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 *)malloc(sizeof(L);p->student.num=n; p->student.score1=s1;p->student.score2=s2;strcpy(p->,a);if

18、(!(*r)*r=p;(*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(

19、!r)printf(" 没有学生信息可输出 !n");return ;while(r)printf("%ld%s%.2lf%.2lfn",r->student.num,r->,r->student.score1,r->student.sc ore2);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

21、,p->student.s core2);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(&qu

22、ot;n 1 建立链表 n");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");printf("n 请选择您要执行的选项 :

23、n");4)程序的输入和输出学生成绩管理系统菜单1建立犍表2查找某学号的学生信息 渣找某姓名的学生信息4删除某学号的学生信息 囁入新的学生信息 百显示所有学生的个人信息 丁更改学生个人信息0退出请选»您要扶行的选项:按学生学号查找结果:建立错表渣找某学号的学生信息喳找某姓名的学生信息观滕某学号的学生信息遍入新的学主信息6显示所有学生的个人信息7更改学生个人信息退出请选»您要扶行的选项匕 备輸入要查询的学二信息的学生学号: 1010021010021139.02.00Testing function 1Press ankey to continue按学生查找:i建立

24、锥表渣找某学号的学生信息 d查拱某姓名的学生信息 4删除某学号的学生信息 囁入新的学生信息 逼示所有学生的个人信息 丁更改学生个人信息退岀请选S您要技行的选顶:入要查询的学生信息的学生姓名:11101002 H39.0092.00Testing function 1Press any key to CDnitinne图3删除某学生的运行结果:1建立链表渣找茶学号的宇生信息喳我某姓名的学生信息4删徐某学号的学牛信息5插入新的学生信息6显示所有学生的个人宿息7更改学生个人信息0退出请选S您要扶行的运珈冷输入萝删除的学生信息的学生学号:1Q1Q82插入某学生的运行结果:11建立锥表查戎某学号的学生宿

25、息弓查我某姓名的学生信息4删除某学号的学生信息囁入新的学生信息G显示所有学生的个人信息丁更改学生个人信息目退岀:情选择您要执行的选珈r请输入曼插入的学生信息的学生学号姓名分数i分数?; 1B1002 11 29 92lBieOlsLin4B.0083 .001016021137*0072.00iei6O3wng85,00E4.H0显示所有学生的信息:建立链袅、査找某学号的学生信息耳査找某姓名的学生信息 、删除某学号的学生信息 、插入新的学生信息6显示所有学生的个人信息7更改学生个人信息请迅择您要执行的选顶:lBlQ01sun8.e083,0Q101002113?.0092.00101003wa

26、nsf®5 .00&4.00(5)调试程序中遇到的问题及解决方案在调试searchi子函数由于在查找中移动了原指针,导致searchi中不能查找, 解决方法设一结构体类型的指针,将原指针赋给该指针,将该指针进行移动查找。 在调 试chance()中,如何对已有的记录进行从新输入更改。解决方案为在chanee(子函数中加入一个查找的程序,也就是说先找到要修改的学生信息,用 scanf语句对要修改的学 生的信息进行重新输入, 再将所赋的信息通过赋值语句将修改后的学生信息赋给该学生 对应的结构体。如何返回一个结构体息,解决方案是采用指针类型, 将变量的地址作为 实参赋给子函数。数组

27、名代表数组首地址,用sca nf语句赋值字符串时,不用加地址操作符。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<=i) return;m=2*n-i;HT=(HuffmanTree)malloc(m+i)

28、*sizeof(HTNode); for(p=HT;i=i;i<=n;+i,+,+w) *p= *w,0,0,0; for(;i<=m;+i,+p) *p= *w,0,0,0; for(i=n+i;i<=m;+i)Select(HT,i-i,si,s2);HTsi.parent=i; HTs2.parent=i;HTi.lchild=si; HTi.rchild=s2;HTi.weight=HTsi.weight+HTs2.weight;HC=(HuffmanCode)malloc(n+i)*size(char *); cd=(char *)malloc(n*sizeof(char);cdn-i=0;for(i=i;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=(c

温馨提示

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

评论

0/150

提交评论