当前位置:文档之家› 顺序表的学生成绩管理系统设计与实现课程设计论文

顺序表的学生成绩管理系统设计与实现课程设计论文

《数据结构》课程设计(论文)

顺序表的学生成绩管理系统设计与实现

Order table of student achievement management system design and implementation

摘要

随着社会的发展,学校的规模不断的扩大,日常教学活动中提取相关信息,以反映教学情况。传统的手工操作方式,易发生数据丢失,统计错误,劳动强度高,且速度慢。使用计算机可以高速,快捷地完成以上工作。在计算机联网后,数据在网上传递,可以实现数据共享,避免重复劳动,规范教学管理行为,从而提高了管理效率和水平。学生成绩管理系统以计算机为工具,通过对学生成绩管理所需的信息管理,把管理人员和老师从繁琐的数据计算处理中解脱出来,使其有更多的精力从事教务管理政策的研究实施,教学计划的制定执行和教学质量的监督检查,从而全面提高教学质量。

信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续用手工劳动。为了适应现代社会人们高度强烈的时间观念,学生成绩管理系统软件为教学办公室带来了极大的方便。该软件是以C语言为实现语言,其功能在系统内部有源代码直接完成。通过操作目录,管理者和老师可以了解本软件的基本工作原理。管理者和老师只需输入一些简单的汉字、数字,即可达到自己管理学生成绩的目标。

关键字:成绩管理系统 c语言数据结构

Abstract

With the development of the society, the school scale unceasingly expands, the daily teaching activities to extract relevant information, to reflect the teaching situation. Traditional way of manual operation, prone to loss of data, statistical errors, high labor intensity, and the slow speed. Using the computer can be high speed, quickly complete the above work. After the computer networking, data transmission on the Internet, can realize data sharing, avoid duplication of effort, standardize teaching management, so as to improve the management efficiency and level. Student achievement management system by means of computer, through the information needed for the student performance management in the management, the management and teachers from complicated data processing, make its have more energy to engage in the research and implementation of the policy of the educational administration teaching plan execution and the teaching quality supervision and inspection, so as to improve the quality of teaching comprehensively.

The information society the high-tech, goods of contract high benefit, make the application of computer has spread to all areas of economic and social life. Although computer and human relations more and more close, and because the computer operation is not convenient to continue with manual labor. In order to adapt to modern society people highly strong time concept, student achievement management system software for the teaching office has brought great convenience. The software based on C language implementation language, its function within the system have the source code directly to finish. By manipulating the directory, administrators and teachers can understand the basic working principle of this software. Administrators and teachers only need to input some simple Chinese characters, Numbers, can achieve their management goal of the student's grade.

key words: achievement management system, c language, data structure

目录

摘要 ................................................................................................................................ I ABSTRACT .............................................................................................................................. II 第1章绪论 .................................................................................................................. - 1 -

1.1需求分析 (1)

1.2实验目的 (1)

1.3实验内容 (1)

第2章系统总体设计 .................................................................................................... - 2 -

2.1基本要求 ..................................................................................................... - 2 -

2.2算法设计思想 ............................................................................................. - 2 -

2.3设计要求 ...................................................................................................... - 2 -第三章系统详细设计 .................................................................................................... - 3 -

3.1创建空顺序表并初始化 (3)

3.2向顺序表中插入元素 (4)

3.3查找学生信息 (7)

3.4删除学生信息 (8)

3.5输出学生信息 (9)

3.6修改学生信息 (9)

3.7退出学生信息管理系统 (12)

第四章总体设计 .......................................................................................................... - 13 -

4.1设计概述 (13)

4.2系统总流程图及功能模块划分 (13)

4.2.1学生信息查询模块 ............................................................................... - 14 -

4.2.2学生信息查询模块 ............................................................................... - 15 -第五章系统测试 .......................................................................................................... - 16 -

5.1实验结果 (16)

实验总结 ........................................................................................................................ - 20 -收获与心得 .................................................................................................................... - 21 -致谢 ........................................................................................................................ - 22 -参考文献 ........................................................................................................................ - 23 -

第1章绪论

引言:

为了提高高校学生信息的管理效率,方便对学生信息进行管理、学校里面的学生和管理员方便去管理和查询学生信息,如再要进行查询,就得在众多的学生信息中查找自己的成绩信息,面对学院大量的学生信息,怎么可以即时而方便的管理,学生只要登录本系统就可以查找到自己的成绩信息,而管理员也方便去管理每学期的学生的成绩信息。建立一个学生信息管理系统,使学生信息管理工作规范化,系统化,程序化,避免学生管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改学生信息是必须而且十分迫切的工作。

1.1 需求分析

学生管理系统功能的信息量大,数据安全性和保密性要求最高。本功能实现对专业信息、学生信息、教师信息情况信息的管理和统计、课程信息和成绩信息查看及维护。系统管理员可以浏览、查询、学生的基本信息,能添加、删除和修改学生信息,这部分功能应该由系统管理员执行,但是,删除某条专业基本信息记录时,应实现对该专业的相关信息也级联删除。并且还应具有查询,并打印输出的功能

1.2 实验目的

1.掌握顺序表的建立。

2.掌握顺序表的基本操作。

3.掌握顺序查找的基本算法

1.3实验内容

利用顺序表实现学生成绩管理系统,具体功能:输入、输出、插入、除、查找、修改、退出,并能在屏幕上输出操作前后的结果。

2.1基本要求

1.硬件:微机和打印机一台各

2.软件:Visual C++ windows7

2.2算法设计思想

1)分析程序的功能要求,划分程序功能模块

2)画出系统流程

3)代码的编写,定义数据结构和各个功能子函数

4)程序的功能调试

2.3设计要求

1.写出系统需求分析,并建模。

2.编程实现,界面友好。

3.输出操作前后的结果。

4.提供测试报告

3.1创建空顺序表并初始化

void creatList(sqlist *L)

{ int i=0,n; Elemtype *newbase;

L->elem=(Elemtype*)malloc(List_INIT_SPACE*(sizeof(Elemtype))) ;

if(!L->elem)

exit(OVERFLOW);

L->length=0;

L->listsize=List_INIT_SPACE;

printf("有几位同学:\n");

scanf("%d",&n);

for(i=0;i

{ if(L->length==L->listsize)

{ newbase=(Elemtype*)realloc(L->elem,(List_INIT_SPACE+List_INC_SPACE)*sizeof(Elemty pe));

if(newbase)

{ L->elem=newbase;

L->listsize+=List_INC_SPACE; }

else

exit(OVERFLOW); }

printf("请输入第%d名同学的信息:\n",i+1);

printf("学号(15)\n");

scanf("%16s",L->elem[L->length].number);

printf("姓名(15)\n");

scanf("%16s",L->elem[L->length].name);

printf("性别(男:M女:F)\n");

scanf("%16s",L->elem[L->length].sex);

printf("成绩\n");

scanf("%10d",&L->elem[L->length].score);

L->length++; }

printf("%d名学生信息如下:\n",L->length);

printf("学号(15) 姓名(15) 性别(男:M女:F) 成绩\n");

for(i=0;ilength;i++)

printf("%-16s%-16s%-16s%-10d\n",L->elem[i].number,L->elem[i].name,L->elem[i].sex,L->elem[i].score);}

3.2向顺序表中插入元素

void insertlist(sqlist*L)

{ int i,j,k; char sign='y'; Elemtype *newbase; Elemtype newelem;

while(sign!='n')

{ if(L->length==L->listsize)

{newbase=(Elemtype*)realloc(L->elem,(List_INIT_SPACE+List_INC_SPACE)*sizeof(Ele mtype));

if(newbase)

{ L->elem=newbase;

L->listsize+=List_INC_SPACE;}

else exit(OVERFLOW); }

printf("请输入要插入的同学的信息:\n");

printf("学号(15)\n");

scanf("%16s",newelem.number);

printf("姓名(15)\n");

scanf("%16s",https://www.doczj.com/doc/e0968279.html,);

printf("性别(男:M女:F)\n");

scanf("%16s",newelem.sex);

printf("成绩\n");

scanf("%10d",&newelem.score);

printf("要插入到第几个位置:");

scanf("%d",&i);

while(i<1||i>L->length+1)

{ printf("不能插入到第%d个位置!\n只能插入第1到第%d个位置上!\n请重新输入要插入的位置:",L->length+1);

scanf("%d",&i); }

L->length++;

for(j=L->length-1;j>i-2;j--)

{ for(k=0;k<16;k++)

{ L->elem[j].name[k]=L->elem[j-1].name[k];

L->elem[j].number[k]=L->elem[j-1].number[k];

L->elem[j].sex[k]=L->elem[j-1].sex[k]; }

L->elem[j].score=L->elem[j-1].score; }

j++;

for(k=0;k<16;k++)

{ L->elem[j].name[k]=https://www.doczj.com/doc/e0968279.html,[k];

L->elem[j].number[k]=newelem.number[k];

L->elem[j].sex[k]=newelem.sex[k]; }

L->elem[j].score=newelem.score;

printf("是否还要输入?(Y or N)");

getchar();

scanf("%c",&sign);

if(sign=='n'||sign=='N')

sign='n';}

printf("%d名学生信息如下:\n",L->length);

printf("学号(15) 姓名(15) 性别(男:M女:F) 成绩\n");

for(i=0;ilength;i++)

printf("%-16s%-16s%-16s%-10d\n",L->elem[i].number,L->elem[i].name,L->elem[i].sex,L->elem[i].score);}

3.3查找学生信息

int findlist(sqlist *L)

{ int j;char i[16];

printf("1.按学号查找\n2.按姓名查找\n请选择:");

scanf("%d",&j);

if(j==1)

{printf("请输入学号:");

scanf("%s",i);

if(!strcmp(i,L->elem[j].number))//i==L->elem[j].number用数组函数

return j+1;

return 0; }

else

{printf("请输入姓名:");

scanf("%s",i);

for(j=0;jlength;j++)

if(!strcmp(i,L->elem[j].name))//用数组函数

return j+1;

return 0; } }

3.4 删除学生信息

int delnode(sqlist *L)

{int j;char i[10];

printf("1.按学号删除\n2.按姓名删除\n请选择:");

scanf("%d",&j);

if(j==1)

{ printf("请输入学号:");

scanf("%s",i);

for(j=0;jlength;j++)

if(!strcmp(i,L->elem[j].number))//i==L->elem[j].number用数组函数

{ for(;jlength;j++)

L->elem[j]=L->elem[j+1];

L->length--;

return 1; }

return 0;}

else

{ printf("请输入姓名:");

scanf("%s",i);

for(j=0;jlength;j++)

if(!strcmp(i,L->elem[j].name))//用数组函数

{ for(;jlength;j++)

L->elem[j]=L->elem[j+1]; //L->elem[j]以后的向前挪

L->length--;

return 1; }

return 0; }}

3.5输出学生信息

void printlist(sqlist *L)

{ int i;

printf("%d名学生信息如下:\n",L->length);

printf("学号(15) 姓名(15) 性别(男:M女:F) 成绩\n");

for(i=0;ilength;i++)

printf("%-16s%-16s%-16s%-10d\n",L->elem[i].number,L->elem[i].name,L->elem[i].sex,L->elem[i].score);}

3.6修改学生信息

void reviselist(sqlist *L)

{int i,x,a=0; char name[16]; char sex[16]; char number[16];int score;

printf("请选择你要改的同学的姓名");

scanf("%16s",name);

printf("请选择你要改的同学的信息\n");

printf("1.修改学生的姓名\n");

printf("2.修改学生的学号\n");

printf("3.修改学生的性别\n");

printf("4.修改学生的成绩\n");

scanf("%d",&x);

switch(x)

{ case 1:

for(i=0;ilength;i++)

{ if(strcmp(name,L->elem[i].name)==0)

{ printf("请输入新名字");

scanf("%16s",name);

strcpy(L->elem[i].name,name);

a=1;}}

if(a==0)

printf("对不起你要改的名字不存在\n"); break;

case 2:

for(i=0;ilength;i++)

{ if(strcmp(name,L->elem[i].name)==0)

{ printf("请输入新学号");

scanf("%16s",number);

strcpy(L->elem[i].number,number);

a=1; }}

if(a==0)

printf("对不起你要改的名字不存在\n"); break;

case 3:

for(i=0;ilength;i++)

{if(strcmp(name,L->elem[i].name)==0)

{ printf("请输入新性别");

scanf("%16s",sex);

strcpy(L->elem[i].sex,sex);

a=1;}}

if(a==0)

printf("对不起你要改的名字不存在\n"); break;

case 4:

for(i=0;ilength;i++)

{ if(strcmp(name,L->elem[i].name)==0)

{ printf("请输入新成绩");

scanf("%d",score);

L->elem[i].score=score;

a=1;}}

if(a==0)

printf("对不起你要改的名字不存在\n"); break;} 3.7退出学生信息管理系统

void tuichu(sqlist *L)

{ if(!L->elem)

free(L->elem);

printf("\n\n再见,欢迎下次使用");

exit(-2);}

第四章总体设计

4.1设计概述

根据需求把整个系统分化成不同的模块,每个模块完成一个特定的子功能。把这些模块结合起来组成一个整体。逐一实现各个功能。

4.2 系统总流程图及功能模块划分

经过对系统的需求分析,学生信息管理系统主要划分为三个部分:学生信息查询,学生信息管理,学生成绩录入三个功能模块。如图4.2系统的总体结构。

图4.2系统的总体结构

4.2.1学生信息查询模块

学生信息查询:学生可以根据学号、姓名、专业进行查询。如图3.2.2学生 信息查询模块结构。

主函数开始

根据printf 函数输出的提示信息选择相关操作

根据while 语句选择0~6相应

的数字

Switch 语句实现的

具体操作

5.输出学生信息 4.删除学生信息

6.修改学生信息

0.退出学生信息系

3.查找学生信息 2添加学生信息 1.创建学生信息并初始化 根据相关调用函数输出相应学生信息

程序结束

图4.2.1学生信息管理模块结构

4.2.2学生信息查询模块

学生信息查询:学生可以根据学号、姓名、专业进行查询。如图4.2.2学生信息查询模块结构。

图4.2.2 学生信息管理模块结构第5章 系统测试

学生信息管理系统

学生信息查询

学生信息管

学生信息录用

学生信息查询

学号查询

姓名查询

第五章系统测试

1.在调试过程中出现了很多次的程序错误,警告和不能运行。在很多次的

调试和重新改写之后,才可以用。

2.Visual C++确实是一门需要极其细心和耐心的课程,尤其在程序设计的过程中不可有一丝的马虎大意,否则将会花很大力气去改正。

3.调试过程中最常见的便是代码输入错误,如字母大小写、顺序颠倒、符号的半/全角使用等一些问题,都是在调试过程中逐一改正的。

5.1实验结果

1.初始化

2.输入

相关主题
文本预览
相关文档 最新文档