学生成绩管理系统.doc_第1页
学生成绩管理系统.doc_第2页
学生成绩管理系统.doc_第3页
学生成绩管理系统.doc_第4页
学生成绩管理系统.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

课程设计说明书(论文) 第II页 数据结构 课程设计评阅书题目学生成绩管理系统的开发与应用学生姓名学号指导教师评语及成绩指导教师签名: 年 月 日答辩评语及成绩答辩教师签名: 年 月 日教研室意见 总成绩: 教研室主任签名:年 月 日课程设计任务书专业班级: 学号: 姓名: 课程设计名称: 数据结构 设计题目: 学生成绩管理系统的开发与应用 完成期限:自 年 月 日至 年 月 日共 天设计依据、要求及主要内容一、设计目的 成绩管理是学校管理的重要组成部分。成绩不仅关系到学生成绩升迁,在很大程度上度量了一个学生的学习效果;同时成绩关系到教师的教学成果的考评。有的学校根本 就没有系统,手工操作那是非常繁琐的。随着计算机的发展,人工操作代替手工操作, 有些学校虽使用了计算机,甚至管理系统,但是仍然存在很多问题,问题一日不解决,效率就一日提不上去。随着数据结构的发展,改善了该系统,提高了效率。利用数据结构的知识,建立模型,从而实现学生成绩管理系统的开发与应用,更加有利于学生的学习和教师的教学。 二、设计要求 1.掌握数据结构知识,会编写程序。 2.能够用C语言编写程序,实现学生成绩管理系统的开发。 3.在规定的时间内完成,查阅文献资料不少于3篇,课程设计报告1篇不少于3000字。 三、参考文献 1 严蔚敏,吴伟民.数据结构M.北京:清华大学出版社,1997. 2 熊越山,刘越.数据结构与算法M.北京:电子工业出版社,2007. 3 夏清国,姚群.数据结构M.北京:西北工业大学出版社,2006. 计划答辩时间 : 指导教师(签字): 教研室主任(签字): 批准日期: 年 月 学生成绩管理系统的开发与应用摘 要学生成绩管理是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,学生成绩管理的计算机化是整个学校教务管理中的重要一部分,能否实现这一步关系到学校办学整体效率的高低,介与它的重要性,学生成绩管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。 对于学生成绩管理,有的学校系统还不够完善,随着数据结构的发展,为老师分析学生成绩提高工作效率与准确率。利用数据结构的知识,建立模型,从而实现学生成绩管理系统的开发与应用。关键词: 成绩管理,数据结构,模型目 录1 课题描述12 设计过程12.1 数据结构背景12.2 学习成绩管理系统的开发22.2.1 对程序的具体要求22.2.2 概要设计22.2.3 详细设计33 在实际中的应用19总 结21参考文献22课程设计说明书(论文) 第 22 页 1 课题描述学生成绩管理是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,学生成绩管理的计算机化是整个学校教务管理中的重要一部分,能否实现这一步关系到学校办学整体效率的高低,介与它的重要性,学生成绩管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。 运用学生成绩管理系统可以减轻学院教学人员的工作量,缩小开支,提高工作效率与准确率,能够合理安排时间,能够尽快的知道自己的考试成绩,投入新的课程的学习或复习这次没有考过的课程。而学生成绩管理系统的应用也为今天的民办教育在未来市场的竞争力有所提高。从大的方向说,就是为了加速我国四化建设的发展,实现全部的自动化,使我国发展成为通讯网络化,决策科学化,办公自动化的国家。 在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,怎样提高工作效率是人们首先考虑的问题。学生成绩管理是一个非常繁琐与复杂的一项工作,一个原因就是工作量大,不好管。对于一个学校而言,更应该运用一些本地资源,提高管理的力度,对学生负责,对国家负责。 本课题就是利用数据结构知识,建立模型,从而实现学生成绩管理的开发与应用,更加有利于学生的学习和教师的教学。2 设计过程 本次设计用数据结构,建立模型,编写程序,实现学生成绩管理系统的开发与应用。2.1 数据结构背景自1996年第一台计算机问世以来,计算机产业的飞速发展展已远远超出人们对它的预料,在某些生产线上,甚至几秒钟太能生产出一台微型计算机,产量猛增,价格低廉,这就使得它的应用范围迅速扩展。如今,计算机已深入到人类社会的各个领域。计算机的应用已不再局限于科学计算,而更多地用于控制、管理及数据处理等非数值计算的处理工作。与此相应,计算机加工处理的对象由纯粹的数值发展到字符、表格和图像各种具有一定结构的数据,这就给程序设计带来一些新的问题。为了编写出一个“好”的程序,必须分析待处理的对象的特性以及各种处理对象之间存在的关系。数据结构与算法1是计算机科学与技术一级学科相关专业的重要基础课程之一,软件开发和维护的基础。计算机的数据处理能力是计算机解决各种实际问题的关键。现实世界中的实际问题经过抽象,得出反映实际事物本质的数据表示后,才有可能被计算机处理。从实际问题抽象出数学模型,得出它的数据表示后,如何用计算机所能接受的形式来描述这些数据,如何将这些数据及相互之间的关系存储在计算机中,如何用有效的方法处理这些数据,如何在构建的数据结构上设计高效的算法,是数据结构与算法研究的主要问题。 “数据结构”2在计算机科学中是一门综合性的专业基础课。“数据结构”的研究不仅涉及到计算机硬件的研究范围,而且和计算机软件的研究有着密切的关系,无论是编译程序还是操作系统,都涉及到数据元素在存储器中的分配问题。在研究信息检索时也必须考虑如何组织数据,以便查找和存取数据元素更为方便。因此,可以认为“数据结构”是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。在计算机科学中,“数据结构”不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序和大型应用程序的重要基础。2.2 学习成绩管理系统的开发2.2.1 对程序的具体要求:1、整个系统均用C语言实现;2、利用指针、链表来实现学生成绩的数据结构3设计;3、系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能;4、系统的各个功能模块都用函数的形式来实现;5、可以将学生成绩信息保存在文件中;6、可以将学生信息从文件中读取出来。2.2.2 概要设计:1 抽象数据类型定义如下:void printc() (本函数用于输出中文)void printe(Node *p)(本函数用于输出英文)if(strcmp(nameornum,num)=0) (按学号查询)else if(strcmp(nameornum,name)=0) (按姓名查询) Node* Locate(Link l,char findmess,char nameornum)(该函数用于定位连表中符合要求的接点,并返回该指针)void Add(Link l)(增加学生)void Qur(Link l)(查询学生)Node *pm,*pe,*pc,*pt,*pa;(用于指向分数最高的接点)s=(Node*)malloc(sizeof(Node);(新建接点用于保存信息)if(fread(p,sizeof(Node),1,fp) (将文件的内容放入接点中)2 主程序Void main() 初始化;While接受命令;处理命令。3 本程序只有两个模块,调用关系很简单。主程序模块 子程序模块2.2.3 详细设计#include stdio.h#include stdlib.h #include string.h int shoudsave=0; /* */ struct student char num10;/* 学号 */ char name20; char sex4; int cgrade; int mgrade; int egrade; int totle; int ave; char neartime10;/* 最近更新时间 */ ; typedef struct node struct student data; struct node *next; Node,*Link; void menu() printf(*n); printf(n1登记学生资料t2删除学生资料n); printf(n3查询学生资料t4修改学生资料n); printf(n5保存学生资料t0退出系统n);printf(n*n); void printstart() printf(-n); void Wrong() printf(n=提示:输入错误!n); void Nofind() printf(n=提示:没有找到该学生!n); void printc() /* 本函数用于输出中文 */ printf( 学号t 姓名 性别 英语成绩 数学成绩 C语言成绩 总分 平均分n); void printe(Node *p)/* 本函数用于输出英文 */ printf(%-12s%st%st%dt%dt%dt%dt%dn,p-data.num,,p-data.sex,p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.totle,p-data.ave); Node* Locate(Link l,char findmess,char nameornum) /* 该函数用于定位连表中符合要求的接点,并返回该指针 */ Node *r; if(strcmp(nameornum,num)=0) /* 按学号查询 */ r=l-next; while(r!=NULL) if(strcmp(r-data.num,findmess)=0) return r; r=r-next; else if(strcmp(nameornum,name)=0) /* 按姓名查询 */ r=l-next; while(r!=NULL) if(strcmp(,findmess)=0) return r; r=r-next; return 0; void Add(Link l) /* 增加学生 */ Node *p,*r,*s; char num10; r=l; s=l-next; while(r-next!=NULL) r=r-next; /* 将指针置于最末尾 */ while(1) printf(请你输入学号(以0返回上一级菜单:); scanf(%s,num); if(strcmp(num,0)=0) break; while(s) if(strcmp(s-data.num,num)=0) printf(=提示:学号为%s的学生已经存在,若要修改请你选择4 修改!n,num); printstart(); printc(); printe(s); printstart(); printf(n); return; s=s-next; p=(Node *)malloc(sizeof(Node); strcpy(p-data.num,num); printf(请你输入姓名:); scanf(%s,); getchar(); printf(请你输入性别:); scanf(%s,p-data.sex); getchar(); printf(请你输入c语言成绩:); scanf(%d,&p-data.cgrade); getchar(); printf(请你输入数学成绩:); scanf(%d,&p-data.mgrade); getchar(); printf(请你输入英语成绩:); scanf(%d,&p-data.egrade); getchar(); p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade; p-data.ave=p-data.totle / 3; /* 信息输入已经完成 */ p-next=NULL; r-next=p; r=p; shoudsave=1; void Qur(Link l) /* 查询学生 */ int sel; char findmess20; Node *p; if(!l-next) printf(n=提示:没有资料可以查询!n); return; printf(n=1按学号查找n=2按姓名查找n); scanf(%d,&sel); if(sel=1)/* 学号 */ printf(请你输入要查找的学号:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) printf(tttt查找结果n); printstart(); printc(); printe(p); printstart(); else Nofind(); else if(sel=2) /* 姓名 */ printf(请你输入要查找的姓名:); scanf(%s,findmess); p=Locate(l,findmess,name); if(p) printf(tttt查找结果n); printstart(); printc(); printe(p); printstart(); else Nofind(); else Wrong(); void Del(Link l) /* 删除 */ int sel; Node *p,*r; char findmess20; if(!l-next) printf(n=提示:没有资料可以删除!n); return; printf(n=1按学号删除n=2按姓名删除n); scanf(%d,&sel); if(sel=1) printf(请你输入要删除的学号:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=提示:该学生已经成功删除!n); shoudsave=1; else Nofind(); else if(sel=2) printf(请你输入要删除的姓名:); scanf(%s,findmess); p=Locate(l,findmess,name); if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=提示:该学生已经成功删除!n); shoudsave=1; else Nofind(); else Wrong(); void Modify(Link l) Node *p; char findmess20; if(!l-next) printf(n=提示:没有资料可以修改!n); return; printf(请你输入要修改的学生学号:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) printf(请你输入新学号(原来是%s):,p-data.num); scanf(%s,p-data.num); printf(请你输入新姓名(原来是%s):,); scanf(%s,); getchar(); printf(请你输入新性别(原来是%s):,p-data.sex); scanf(%s,p-data.sex); printf(请你输入新的c语言成绩(原来是%d分):,p-data.cgrade); scanf(%d,&p-data.cgrade); getchar(); printf(请你输入新的数学成绩(原来是%d分):,p-data.mgrade); scanf(%d,&p-data.mgrade); getchar(); printf(请你输入新的英语成绩(原来是%d分):,p-data.egrade); scanf(%d,&p-data.egrade); p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade; p-data.ave=p-data.totle/3; printf(n=提示:资料修改成功!n); shoudsave=1; else Nofind(); void Disp(Link l) int count=0; Node *p; p=l-next; if(!p) printf(n=提示:没有资料可以显示!n); return; printf(tttt显示结果n); printstart(); printc(); printf(n); while(p) printe(p); p=p-next; printstart(); printf(n); void Tongji(Link l) Node *pm,*pe,*pc,*pt,*pa; /* 用于指向分数最高的接点 */ Node *r=l-next; if(!r) printf(n=提示:没有资料可以统计!n); return ; pm=pe=pc=pt=pa=r; while(r!=NULL) if(r-data.cgrade=pc-data.cgrade) pc=r; if(r-data.mgrade=pm-data.mgrade) pm=r; if(r-data.egrade=pe-data.egrade) pe=r; if(r-data.totle=pt-data.totle) pt=r; if(r-data.ave=pa-data.ave) pa=r; r=r-next; printf(-统计结果-n); printf(总分最高者:t%s %d分n,,pt-data.totle); printf(平均分最高者:t%s %d分n,,pa-data.ave); printf(英语最高者:t%s %d分n,,pe-data.egrade); printf(数学最高者:t%s %d分n,,pm-data.mgrade); printf(c语言最高者:t%s %d分n,,pc-data.cgrade); printstart(); void Sort(Link l) Link ll; Node *p,*rr,*s; ll=(Link)malloc(sizeof(Node); /* 用于做新的链表 */ ll-next=NULL; if(l-next=NULL) printf(n=提示:没有资料可以排序!n); return ; p=l-next; while(p) s=(Node*)malloc(sizeof(Node); /* 新建结点用于保存信息 */ s-data=p-data; s-next=NULL; rr=ll; while(rr-next!=NULL & rr-next-data.totle=p-data.totle) rr=rr-next; if(rr-next=NULL) rr-next=s; else s-next=rr-next; rr-next=s; p=p-next; free(l); l-next=ll-next; printf(n=提示:排序已经完成!n); void Save(Link l) FILE* fp; Node *p; int flag=1,count=0; fp=fopen(c:student,wb); if(fp=NULL) printf(n=提示:重新打开文件时发生错误!n); exit(1); p=l-next; while(p) if(fwrite(p,sizeof(Node),1,fp)=1) p=p-next; count+; else flag=0; break; if(flag) printf(n=提示:文件保存成功.(有%d条记录已经保存.)n,count); shoudsave=0; fclose(fp); void main() Link l;/* 链表 */ FILE *fp; /* 文件指针 */ int sel; char ch; char jian; int count=0; Node *p,*r; printf(tttt学生成绩管理系统ntttt-黄河科技学院06普本信计应小芬01n);l=(Node*)malloc(sizeof(Node); l-next=NULL; r=l; fp=fopen(C:student,rb); if(fp=NULL) printf(n=提示:文件还不存在,是否创建?(y/n)n); scanf(%c,&jian); if(jian=y|jian=Y) fp=fopen(C:student,wb); else exit(0); printf(n=提示:文件已经打开,正在导入记录.n); while(!feof(fp) p=(Node*)malloc(sizeof(Node); if(fread(p,sizeof(Node),1,fp) /* 将文件的内容放入接点中 */ p-next=NULL; r-next=p; r=p; /* 将该接点挂入连中 */ count+; fclose(fp); /* 关闭文件 */ printf(n=提示:记录导入完毕,共导入%d条记录.n,count); while(1) menu(); printf(请你选择操作:); scanf(%d,&sel); if(sel=0) if(shoudsave=1) getchar(); printf(n=提示:资料已经改动,是否将改动保存到文件中(y/n)?n); scanf(%c,&ch); if(ch=y|ch=Y) Save(l); printf(n=提示:你已经退出系统,再见!n); break; switch(sel) case 1:Add(l);break; /* 增加学生 */ case 2:Del(l);break;/* 删除学生 */ case 3:Qur(l);break;/* 查询学生 */ case 4:Modify(l);break;/* 修改学生 */ case 5:Save(l);break;/* 保存学生 */ case 9:printf(ttt=帮助信息=n);break; default: Wrong();getchar();break; 运行结果:学生成绩管理系统-黄河科技学院06普本信计应小芬01=提示:文件已经打开,正在导入记录=提示: 记录导入完毕,共导入0条记录。*1登记学生资料 2删除学生资料3查询学生资料 4修改学生资料5保存学生资料 0退出系统*请你选择操作:按步操作,即可实现学生成绩系统的开发。3 在实际中的应用成绩管理是学校管理的重要组成部分。成绩不仅关系到学生成绩升迁,在很大程度上度量了一个学生的学习效果;同时成绩关系到教师的教学成果的考评。成绩管理的重要性不言而喻,但是成绩管理在学校中是很繁重的,在每门课中,每个学生都要有对应的成绩记录。在学校各项管理中,成绩管理牵扯到的其它管理内容是最复杂的,它牵涉到了学生成绩管理、教师管理和课程管理等。所以在实际管理工作中,往往由于成绩记录的数量众多、管理复杂,造成成绩管理的混乱。 有的学校根本就没有系统,还是手工操作计算机日新月异的发展,但是有的领导只见眼前利益,不关心,甚至不敢尝试新兴的事物。手工操作还十分落后,效率极低,成本很大,以后的社会是信息的社会,信息只有快,准,精才能发挥其价值。 所以机器代替人力是必然的历史发展趋势,只有领导的重视和支持才能从人工操作改为计算机的自动化系统。人工操作必将被计算机代替。 有些学校虽使用了计算机,甚至管理系统,但是仍然存在很多问题,问题一日不解决,效率就一日提不上去。 还有,有的系统很不完善到处是漏洞,可以说是千疮百孔,这样极不完善的系统能有保障本系统全称为学生成绩管理系统。根据开发要求,它主要应用于教育系统,完成对日常的教学、教务、教师以及学生的计算机化的管理。开发学生成绩管理系统可使

温馨提示

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

评论

0/150

提交评论