毕业设计C语言学籍管理系统精品资料.doc

上传人:封****n 文档编号:96699100 上传时间:2024-03-10 格式:DOC 页数:48 大小:270.92KB
返回 下载 相关 举报
毕业设计C语言学籍管理系统精品资料.doc_第1页
第1页 / 共48页
毕业设计C语言学籍管理系统精品资料.doc_第2页
第2页 / 共48页
点击查看更多>>
资源描述

《毕业设计C语言学籍管理系统精品资料.doc》由会员分享,可在线阅读,更多相关《毕业设计C语言学籍管理系统精品资料.doc(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、成都电子机械高等专科学校 电气与电子工程系毕业设计论文毕业设计(论文)题 目 C语言学籍管理系统专 业 应用电子技术 班 次 08221 姓 名 董 映 指导老师 易兴兵 成都电子机械高等专科学校二0一一年五月IVC语言学籍管理系统摘 要:本系统依据开发要求主要应用于教育系统,完成对日常的教育工作中学生成绩档案的数字化管理。开发本系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化。目前,学校工作繁杂、资料重多,虽然各类管理信息系统已进入高校,但还未普及,而对

2、于学生成绩管理来说,目前还没有一套完整的、统一的系统。因此,开发一套适和大众的、兼容性好的系统是很有必要的。本系统在开发过程中,注意使其符合操作的业务流程,并力求系统的全面性、通用性,使得本系统不只适用于一家教育机构。在开发方法的选择上,选择了生命周期法与原型法相结合的方法,遵循系统调查研究、系统分析、系统设计和系统实施四个主要阶段进行设计,而在具体的设计上,采取了演化式原型法,随着用户的使用及对系统了解的不断加深,对某一部分或几部分进行重新分析、设计、实施。本论文主要从系统分析、系统设计、系统实施与使用等几个方面进行介绍【关键词】 成绩管理 成绩查询 C语言 面向过程C Language R

3、egistration Management SystemAbstract: This system according to the development requirements are mainly applied in education system of education, the daily work of the digital archives management of student performance. This system can make the college development staff to reduce the working pressur

4、e, educational and teaching to the various services and information management, also can reduce the use of force, accelerate query speed, strengthen management, as well as the national departments about the pace of normalization, make each management standardized.At present, the school work multifar

5、ious, material more, though various management information system has entered the university, but has not been popular, and for students performance management, it has been a complete and unified system. Therefore, the development of a suitable and the populace, compatibility good system is very nec

6、essary.This system in the process of development, pay attention to the operation of the business process, and strive to system of comprehensive, generalization, makes this system not only applicable to a education institutions. On the choice of methods in the development life cycle method, a method

7、of combining with the prototype, follow the system research and systematic analysis, system design and system implementation, four main stages, and the specific design in the design, taking the evolution as users of prototype, the use of system and the deepening understanding of a part or a few part

8、s for analysis, design and implementation. This thesis mainly from the system analysis, system design and system implementation and use etc.【Key Words】Achievement ManagementAchievement QueryC Programming Language Procedure-Oriented目录第1章 绪 论11.1 学籍管理系统概述11.2 面向过程编程的基础知识2第2章 需求分析52.1 目标52.2 要求52.3 学生成

9、绩管理系统的功能6第3章模块设计73.1主模块73.2 添加学生信息73.3 显示学生信息73.4 排序学生信息73.5 查找学生信息8第4章 主要数据结构9第5章 流程图11第6章 源代码126.1 数据结构与函数声明的头文件126.2主控程序模块136.3添加学生模块206.4显示学生模块216.5 对学生进行排序模块226.6 查找学生模块30参 考 文 献35谢 辞363第1章 绪 论本章介绍学生学籍管理系统的有关知识、面向过程的编程技术以及应用程序的开发方法和开发过程等基础理论知识,这是深入了解后续内容的必要准备。1.1 学籍管理系统概述1.1.1 管理信息系统的概念管理信息系统(M

10、anagement Information Systems,简称MIS),是一个不断发展的新型学科,MIS的定义随着计算机技术和通信技术的进步也在不断更新,在现阶段普遍认为MIS 是人为或计算机设备以及其他信息处理手段组成并用于管理信息的系统。包括以下几个基本概念:(1) MIS的对象就是信息。信息是经过加工的对决策者有价值的数据。信息的主要特征是来源分散,数量庞大。信息来源于生产第一线、社会环境、市场以及行政管理等部门。信息具有时间性。(2) 系统是由相互联系、相互作用的若干要素按一定的规则组成并具有一定功能的整体。 系统由输入、处理、输出、反馈、控制等五个基本要素组成。(3) 管理信息由信

11、息的采集、信息的传递、信息的储存、信息的加工、信息的维护和信息的使用等五个方面组成。 MIS包括计算机、网络通信设备等硬件成分,也包括操作系统、应用软件包等软件成分,并随着计算机技术和通信技术的迅速发展还会出现更多的内容。1.1.2 课题背景该项目开发的软件为学校学生信息管理系统软件,是鉴于目前学校学生人数剧增,学生信息呈爆炸性增长的前提下,学校对学生信息管理的自动化与准确化的要求日益强烈的背景下构思出来的,该软件设计完成后可用于所有教育单位(包括学校,学院等等)的学生信息的管理. 目前社会上信息管理系统发展飞快,各个企事业单位都引入了信息管理软件来管理自己日益增长的各种信息,学生管理系统也是

12、有了很大的发展,商业化的学生信息管理软件也不少.但本系统完全独立开发,力求使系统功能简洁明了,但功能齐全且易于操作1.1.3 目的背景与意义学生信息管理系统是一个教育单位不可缺少的部分。一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:效率低、保密性差,人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。随着科学技术的

13、不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着来越重要的作用。作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学校信息管理的效率,也是一个单位科学化、正规化管理,与世界接轨的重要条件。1.1.3 项目开发的目标 建立学生信息管理系统,采用计算机对学生信息进行管理,进一步提高办学效益和现代化水平。帮助广大教师提高工作效率,实现学生信息管理工作流程的系统化、规范化和自动化。1.2 面向过程编程的基础知识1.

14、2.1 面向过程基本概念面向过程其实是最为实际的一种思考方式,就是算面向对象的方法也是含有面向过程的思想.可以说面向过程是一种基础的方法.它考虑的是实际的实现.一般的面向过程是从上往下步步求精.所以面向过程最重要的是模块化的思想方法.对比较面向对象,面向对象的方法主要是把事物给对象化,对象包括属性与行为.当程序规模不是很大时,面向过程的方法还会体现出一种优势,因为程序的流程很清楚,按着模块与函数的方法可以很好的组织.1.2.2 使用面向过程的C语言简介1. C语言C言是一种面向过程的计算机程序设计语言,它是目前众多计算机语言中举世公认的优秀的结构程序设计语言之一。它由美国贝尔研究所的D.M.R

15、itchie于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。 C语言发展如此迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的系统软件,如DBASE 都是由C 语言编写的。用C 语言加上一些汇编语言子程序,就更能显示C 语言的优势了,像PC- DOS 、WORDSTAR等就是用这种方法编写的。2. C 语言特点:C语言是一种成功的系统描述语言,用C语言开发的UNIX操作系统就是一个成功的范例;同时C语言又是一种通用的程序设计语言,在国际上广泛流行。世界上很多著名的计算公司都成功的开发了不同版本的C语言,很多优秀的应用程序也都使用C语言开发的,它是一种

16、很有发展前途的高级程序设计语言。1. C是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。 2.C是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。3.C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外C语言也具有强大的图形功能,支持多种显

17、示器和驱动器。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。4. C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。 C语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。 C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。5.C语言文件由数据序列组成,可以构成二进制文件或文本文件 常用的C语言IDE(集成开发环境)有Microsoft Visual C+,Dev-C+,Code:Blocks,Borland

18、C+,Watcom C+ ,Borland C+ Builder,GNU DJGPP C+ ,Lccwin32 C Compiler 3.1,High C,Turbo C,C-Free,win-tc 等等 对于一个初学者,Microsoft Visual C+是一个比较好的软件。界面友好,功能强大,调试也很方便。第2章 需求分析学籍管理系统应具有如下1、能录入学生的基本信息,包括学号、姓名、专业、年级、性别和出生日期信息,保存到结构体数组中。2、能根据输入的学号查找学生,进行信息的修改。3、能根据输入的学号从结构体数组中删除学生的记录。4、实现查询功能,能根据输入的学号或年级在屏幕上显示相应的

19、学生信息。5、能在屏幕上以列表的方式输出所有学生的信息。2.1 目标(1)掌握和利用C语言进行程序设计的能力。(2)理解和运用结构化程序设计的思想和方法。(3)掌握开发一个小型实用系统的基本方法。(4)学会调试一个较长程序的基本方法。(5)掌握书写程序设计开发文档的能力(书写课程设计报告)。2.2 要求(1)用C语言实现系统。(2)利用结构体链表实现学生成绩的数据结构设计。(3)系统具有增加、查询、插入、排序等基本功能。(4)系统的各个功能模块要求用文件的形式实现。(5)完成设计任务并书写课程设计报告。(6)将学生成绩信息存在文件中。2.3 学生成绩管理系统的功能1-按学号查询学生信息2-按姓

20、名查询学生信息3-显示所有学生信息4-根据学号、姓名、单科成绩进行排序5-添加学生信息6-删除学生信息7-修改学生信息8-保存学生信息文件9-读入学生信息文件0-退出此项目主要考察我们对结构体、指针、文件的操作,以及C语言算法的掌握,所以完成此题目要求较高的设计能力,尤其是要有大局意识。如何调试程序也非常重要,通过这个程序可学到以前调试程序没有的经验。第3章 模块设计将学生成绩管理系统划分为以下几个模块3.1 主模块功能概述:1. 提供系统菜单的显示功能2. 提供打开文件,并导入文件记录的功能3. 提供保存文件信息的功能3.2 添加学生信息功能:1 根据输入的相关信息,将学生信息添加到单向链表

21、中 3.3 显示学生信息功能:1. 将链表中的所有信息完全显示3.4 排序学生信息功能:(排序分为升序和降序两种排序方式)1. 根据学号进行排序2. 根据姓名进行排序3. 根据单科成绩进行排序4. 根据平均分进行排序3.5 查找学生信息功能:(查找学生信息包含根据输入学号进行查找和根据输入的姓名进行查找两种方式,并根据返回的学生信息,进行以下三种操作)1. 查询学生信息,直接返回找到的信息2. 修改学生信息,根据找到的学生信息,对其进行修改3. 删除学生信息,根据找到的相关学生信息,从链表中删除这条记录第4章 主要数据结构 程序设计中用到的学生信息结构体类型在单独的头文件stu.h中定义相应的

22、数据结构体类型,全局变量,和宏名:LEN 记录结构体的大小定义学生结构体 STU,包含相关的学生信息struct student char number10; char name10; char sex; int score5; /用于记录5门课程的成绩 float average; /平均分 struct student *next; /下个结点;typedef struct student STU;定义*head全局指针,作为链表的头结点static STU *head=NULL; /全局指针定义fomat字符串变量,作为录入文件的数据格式char *fomat=%-10s%-10s%2c

23、%4d%4d%4d%4d%4d%5.1fn;定义shouldsave全局变量,判断是否需要保存资料(0为不保存,1为保存)int shouldsave = 0; 各相关函数的声明extern void append_record(); /添加记录extern void show_record(); /输出全部记录extern void delete_record(); /删除记录extern void change_record(); /更改记录extern void inquire_record(); /查询记录extern void sort_record(); /记录排序第5章 流程图图

24、1.1第6章 源代码6.1 数据结构与函数声明的头文件stu.h头文件:#ifndef STU_H#define STU_H#include#include#include#define LEN sizeof(STU) /宏,结构体的大小struct student char number10; char name10; char sex; int score5; /用于记录5门课程的成绩 float average; /平均分 struct student *next; /下个结点;typedef struct student STU;static STU *head=NULL; /全局指针

25、,作为链表的头结点char *fomat=%-10s%-10s%2c%4d%4d%4d%4d%4d%5.1fn;/录入文件的数据格式int shouldsave = 0;/判断是否需要保存资料的全局变量extern void append_record(); /添加记录extern void show_record(); /输出全部记录extern void delete_record(); /删除记录extern void change_record(); /更改记录extern void inquire_record(); /查询记录extern void sort_record(); /

26、记录排序#endif6.2 主控程序模块main.c源文件:#includestu.h#includesort.c#includeshow.c#includeappend.c#includefind.cvoid main(void) void save();void menu();void openfile(); /用于打开文件,形成链表int sel;openfile(); /用于打开文件信息,输出到链表里while(1) menu(); fflush(stdin); scanf(%d,&sel); /读取输入的sel switch(sel) case 0:save();break;case

27、 1:append_record();break; /* 增加学生 */ case 2:show_record();break;/* 显示学生 */ case 3:delete_record();break;/* 删除学生 */ case 4:change_record();break;/* 修改学生 */ case 5:inquire_record();break;/* 查询学生 */ case 6:sort_record();break;/排序default: printf(n输入无效,请重新输入n);break; void save()STU *p=NULL;FILE *fp;char

28、*filename=E:student.txt;static int count=0; char y_n;if(shouldsave) printf(n资料已更改,是否保存?(y or n)n); fflush(stdin); scanf(%c,&y_n); if(y_n!=y & y_n!=Y) printf(n.%c.n资料未保存n,y_n);/释放空间 for(;head-next!=NULL;) p=head-next; head-next=head-next-next; free(p); free(head);exit(0); if(head-next=NULL) printf(n记

29、录为空n); return; else p=head-next; if(fp=fopen(filename,w)=NULL) printf(n文件不能打开n);return; while(p!=NULL) fprintf(fp,fomat,p-number,p-name,p-sex,p-score0,p-score1,p-score2,p-score3,p-score4,p-average); p=p-next;count+; fclose(fp); printf(保存完毕,共保存%d条记录,是否继续?n,count); fflush(stdin); scanf(%c,&y_n); if(y_

30、n=y|y_n=Y) return; else /释放空间 for(;head-next!=NULL;) p=head-next; head-next=head-next-next; free(p); free(head);printf(n你已退出系统,再见.n); exit(0); else printf(n你已退出系统,再见.n); exit(0);void menu()printf(n*n);printf(1.添加学生n);printf(2.显示学生n);printf(3.删除学生n);printf(4.修改学生n);printf(5,查询学生n);printf(6.排序学生n);pri

31、ntf(0.退出n);printf(*n);printf(请选择);void openfile() /用于打开文件,形成链表FILE *fp;STU *p1=NULL,*p2=NULL;/,*temp=NULL;char y_n;static int count=0; /用于统计记录数 char u8IsFileNull;fp=fopen(E:student.txt,r); if(fp=NULL) printf(n=提示:文件还不存在,是否创建?(y/n)n); scanf(%c,&y_n); if(y_n=y|y_n=Y) fp=fopen(E:student.txt,w); else pr

32、intf(n=提示:没有创建文件.n); exit(0); printf(n=提示:创建完成.n); head=(STU *)malloc(LEN);/创建完成后还是要建立统一的头结点,方便后续程序使用。 head-next=NULL; fclose(fp); return; printf(n=提示:文件已经打开,正在导入记录.n); head=(STU *)malloc(LEN);p2=head; /用P2来指向表尾,p1来申请空间head-next=NULL; u8IsFileNull = fgetc(fp);if(u8IsFileNull=EOF) printf(文件为空n); retu

33、rn; rewind(fp);while(!feof(fp) p1=(STU *)malloc(LEN); fscanf(fp,%s %s %c %d %d %d %d %d %fn,p1-number,p1-name,&p1-sex,&p1-score0,&p1-score1,&p1-score2,&p1-score3,&p1-score4,&p1-average); p1-next=NULL; p2-next=p1; p2=p1; count+;fclose(fp);printf(n=提示:记录导入完毕,共导入%d条记录.n,count); 6.3 添加学生模块append.c源程序文件:

34、void append_record() STU *p1=NULL,*p2=NULL;/用P1来申请空间,P2来指向表尾 char y_n=y; int count=0; for(p2=head;p2-next!=NULL;p2=p2-next)/找到表尾; while(y_n=y|y_n=Y) p1=(STU *)malloc(LEN); printf(请输入学号 姓名 性别 语文 数学 英语 计算机 C语言 的信息,以空格分开n); fflush(stdin); scanf(%s %s %c %d %d %d %d %d,p1-number,p1-name,&(p1-sex),&p1-sc

35、ore0,&p1-score1,&p1-score2,&p1-score3,&p1-score4); p1-average=(float)(p1-score0+p1-score1+p1-score2+p1-score3+p1-score4)/5; p1-next=NULL; p2-next=p1; p2=p1; count+; printf(n添加完成,共添加%d条记录,是否继续添加?Y/Nn,count); shouldsave = 1; fflush(stdin); scanf(%c,&y_n); 6.4 显示学生模块show.c源程序文件:void show_record() STU *

36、p=NULL; if(head-next=NULL) printf(暂无记录!); else printf(n学号 姓名 性别 语文 数学 英语 计算机 C语言 平均分n); for(p=head-next;p!=NULL;p=p-next) printf(fomat,p-number,p-name,p-sex,p-score0,p-score1,p-score2,p-score3,p-score4,p-average); 6.5 对学生进行排序模块sort.c源程序文件:void sort_record() STU *p=head-next,*pre=head,*p_free=NULL;/原

37、链表的。 STU *temp=NULL,*q=NULL,*beq=NULL,*headq=(STU *)malloc(LEN); /新的链表 int sel,sort; beq=headq; beq-next=q; /int count=0; /总的记录数 if(head-next=NULL) printf(n没有找到任何记录!n); else printf(1:按学号排序n); printf(2:按姓名排序n); printf(3:按性别排序n); printf(4:按语文排序n); printf(5:按数学排序n); printf(6:按英语排序n); printf(7:按计算机排序n);

38、 printf(8:按C语言排序n); printf(9:按平均分排序n); printf(请选择排序关键字和方式,以空格分开n1为升序,0为降序n); fflush(stdin); scanf(%d %d,&sel,&sort); switch(sel) case 1: for(;head-next!=NULL;)/读原链表 temp=(STU *)malloc(LEN);*temp=*head-next;/temp成为要加入链表的数据点 beq=headq,q=beq-next;if(sort=1) for(;(q!=NULL)&(strcmp(temp-number,q-number)=

39、0);)/正序 beq=q; q=q-next; else for(;(q!=NULL)&(strcmp(temp-number,q-number)next; temp-next=beq-next;beq-next=temp;p_free=head-next;head-next=head-next-next; free(p_free); free(head); /释放头结点原内存区 head=headq; /头结点指向新的内存区 shouldsave = 1; break; case 2: for(;head-next!=NULL;)/读原链表 temp=(STU *)malloc(LEN);

40、*temp=*head-next;/temp成为要加入链表的数据点 beq=headq,q=beq-next;if(sort=1) for(;(q!=NULL)&(strcmp(temp-name,q-number)next; else for(;(q!=NULL)&(strcmp(temp-name,q-number)=0);)/隆序 beq=q; q=q-next; temp-next=beq-next;beq-next=temp;p_free=head-next;head-next=head-next-next; free(p_free); free(head); head=headq; shouldsave =

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 期刊短文 > 互联网

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁