课程设计说明书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
C是一种通用的程序设计语言,C语言在很多方面继承和发展了以往许多高级程序设计语言的成功经验和特色,具有书写格式自由、数据类型丰富、语句功能强大、执行速度快和存储控制能力强等优点。
学生信息管理系统设计是关于对学生各种信息管理来设计的一个系统。
整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成学生信息管理的全过程,包括创建学生信息、查找学生信息、修改学生信息、插入学生信息、删除学生信息、按平均分或者总分排序、统计学生信息等工作。
本课程主要介绍了本课题的开发背景,所要完成的功能和开发的过程。
重点说明了系统的设计思路、总体设计、各个功能模块的设计与实现方法。
关键词:学生管理系统,C语言,数据结构,Wintc
目录
1课题背景的介绍 (1)
1.1 课题背景 (1)
1.2 目的 (1)
2需求分析 (2)
2.1 数据需求分析 (2)
2.2 功能需求分析 (2)
3系统总体设计 (3)
3.1 系统模块划分 (3)
3.2 系统模块结构图 (3)
4系统详细设计 (4)
4.1 系统主界面设计 (4)
4.2初始化学生信息 (4)
4.3查找学生信息 (4)
4.4删除学生信息 (5)
4.5更新学生信息 (5)
4.6排序 (7)
4.7统计学生信息 (11)
4.8插入学生信息 (11)
5系统连编与运行 (12)
6总结 (13)
参考文献 (14)
1课题背景的介绍
1.1课题背景
随着网络技术的迅速发展,各种行业纷纷应用网络技术操作和管理。
当然学校是一个很大的管理系统,随着学生的大量增加,其管理难度也越来越大,如何对学生的个人信息进行更好的管理,这就是我们研究这个课题的目的。
在计算机迅速发展的今天,将计算机这一信息处理器应用于学生的个人信息管理已是势必所然,而且这也将学生信息管理带来前所未有的改变。
采用计算机对学生的信息管理是信息科学化和现代化的重要标志,它也给各大高校带来了明显的社会效益。
主要体现在:极大地提高了管理工作人员的工作效率,大大地减少了以往的资料室所存在的各种弊端,同时也加强和规范学习对于学生信息的管理。
为了能够更好的来实现对学生信息的管理,通过对学生信息管理日常工作的详细调查,搜集了大量的资料,从系统结构的组织,功能的实现,技术的要求以及可行性等多方面进行考虑,认为本课题是一个适应现今学校学生个人信息管理需求的计算机信息管理系统,具有一定的实际开发价值和使用价值。
1.2 目的
本课题运用C语言进行开发,C语言能够简单的进行编译一些程序,来实现对一些问题的解决。
它虽然比较简单的处理一些问题,但却有更高的效率。
它能够被大多数用户所接受,因为它能够呈现出清晰的界面,是人们能够很好的理解。
能在一些方面给人们更好的服务,成为人们的好帮手。
经过这一个学期对《数据结构》的学习,我们都学到了不少东西,可能有些学的还不够理想,但无论如何这些知识都为我们的下一步学习打下了坚实的基础。
做这么一个课程设计,一方面是为了检查我们一个学期以来的学习成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。
2需求分析
随着学校规模的发展扩大,学校要向着大型化,规模化发展,而对于学生信息管理系统有关的信息随之增加。
在这种情况下单靠人工来处理学生的信息不但显得大不从心,而且极容易出错。
因此,需要开发学生管理系统,该系统可以实现由计算机代替人工执行一系列复杂而繁琐的操作,使得学校管理人员可以轻松快捷的完成学生信息管理的任务。
2.1 数据需求分析
本系统的主要数据是学生信息。
学生信息包括:学生学号,姓名,性别,语文成绩,数学成绩,英语成绩,平均成绩,总成绩等。
2.2 功能需求分析
本系统主要实现对学生成绩信息进行管理,需要实现以下几个方面的管理功能:(1)创建学生信息:录入学生的信息。
(2)查找学生信息:按学号、姓名查找。
(3)删除学生信息;按学号、姓名删除。
(4)更新学生信息:找到要修改的学号,修改相应信息。
(5)排序学生信息:按某科目或者总分排序。
(6)统计学生信息:统计及格和优秀人数。
(7)插入学生信息:插入一个新的学生。
3.1 系统模块划分
本系统主要是对学生信息的管理,包括了有关学生信息的创建、查询、删除、更新、排序、统计、插入等功能。
整个系统分为以下几个模块。
1、欢迎界面模块本模块提供欢迎界面的信息输出模式。
2、创建模块
本模块用于创建学生的信息,包括学生的学号、姓名、性别、语文成绩、数学成绩、英语成绩、平均成绩、总成绩。
3、查询模块本模块用于查询学生的信息,按学号或姓名查询等。
4、删除模块本模块用于删除学生的信息,按学号或姓名删除等。
5、更新本模块用于根据输入要查询的学号来修改其相应的信息。
6、排序模块本模块将学生成绩按平均分或者总分排序。
7、统计模块本模块用于统计各科目及格和优秀的人数。
3.2 系统模块结构图
根据系统功能设计,对应的系统模块结构图如图1所示:
图1 系统模块结构图
4.1 系统主界面设计
统过对该系统设计的了解与讨论,同时也为了广大使用者的方便与快捷。
我们最后设计了这样的一个界面。
首先要让使用者明白怎样使用此系统。
这就需要通过界面来给他们一个清晰而明白的空间。
而我们设计的这个界面恰好符合了这一要求。
通过调用界面函数来使使用者能够很方便的进行查询、删除、更新等操作。
4.2初始化学生信息
学生信息管理系统的主界面提供进入系统其他功能模块的方法,使用户能方便地调用查询、删除、更新、排序、统计、插入。
4.3查找学生信息
在初始化线性表后,在界面上输入1进入查询模块,选择你要进行的操作:按姓名查找或按学号查找。
4.4删除学生信息
在初始化线性表后,在界面上输入2进入删除模块,选择你要进行的操作:根据学号删除或根据姓名删除。
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.data[i].xh!=m)&&(i<L.length))
i++;
{ if(i==L.length)
printf("没有该学生\n");
else
{ L.data[i].chinese=n;
printf("%d ",L.data[i].xh);
printf("%s ",L.data[i].name);
printf("%s ",L.data[i].sex);
printf("%d ",L.data[i].chinese);
printf("%d ",L.data[i].math);
printf("%d ",L.data[i].english);
printf("%d ",L.data[i].ave);
printf("%d \n",L.data[i].all); } } }
else if (a==2)
{ printf("输入你要修改的学生的数学成绩:\n",n);
scanf("%d",&n);
while ((L.data[i].xh!=m)&&(i<L.length))
i++;
{ if(i==L.length)
printf("没有该学生\n");
else{ L.data[i].math=n;
printf("%d ",L.data[i].xh);
printf("%s ",L.data[i].name);
printf("%s ",L.data[i].sex);
printf("%d ",L.data[i].chinese);
printf("%d ",L.data[i].math);
printf("%d ",L.data[i].english);
printf("%d ",L.data[i].ave);
printf("%d \n",L.data[i].all); } } }
else if (a==3){ printf("输入你要修改的学生的英语成绩:\n",n);
scanf("%d",&n);
while ((L.data[i].xh!=m)&&(i<L.length))
i++;
{ if(i==L.length)
printf("没有该学生\n");
else{ L.data[i].english=n;
printf("%d ",L.data[i].xh);
printf("%s ",L.data[i].name);
printf("%s ",L.data[i].sex);
printf("%d ",L.data[i].chinese);
printf("%d ",L.data[i].math);
printf("%d ",L.data[i].english);
printf("%d ",L.data[i].ave);
printf("%d \n",L.data[i].all); } } }
else if(a==0)
jm();}
其运行结果如下:
4.6排序
当面对如此多的学生信息时,如果要更加明了的观察和分析学生的成绩信息时,排序是必然的,因为当你根据实际情况对一个字段进行排序后,能够清楚直观的筛选所要的信息,比如说:评奖学金,三好学生,优秀干部,优秀团员等一些评选活动。
/*根据选择的情况排序*/
paixu(SeqList L)
{ int i,j,y,m,n,h,t,k,a;
char p[10],r[10];
printf("1;平均成绩2;总分\n");
printf("请输入你要排序的种类的:\n"); scanf("%d",&a);
if (a==1)
{ for(j=0;j<L.length-1;j++)
for(i=0;i<L.length-j-1;i++)
if(L.data[i].ave>L.data[i+1].ave)
{ y=L.data[i].xh;
L.data[i].xh=L.data[i+1].xh;
L.data[i+1].xh=y; /*学号*/
strcpy(p[10],L.data[i].name);
strcpy(L.data[i].name,L.data[i+1].name);
strcpy(L.data[i+1].name,p[10]);/*名字*/
strcpy(r[10],L.data[i].sex);
strcpy(L.data[i].sex,L.data[i+1].sex);
strcpy(L.data[i+1].sex,r[10]); /*性别*/
m=L.data[i].chinese;
L.data[i].chinese=L.data[i+1].chinese;
L.data[i+1].chinese=m; /*语文*/
n=L.data[i].math;
L.data[i].math=L.data[i+1].math;
L.data[i+1].math=n; /*数学*/
k=L.data[i].english;
L.data[i].english=L.data[i+1].english;
L.data[i+1].english=k; /*英语*/
t=L.data[i].ave;
L.data[i].ave=L.data[i+1].ave;
L.data[i+1].ave=t; /*平均*/
h=L.data[i].all;
L.data[i].all=L.data[i+1].all;
L.data[i+1].all=h; /*总分*/}
for(i=0;i<L.length;i++)
{ printf("%d ",L.data[i].xh);
printf("%s ",L.data[i].name);
printf("%s ",L.data[i].sex);
printf("%d ",L.data[i].chinese);
printf("%d ",L.data[i].math);
printf("%d ",L.data[i].english);
printf("%d ",L.data[i].ave);
printf("%d \n",L.data[i].all); } }
else if(a==2){ for(j=0;j<L.length-1;j++)
for(i=0;i<L.length-j-1;i++)
if(L.data[i].all>L.data[i+1].all)
{ y=L.data[i].xh;
L.data[i].xh=L.data[i+1].xh;
L.data[i+1].xh=y; /*学号*/
strcpy(p[10],L.data[i].name);
strcpy(L.data[i].name,L.data[i+1].name);
strcpy(L.data[i+1].name,p[10]);/*名字*/
strcpy(r[10],L.data[i].sex);
strcpy(L.data[i].sex,L.data[i+1].sex);
strcpy(L.data[i+1].sex,r[10]); /*性别*/
m=L.data[i].chinese;
L.data[i].chinese=L.data[i+1].chinese;
L.data[i+1].chinese=m; /*语文*/
n=L.data[i].math;
L.data[i].math=L.data[i+1].math;
L.data[i+1].math=n; /*数学*/
k=L.data[i].english;
L.data[i].english=L.data[i+1].english;
L.data[i+1].english=k; /*英语*/
t=L.data[i].ave;
L.data[i].ave=L.data[i+1].ave;
L.data[i+1].ave=t; /*平均*/
h=L.data[i].all;
L.data[i].all=L.data[i+1].all;
L.data[i+1].all=h; /*总分*/ }
for(i=0;i<L.length;i++)
{ printf("%d ",L.data[i].xh);
printf("%s ",L.data[i].name);
printf("%s ",L.data[i].sex);
printf("%d ",L.data[i].chinese);
printf("%d ",L.data[i].math);
printf("%d ",L.data[i].english);
printf("%d ",L.data[i].ave);
printf("%d \n",L.data[i].all); }} else if(a==0)
jm();}
其运行结果如下:
4.7统计学生信息
过去的人工统计既浪费时间而且错误率很高,这不仅影响了学校的工作效率,而且还影响了整个学生工作的开展。
比如具体的说:统计男生,女生,以及各个年级段的学生的人数,通过此系统能够简单方便并且迅速的统计出来,在时间这方面已经节约很多了,这也大大提高了学校的办事效率和质量。
4.8插入学生信息
对一个完善的学生信息来说,插入也是一个不可缺少的模块。
能够不断地更新,追加信息,当完成插入信息以后,对其信息等各方面的管理统计都有一个很好的把握,同时也方便了学校其他方面工作的开展。
5系统连编与运行
一个应用系统设计和创建完成后,还必须进行连编,以便生成一个可执行文件供最终用户使用。
连编完成后还要运行,以检查整个系统的完整性和准确性,同时还可增加程序代码的保密性。
(1)先进行编译,编译过之后再选择超级工具集然后选择中文DOS。
如图9所示:
按图中所示运行程序,生成可执行文件.exe格式的文件。
6总结
本设计开发的工资管理系统从最后的测试结果来看,基本上实现了工资管理系统的几大功能:成绩信息录入、成绩信息的管理等。
并达到操作过程中的直观、方便、实用、安全等要求。
系统采用模块化程序设计的方法,既便于系统功能的组合和修改,又便于未参与系统开发的技术维护人员补充和维护。
本系统经过测试,证明其运行是稳定、可靠的。
但在系统设计中也也遇到很多的问题,并且本系统的功能还需要不断的完善和改进,在以后空闲时间里逐一进行完善,使系统功能更加完善,使本软件能够更好的为大中型企业服务,创造更大的社会价值。
在这次设计过程中,我得到了代文征老师的精心指导,在此,我由衷地感谢代老师!
参考文献
[1] 谭浩强.C程序设计[M].北京:清华大学出版社. 2005.
[2] 严蔚敏. 数据结构(C语言版)[M]. 北京:清华大学出版社. 2008.
[3]陈雁.数据结构[M].北京:高等教育出版社,2004.
[4] 张磊.C程序设计教程.北京:中国铁道出版社.2007.。