毕业设计 C语言学籍管理系统_第1页
毕业设计 C语言学籍管理系统_第2页
毕业设计 C语言学籍管理系统_第3页
毕业设计 C语言学籍管理系统_第4页
毕业设计 C语言学籍管理系统_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、 面向过程C Language Registration 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 th

4、e working pressure, 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 sch

5、ool work multifarious, 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 s

6、ystem is very necessary.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

7、method, a method 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 p

8、art or a few parts 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目录 TOC o 1-2 h z u HYPERLINK l _Toc293002554 第1章 绪 论

9、 PAGEREF _Toc293002554 h 1 HYPERLINK l _Toc293002555 1.1 学籍管理系统概述 PAGEREF _Toc293002555 h 1 HYPERLINK l _Toc293002556 1.2 面向过程编程的基础知识 PAGEREF _Toc293002556 h 2 HYPERLINK l _Toc293002557 第2章 需求分析 PAGEREF _Toc293002557 h 5 HYPERLINK l _Toc293002558 2.1 目标 PAGEREF _Toc293002558 h 5 HYPERLINK l _Toc2930

10、02559 2.2 要求 PAGEREF _Toc293002559 h 5 HYPERLINK l _Toc293002560 2.3 学生成绩管理系统的功能 PAGEREF _Toc293002560 h 6 HYPERLINK l _Toc293002561 第3章模块设计 PAGEREF _Toc293002561 h 7 HYPERLINK l _Toc293002562 3.1主模块 PAGEREF _Toc293002562 h 7 HYPERLINK l _Toc293002563 3.2 添加学生信息 PAGEREF _Toc293002563 h 7 HYPERLINK l

11、 _Toc293002564 3.3 显示学生信息 PAGEREF _Toc293002564 h 7 HYPERLINK l _Toc293002565 3.4 排序学生信息 PAGEREF _Toc293002565 h 7 HYPERLINK l _Toc293002566 3.5 查找学生信息 PAGEREF _Toc293002566 h 8 HYPERLINK l _Toc293002567 第4章 主要数据结构 PAGEREF _Toc293002567 h 9 HYPERLINK l _Toc293002568 第5章 流程图 PAGEREF _Toc293002568 h 1

12、1 HYPERLINK l _Toc293002569 第6章 源代码 PAGEREF _Toc293002569 h 12 HYPERLINK l _Toc293002570 6.1 数据结构与函数声明的头文件 PAGEREF _Toc293002570 h 12 HYPERLINK l _Toc293002571 6.2主控程序模块 PAGEREF _Toc293002571 h 13 HYPERLINK l _Toc293002572 6.3添加学生模块 PAGEREF _Toc293002572 h 20 HYPERLINK l _Toc293002573 6.4显示学生模块 PAGE

13、REF _Toc293002573 h 21 HYPERLINK l _Toc293002574 6.5 对学生进行排序模块 PAGEREF _Toc293002574 h 22 HYPERLINK l _Toc293002575 6.6 查找学生模块 PAGEREF _Toc293002575 h 30 HYPERLINK l _Toc293002576 参 考 文 献 PAGEREF _Toc293002576 h 35 HYPERLINK l _Toc293002577 谢 辞 PAGEREF _Toc293002577 h 36 PAGE 44第1章 绪 论本章介绍学生学籍管理系统的有

14、关知识、面向过程的编程技术以及应用程序的开发方法和开发过程等基础理论知识,这是深入了解后续内容的必要准备。1.1 学籍管理系统概述1.1.1 管理信息系统的概念管理信息系统(Management Information Systems,简称MIS),是一个不断发展的新型学科,MIS的定义随着计算机技术和通信技术的进步也在不断更新,在现阶段普遍认为MIS 是人为或计算机设备以及其他信息处理手段组成并用于管理信息的系统。包括以下几个基本概念:(1) MIS的对象就是信息。信息是经过加工的对决策者有价值的数据。信息的主要特征是来源分散,数量庞大。信息来源于生产第一线、社会环境、市场以及行政管理等部门

15、。信息具有时间性。(2) 系统是由相互联系、相互作用的若干要素按一定的规则组成并具有一定功能的整体。 系统由输入、处理、输出、反馈、控制等五个基本要素组成。(3) 管理信息由信息的采集、信息的传递、信息的储存、信息的加工、信息的维护和信息的使用等五个方面组成。 MIS包括计算机、网络通信设备等硬件成分,也包括操作系统、应用软件包等软件成分,并随着计算机技术和通信技术的迅速发展还会出现更多的内容。1.1.2 课题背景该项目开发的软件为学校学生信息管理系统软件,是鉴于目前学校学生人数剧增,学生信息呈爆炸性增长的前提下,学校对学生信息管理的自动化与准确化的要求日益强烈的背景下构思出来的,该软件设计完

16、成后可用于所有教育单位(包括学校,学院等等)的学生信息的管理. 目前社会上信息管理系统发展飞快,各个企事业单位都引入了信息管理软件来管理自己日益增长的各种信息,学生管理系统也是有了很大的发展,商业化的学生信息管理软件也不少.但本系统完全独立开发,力求使系统功能简洁明了,但功能齐全且易于操作1.1.3 目的背景与意义学生信息管理系统是一个教育单位不可缺少的部分。一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案

17、、统计和查询数据,这种管理方式存在着许多缺点,如:效率低、保密性差,人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着来越重要的作用。作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学校信息管理的效率,也是一个单位科学化、正规化管理,与世界接轨的重要条件。1.1.3 项目开发的目标 建立学生信息管理系

18、统,采用计算机对学生信息进行管理,进一步提高办学效益和现代化水平。帮助广大教师提高工作效率,实现学生信息管理工作流程的系统化、规范化和自动化。1.2 面向过程编程的基础知识1.2.1 面向过程基本概念面向过程其实是最为实际的一种思考方式,就是算面向对象的方法也是含有面向过程的思想.可以说面向过程是一种基础的方法.它考虑的是实际的实现.一般的面向过程是从上往下步步求精.所以面向过程最重要的是模块化的思想方法.对比较面向对象,面向对象的方法主要是把事物给对象化,对象包括属性与行为.当程序规模不是很大时,面向过程的方法还会体现出一种优势,因为程序的流程很清楚,按着模块与函数的方法可以很好的组织.1.

19、2.2 使用面向过程的C语言简介1. C语言C言是一种面向过程的计算机程序设计语言,它是目前众多计算机语言中举世公认的优秀的结构程序设计语言之一。它由美国贝尔研究所的D.M.Ritchie于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。 C语言发展如此迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的系统软件,如DBASE 都是由C 语言编写的。用C 语言加上一些汇编语言子程序,就更能显示C 语言的优势了,像PC- DOS 、WORDSTAR等就是用这种方法编写的。2. C 语言特点:C语言是一种成功的系统描述语言,用C语言开发的UNIX操作系统就是

20、一个成功的范例;同时C语言又是一种通用的程序设计语言,在国际上广泛流行。世界上很多著名的计算公司都成功的开发了不同版本的C语言,很多优秀的应用程序也都使用C语言开发的,它是一种很有发展前途的高级程序设计语言。1. C是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。 2.C是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有

21、多种循环、条件语句控制程序流向,从而使程序完全结构化。3.C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外C语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。4. C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。 C语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。 C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。5.C语言文件

22、由数据序列组成,可以构成二进制文件或文本文件 常用的C语言IDE(集成开发环境)有Microsoft Visual C+,Dev-C+,Code:Blocks,Borland 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、能录入学生的基本信息,包括学号、姓名、专业、年级、性别和出生日期信息

23、,保存到结构体数组中。2、能根据输入的学号查找学生,进行信息的修改。3、能根据输入的学号从结构体数组中删除学生的记录。4、实现查询功能,能根据输入的学号或年级在屏幕上显示相应的学生信息。5、能在屏幕上以列表的方式输出所有学生的信息。2.1 目标(1)掌握和利用C语言进行程序设计的能力。(2)理解和运用结构化程序设计的思想和方法。(3)掌握开发一个小型实用系统的基本方法。(4)学会调试一个较长程序的基本方法。(5)掌握书写程序设计开发文档的能力(书写课程设计报告)。2.2 要求(1)用C语言实现系统。(2)利用结构体链表实现学生成绩的数据结构设计。(3)系统具有增加、查询、插入、排序等基本功能。

24、(4)系统的各个功能模块要求用文件的形式实现。(5)完成设计任务并书写课程设计报告。(6)将学生成绩信息存在文件中。2.3 学生成绩管理系统的功能1-按学号查询学生信息2-按姓名查询学生信息3-显示所有学生信息4-根据学号、姓名、单科成绩进行排序5-添加学生信息6-删除学生信息7-修改学生信息8-保存学生信息文件9-读入学生信息文件0-退出此项目主要考察我们对结构体、指针、文件的操作,以及C语言算法的掌握,所以完成此题目要求较高的设计能力,尤其是要有大局意识。如何调试程序也非常重要,通过这个程序可学到以前调试程序没有的经验。模块设计将学生成绩管理系统划分为以下几个模块主模块功能概述:1. 提供

25、系统菜单的显示功能2. 提供打开文件,并导入文件记录的功能3. 提供保存文件信息的功能3.2 添加学生信息功能:1 根据输入的相关信息,将学生信息添加到单向链表中 3.3 显示学生信息功能:1. 将链表中的所有信息完全显示3.4 排序学生信息功能:(排序分为升序和降序两种排序方式)1. 根据学号进行排序2. 根据姓名进行排序3. 根据单科成绩进行排序4. 根据平均分进行排序3.5 查找学生信息功能:(查找学生信息包含根据输入学号进行查找和根据输入的姓名进行查找两种方式,并根据返回的学生信息,进行以下三种操作)1. 查询学生信息,直接返回找到的信息2. 修改学生信息,根据找到的学生信息,对其进行

26、修改3. 删除学生信息,根据找到的相关学生信息,从链表中删除这条记录第4章 主要数据结构 程序设计中用到的学生信息结构体类型在单独的头文件stu.h中定义相应的数据结构体类型,全局变量,和宏名:LEN 记录结构体的大小定义学生结构体 STU,包含相关的学生信息struct student char number10; char name10; char sex; int score5; /用于记录5门课程的成绩 float average; /平均分 struct student *next; /下个结点;typedef struct student STU;定义*head全局指针,作为链表的

27、头结点static STU *head=NULL; /全局指针定义fomat字符串变量,作为录入文件的数据格式char *fomat=%-10s%-10s%2c%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();

28、/更改记录extern void inquire_record(); /查询记录extern void sort_record(); /记录排序第5章 流程图图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; /平均分 str

29、uct student *next; /下个结点;typedef struct student STU;static STU *head=NULL; /全局指针,作为链表的头结点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 chang

30、e_record(); /更改记录extern void inquire_record(); /查询记录extern void sort_record(); /记录排序#endif 主控程序模块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();

31、fflush(stdin); scanf(%d,&sel); /读取输入的sel switch(sel) case 0:save();break;case 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;

32、/排序default: printf(n输入无效,请重新输入n);break; void save()STU *p=NULL;FILE *fp;char *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%cn资料未保存n,y_n);/释放空间 for(;head-next!=NULL;) p=head-next; head-nex

33、t=head-next-next; free(p); free(head);exit(0); if(head-next=NULL) printf(n记录为空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

34、); printf(保存完毕,共保存%d条记录,是否继续?n,count); fflush(stdin); scanf(%c,&y_n); if(y_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.显

35、示学生n);printf(3.删除学生n);printf(4.修改学生n);printf(5,查询学生n);printf(6.排序学生n);printf(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

36、/n)n); scanf(%c,&y_n); if(y_n=y|y_n=Y) fp=fopen(E:student.txt,w); else printf(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=N

37、ULL; u8IsFileNull = fgetc(fp);if(u8IsFileNull=EOF) printf(文件为空n); return; 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+;fcl

38、ose(fp);printf(n=提示:记录导入完毕,共导入%d条记录.n,count); 添加学生模块append.c源程序文件: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)

39、; scanf(%s %s %c %d %d %d %d %d,p1-number,p1-name,&(p1-sex),&p1-score0,&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(stdi

40、n); scanf(%c,&y_n); 显示学生模块show.c源程序文件:void show_record() STU *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源程序文件

41、:void sort_record() STU *p=head-next,*pre=head,*p_free=NULL;/原链表的。 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:按

42、语文排序n); printf(5:按数学排序n); printf(6:按英语排序n); printf(7:按计算机排序n); 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

43、-next;if(sort=1) for(;(q!=NULL)&(strcmp(temp-number,q-number)=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

44、; case 2: 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-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;h

45、ead-next=head-next-next; free(p_free); free(head); head=headq; shouldsave = 1; break; case 3: for(;head-next!=NULL;)/读原链表 temp=(STU *)malloc(LEN);*temp=*head-next;/temp成为要加入链表的数据点 beq=headq,q=beq-next;if(sort=1) for(;(q!=NULL)&(temp-sexq-sex);)/正序 beq=q; q=q-next; else for(;(q!=NULL)&(temp-sexsex);)

46、/隆序 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 = 1; break; case 4: case 5: case 6: case 7: case 8: for(;head-next!=NULL;)/读原链表 temp=(STU *)malloc(LEN);*temp=*head-next;/temp成为要加入链表的数据点 beq=headq,q=beq-

47、next;if(sort=1) for(;(q!=NULL)&(temp-scoresel-4q-scoresel-4);)/正序 beq=q; q=q-next; else for(;(q!=NULL)&(temp-scoresel-4scoresel-4);)/隆序 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 = 1; break; case 9: fo

48、r(;head-next!=NULL;)/读原链表 temp=(STU *)malloc(LEN);*temp=*head-next;/temp成为要加入链表的数据点 beq=headq,q=beq-next;if(sort=1) for(;(q!=NULL)&(temp-averageq-average);)/正序 beq=q; q=q-next; else for(;(q!=NULL)&(temp-averageaverage);)/隆序 beq=q; q=q-next; temp-next=beq-next;beq-next=temp;p_free=head-next;head-next

49、=head-next-next; free(p_free); free(head); head=headq; shouldsave = 1; break; printf(n排序后的记录信息:n学号 姓名 性别 语文 数学 英语 计算机 C语言 平均分n); for(q=headq-next;q!=NULL;q=q-next) printf(fomat,q-number,q-name,q-sex,q-score0,q-score1,q-score2,q-score3,q-score4,q-average); 6.6 查找学生模块find.c源程序文件:(包含查询学生记录、删除学生记录、更改学生记

50、录)STU *find() /用于找到需要的指针char name20,number10;static int sel;STU *pre=NULL;printf(请输入查询方式1.按学号 2.按姓名n); scanf(%d,&sel);if(head-next=NULL)return pre;if(sel=1) printf(请输入学号n); scanf(%s,number); for(pre=head;pre-next!=NULL;pre=pre-next) if(!strcmp(pre-next-number,number)return pre; else if(sel=2) printf

51、(请输入姓名n); scanf(%s,name); for(pre=head;pre-next!=NULL;pre=pre-next) if(!strcmp(pre-next-name,name) return pre; return pre;void inquire_record()/查找记录 STU *p=find(); if(p=NULL)|(p-next=NULL) printf(没有找到该记录!); else printf(n要查询的记录信息:n学号 姓名 性别 语文 数学 英语 计算机 C语言 平均分n); printf(fomat,p-next-number,p-next-nam

52、e,p-next-sex,p-next-score0,p-next-score1,p-next-score2,p-next-score3,p-next-score4,p-next-average); void delete_record() /删除记录 STU *temp=NULL; STU *p=find(); if(p=NULL)|(p-next=NULL) printf(没有找到该记录!n); else printf(n要删除的记录信息:n学号 姓名 性别 语文 数学 英语 计算机 C语言 平均分n); printf(fomat,p-next-number,p-next-name,p-n

53、ext-sex,p-next-score0,p-next-score1,p-next-score2,p-next-score3,p-next-score4,p-next-average); temp=p-next; p-next=p-next-next; free(temp); shouldsave = 1; void change_record()/更改记录 STU *p1=find(); if(p1=NULL)|(p1-next=NULL) printf(没有找到该记录!); else printf(n要修改的记录信息:n学号 姓名 性别 语文 数学 英语 计算机 C语言 平均分n); p

54、rintf(fomat,p1-next-number,p1-next-name,p1-next-sex,p1-next-score0,p1-next-score1,p1-next-score2,p1-next-score3,p1-next-score4,p1-next-average); printf(n请输入学号 姓名 性别 语文 数学 英语 计算机 C语言 的信息,以空格分开n); fflush(stdin); scanf(%s %s %c %d %d %d %d %d,p1-next-number,p1-next-name,&p1-next-sex,&p1-next-score0,&p1

55、-next-score1,&p1-next-score2,&p1-next-score3,&p1-next-score4); p1-next-average=(float)(p1-score0+p1-score1+p1-score2+p1-score3+p1-score4)/5; printf(n修改完成n); shouldsave = 1; 参 考 文 献1 郭友强编著. C语言程序设计 试验指导与课程设计. 北京:清华大学出版社,19992 黄维通编著. C语言程序设计习题解析与应用案例分析. 北京:清华大学出版社,20043 谭浩强编著. C程序设计. 北京:清华大学出版社,19964

56、哈比森编著. C语言参考手册. 北京:机械工业出版社,20015 P.J.Plauger编著. C标准库. 北京:人民邮电出版社,20046 GregPerry编著. C标准库. 北京:人民邮电出版社,20017 P.J.Plauger编著. 写给大家看的C语言. 北京:人民邮电出版社,2010谢 辞 在这里首先感谢老师的悉心指导、教诲、督促和帮助。让我的学生成绩管理系统这个课程设计经过几周的时间和自己不懈的努力按时完成。课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算

57、机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。 回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在这几周里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问

58、题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。通过学习C语言课程设计使我了解到C语言是一门实践性很强的课程,以及C语言的基本语法规则.程序设计.以及解题的全过程,加深对C语言的了解,得到程序设计的基本方法和技巧的训练,从而更加深一步的对知识的了解,真正能使C语言这个强有力的编程工具去解决实际问题。 通过这次课程设计收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去

59、实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前使我对C语言有了更进一步的认识和了解,要想学好它要重在实践。附录资料:不需要的可以自行删除C语言编译环境中的调试功能及常见错误提示调试功能1常用健 : 激活系统菜单: 将光标在编辑窗口和、信息窗口之间切换: 加载一个文件+: 查看程序运行结果: 得到有关编辑器在线帮助+: 得到有关C语言的在线帮助+: 终止正在运行的程序2块操作 KB: 定义块首 KK: 定义块尾 KV: 块移动 KC: 块复制 KY: 块删除 KH: 取消块定义3查找、替换和删

60、除操作 QF: 查找字符串 QA: 查找并替换字符串 Option: G(全程), B(向文件头), N(直接替换) Y : 删除一行 QY: 删除从光标位置到行末的所有字符编译中的常见错误例析(1)警告类错误 XXXdeclare but never used 变量XXX已定义但从未用过。 XXXis assigned a value which is never used 变量XXX已赋值但从未用过。 Code has no effect 程序中含有没有实际作用的代码。 Non-portable pointer conversion 不适当的指针转换,可能是在应该使用指针的地方用了一个非0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论