配色: 字号:
数据结构_学生信息管理系统_课程设计_实验报告
2015-06-07 | 阅:  转:  |  分享 
  
数据结构课程设计本课程设计已调试通过,请放心使用。请到:道客巴巴或豆丁网充值购买word版,省打字,直接修改即可,价格较便宜,在这里百度较贵!搜索:数据结构_学生信息管理系统_课程设计_实验报告

设计题目:学生信息管理系统

课题名称学生信息管理系统院系年级专业学号姓名成绩

课题设计目的与设计意义

1、课题设计目的:(1)掌握线性表的一般储存的基本概念及存储结构.(2)利用线性表的一般储存对学生成绩进行基本操作。包括创建、插入、删除、排序等功能。功能上要以菜单选项形式体现出来,可以与用户良好的交互。(3)通过本次设计型实验,使我们在学习完C、数据结构等课程基础上对前面所学的知识做一个总结与回顾。

2、课题设计意义:(1)利用线性表的一般储存具有较强的可应用性和实践性,在课程设计的过程中,不但我们可以独立思考,而且还可以查阅各种资料。(2)通过该课程设计,使我们对老师课上的讲述有了更深的理解,让我们学有所思。(3)将线性表的一般储存应用到具体生活中,使我们了解了数据结构这一门课在实际生活中的应用。

指导教师:年月日

2

目录1、课程设计任务................................................................................................................11.1前言.........................................................................................................................11.2设计目的和任务....................................................................................................11.3可行性分析............................................................................................................11.3.1系统目标.....................................................................................................11.3.2可行性分析.................................................................................................22、课程设计题目及要求...................................................................................................23、系统设计方案................................................................................................................33.1系统模块如图1:.................................................................................................33.2、系统模块:.........................................................................................................34、数据结构描述与定义...................................................................................................44.1结构体:.................................................................................................................4

4.2结构体数组:........................................................................................................54.3、程序架构图.......................................................................................................54.4、程序流程图.........................................................................................................65、程序设计语句................................................................................................................76、程序实现.......................................................................................................................106、2输入学生信息................................................................................................116、3插入学生信息...................................................................................................116、4排序....................................................................................................................126、5删除学生信息...................................................................................................127、结束语...........................................................................................................................138、参考文献.......................................................................................................................13

1

1、课程设计任务1.1前言本课程是继《数据结构—用C语言描述》课程之后,训练学生综合运用本课程知识,结合实际系统运用C语言进行系统设计以及调试,加深对本课程的理解,提高学生综合应用知识的能力、分析问题、解决问题的能力和利用C语言进行综合系统设计的实践技能。学C语言程序设计已有1学年了,对C语言的基本概念和常用算法也有了一定的了解,平时虽然也做过一些练习,也看了不少程序从而掌握一定的

语法知识和编程经验。但是对于有些功能强大的软件还是没有尝试过能否编得起来。所以决定在所学知识的基础上,再加以拓展,利用4个半天时间编个主题明确、具有一定使用价值的中小程序,以提高自身的编程水平与上机调试技能。1.2设计目的和任务(主要介绍设计的任务,为什么要设计,设计要达到什么样的目的。)设计目的:(1)基本掌握面向过程程序设计的基本思路和方法;(2)达到熟练掌握C语言的基本知识和技能;

(3)能够利用所学的基本知识和技能,解决简单的程序设计问题程序功能:(1).学生基本信息及成绩所选科目成绩的录入。(2).基本信息的查询(分系、班级;分科目)与修改。(4).对所开课程的成绩分析(求其总成绩);(5).对学生考试成绩进行排名;1.3可行性分析1.3.1系统目标

建立学生信息管理系统,采用计算机对学生信息进行管理,进

2

一步提高办学效益和现代化水平。帮助广大教师提高工作效率,实现学生信息管理工作流程的系统化、规范化和自动化。通过调查,要求系统需要有以下功能:⑴界面清晰,易于操作;⑵针对不同的使用对象,要求有较好的权限管理;⑶从学生、教师、管理员三个界面对学生信息的录入、修改;⑷能查询学生的基本信息、成绩;⑸能对各班级信息进行录入修改;

⑹能按班级输出学生的成绩;1.3.2可行性分析经济上可行性:1、本系统的运行可以代替人工进行许多繁杂的劳动,省下劳动资源和劳动力;2、本系统的运行可以大大的提高学校的工作效率,理员能够方便的对信息进行添加、修改、删除、查询等操作;3、本系统可以提高隐私保护程度,使学生教师等信息文档更加安全;所以,本系统在经济上是可行的。

技术上可行性:本系统的开发我利用Access作为本系统的数据库,它是一个支持多用户的新型数据库,适用于中小规模的数据量需求。学校的硬件建设也为新系统提供了硬件的支持。综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。2、课程设计题目及要求

学生信息管理系统设计:学生信息包括:学号,姓名,年龄,性别,专业等。试设计一学生信息

3

管理系统,使之能提供以功能:系统以菜单方式工作学生信息录入功能(学生信息用文件保存)----输入学生信息浏览功能----输出查询、排序功能----算法按学号查询、按姓名查询学生信息的删除与修改3、系统设计方案

3.1系统模块如图1:

3.2、系统模块:1、录入学生信息:2、修改学生信息3、查询学生信息4、浏览学生信息5、增加学生信息6、输出系统信息3.3、模块设计

学生信息管理系统录入修改学生信息查询学生信息浏览学生信息增加学生信息

图1系统模块输出信息系统

4

模块一:录入学生信息输入信息函数函数voidinput()模块二:学生信息的显示声明voidshow()为输出函数模块三:学生信息按学号排序声明voidsort()将录入学生系按升序排列,用的是“冒泡排序法”实现排序模块四:增加学生信息声明voidinsert()插入学生信息,先通过判断学生是否存在,若否则继续输入,若是跳出,重新循环

模块五:删除学生信息声明voiddelete()实现学生信息删除,通过学号对比确定要删除的信息,然后用后一个替换掉。模块六:界面菜单通过switch(n)调用,以上各函数,实现功能4、数据结构描述与定义4.1结构体:

“结构体名”用作结构体类型的标志,它又称“结构体标记”。声明一个结构体类型的一般形式为:Struct结构体名{成员表列};大括弧内是该结构体中的各个成员,由它们组成一个结构体。对各成员都应进行类型声明,即类型名成员名也可以把“成员表列”称为“域表”。每一个成员也称为结构体中的一个域。成员名定名规与变量名同。

5

4.2结构体数组:一个结构体变量中可以存放一组数据(如本程序中一个学生的学号、姓名、成绩等)。因为程序中需存放若干个学生的信息,这些数据需要参加运算,就得运用数组即结构体数组。结构体数组的每个数组元素都是一个结构体类型的数据,它们分别包括各个成员(分量)项。

4.3、程序架构图程序架构输入

函数输出函数插入函数删除函数SWITCH语句图2程序架构排序函数

6

4.4、程序流程图输入学生数N输入第N个学生的姓名、年龄、性别、学号、专业和五科成绩(N从1开始,N>=1)

输出学生信息,包括学生总成绩调用SWITCH语句1—输入学

生信息2—删除学生信息3—排序4—输出学生信息0—结束插入新的学生信息删除无用的学生个人信按照总成绩从小到大排序调用SWITCH语句前三项任一项或多项后输出新的学生信息

图3、程序流程

7

5、程序设计语句#includetypedefstruct//学生信息结构体//{charname[5];//学生姓名//intnum;//学号//charsex[6];//学生性别//intage;//年龄//charprofess[10];//专业//floatscore[5];//分数//floatsum;//学生总成绩//}std;stdstu[200];//学生数在二百之内//

intn;voidinput()//输入函数,输入学生信息//{inti,j;printf("\t输入学生的基本信息\n");for(i=0;i
scanf("%d",&stu[i].age);printf("输入第%d个学生的专业:",i+1);scanf("%s",&stu[i].profess);stu[i].sum=0;for(j=0;j<5;j++)//该循环语句用来输入一个学生的五门成绩//{printf("输入第%d个学生第%d门课的成绩:",i+1,j+1);scanf("%f",&stu[i].score[j]);stu[i].sum=stu[i].sum+stu[i].score[j];//录入学生的总成绩//}printf("\n");}

}voidshow()//输出函数,输出学生信息//

8

{inti,j;printf("学生的基本信息如下\n");printf("学号姓名性别年龄专业各门课成绩总分\n");for(i=0;i
printf("%.0f",stu[i].score[j]);printf("%.0f\t",stu[i].sum);printf("\n");}}voidsort()//排序函数,按照学生五门课总成绩依次排序//{inti,j;stdt;for(i=1;i
t=stu[j];stu[j]=stu[j+1];stu[j+1]=t;}}}voidinsert()//插入函数,插入新学生的基本信息//{inti,j,k;stdt;printf("\t请输入插入的学生信息:\n");printf("学号\n");scanf("%d",&t.num);printf("姓名\n");

scanf("%s",&t.name);printf("性别\n");scanf("%s",&t.sex);printf("年龄\n");

9

scanf("%d",&t.age);printf("专业\n");scanf("%s",&t.profess);printf("五科成绩\n");t.sum=0;for(j=0;j<5;j++){scanf("%f",&t.score[j]);t.sum=t.sum+t.score[j];printf("请输入插入的位置:\n");scanf("%d",&k);for(i=n-1;i>=k;i--){stu[i+1]=stu[i];

}stu[k]=t;n++;}}voiddelect()//删除函数,删除不需要的学生信息//{inti,j;stdt;printf("请输入要删除学生的位置:");scanf("%d",&j);for(j;j
}}voidmain()//主函数//{inta,flag=1;printf("\t请输入学生的个数:");scanf("%d",&n);//学生个数的输入//input();while(flag==1)//标记//{printf("\t1--插入学生信息\n\t2--删除学生信息\n\t3--排序\n\t4--输出学生信息\n\t0--结束\n");scanf("%d",&a);

switch(a)//判断语句,根据CASE的数字依次选择函数//{case1:insert();

10

printf("插入后的学生信息:\n");break;case2:delect();printf("删除后的学生信息:\n");break;case3:sort();printf("学生排序后的成绩:\n");break;case4:show();break;case0:

flag=0;//FLAG=0,结束运算//}}}6、程序实现6、1输入学生个数:5

图4输入框

11

6、2输入学生信息

图5信息输出框6、3插入学生信息

图6插入框

12

6、4排序

图7排序后图框6、5删除学生信息

图8删除后图框

13

7、结束语在这段时间的课程设计使我对线性表的链式储存有了更深的认识和理解,也使我更加明白线性表的链式储存在信息技术中的重要性和地位。通过本次课程设计期间我遇到的一些难点。开始的时候,代码中有许多的错误,特别是有一些调试方面的错误让我束手无策,最后在我强大的毅力下慢慢地改正错误才让我又看到了希望。许多的错误让我明白了一个道理---毅力和信心对成功是非常重要的。同时,对于编程者而言,思路清晰是相当重要的。在适当的时候和同学一起交流探讨是一个十分好的学习机会。请教老师也很重要,因为毕竟我们是新手,

对于某些问题很难弄清楚。而且,某些错误对于我们来说有时候想半天都弄不来,但老师几下下就搞好了,这样就更加有效地节约了时间。这次课程设计不但让我学得了一些编程知识,还学会了系统的做一份课程设计报告,学会了如何截图,学会了如何更好的画流程图,明白了做事情只有认真,才能真正做得更好!这段时间里,我可是尝到了所谓的酸甜苦辣。时而,为了一个错误而焦头烂额;时而,为了编程而熬夜;时而,连吃饭都是匆匆了事;但一旦程序运行成功,总会有成功的喜悦。通过这次课程设计,我了解了自己的编程功底和动手能力,但我并没有灰心而丧失斗志。我想,在即将到来的的假期里,我会好好努力尝试编写一

些程序.在这个程序中,还有许多地方值得完善。由于时间问题,暂时不能实现了。我想在有时间的情况下我会好好研究这个问题的。8、参考文献[1]唐策善、黄柳生等.数据结构(C语言版).高等教育出版社,2007

14

[2]孙家启.c语言及程序设计教程.合肥工业大学出版社,2011[3]徐德民.最新C语言程序设计.电子工业出版社,1992

献花(0)
+1
(本文系稻草人之书首藏)