课程设计说明书--学生信息管理系统设计.doc_第1页
课程设计说明书--学生信息管理系统设计.doc_第2页
课程设计说明书--学生信息管理系统设计.doc_第3页
课程设计说明书--学生信息管理系统设计.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

摘 要c是一种通用的程序设计语言,c语言在很多方面继承和发展了以往许多高级程序设计语言的成功经验和特色,具有书写格式自由、数据类型丰富、语句功能强大、执行速度快和存储控制能力强等优点。学生信息管理系统设计是关于对学生各种信息管理来设计的一个系统。整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成学生信息管理的全过程,包括创建学生信息、查找学生信息、修改学生信息、插入学生信息、删除学生信息、按平均分或者总分排序、统计学生信息等工作。本课程主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点说明了系统的设计思路、总体设计、各个功能模块的设计与实现方法。关键词:学生管理系统,c语言,数据结构,wintc目录摘 要11课题背景的介绍31.1 课题背景31.2 目的32需求分析42.1 数据需求分析42.2 功能需求分析43系统总体设计53.1 系统模块划分53.2 系统模块结构图54系统详细设计64.1 系统主界面设计64.2初始化学生信息64.3查找学生信息74.4删除学生信息94.5更新学生信息114.6排序134.7统计学生信息164.8插入学生信息175系统连编与运行196总 结207参考文献211 课题背景的介绍1.1 课题背景随着网络技术的迅速发展,各种行业纷纷应用网络技术操作和管理。当然学校是一个很大的管理系统,随着学生的大量增加,其管理难度也越来越大,如何对学生的个人信息进行更好的管理,这就是我们研究这个课题的目的。在计算机迅速发展的今天,将计算机这一信息处理器应用于学生的个人信息管理已是势必所然,而且这也将学生信息管理带来前所未有的改变。采用计算机对学生的信息管理是信息科学化和现代化的重要标志,它也给各大高校带来了明显的社会效益。主要体现在:极大地提高了管理工作人员的工作效率,大大地减少了以往的资料室所存在的各种弊端,同时也加强和规范学习对于学生信息的管理。为了能够更好的来实现对学生信息的管理,通过对学生信息管理日常工作的详细调查,搜集了大量的资料,从系统结构的组织,功能的实现,技术的要求以及可行性等多方面进行考虑,认为本课题是一个适应现今学校学生个人信息管理需求的计算机信息管理系统,具有一定的实际开发价值和使用价值。1.2 目的本课题运用c语言进行开发,c语言能够简单的进行编译一些程序,来实现对一些问题的解决。它虽然比较简单的处理一些问题,但却有更高的效率。它能够被大多数用户所接受,因为它能够呈现出清晰的界面,是人们能够很好的理解。能在一些方面给人们更好的服务,成为人们的好帮手。经过这一个学期对数据结构的学习,我们都学到了不少东西,可能有些学的还不够理想,但无论如何这些知识都为我们的下一步学习打下了坚实的基础。做这么一个课程设计,一方面是为了检查我们一个学期以来的学习成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。2 需求分析随着学校规模的发展扩大,学校要向着大型化,规模化发展,而对于学生信息管理系统有关的信息随之增加。在这种情况下单靠人工来处理学生的信息不但显得大不从心,而且极容易出错。因此,需要开发学生管理系统,该系统可以实现由计算机代替人工执行一系列复杂而繁琐的操作,使得学校管理人员可以轻松快捷的完成学生信息管理的任务。2.1 数据需求分析本系统的主要数据是学生信息。学生信息包括:学生学号,姓名,性别,语文成绩,数学成绩,英语成绩,平均成绩,总成绩等。2.2 功能需求分析本系统主要实现对学生成绩信息进行管理,需要实现以下几个方面的管理功能:(1)创建学生信息:录入学生的信息。(2)查找学生信息:按学号、姓名查找。(3)删除学生信息;按学号、姓名删除。(4)更新学生信息:找到要修改的学号,修改相应信息。(5)排序学生信息:按某科目或者总分排序。(6)统计学生信息:统计及格和优秀人数。(7)插入学生信息:插入一个新的学生。3 系统总体设计3.1 系统模块划分本系统主要是对学生信息的管理,包括了有关学生信息的创建、查询、删除、更新、排序、统计、插入等功能。整个系统分为以下几个模块。1、欢迎界面模块 本模块提供欢迎界面的信息输出模式。2、创建模块本模块用于创建学生的信息,包括学生的学号、姓名、性别、语文成绩、数学成绩、英语成绩、平均成绩、总成绩。3、查询模块 本模块用于查询学生的信息,按学号或姓名查询等。4、删除模块 本模块用于删除学生的信息,按学号或姓名删除等。5、更新本模块 用于根据输入要查询的学号来修改其相应的信息。6、排序模块 本模块将学生成绩按平均分或者总分排序。7、统计模块 本模块用于统计各科目及格和优秀的人数。3.2 系统模块结构图学生信息管理系统更新信息排序删除信息按学号删除根据学号更新按平均分排序统计信息查询信息按学号查找按姓名查找按姓名删除按总分排序及格人数优秀人数根据系统功能设计,对应的系统模块结构图如图1所示:图1 系统模块结构图4 系统详细设计4.1 系统主界面设计统过对该系统设计的了解与讨论,同时也为了广大使用者的方便与快捷。我们最后设计了这样的一个界面。首先要让使用者明白怎样使用此系统。这就需要通过界面来给他们一个清晰而明白的空间。而我们设计的这个界面恰好符合了这一要求。通过调用界面函数来使使用者能够很方便的进行查询、删除、更新等操作。界面函数如下:void jm() printf( *n *nn); printf( 欢迎进入学生信息管理系统nnn); printf( 1: 查询 2: 删除 3: 更新n); printf( 4: 排序 5: 统计 6: 插入nnn ); printf( 制作者:付利娟n); printf( 和培培n); printf( 陈珊珊n); printf( 帕提古丽n); printf( *n *nn); 4.2初始化学生信息学生信息管理系统的主界面提供进入系统其他功能模块的方法,使用户能方便地调用查询、 删除、更新、排序、统计、插入。其代码如下:/* 初始化顺序表 */seqlist seqlistinit( )seqlist l;int i,n;scanf(%d,&n); l.length=n; for(i=0;in;i+) scanf (%d,&l.datai.xh); scanf(%s,l.); scanf(%s,l.datai.sex); scanf(%d,&l.datai.chinese); scanf(%d,&l.datai.math); scanf(%d,&l.datai.english); scanf(%d,&l.datai.ave); scanf(%d,&l.datai.all);return l; 4.3查找学生信息在初始化线性表后,在界面上输入1进入查询模块,选择你要进行的操作:按姓名查找或按学号查找。其代码如下:chazhao(seqlist l) int i=0,a,y; char name10; printf( 1;按姓名查找n 2;按学号查找n); printf(请选择;n); scanf(%d,&a); if (a=1) printf(请输入你要查找的名字;n); scanf(%s,name); while(i=l.length-1)&(strcmp(name,l.)!=0) i+; if(i=l.length printf(没有这个学生!n); else printf(学号 姓名 性别 语文 数学 英语 平均 总分n); printf(%d ,l.datai.xh); printf(%s ,l.); printf(%s ,l.datai.sex); printf(%d ,l.datai.chinese); printf(%d ,l.datai.math); printf(%d ,l.datai.english); printf(%d ,l.datai.ave); printf(%d n,l.datai.all); else if(a=2) printf(请输入你要查找的学号;n); scanf(%d,&y); while(i=l.length-1)&(l.datai.xh!=y) i+; if(i=l.length) printf(没有这个学生!n); else printf(%d ,l.datai.xh); printf(%s ,l.); printf(%s ,l.datai.sex); printf(%d ,l.datai.chinese); printf(%d ,l.datai.math); printf(%d ,l.datai.english); printf(%d ,l.datai.ave); printf(%d n,l.datai.all); else if (a=0) jm();4.4删除学生信息 在初始化线性表后,在界面上输入2进入删除模块,选择你要进行的操作:根据学号删除或根据姓名删除。其代码如下: seqlist delete(seqlist l) int i=0; int a,y; char name10; printf( 1;根据学号删除信息n 2;根据姓名删除信息n); printf (请选择;n); scanf(%d,&a); if (a=1) printf (请输入你要删除的学号;n); scanf(%d,&y); while(i=l.length-1)&(l.datai.xh!=y) i+; if(i=l.length)printf(feifa shanchu!n); else if(i=l.length-1) l.length-; else for(;il.length;i+) l.datai.xh=l.datai+1.xh; strcpy( l.,l.datai+1.name); strcpy( l.datai.sex,l.datai+1.sex); l.datai.chinese=l.datai+1.chinese;l.datai.math=l.datai+1.math; l.datai.english=l.datai+1.english; l.datai.ave=l.datai+1.ave; l.datai.all=l.datai+1.all; l.length-; return l; else if (a=2) printf(请输入你要删除的名字n); scanf (%s,name); while(i=l.length-1)&(strcmp(name,l.)!=0) i+; if(i=l.length) printf(feifa shanchu!n); else if(i=l.length-1) l.length-; else for(;il.length;i+) l.datai.xh=l.datai+1.xh; strcpy( l.,l.datai+1.name); strcpy( l.datai.sex,l.datai+1.sex); l.datai.chinese=l.datai+1.chinese; l.datai.math=l.datai+1.math; l.datai.english=l.datai+1.english; l.datai.ave=l.datai+1.ave; l.datai.all=l.datai+1.all; l.length-; return l; else if (a=0)jm(); 4.5更新学生信息由于学生人员的不断更新,针对其相应的学生信息系统也要有相应的改变,这样会比较方便对信息的查询,删除,和统计等其他操作。同时也方便了校领导以及其他工作人员操作的方便。/*更新学号为a的学生的成绩*/update(seqlist l,int m) int i=0,n,a; printf(1;语文 2;数学 3;英语n); printf (输入你想修改的科目;n); scanf(%d,&a); if (a=1) printf(输入你要修改的学生的语文成绩:n,n); scanf(%d,&n); while (l.datai.xh!=m)&(il.length) i+; if(i=l.length) printf(没有该学生n); else l.datai.chinese=n; printf(%d ,l.datai.xh); printf(%s ,l.); printf(%s ,l.datai.sex); printf(%d ,l.datai.chinese); printf(%d ,l.datai.math); printf(%d ,l.datai.english); printf(%d ,l.datai.ave); printf(%d n,l.datai.all); else if (a=2) printf(输入你要修改的学生的数学成绩:n,n); scanf(%d,&n); while (l.datai.xh!=m)&(il.length) i+; if(i=l.length) printf(没有该学生n); else l.datai.math=n; printf(%d ,l.datai.xh); printf(%s ,l.); printf(%s ,l.datai.sex); printf(%d ,l.datai.chinese); printf(%d ,l.datai.math); printf(%d ,l.datai.english); printf(%d ,l.datai.ave); printf(%d n,l.datai.all); else if (a=3) printf(输入你要修改的学生的英语成绩:n,n); scanf(%d,&n); while (l.datai.xh!=m)&(il.length) i+; if(i=l.length) printf(没有该学生n); else l.datai.english=n; printf(%d ,l.datai.xh); printf(%s ,l.); printf(%s ,l.datai.sex); printf(%d ,l.datai.chinese); printf(%d ,l.datai.math); printf(%d ,l.datai.english); printf(%d ,l.datai.ave); printf(%d n,l.datai.all); else if(a=0) jm();4.6排序当面对如此多的学生信息时,如果要更加明了的观察和分析学生的成绩信息时,排序是必然的,因为当你根据实际情况对一个字段进行排序后,能够清楚直观的筛选所要的信息,比如说:评奖学金,三好学生,优秀干部,优秀团员等一些评选活动。/*根据选择的情况排序*/paixu(seqlist l) int i,j,y,m,n,h,t,k,a;char p10,r10; printf(1;平均成绩 2;总分n);printf(请输入你要排序的种类的:n);scanf(%d,&a); if (a=1) for(j=0;jl.length-1;j+) for(i=0;il.datai+1.ave) y=l.datai.xh; l.datai.xh=l.datai+1.xh; l.datai+1.xh=y; /*学号*/ strcpy(p10,l.); strcpy(l.,l.datai+1.name); strcpy(l.datai+1.name,p10);/*名字*/strcpy(r10,l.datai.sex); strcpy(l.datai.sex,l.datai+1.sex); strcpy(l.datai+1.sex,r10); /*性别*/m=l.datai.chinese; l.datai.chinese=l.datai+1.chinese; l.datai+1.chinese=m; /*语文*/n=l.datai.math; l.datai.math=l.datai+1.math; l.datai+1.math=n; /*数学*/ k=l.datai.english; l.datai.english=l.datai+1.english; l.datai+1.english=k; /*英语*/t=l.datai.ave; l.datai.ave=l.datai+1.ave; l.datai+1.ave=t; /*平均*/h=l.datai.all; l.datai.all=l.datai+1.all; l.datai+1.all=h; /*总分*/ for(i=0;il.length;i+) printf(%d ,l.datai.xh); printf(%s ,l.); printf(%s ,l.datai.sex); printf(%d ,l.datai.chinese); printf(%d ,l.datai.math); printf(%d ,l.datai.english); printf(%d ,l.datai.ave); printf(%d n,l.datai.all); else if(a=2) for(j=0;jl.length-1;j+) for(i=0;il.datai+1.all) y=l.datai.xh; l.datai.xh=l.datai+1.xh; l.datai+1.xh=y; /*学号*/ strcpy(p10,l.); strcpy(l.,l.datai+1.name); strcpy(l.datai+1.name,p10);/*名字*/strcpy(r10,l.datai.sex); strcpy(l.datai.sex,l.datai+1.sex); strcpy(l.datai+1.sex,r10); /*性别*/ m=l.datai.chinese; l.datai.chinese=l.datai+1.chinese; l.datai+1.chinese=m; /*语文*/n=l.datai.math; l.datai.math=l.datai+1.math; l.datai+1.math=n; /*数学*/ k=l.datai.english; l.datai.english=l.datai+1.english; l.datai+1.english=k; /*英语*/ t=l.datai.ave; l.datai.ave=l.datai+1.ave; l.datai+1.ave=t; /*平均*/h=l.datai.all; l.datai.all=l.datai+1.all; l.datai+1.all=h; /*总分*/ for(i=0;il.length;i+) printf(%d ,l.datai.xh); printf(%s ,l.); printf(%s ,l.datai.sex); printf(%d ,l.datai.chinese); printf(%d ,l.datai.math); printf(%d ,l.datai.english); printf(%d ,l.datai.ave); printf(%d n,l.datai.all); else if(a=0) jm();4.7统计学生信息 过去的人工统计既浪费时间而且错误率很高,这不仅影响了学校的工作效率,而且还影响了整个学生工作的开展。比如具体的说:统计男生,女生,以及各个年级段的学生的人数,通过此系统能够简单方便并且迅速的统计出来,在时间这方面已经节约很多了,这也大大提高了学校的办事效率和质量。/*统计学生信息*/tongji(seqlist l) int i=0,j=0,k,m=0; printf(1.语文 2.数学 3.英语n); printf(请输入你要统计的科目:n);scanf(%d,&k); if(k=1) while(il.length) if(l.datai.chinese80) i+;m+; else i+;printf(语文不及格人数为:%d个n,j);printf(语文优秀人数为:%d个n,m); else if(k=2) while(il.length)if(l.datai.math80) i+; m+; else i+; printf(数学不及格人数为:%d个n,j); printf(数学优秀人数为:%d个n,m); else if(k=3) while(il.length) if(l.datai.english80) i+; m+; else i+; printf(英语不及格人数为:%d个n,j); printf(英语优秀人数为:%d个n,m); else if(k=0) jm();4.8插入学生信息对一个完善的学生信息来说,插入也是一个不可缺少的模块。能够不断地更新,追加信息,当完成插入信息以后,对其信息等各方面的管理统计都有一个很好的把握,同时也方便了学校其他方面工作的开展。/*在第i个位置插入学生信息*/seqlist insert (seqlist l,int i) int j,xh,chinese,math,english,ave,all; char name10,sex10; if(il.length+1) printf(非法插入n);else printf(请输入你要插入的学生的信息:n); scanf (%d,&xh); scanf(%s,name); scanf(%s,sex); scanf(%d,&chinese); scanf(%d,&math); scanf(%d,&english); scanf(%d,&ave); scanf(%d,&all); while(i!=l.length+1) for (j=l.length;j

温馨提示

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

评论

0/150

提交评论