1、长春建筑学院数据结构课程设计(论文)顺序表的学生成绩管理系统设计与实现 Order table of student achievement management system design and implementation年 级: 学 号: 姓 名: 专 业 指导老师: 二零一三年十二月长春建筑学院数据结构课程设计(论文) I摘 要随着社会的发展,学校的规模不断的扩大,日常教学活动中提取相关信息,以反映教学情况。传统的手工操作方式,易发生数据丢失,统计错误,劳动强度高,且速度慢。使用计算机可以高速,快捷地完成以上工作。在计算机联网后,数据在网上传递,可以实现数据共享,避免重复劳动,规范教
2、学管理行为,从而提高了管理效率和水平。学生成绩管理系统以计算机为工具,通过对学生成绩管理所需的信息管理,把管理人员和老师从繁琐的数据计算处理中解脱出来,使其有更多的精力从事教务管理政策的研究实施,教学计划的制定执行和教学质量的监督检查,从而全面提高教学质量。信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续用手工劳动。为了适应现代社会人们高度强烈的时间观念,学生成绩管理系统软件为教学办公室带来了极大的方便。该软件是以 C 语言为实现语言,其功能在系统内部有源代码直接完成。通过操作目录,管理者和老
3、师可以了解本软件的基本工作原理。管理者和老师只需输入一些简单的汉字、数字,即可达到自己管理学生成绩的目标。关键字: 成绩管理系统 c 语言 数据结构长春建筑学院数据结构课程设计(论文) IIAbstractWith 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 manua
4、l 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, standardiz
5、e 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 hav
6、e 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 hi
7、gh 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 ti
8、me 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 teache
9、rs 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 students grade.key words: achievement management system, c language, data structure长春建筑学院数据结构课程设计(论文)目 录摘 要
10、 IABSTRACT.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 设
11、计概述 - 13 -4.2 系统总流程图及功能模块划分 .- 13 -4.2.1 学生信息查询模块 - 14 -4.2.2 学生信息查询模块 - 15 -第五章 系统测试 .- 16 -5.1 实验结果 .- 16 -实验总结 .- 20 -收获与心得 .- 21 -致 谢 .- 22 -参考文献 .- 23 -长春建筑学院数据结构课程设计(论文)- 1 -第 1 章 绪 论引言: 为了提高高校学生信息的管理效率,方便对学生信息进行管理、学校里面的学生和管理员方便去管理和查询学生信息,如再要进行查询,就得在众多的学生信息中查找自己的成绩信息,面对学院大量的学生信息,怎么可以即时而方便的管理,学
12、生只要登录本系统就可以查找到自己的成绩信息,而管理员也方便去管理每学期的学生的成绩信息。建立一个学生信息管理系统,使学生信息管理工作规范化,系统化,程序化,避免学生管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改学生信息是必须而且十分迫切的工作。1.1 需求分析学生管理系统功能的信息量大,数据安全性和保密性要求最高。本功能实现对专业信息、学生信息、教师信息情况信息的管理和统计、课程信息和成绩信息查看及维护。系统管理员可以浏览、查询、学生的基本信息,能添加、删除和修改学生信息,这部分功能应该由系统管理员执行,但是,删除某条专业基本信息记录时,应实现对该专业的相关信息也级
13、联删除。并且还应具有查询,并打印输出的功能1.2 实验目的1. 掌握顺序表的建立。 2. 掌握顺序表的基本操作。 3. 掌握顺序查找的基本算法1.3 实验内容利用顺序表实现学生成绩管理系统,具体功能:输入、输出、插入、除、查找、修改、退出,并能在屏幕上输出操作前后的结果。长春建筑学院数据结构课程设计(论文) - 2 -第 2 章 系统总体设计2.1 基本要求1.硬件:微机和打印机一台各2.软件:Visual C+ windows72.2 算法设计思想1) 分析程序的功能要求,划分程序功能模块2) 画出系统流程3) 代码的编写,定义数据结构和各个功能子函数4) 程序的功能调试2.3 设计要求1.
14、写出系统需求分析,并建模。 2.编程实现,界面友好。 3.输出操作前后的结果。4.提供测试报告长春建筑学院数据结构课程设计(论文) - 3 -第三章 系统详细设计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“); s
15、canf(“%d“,for(i=0;ilength=L-listsize) newbase=(Elemtype*)realloc(L-elem,(List_INIT_SPACE+List_INC_SPACE)*sizeof(Elemtype);if(newbase) L-elem=newbase; L-listsize+=List_INC_SPACE; 长春建筑学院数据结构课程设计(论文) - 4 -else exit(OVERFLOW); printf(“请输入第%d 名同学的信息:n“,i+1); printf(“学号(15)n“); scanf(“%16s“,L-elemL-length
16、.number); printf(“姓名(15)n“); scanf(“%16s“,L-elemL-length.name); printf(“性别(男:M 女:F)n“);scanf(“%16s“,L-elemL-length.sex); printf(“成绩n“);scanf(“%10d“, L-length+; printf(“%d 名学生信息如下:n“,L-length); printf(“学号(15) 姓名(15) 性别(男:M 女:F) 成绩n“); for(i=0;ilength;i+)printf(“%-16s%-16s%-16s%-10dn“,L-elemi.number,L
17、-elemi.name,L-elemi.sex,L-elemi.score);3.2 向顺序表中插入元素void insertlist(sqlist*L) int i,j,k; char sign=y; Elemtype *newbase; Elemtype newelem; 长春建筑学院数据结构课程设计(论文) - 5 -while(sign!=n) if(L-length=L-listsize)newbase=(Elemtype*)realloc(L-elem,(List_INIT_SPACE+List_INC_SPACE)*sizeof(Elemtype); if(newbase) L-
18、elem=newbase; L-listsize+=List_INC_SPACE; else exit(OVERFLOW); printf(“请输入要插入的同学的信息:n“); printf(“学号(15)n“); scanf(“%16s“,newelem.number); printf(“姓名(15)n“); scanf(“%16s“,newelem.name); printf(“性别(男:M 女:F)n“); scanf(“%16s“,newelem.sex); printf(“成绩n“);scanf(“%10d“, printf(“要插入到第几个位置:“);scanf(“%d“, whi
19、le(iL-length+1) 长春建筑学院数据结构课程设计(论文) - 6 - printf(“不能插入到第%d 个位置!n 只能插入第 1 到第%d 个 位置上!n 请重新输入要插入的位置:“,L-length+1); scanf(“%d“, L-length+; for(j=L-length-1;ji-2;j-) for(k=0;kelemj.namek=L-elemj-1.namek; L-elemj.numberk=L-elemj-1.numberk;L-elemj.sexk=L-elemj-1.sexk; L-elemj.score=L-elemj-1.score; j+; for
20、(k=0;kelemj.namek=newelem.namek; L-elemj.numberk=newelem.numberk; L-elemj.sexk=newelem.sexk; L-elemj.score=newelem.score; printf(“是否还要输入?(Y or N)“); getchar(); scanf(“%c“, if(sign=n|sign=N) sign=n;长春建筑学院数据结构课程设计(论文) - 7 -printf(“%d 名学生信息如下:n“,L-length); printf(“学号(15) 姓名(15) 性别(男:M 女:F) 成绩n“); for(i
21、=0;ilength;i+) printf(“%-16s%-16s%-16s%-10dn“,L-elemi.number,L-elemi.name,L-elemi.sex,L-elemi.score);3.3 查找学生信息int findlist(sqlist *L) int j;char i16; printf(“1.按学号查找n2.按姓名查找n 请选择:“); scanf(“%d“, if(j=1)printf(“请输入学号:“); scanf(“%s“,i); if(!strcmp(i,L-elemj.number)/i=L-elemj.number 用数组函数 return j+1;
22、return 0; elseprintf(“请输入姓名:“); scanf(“%s“,i); for(j=0;jlength;j+)if(!strcmp(i,L-elemj.name)/用数组函数 长春建筑学院数据结构课程设计(论文) - 8 -return j+1; return 0; 3.4 删除学生信息int delnode(sqlist *L) int j;char i10; printf(“1.按学号删除n2.按姓名删除n 请选择:“); scanf(“%d“, if(j=1) printf(“请输入学号:“); scanf(“%s“,i); for(j=0;jlength;j+)
23、if(!strcmp(i,L-elemj.number)/i=L-elemj.number 用数 组函数 for(;jlength;j+)L-elemj=L-elemj+1; L-length-; return 1; return 0;else printf(“请输入姓名:“); scanf(“%s“,i); 长春建筑学院数据结构课程设计(论文) - 9 -for(j=0;jlength;j+) if(!strcmp(i,L-elemj.name)/用数组函数 for(;jlength;j+)L-elemj=L-elemj+1; /L-elemj以后的向前 挪 L-length-; retur
24、n 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%-10dn“,L-elemi.number,L-elemi.name,L-elemi.sex,L-elemi.score);3.6 修改学生信息void reviselist(sqlist *L) int i,x,a=0; char name16;
25、char sex16; char number16;int score; printf(“请选择你要改的同学的姓名“); scanf(“%16s“,name); 长春建筑学院数据结构课程设计(论文) - 10 -printf(“请选择你要改的同学的信息n“); printf(“1.修改学生的姓名n“); printf(“2.修改学生的学号n“); printf(“3.修改学生的性别n“);printf(“4.修改学生的成绩n“); scanf(“%d“, switch(x) case 1: for(i=0;ilength;i+) if(strcmp(name,L-elemi.name)=0)
26、printf(“请输入新名字“); scanf(“%16s“,name); strcpy(L-elemi.name,name); a=1;if(a=0) printf(“对不起你要改的名字不存在n“); break; case 2: for(i=0;ilength;i+) if(strcmp(name,L-elemi.name)=0) printf(“请输入新学号“); 长春建筑学院数据结构课程设计(论文) - 11 -scanf(“%16s“,number); strcpy(L-elemi.number,number); a=1; if(a=0) printf(“对不起你要改的名字不存在n“
27、); break; case 3:for(i=0;ilength;i+) if(strcmp(name,L-elemi.name)=0) printf(“请输入新性别“); scanf(“%16s“,sex); strcpy(L-elemi.sex,sex); a=1;if(a=0) printf(“对不起你要改的名字不存在n“); break; case 4: for(i=0;ilength;i+) if(strcmp(name,L-elemi.name)=0) printf(“请输入新成绩“); scanf(“%d“,score);L-elemi.score=score; 长春建筑学院数据
28、结构课程设计(论文) - 12 -a=1;if(a=0) printf(“对不起你要改的名字不存在n“); break;3.7 退出学生信息管理系统void tuichu(sqlist *L) if(!L-elem) free(L-elem); printf(“nn 再见,欢迎下次使用“); exit(-2);第四章 总体设计4.1 设计概述 根据需求把整个系统分化成不同的模块,每个模块完成一长春建筑学院数据结构课程设计(论文) - 13 -个特定的子功能。把这些模块结合起来组成一个整体。逐一实现各个功能。4.2 系统总流程图及功能模块划分经过对系统的需求分析,学生信息管理系统主要划分为三个部
29、分:学生信息查询,学生信息管理,学生成绩录入三个功能模块。如图 4.2 系统的总体结构。长春建筑学院数据结构课程设计(论文) - 14 -主函数开始根据 printf 函数输出的提示信息选择相关操作根据 while 语句选择 06 相应的数字Switch 语句实现的具体操作5.输出学生信息4.删除学生信息6.修改学生信息0.退出学生信息系统3.查找学生信息2 添加学生信息1.创建学生信息并初始化根据相关调用函数输出相应学生信息 程序结束图 4.2 系统的总体结构4.2.1 学生信息查询模块学生信息查询:学生可以根据学号、姓名、专业进行查询。如图 3.2.2 学生信息查询模块结构。 长春建筑学院
30、数据结构课程设计(论文) - 15 -学生信息管理系统学生信息查询 学生信息管理 学生信息录用图 4.2.1 学生信息管理模块结构4.2.2 学生信息查询模块学生信息查询:学生可以根据学号、姓名、专业进行查询。如图4.2.2 学生信息查询模块结构。学生信息查询学号查询 姓名查询图 4.2.2 学生信息管理模块结构第 5 章 系统测试长春建筑学院数据结构课程设计(论文) - 16 -第五章 系统测试1在调试过程中出现了很多次的程序错误,警告和不能运行。在很多次的调试和重新改写之后,才可以用。2Visual C+确实是一门需要极其细心和耐心的课程,尤其在程序设计的过程中不可有一丝的马虎大意,否则将
31、会花很大力气去改正。3.调试过程中最常见的便是代码输入错误,如字母大小写、顺序颠倒、符号的半/全角使用等一些问题,都是在调试过程中逐一改正的。5.1 实验结果1.初始化2.输入长春建筑学院数据结构课程设计(论文) - 17 -3 插入4 查找长春建筑学院数据结构课程设计(论文) - 18 -5 删除6 修改长春建筑学院数据结构课程设计(论文) - 19 -7 退出长春建筑学院数据结构课程设计(论文) - 20 -实验总结在程序设计方面,逐渐感觉到模块化设计的重要性。在程序设计时,应该分析出功能块,然后对其细节中的共性和特性作分析。在算法上使得其结果精简、完整,达到模块化,在编程时,思考方式就会
32、集中在结构的逻辑上而非细节的问题上。这样可以使得程序更加严密可靠。而这样的技能是要在每次的程序设计及编程中慢慢积累的。这次的设计,让我大大地感觉到,对于程序设计中,对语言再熟悉也比不过在设计中算法和结构分析的真知灼见。当然,成功的程序设计是要建立在熟悉语言的基础之上的。平时语言的基本功要扎实。而每一次程序设计的经营能大大地增加对语言的熟悉和感知。程序设计的技能来自多方面,每一次的亲自实践、思考揣摩、刨根问底就会让自己更加清楚所欠缺的是什么。所以,现在觉得在设计实践中作为参考的书册阅读和研究远远比过单纯的阅读,因为它是在最紧迫的时间上填补自己最紧迫的不足。长春建筑学院数据结构课程设计(论文) -
33、 21 -收获与心得通过这次程序设计,增加了我们学习软件的兴趣,加强了小组成员之间的协作能力。这次程序设计由老师提供课题,参考范例程序,经过自己的改写,实现程序设计要求。一个模块一个模块去做,在实际操作过程中会有一些错误,我们要自己动手去改,这样不光能学到知识还能有一些体会。在具体操作中,不光能对这学期所学的知识得到巩固,还能发现自己的不足之处,在以后操作中能更加注意。通过实际操作,学会 C 语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题与解决问题的能力,提高了实际操作水平长春建筑学院数据结构课程设计(论文) - 22 -致 谢因为初次接触等原因此次设计遇到了许多问
34、题,我深刻体会到老师发挥的重要作用, 数据结构程序对我们来说比较难,在匆忙的学习中更是难上加难,似乎觉得自己仅是个匆匆过客,但在老师的帮助下我学会了如何调试,如何查找系统没有提示的错误,最后终于排除万难把程序搞定,体会到原来编程也挺有意思的快感.我想没有老师的帮助我很难在短期内把程序设计做的这样好,在此特地感谢老师的帮助。长春建筑学院数据结构课程设计(论文) - 23 -参考文献1 李丽娟 . C 语言程序设计教程(第二版). 北京:人民邮电出版社 2009年 2 刁成嘉 . C 语言程序设计论文 D.北京:清华大学出版社 2004 年3 杨文军,杨柳 . C 语言程序设计教程M. 北京:清华大学出版社 2010年 4 周启海 . C 语言程序设计报告R.北京:中国水利工程出版社 2005 年 5 谭浩强 . C 程序设计(第三版)M.北京:清华大学出版社 2005 年