学生成绩管理数据结构课程设计报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“学生成绩管理课程设计”。
学生成绩管理系统 数据结构课程设计
一、课程设计的内容与目的利用所学数据结构理论知识完成“学生成绩管理系统”的设计。
通过课程设计提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。具体包括:
了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
二、课程设计的要求与数据 1.系统功能需求分析:
1、输入功能:可以输入40位同学信息
2、增加功能,能增加学生的信息
3、浏览功能:完成对全部学生记录浏览
4、查询功能:采用散列查找完成按学号查找学生记录
5、排序功能:采用直接选择排序,将学生平均成绩从低到高排序输出
6、删除功能:可以删除学生信息
7、修改功能:可以对学生信息的各项信息进行修改
8、插入功能:完成数据的插入
9、统计功能:统计出各分数段学生人数(60分以下,60~70,71~80,...)
2.存储结构设计分析:
3.学生的信息:学生的信息采用结构体类型定义,每个元素表示一个学生的信息,包括学号,姓名及数据结构平均成绩4个数据项:
(1)struct student {char num[11];char name[20];int score[8];float ave;}stu[N];(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 ”,stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].score[5],stu[i].score[6],stu[i].score[7],stu[i].score[8],stu[i].ave)struct student {char num[11];char name[20];int score[8];float ave;}stu[N];typedef struct node {unsigned long int key;struct node * link;}HNode;typedef struct{int key;/*排序码*/ float data;/*其他数据项*/}RecNode;/*全新保存函数*/ save(int n)/*保存函数,保存n个记录*/ {FILE *fp;int i;if((fp=fopen(“sc.txt”,“wb”))==NULL)/*以输出打开方式,在此前的记录被覆盖*/ {printf(“n不能打开文件n”);getch();return NULL;} for(i=0;i'9')/*判断学号是否为数字*/ {puts(“Input error!Only be made up of(0-9).Please reinput!n”);w1=1;break;} if(w1!=1)for(k=0;knn 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(c>13||c13||c2&&ckey=k;p->link=NULL;t[i]=p;printf(”n inserted %lun “,k);return(1);} else {p=t[i];while(p!=NULL)if(p->key==k){printf(”n retrieval %lun “,k);return(0);} else if(p->link!=NULL)p=p->link;else{p->link=(HNode*)malloc(sizeof(HNode));p=p->link;p->key=k;p->link=NULL;printf(”n inserted %lun “,k);return(1);getch();} } }
HNode *linksearch(HNode *t[],char k){/*在用拉链法处理冲突的散列表t中查找关键字为给定值k的记录*/ HNode *p;int i;i=h(k);if(t[i]==NULL)return(NULL);p=t[i];while(p!=NULL)if(p->key==k){printf(”%lun“,p->key);return(p);} else p=p->link;return(NULL);} search()/*查找模块*/ {int i,n,k,w1=1,w2,w3,w4;struct student s;n=load();do {do {k=-1;printf(”nn输入查找学号!NO.:“);scanf(”%s“,s.num);/*输入要修改的数据的学号*/ printf_face();/*调用显示数据结构项目函数*/ for(i=0;ij;i--)if(stu[i].ave>stu[i-1].ave){s=stu[i-1];stu[i-1]=stu[i];stu[i]=s;} save(n+1);printf_back();} else if(c!=2)teacher();} while(c==2);} /****************排序模块(按平均成绩)****************/ void sift(RecNode r[],int t,int w)/*用筛选法调整堆*/ {int i,j;RecNode x;i=t;x=r[i];j=2*i+1;while(jr[j+1].key))j++;if(x.key>r[j].key){r[i]=r[j];i=j;j=2*j+1;} else break;} r[i]=x;}
void heapsort(RecNode r[],int n)/*堆排序*/ {int i;RecNode x;for(i=n/2-1;i>=0;i--)sift(r,i,n-1);for(i=n-1;i>0;i--){x=r[0];r[0]=r[i];r[i]=x;sift(r,0,i-1);} } /****************排序模块(按平均成绩)****************/ order()/*排序模块(按平均成绩)*/ {int i,j,k,n;struct student s;n=load();for(i=0;i
/*****************统计模块*******************/ void fenduantongji(){ int k,u,n,i,j,w1=1,w2;int a,b,c,d,e;a=0;b=0;c=0;d=0;e=0;printf(” 1.英语 2.数学 3.C语言 4.管理学 5.信检 6.体育 7.近代史 8.线性代数 9.平均分n“);printf(”请输入要统计的科目:“);scanf(”%d“,&u);if(u=90)a=a+1;else if(k=80)b=b+1;else if(k=70)c=c+1;else if(k=60)d=d+1;else if(k=90)a=a+1;else if(k=80)b=b+1;else if(k=70)c=c+1;else if(k=60)d=d+1;else if(k
if(w1==1)fenduantongji(w1);else teacher();} /****************教师界面****************/ teacher()/*教师界面*/ {int n,w1;do {system(”cls“);/*清屏*/ puts(”tt*********************MENU*********************nn“);puts(”tttt1.输入新数据“);puts(”tttt2.添加数据“);puts(”tttt3.修改数据“);puts(”tttt4.删除数据“);puts(”tttt5.浏览全部“);puts(”tttt6.学号查询“);puts(”tttt7.插入数据“);puts(”tttt8.按平均分排序“);puts(”tttt9.分段统计“);puts(”tttt10.退出“);puts(”tttt11.返回主界面“);puts(”nntt**********************************************n“);printf(”请选择序号:(1-11): [ ]bb“);scanf(”%d“,&n);if(n11)/*对选择的数字作判断*/ {w1=1;getchar();} else w1=0;} while(w1==1);/*选择功能*/ switch(n){case 1:enter();break;/*输入模块*/ case 2:add();break;/*追加模块*/ case 3:modify();break;/*修改模块*/ case 4:del();break;/*删除模块*/ case 5:browse();break;/*浏览模块*/ case 6:search();break;/*查找模块*/ case 7:insert();break;/*插入模块*/ case 8:order();break;/*排序模块*/ case 9:fenduantongji();break;/*统计模块*/
case 10:exit(0);/*退出*/ case 11:menu();/*返回主界面*/ getch();} } /****************密码函数****************/ distin()/*密码函数*/ { int f;char mima[]={”gdut09“};char mi[6];printf(”输入密码:“);scanf(”%s“,mi);if(strcmp(mima,mi)==0){ teacher();} else
{ printf(”密码错误!n“);printf(”nn请选择:nt1).目录 2).退出 [ ]bb“);scanf(”%d“,&f);switch(f){ case 1: menu();break;case 2: exit(0);break;} } } /****************学生界面****************/ st()/*学生界面*/ {int i,n,k,w1=1,w2,w3,w4;struct student s;n=load();do {system(”cls“);do {k=-1;printf(”nn请输入学号 NO.:“);scanf(”%s“,s.num);printf_face();for(i=0;i
);printf(”nn ^-^ ★成功★ ^-^.“);printf(”nn请选择:nt1).返回 [ ]bb“);scanf(”%d“,&w2);} } } while(w2==1);menu();} /****************主界面****************/ menu()/*主界面*/ { int c;{system(”cls“);/*清屏*/ printf(”n“);printf(”n“);printf(”n“);printf(”n“);printf(”n“);printf(”n“);printf(”n ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ “printf(”n ● ● ■■■■■ ▲ ▲ ■■■■■ “printf(”n 〓 〓 ■ 〓 〓 ■ ■“);printf(”n ■ ■ ■ ■ ■ ■ ■ “printf(”n ■■■■■ ■■■■ ■ ■ ■ ■ “printf(”n ■ ■ ■ ■ ■ ■ ■ “printf(”n ■ ■ ■ ■ ■ ■ ■ “printf(”n ■ ■ ■■■■■ ■■■■ ■■■■ ■■■■■ “printf(”n ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ “getch();system(”cls“);/*清屏*/ printf(”n“);printf(”n“);printf(”n“);printf(”n“);printf(”n“);printf(”n“);printf(”n“);printf(”nttt 欢迎使用学生成绩管理系统nn“);puts(”tt★★★★★★★★★★★目录★★★★★★★★★★★nn“);printf(”tt 1.教师登陆n“);printf(”tt 2.学生登录n“);printf(”tt 3.退出“);puts(”nntt★★★★★★★★★★★★★★★★★★★★★★★★n“);););););););););scanf(”%d“,&c);switch(c){
case 1: distin();break;case 2: st();break;case 3: exit(0);break;} } }
/*****************主函数****************/ main(){menu();getch();}
三、实验结果和数据处理: 1.、运行该程序,初始界面为欢迎界面:
2、输入数字1,按enter后,然后输入密码gdut09,进入教师菜单:
3、教师界面:
4、输入1,选择输入功能,再输入3个学生信息:
5、输入1,浏览全部数据:
6、返回教师界面,输入3,进行修改:
7、返回教师界面,输入2,进行追加数据
8、返回教师界面,输入4,进行删除数据:
9、返回教师界面,输入5,进行浏览:
10、返回教师界面,输入6,进行查找:
11、返回教师界面,输入7,进行插入数据:
12、进入教师界面后,输入进行按平均成绩(从小到大)排序:
13、在教师界面输入9,完成分段统计功能:
14、返回主界面,输入2,进入学生界面,按学号进行查找学生成绩:
四、参考文献:
《数据结构 C语言》 严蔚敏 清华大学出版社
《c语言程序设计》 谭浩强 清华大学出版社 《数据结构》 高教出版社
《数据结构习题》 李春保 清华大学出版社 《数据结构习题》 严蔚敏 清华大学出版社 《c语言与数据结构》 王立柱 清华大学出版社
《数据结构(C语言篇)习题与解析)李春葆 清华大学出版社
五、总结:
通过这次的课程设计,做一个程序设计,真的不容易。很多都不懂得怎么去做,虽然最后做完了这个课程设计,但是有些并不能满足老师的要求,而且因为有很多不懂的地方,所以发了很多时间去看书及请教同学。虽然不能说这个程序是完全自己做的,但是我也有很认真的去寻找错误并修改。我觉得这次自己也有一点点进步的,当自己发现了错误,会修改了也是一种进步吧。看到自己进步,其实也挺欣慰的,至少努力没白费,还是学到了一点知识的。就像我知道了怎样返回某些函数。
开始的时候本来是想要用堆排序进行学生平均分排序,可是做了很久,又问同学,最后还是不会做,虽然在懂堆排序,却不会用。所以只好用直接选择排序。而在分段统计中,原来有很多错误,不明确。之后我跟同学就把它改成按科目及平均分来统计,可是看了很久,改了很多次,其他分数段的没有错误,但是在60分以下的统计却不能实现,不知道该怎样去改。
数据结构 课程设计(1)学生成绩管理问题(建议数据结构:单链表)学生成绩管理是学校教务管理的重要组成部分,其处理信息量很大,本设计是对学生的成绩管理做一个简单的模拟,用菜单选择操......
数据结构课程设计-学生成绩名次表问题描述:建设一个年级(M个班)的学生参加某门课程的考试,每个班最多有N个学生,请输出各班的成绩名次表(M个)、以班级为单位的成绩名次表(1个)、以及......
《数据结构》 课程设计报告1 目录《数据结构》 ..........................................................................................................................
计算机科学与工程系数据结构课程设计报告课程设计题目 迷宫 航班信息查询系统 学 号 姓 名 班 级专 业 网络工程 完 成 时 间 2013-1-4 指 导 教 师 数据结构课程设计 迷宫......
《数据结构》课程设计哈希表实现电话号码查询系统一目的利用《数据结构》课程的相关知识完成一个具有一定难度的综合设计题目,利用C/C++语言进行程序设计,并规范地完成课程设......