学生成绩管理数据结构课程设计报告.pdf
《学生成绩管理数据结构课程设计报告.pdf》由会员分享,可在线阅读,更多相关《学生成绩管理数据结构课程设计报告.pdf(28页珍藏版)》请在咨信网上搜索。
1、学生成绩管理系统学生成绩管理系统 数据结构课程设计数据结构课程设计一、课程设计的内容与目的利用所学数据结构理论知识完成“学生成绩管理系统”的设计。通过课程设计提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。具体包括:了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。二、课程设计的要求与数据1.系统功能需求分析:1、输入功能:可以输入 40 位同
2、学信息2、增加功能,能增加学生的信息3、浏览功能:完成对全部学生记录浏览4、查询功能:采用散列查找完成按学号查找学生记录5、排序功能:采用直接选择排序,将学生平均成绩从低到高排序输出6、删除功能:可以删除学生信息7、修改功能:可以对学生信息的各项信息进行修改8、插入功能:完成数据的插入9、统计功能:统计出各分数段学生人数(60 分以下,6070,7180,.)2.存储结构设计分析:3.学生的信息:学生的信息采用结构体类型定义,每个元素表示一个学生的信息,包括学号,姓名及数据结构平均成绩 4 个数据项:(1)struct studentchar num11;char name20;int sco
3、re8;float ave;stuN;(2)散列表的结点类型定义:typedef struct node unsigned long int key;struct node*link;HNode;3.源程序如下:#include#include#include/*控制学生记录的容量*/#define N 40#define PR printf(nr%s%s%s%s%s%s%s%s%s%s%s ,stui.num,stui.name,stui.score0,stui.score1,stui.score2,stui.score3,stui.score4,stui.score5,stui.score
4、6,stui.score7,stui.score8,stui.ave)struct studentchar num11;char name20;int score8;float ave;stuN;typedef struct node unsigned long int key;struct node*link;HNode;typedef structint key;/*排序码*/float data;/*其他数据项*/RecNode;/*全新保存函数*/save(int n)/*保存函数,保存n个记录*/FILE*fp;int i;if(fp=fopen(sc.txt,wb)=NULL)/*
5、以输出打开方式,在此前的记录被覆盖*/printf(n不能打开文件n);getch();return NULL;for(i=0;in;i+)if(stui.ave!=0)/*stui.ave=0表此记录已删除*/if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf(文件输入错误n);fclose(fp);/*加载记录或可以计算记录个数的函数*/load()/*加载记录或可以计算记录个数的函数*/FILE*fp;int i;if(fp=fopen(sc.txt,rb)=NULL)/*以输出打开方式,在此前的记录被覆盖*/printf(n不能
6、打开文件n);getch();return NULL;for(i=0;!feof(fp);i+)fread(&stui,sizeof(struct student),1,fp);fclose(fp);return(i-1);/*返回记录个数*/*一个任务结束时的选择浏览还是返回的函数*/void printf_back()/*一个任务结束时的选择浏览还是返回*/int k,w;printf(nnt-成功-nn);printf(请选择:nnt1).现在浏览全部t2).返回:bb);scanf(%d,&w);if(w=1)browse();else teacher();/*显示数据结构项目函数*/
7、void printf_face()/*显示数据结构项目*/printf(nt学号 姓名t英语 数学 C语言 管理学 信检 体育 近代史 线数 平均分tn);average(int i)/*对第i个记录的分数求平均值*/int j,sum;for(sum=0,j=0;j8;j+)sum+=stui.scorej;stui.ave=sum/8.0;/*学号输入函数*/no_input(int i,int n)/*i表示第i个的学生信息,n表示比较到第n个学生*/int j,k,w1;do w1=0;printf(学号:);scanf(%s,stui.num);for(j=0;stui.numj!
8、=0;j+)/*学号输入函数,作了严格规定*/if(stui.numj9)/*判断学号是否为数字*/puts(Input error!Only be made up of(0-9).Please reinput!n);w1=1;break;if(w1!=1)for(k=0;kn;k+)/*比较到第n个学生*/*排除第i个学生记录即你要修改的*/if(k!=i&strcmp(stuk.num,stui.num)=0)/*判断学号是否有雷同*/puts(该记录已存在.请重新输入!n);w1=1;break;while(w1=1);/*对分数输入*/score_input(int i)int j;p
9、rintf(1.英语 2.数学 3.C语言 4.管理学 5.信检 6.体育 7.近代史 8.线性代数n);for(j=0;j8;j+)printf(score%d:,j+1);scanf(%d,&stui.scorej);/*输入一个记录函数*/input(int i)/*输入一个记录函数*/no_input(i,i);/*调用学号输入函数*/printf(姓名:);scanf(%s,stui.name);score_input(i);/*调用分数输入函数*/average(i);/*调用求平均值函数*/*显示一个记录的函数*/printf_one(int i)/*显示一个记录的函数*/int
10、 j;printf(%11s%-10s,stui.num,stui.name);for(j=0;jnn 1).学号 2.姓名 3).英语 4).数学n 5).C语言 6).管理学 7).信检 8).体育 9).近代史n 10).线性代数 11).all score 12).all data 13).cancel and back);printf(请选择:bb);scanf(%d,&c);if(c13|c13|c2&c10)average(i);/*调用求平均值函数*/puts(nNow:n);printf_face();/*调用显示数据结构项目函数*/printf_one(i);/*修改后的记
11、录让用户确认*/printf(n是否确定?nnt1).确定 2).重新修改 3).不保存返回 bb);/*是否确定*/scanf(%d,&w1);/*选择2则表示这次修改错误要重新修改*/while(w1=2);return(w1);/*返回控制值*/*输入模块*/enter()/*输入模块*/int i,n;printf(输入学生总数(0-%d)?:,N);scanf(%d,&n);/*要输入的记录个数*/printf(n现在输入数据nn);for(i=0;in;i+)printf(nInput%dth student record.n,i+1);input(i);/*调用输入函数*/if(
12、i!=0)save(n);/*调用保存函数*/printf_back();/*一个任务结束时让用户选择是浏览还是返回*/*追加模块*/add()/*追加模块*/int i,n,m,k;FILE*fp;n=load();printf(增加的学生总数(0-%d)?:,N-n);scanf(%d,&m);/*输入要追加的记录个数*/k=m+n;for(i=n;ik;i+)printf(nInput%dth student record.n,i-n+1);input(i);/*调用输入函数*/if(fp=fopen(sc.txt,ab)=NULL)/*以ab方式打开文件,追加保存*/printf(不能
13、打开文件n);return;for(i=n;ik;i+)/*输入出到文件*/if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf(文件输入错误n);fclose(fp);printf_back();/*一个任务结束时的选择浏览还是返回*/*修改模块*/modify()/*修改模块*/struct student s;FILE*fp;int i,n,k,w0=1,w1,w2=0;n=load();do system(cls);k=-1;/*给用户看全部记录以便确认要修改的记录*/puts_();/*显示-*/printf_face();/*
14、调用显示数据结构项目函数*/for(i=0;in;i+)if(i!=0)&(i%10=0)/*目的是分屏显示*/printf(nnRemember NO.which needed modify.pass any key to contiune .);getch();puts(nn);printf_one(i);/*调用显示一个记录的函数*/puts_();do printf(nn输入修改学号!NO.:);scanf(%s,s.num);/*输入要修改的数据的学号*/for(i=0;in;i+)/*查找要修改的数据*/if(strcmp(s.num,stui.num)=0)k=i;/*找到要修改
15、的记录*/s=stui;/*把stui(即当次修改的学生记录)备份给s,以便用户反悔时恢复名誉*/if(k=-1)printf(nn不存在!重新输入);while(k=-1);/*当K=-1表示没有找到*/printf_face();/*调用显示数据结构项目函数*/printf_one(k);/*调用显示一个记录的函数*/w1=modify_data(k,n);/*修改学生记录并且返回保存控制值w1,w1=1则表示用户已确认修改*/if(w1=1)/*W1等于1时则表示用户确定这次修改*/printf(n-成功-.nn是否修改其他?nnt1).是 2).保存返回t bb);scanf(%d,&
16、w0);w2=1;/*来控制保存,使w2=1是标记已有过修改*/else w0=0;if(w2=1)stuk=s;/*走到这里是由于用户没有确认这次修改(在调用修改函数w1=modify_data(k,n);时没有确认).使W0=0,为了让终止循环,stuk=s,则把备份的s恢复给stuk(即当次修改的),这样的好处是确保在此之前修改过的成功保存,而本次(用户没有确认的)不修改*/if(w0!=1&w2=1)/*W0不等于1则表示正常返回,w2=1表示在此之前有过修改,这时就保存用户已确认修改的并返回*/save(n);/*w2不等于1表示在此次之前没有修改过(即:第一次),而又反悔这次修改,
17、则不保存返回*/while(w0=1);teacher();/*删除模块*/del()/*删除模块*/struct student s;FILE*fp;int i,j,n,k,c,w0=1;n=load();do system(cls);k=-1;/*给用户看全部记录以便确认要删除的记录*/puts_();printf_face();/*调用显示数据结构项目函数*/for(i=0;in;i+)if(stui.ave!=0)if(i!=0)&(i%10=0)/*目的是分屏显示,每10个一屏*/printf(nnRemember NO.which needed del.pass any key t
18、o contiune .);getch();puts(nn);printf_one(i);/*调用显示一个记录的函数*/puts_();do printf(nn输入删除学号!NO.:);scanf(%s,s.num);/*输入要修改的数据的学号*/for(i=0;in;i+)/*查找要修改的数据*/if(strcmp(s.num,stui.num)=0)k=i;/*找到要修改的记录的下标赋给K*/s=stui;if(k=-1)printf(nn不存在!重新输入);/*K=-1,表示没有找到相同之的*/while(k=-1);puts(n);printf_face();/*调用显示数据结构项目函
19、数*/printf_one(k);/*调用显示一个记录的函数*/printf(n是否确定?nt1).是 2).否且删除其他 3).保存全部返回 bb);scanf(%d,&c);if(c=1)stuk.ave=0;/*stuk.ave=0用来标识这个记录是要删除的.保存时则不保存stuk.ave=0的数据*/printf(nn-成功-.nn是否重输?nt1).是 2).返回菜单t bb);/*问是否继续*/scanf(%d,&w0);if(c=3)w0=0;/*w0=0不删除直接返回*/if(w0!=1&c!=3)/*只有当确认删除后返回才保存,不删除直接返回则不保存,且不保存在此之前删除过的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩 管理 数据结构 课程设计 报告
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。