学生成绩查询数据结构课设论文_第1页
学生成绩查询数据结构课设论文_第2页
学生成绩查询数据结构课设论文_第3页
学生成绩查询数据结构课设论文_第4页
学生成绩查询数据结构课设论文_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、数据结构课程设计(论文)学生成绩管理系统院(系)名称专业班级学号学生姓名指导教师起止时间:学生成绩管理是通过输入、输出、添加、排序、查找、删除等活动,解决学 生成绩等信息之间存在的相对应的关系的信息存储,以此方便对学生成绩等信息 的管理,从而可以人量告诉的对学生信息进行操作。随着社会的发展,快速便捷 已成为主流,当学生数量特别大的吋候,此程序可以快速执行查找或者录入操作 者所需耍的信息。计算机信息管理技术的迅速发展恰恰解决了这个问题,它使计 算机技术与现代管理技术相互配合,來更加准确、高速地完成学生成绩的管理, 使学校老师和同学能够以最少的人员来完成更多的工作。系统的开发主耍包括后台数据库的建

2、立和维护以及前端应用程序的开发两个 方面。本系统使用viscal c+进行前台界面和处理程序的开发,前者建立成数据 一致性和完整性强、数据安全性好的数据库,而后者具有应用程序功能完备,易使 用等特点。学生成绩管理系统在mvc设计模式的基础上使用ssh框架。通过库存管理进 行学生成绩的入库出库操作来完成学生信息的管理。关键词:成绩管理;成绩查询;递归遍历第1章绪论111系统的开发背景11.2开发工具及语言1第2章概要设计22.1模块划分22.2数据结构的选择2第3章 系统详细设计与编码33.1完整的源程序33.2程序的输入和输出73.3调试程序中遇到的问题及解决方案9第4章思考题解析104思考题

3、的选择104.2类c算法104.3程序分析13第5章总结14参考文献15第1章绪论1. 1系统的开发背景人类已进入21世纪,科学技术突飞猛进,经济知识和信息产业初见端倪,特别是 信息技术和网络技术的迅速发展的广泛应用,对社会的政治、经济、军事、文化等领 域产生越來越深刻。学生成绩管理系统是教育单位不可缺少的部分,它的内容对于学 校的决策者和管理者來说都至关重要。1.2开发工具及语言本系统使用viscal c+语言开发,主界面清晰显示所有功能项,使用简单。各个功 能项均定义一个函数来实现,在主函数中调用各个子函数实现不同的功能。第2章概要设计2.1模块划分题冃应实现的貝体功能;a. 每个学生的信

4、息:可以录入每个学生的具体信息包括:姓名、学号、科目成绩 等,并且可以对录入的信息进行保存和输出。同吋在有遗漏是还可以把遗漏的学生信息 进行添加操作,重新添加到其中。b. 可以对已经存在的学生信息进行操作:(1)成绩杳询:根据输入的姓名学号可以输出对应同学的成绩;(2)成绩排序:可以根据输入的学生成绩或者原來存在的学生成绩信息对成绩 按照顺序从前到后进行排序;(3)成绩修改:如果出现成绩录入时发生错误,可以在之后进行修改操作将其 改正。2. 2数据结构的选择系统数据的逻辑结构采用线性结构,物理结构采用顺序存储结构。存储结构定义如下:typedef structchar subject20;in

5、t score;fen;typedef structchar xuehao10;char xingming20;int zongfen;fen chengjifkechengshu; student;第3章系统详细设计与编码3. 1完整的源程序#include<stdio.h>#include<stri ng.h>#define biandongshu 6#define kechengshu 1#define xueshengshu 2int q=l;typedef structchar subject20;int score;fen;typedef structcha

6、r xuehao10;char xingming20;int zongfen;fen chengj ikechengshu; student;/*lshuru*/void input(student xuesheng)int i,j;printf(hnnow input %d students,infbrmation!,xueshengshu);for(j=0;j<xueshengshu;j+,q+)printf(nnxuehao:");scanf(n%su,xuesheng|j.xuehao);printf("xingming:h);scanf(n%sn,xuesh

7、engj.xingming);for(i=0;i<kechengshu;i+)printf(nkechengming:n); scanf(n%su,xuesheng|j.chengji|i|.subject); printf(” fenshu:”);scanf(h%dl&xueshengj .chengj i i. score);xueshengj.zongfen+=xueshengj.chengjii.score;/*2shuchu*/void print(student xuesheng)int i,j=0;printf(nnxuehao xingming kechengmi

8、ng fengshu");while(j<q-l)printf(nnn);printf(" %s% 12s”,xueshengj.xuehao,xueshengj.xingming);for(i=0;i<kechengshu;i+)printf("n%27s%dh,xueshengj.chengjii.subject,xueshengj.chengjii.score);printf(h zongfen:%d",xueshengj.zongfen);j+;/*3tianjia*/void add(student xuesheng)int i=0

9、,j,n,m=0;char ch20;while(xueshengi.chengjim.score)+i;printf(hninput the add student's information!n");printf(hnxuehao:u);scanf(” s”,ch);strcpy(xueshengi.xuehao,ch);printf(" xingming:1');scanf(',%sn,xueshengi.xingming);for(j=0;j<kechengshu;j+)printf(nnkemu:");scanf(” s”,

10、ch);s trcpy (xuesheng i .chengj i j . subj ect,ch);printf("chengji:");scanf("%dn,&n);xueshengfi .chengj i j .score=n; xueshengi.zongfen+=xueshengi.chengjij.score;q=q+l;/*4xiugai*/void change(student xuesheng jnt m)int i,j,x,n=l;char a20;if(xueshengm-1 .xuehao)while(n)printf(nnchoi

11、se the change number:n0-end;nl-xuehao;n2-xingming;n3-chengjichu;nn);scanf(h%dh,&n);switch(n)case l:printf(hninput the change xuehao:n);scanf("%s”,a);strcpy(xueshengm-1 .xuehao,a);break;case 2:printf(hninput the change xingming:,r);scanf(” s”,a);strcpy(xueshengm-11 xingming,a);break;case 3:p

12、rintf(hninput the change order(<=%d):fkechengshu);scanf(h%dm,&i);printf(mn 1 -kechengming;n2-fenshu;nn);scanf(u%dm,&j);switch(j)case l:printf(nninput kechengming:n); scanf("%sm,a); strcpy(xueshengm-l.chengjii-l .subject,a);break;case 2:printf(hninput fenshu:11);scanf(n%dn,&j);xue

13、shengm-1 .zongfen=xueshengm-1 .zongfen-xueshengm-1 .chengjii-l .score+j;xueshengm-l.chebreak;break;/*5paixu*/void paixu(student xueshengfl)int i,n=0,j;student ren; for(i=2;xueshengi.chengjin.score;i+) if(xueshengi.zongfen<xueshengi 1 .zongfen) ren=xueshengi;xueshengi =xueshengi-1 ; for(j=i-2;ren.

14、zongfen<xueshengj.zongfen;j) xueshengj+l =xueshengj;xueshengj+1 =ren;printf(nnthe member is orderly!n);/*6chazhao*/void check(student xueshengflchar al)int i=0,j=0;while(xueshengi.xuehao)if(strcmp(xueshengi .xuehao,a)=0)printf(hnxuehao:%s xingming:%s”,xueshengixuehao,xueshengi.xingming);for(j =0

15、;j <kechengshu;j+)printf(nnkemu: %schengj i: %dzongfen:%dn,xueshengi.chengjifj.subject,xueshengi.chengjij.score,xueshengi.zongfen)else if(strcmp(xueshengi .xingming,a)=0)printf(hnxuehao:%s xingming:%s,xueshengi.xuehao,xueshengi.xingming); for(j=0;j<kechengshu;j+)printf(hnkemu:%schengji:%dzongf

16、en:%d,xueshengi.chengjijlsubject,xueshengfil.chengjijl.score,xueshengfi.zongfen)if(! xueshengi .xuehao)printf(hnthe student is no exist!nh);i+;/*7shanchu*/void delet(student xuesheng,int m)int i;i=m;ngjii-l.score=j;if(! xueshengi .xuehao)printf(mnthe student is no exist!11);while(xueshengi >xueha

17、o)xueshengi-1 =xueshengi;i=i+l;q=qi;/*zhuhanshu*/void main()int m=l,n,x;char a20;student xueshengxueshengshu+biandongshu;while(m)printf(mn ii(0)结朿llnll(1) 输入llnll(2)-输出llnll“添加llnll(4)-修改llnll(5)-排序ii n ii(6)-查找ii n ii(7)-删除ii n”);scanf("%d",&m); switch(m)case l:input( xuesheng);break;

18、case 2:print( xuesheng);break;case 3:add( xuesheng);break;case 4:printf(ninput the change's order:n); scanf(“d”,&x);change( xuesheng,x);break;case 5: paixu( xuesheng);break;case 6:printf(hinput the student's xuehao or xingming:11); scanf("%s”,a);check( xuesheng.a);break;case 7:print

19、f(hninput the delet studenfs situation:11); scanf("%d",&n);delet( xuesheng.n);break;getchar();3. 2程序的输入和输出程序运行主界面:c:uersshuaigedesktopdcbugada$d.exe"图3.1主界面*c:user$huaigedes ktopdebug3dasd.exe*<7>删除now input 2 students* infopnatloot xueh«o1 xingning:小kechengning:数据结构 fe

20、nshu:80 xueh«o2pcingning:小明kechcngring: 据结构 fenshu:9h束入除 n_删 二一 >>>>>>> 1 2 3 4 s 6 7 z ( z ( zx zx zk图3. 2学生成绩输入c:usersshuaigedesktopdebugadasd.exe-xuchaoxingmingkcchcncfningfcngshu1数据结构80zongfun:-8589933802小明数据结构902ongfen:-858993370图3. 3学生成绩输出input the student* s xuehao o

21、>* xingning:2xuehao:2 xingning:小明c:usersshuaigede$ktopdebugada$d.exe*now input 2 students* info»«nation? xuohao:1 xingning :丿卜李kcchcngminh:$ 据结构fenshu:80cnu:数据菊栢 chengji:90 zongf en :-858993379t* 图3.4学生成绩查找图3. 5学生成绩修改3. 3调试程序中遇到的问题及解决方案问题:删除学生信息功能不能实现。在选择删除功能后不能将选择的学生信息删除, 而总是删除其他信息?解决方

22、案:出现这个问题肯定是数据覆盖出现了错误,也就是循环出现了错误, 检查循环程序后发现,循环休内数据交换岀现了错误,没有定义结构变量,重新定义结 构体变量后解决问题。第4章思考题解析4.1思考题的选择所选择的思考题:编写一个算法,构造一棵哈夫曼树,并求出其带权路径长度。4. 2类c算法#include <iostream>#include <stdlib.h>using namespace std;const int maxvalue二10000; 初始设定的权值最大值const int maxbit二4; /初始设定的最大编码位数const int maxn = 10;

23、 /初始设定的最大结点个数struct haffnode 哈夫曼树的结点结构int weight; 权值int flag; 标记int parent; /双亲结点f标int leftchild; 左孩子卜标int rightchild; 右孩子下标;struct code 存放哈夫曼编码的数据元索结构int bitfmaxbit; 数组int stan; /编码的起始下标int weight; 字符的权值;void haffman(int weight, int n, haffnode hafftreej)建立叶结点个数为n权值为weight的哈夫曼树hafftreeint j, ml, m2

24、, xl, x2;哈夫曼树hafftree初始化。n个叶结点的哈夫曼树共冇2n-l个结点for(int i = 0; i < 2 * n - 1 ; i+)if(i < n)hafftreefi.weight = weightfi;else hafftreei .weight = 0;hafftreefi.parent = 0;hafftreei.flag = 0;hafftreei.leftchild = -l;hafftreei.rightchild = -1;构造哈夫曼树hafftree的n-1个非叶结点for(int i = 0;i < nl;i+)ml 二 m2 =

25、 max value;xl = x2 = 0;for(j = 0;j<n+i;j+)讦(hafftreefj.weight < ml && hafftreej.flag = 0)m2 = ml;x2 = xl;ml = hafftreej.weight;xl 二j;elseif(hafftreej.weight < m2 && hafftreej.flag = 0)m2 = hafftreefj .weight;x2=j;将找出的两棵权值最小的了树合并为一棵了树hafftreex 1 .parent = n+i;hafftreex2.paren

26、t = n+i;hafftree xl. flag = 1;hafftreex2.flag = 1;hafftreen+i .weight = hafftreex 1 .weight+hafftreex2 .weight; hafftreen+i.leftchild = xl;hafftreen+i.rightchild = x2; -void haffmancode(haffnode hafttree, int n, code haffcodej) 由n个结点的哈夫曼树hafftree构造哈夫曼编码haffcode code *cd = new code;int child, parent;

27、求n个叶结点的哈夫曼编码for(int i = 0; i < n; i+)cd->start = n-1; 不等长编码的最后一位为n-1 cd->weight = hafftreei.weight; 取得编码对应权值的字符 child = i;parent 二 hafftreechild.parent;由叶结点向上直到根结点while(parent != 0)if(hafftreeparent.leftchild = child) cd->bitcd->start = 0; 左孩子结点编码 0 elsecd->bitcd->start = 1;/右孩子

28、结点编码 1cd->start;child = parent;parent = hafttreefchild.parent;保存叶结点的编码和不等长编码的起始位for(int j = cd->start+1; j < n; j+) haffcodei.bitj = cd->bitj; haffcodei.start = cd->start;haffcodefi.weight = cd->weight; 保存编码对应的权值 int main()int i,j, n = 4;int weight = 1,3,5,7;haffnode *myhafftree =

29、new haffnode2*n-l;code *myhaffcode = new coden;if(n > maxn)cout « ”定义的n越界,修改maxn! h « endl; exit(0);haffman(weight, n, myhafftree); haffmancode(myhafftree, n, myhaffcode);输出每个叶结点的哈夫曼编码for(i = 0; i < n; i+)cout « "weight = " « myhaffcodei.weight « " code for(j = myhaffcodefi.starts 1; j < n; j+)cout« myhaffcodei.bitj;cout« endl;return 0;)4. 3程序分析该程序的逻辑结构为集合,存储结构是链式存储结构。在求集合a和集合b的并集吋, 先将集合a中的元素放入新生成的集合中,再与集合b中元素进行比较,把集合b中 不与集合a中的元素放入新生成的集合

温馨提示

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

评论

0/150

提交评论