学生信息管理系统.docx_第1页
学生信息管理系统.docx_第2页
学生信息管理系统.docx_第3页
学生信息管理系统.docx_第4页
学生信息管理系统.docx_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

课程设计说明书(论文) 长安大学数据结构课程设计报告题目:学生成绩管理系统 苗世洋学 院 信息工程学院 专 业 计算机科学与技术 班 级 24020804 学 号 2402080418 学生姓名 苗世洋 指导老师 杨云 课程成绩 完成日期 2010年6 月26 日 课程设计任务书 信息工程学院 计算机科学与技术专业课程名称数据结构课程设计时间20092010学年第2学期1516周学生姓名指导老师题 目学生信息管理系统主要内容: 成绩管理是学校管理的重要组成部分。成绩不仅关系到学生成绩升迁,在很大程度上度量了一个学生的学习效果;同时成绩关系到教师的教学成果的考评。有的学校根本 就没有系统,手工操作那是非常繁琐的。随着计算机的发展,人工操作代替手工操作, 有些学校虽使用了计算机,甚至管理系统,但是仍然存在很多问题,问题一日不解决,效率就一日提不上去。随着数据结构的发展,改善了该系统,提高了效率。利用数据结构的知识,建立模型,从而实现学生成绩管理系统的开发与应用,更加有利于学生的学习和教师的教学。 要求:(1)要求能独立地运用数据结构的知识,编制一个简单的程序。(2)在老师的指导下,要求每个学生独立完成课程设计的全部内容。(3)学生按要求编写课程设计报告书,能正确阐述设计和实验结果。(4)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。(5)学生应抱着严谨认真的态度积极投入到课程设计过程中,认真查阅相应文献以及实现,给出个人分析、设计以及实现。应当提交的文件:(1)课程设计报告。(*.doc)(2)课程设计附件(源程序、各类图纸、实验数据、运行截图等)。(*.c,*.cpp,*.java等,图片和数据可附在报告中的附录内容中)学生成绩管理系统的开发与应用摘 要学生成绩管理是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,学生成绩管理的计算机化是整个学校教务管理中的重要一部分,能否实现这一步关系到学校办学整体效率的高低,介与它的重要性,学生成绩管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。 对于学生成绩管理,有的学校系统还不够完善,随着数据结构的发展,为老师分析学生成绩提高工作效率与准确率。利用数据结构的知识,建立模型,从而实现学生成绩管理系统的开发与应用。Student achievement management is exceptionally important in school management as a part of, as the schools, in addition to educating people is the education knowledge, student achievement throughout the school management, educational administration computerization is an important part of this step can be achieved related to the schools overall efficiency level, mediated and its importance, their performance management system development and application of the gradually put into the agenda, and Zhan Zhao increasingly important weight.Management for student achievement, some school systems are also inadequate, with the development of data structures, analysis of student achievement for the teachers to improve efficiency and accuracy.Use of data structures, model building, in order to achieve student performance management system development and application.关键词: 成绩管理,数据结构,模型目 录1.课题描述.52.设计过程.6 2.1 数据结构背景.6 2.2 学生成绩管理系统的开发.7 2.2.1 对程序的具体要求.7 2.2.2 编写语言.7 2.2.3 流程图.7 2.2.4 概要设计.82.2.5 详细设计.92.2.6 运行结果.243.在实际中的应用.25总 结.26参考文献.27 1 课题描述学生成绩管理是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,学生成绩管理的计算机化是整个学校教务管理中的重要一部分,能否实现这一步关系到学校办学整体效率的高低,介与它的重要性,学生成绩管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。 运用学生成绩管理系统可以减轻学院教学人员的工作量,缩小开支,提高工作效率与准确率,能够合理安排时间,能够尽快的知道自己的考试成绩,投入新的课程的学习或复习这次没有考过的课程。而学生成绩管理系统的应用也为今天的民办教育在未来市场的竞争力有所提高。从大的方向说,就是为了加速我国四化建设的发展,实现全部的自动化,使我国发展成为通讯网络化,决策科学化,办公自动化的国家。 在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,怎样提高工作效率是人们首先考虑的问题。学生成绩管理是一个非常繁琐与复杂的一项工作,一个原因就是工作量大,不好管。对于一个学校而言,更应该运用一些本地资源,提高管理的力度,对学生负责,对国家负责。本课题就是利用数据结构知识,建立模型,从而实现学生成绩管理的开发与应用,更加有利于学生的学习和教师的教学。2 设计过程 本次设计用数据结构,建立模型,编写程序,实现学生成绩管理系统的开发与应用。2.1 数据结构背景自1996年第一台计算机问世以来,计算机产业的飞速发展展已远远超出人们对它的预料,在某些生产线上,甚至几秒钟太能生产出一台微型计算机,产量猛增,价格低廉,这就使得它的应用范围迅速扩展。如今,计算机已深入到人类社会的各个领域。计算机的应用已不再局限于科学计算,而更多地用于控制、管理及数据处理等非数值计算的处理工作。与此相应,计算机加工处理的对象由纯粹的数值发展到字符、表格和图像各种具有一定结构的数据,这就给程序设计带来一些新的问题。为了编写出一个“好”的程序,必须分析待处理的对象的特性以及各种处理对象之间存在的关系。数据结构与算法1是计算机科学与技术一级学科相关专业的重要基础课程之一,软件开发和维护的基础。计算机的数据处理能力是计算机解决各种实际问题的关键。现实世界中的实际问题经过抽象,得出反映实际事物本质的数据表示后,才有可能被计算机处理。从实际问题抽象出数学模型,得出它的数据表示后,如何用计算机所能接受的形式来描述这些数据,如何将这些数据及相互之间的关系存储在计算机中,如何用有效的方法处理这些数据,如何在构建的数据结构上设计高效的算法,是数据结构与算法研究的主要问题。 “数据结构”2在计算机科学中是一门综合性的专业基础课。“数据结构”的研究不仅涉及到计算机硬件的研究范围,而且和计算机软件的研究有着密切的关系,无论是编译程序还是操作系统,都涉及到数据元素在存储器中的分配问题。在研究信息检索时也必须考虑如何组织数据,以便查找和存取数据元素更为方便。因此,可以认为“数据结构”是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。在计算机科学中,“数据结构”不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序和大型应用程序的重要基础。2.2 学习成绩管理系统的开发2.2.1 对程序的具体要求:1、整个系统均用C语言实现;2、利用指针、链表来实现学生成绩的数据结构3设计;3、系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能;4、系统的各个功能模块都用函数的形式来实现;5、可以将学生成绩信息保存在文件中;6、可以将学生信息从文件中读取出来。2.2.2编写语言: C语言开始作相应处理保存成功2.2.3初步总体设计流程图如下:输入功能序号提示输入错误判断输入退出系统是否保存结束2.2.4 概要设计: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.5 详细设计#include stdio.h#include stdlib.h #include string.h int shoudsave=0; /* 判断是否有过改动痕迹的相关数 */ struct student char num10;/* 学号,将学号设置为字符串的好处是可以用strcmp比较 */ 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显示学生资料t6保存学生资料n);printf(n7统计学生成绩t8排序学生成绩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( %-8s%st%s t%d t%d t%d t%d t%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学生成绩管理系统ntt-信息工程学院08 计算机科学与技术 苗世洋n);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:Disp(l);break;/显示学生case 6:Save(l);break;/ 保存学生 case 7:Tongji(l);break;/统计学生case 8:Sort(l);break;/排序学生default: Wrong();getchar();break; 2.2.6 运行结果:请选择操作:按步操作,即可实现学生成绩系统的开发的各个功能选项。3 在实际中的应用成绩管理是学校管理的重要组成部分。成绩不仅关系到学生成绩升迁,在很大程度上度量了一个学生的学习效果;同时成绩关系到教师的教学成果的考评。成绩管理的重要性不言而喻,但是成绩管理在学校中是很繁重的,在每门课中,每个学生都要有对应的成绩记录。在学校各项管理中,成绩管理牵扯到的其它管理内容是最复杂的,它牵涉到了学生成绩管理、教师管理和课程管理等。所以在实际管理工作中,往往由于成绩记录的数量众多、管理复杂,造成成绩管理的混乱。 有的学校根本就没有系统,还是手工操作计算机日新月异的发展,但是有的领导只见眼前利益,不关心,甚至不敢尝试新兴的事物。手工操作还十分落后,效率极低,成本很大,以后的社会是信息的社会,信息只有快,准,精才能发挥其价值。 所以机器代替人力是必然的历史发展趋势,只有领导的重视和支持才能从人工操作改为计算机的自动化系统。人工操作必将被计算机代替。 有些学校虽使用了计算机,甚至管理系统,但是仍然存在很多问题,问题一日不解决,效率就一日提不上去。 还有,有的系统很不完善到处是漏洞,

温馨提示

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

评论

0/150

提交评论