毕业设计C语言学生成绩管理系统设计与实现Word格式文档下载.docx
《毕业设计C语言学生成绩管理系统设计与实现Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《毕业设计C语言学生成绩管理系统设计与实现Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。
所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段.但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:
效率低、保密性差,人工的大量浪费;
另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着来越重要的作用。
作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理所无法比拟的优点.例如:
检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学校信息管理的效率,也是一个单位科学化、正规化管理,与世界接轨的重要条件。
1.3项目开发的目标
建立学生信息管理系统,采用计算机对学生信息进行管理,进一步提高办学效益和现代化水平。
帮助广大教师提高工作效率,实现学生信息管理工作流程的系统化、规范化和自动化。
4开发工具的选择
现在,市场上可以选购的应用开发产品很多,流行的也有数十种。
目前在我国市场上最为流行、使用最多、最为先进的可用作企业级开发工具的产品有:
Microsoft公司的Visual
C++6。
0,TurboC等.本系统在Microsoft
Visual
0下开发。
1.2面向过程编程的基础知识
1.2.1面向过程基本概念
面向过程其实是最为实际的一种思考方式,就是算面向对象的方法也是含有面向过程的思想。
可以说面向过程是一种基础的方法。
它考虑的是实际的实现。
一般的面向过程是从上往下步步求精。
所以面向过程最重要的是模块化的思想方法。
对比较面向对象,面向对象的方法主要是把事物给对象化,对象包括属性与行为.当程序规模不是很大时,面向过程的方法还会体现出一种优势,因为程序的流程很清楚,按着模块与函数的方法可以很好的组织.
1.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操作系统就是一个成功的范例;
同时C语言又是一种通用的程序设计语言,在国际上广泛流行.世界上很多著名的计算公司都成功的开发了不同版本的C语言,很多优秀的应用程序也都使用C语言开发的,它是一种很有发展前途的高级程序设计语言。
1.C是中级语言。
它把高级语言的基本结构和语句与低级语言的实用性结合起来。
C语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2。
C是结构式语言。
结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。
这种结构化方式可使程序层次清晰,便于使用、维护以及调试。
C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
3.C语言功能齐全.具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。
另外C语言也具有强大的图形功能,支持多种显示器和驱动器。
而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。
4.C语言适用范围大。
适合于多种操作系统,如Windows、DOS、UNIX等等;
也适用于多种机型。
C语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的. C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。
它是数值计算的高级语言。
5.C语言文件由数据序列组成,可以构成二进制文件或文本文件 常用的C语言IDE(集成开发环境)有MicrosoftVisualC++,Dev-C++,Code:
:
Blocks,BorlandC++,WatcomC++,BorlandC++Builder,GNUDJGPPC++,Lccwin32CCompiler3。
1,HighC,TurboC,C-Free,win-tc等等…… 对于一个初学者,MicrosoftVisualC++是一个比较好的软件.界面友好,功能强大,调试也很方便。
第2章需求分析
学籍管理系统应具有如下
1、能录入学生的基本信息,包括学号、姓名、专业、年级、性别和出生日期信息,保存到结构体数组中。
2、能根据输入的学号查找学生,进行信息的修改。
3、能根据输入的学号从结构体数组中删除学生的记录。
4、实现查询功能,能根据输入的学号或年级在屏幕上显示相应的学生信息。
5、能在屏幕上以列表的方式输出所有学生的信息.
1目标
(1)掌握和利用C语言进行程序设计的能力。
(2)理解和运用结构化程序设计的思想和方法。
(3)掌握开发一个小型实用系统的基本方法。
(4)学会调试一个较长程序的基本方法。
(5)掌握书写程序设计开发文档的能力(书写课程设计报告).
2.2要求
(1)用C语言实现系统。
(2)利用结构体链表实现学生成绩的数据结构设计。
(3)系统具有增加、查询、插入、排序等基本功能.
(4)系统的各个功能模块要求用文件的形式实现。
(5)完成设计任务并书写课程设计报告.
(6)将学生成绩信息存在文件中。
2.3学生成绩管理系统的功能
1-—按学号查询学生信息
2——按姓名查询学生信息
3-—显示所有学生信息
4--根据学号、姓名、单科成绩进行排序
5--添加学生信息
6--删除学生信息
7——修改学生信息
8-—保存学生信息文件
9——读入学生信息文件
0——退出
此项目主要考察我们对结构体、指针、文件的操作,以及C语言算法的掌握,所以完成此题目要求较高的设计能力,尤其是要有大局意识。
如何调试程序也非常重要,通过这个程序可学到以前调试程序没有的经验。
第3章概要设计
将学生成绩管理系统划分为以下几个模块
3.1主模块
功能概述:
提供系统菜单的显示功能
提供打开文件,并导入文件记录的功能
3.提供保存文件信息的功能
3.2添加学生信息
功能:
1.根据输入的相关信息,将学生信息添加到单向链表中
3.3显示学生信息
1.将链表中的所有信息完全显示
3。
4排序学生信息
(排序分为升序和降序两种排序方式)
1.根据学号进行排序
根据姓名进行排序
3.根据单科成绩进行排序
4。
根据平均分进行排序
3.5查找学生信息
(查找学生信息包含根据输入学号进行查找和根据输入的姓名进行查找两种方式,并根据返回的学生信息,进行以下三种操作)
1.查询学生信息,直接返回找到的信息
修改学生信息,根据找到的学生信息,对其进行修改
3.删除学生信息,根据找到的相关学生信息,从链表中删除这条记录
第4章详细设计与实现
程序设计中用到的学生信息结构体类型
在单独的头文件stu.h中定义相应的数据结构体类型,全局变量,和
宏名:
LEN记录结构体的大小
定义学生结构体STU,包含相关的学生信息
structstudent
{
charnumber[10];
charname[10];
charsex;
intscore[5];
//用于记录5门课程的成绩
floataverage;
//平均分
structstudent*next;
//下个结点
};
typedefstructstudentSTU;
定义*head全局指针,作为链表的头结点
staticSTU*head=NULL;
//全局指针
定义fomat字符串变量,作为录入文件的数据格式
char*fomat=”%—10s%—10s%2c%4d%4d%4d%4d%4d%5。
1f\n”;
定义shouldsave全局变量,判断是否需要保存资料(0为不保存,1为保存)
intshouldsave=0;
各相关函数的声明
externvoidappend_record();
//添加记录
externvoidshow_record();
//输出全部记录
externvoiddelete_record();
//删除记录
externvoidchange_record();
//更改记录
externvoidinquire_record();
//查询记录
externvoidsort_record();
//记录排序
第5章流程图
图1.1
第6章源代码
6。
1数据结构与函数声明的头文件
stu。
h头文件:
#ifndefSTU_H
#defineSTU_H
#include〈stdio。
h〉
#include<
stdlib。
h>
#include<
string。
#defineLENsizeof(STU)//宏,结构体的大小
charnumber[10];
charname[10];
charsex;
intscore[5];
};
typedefstructstudentSTU;
//全局指针,作为链表的头结点
char*fomat=”%-10s%—10s%2c%4d%4d%4d%4d%4d%5。
//录入文件的数据格式
intshouldsave=0;
//判断是否需要保存资料的全局变量
externvoidappend_record();
externvoidshow_record();
externvoidchange_record();
externvoidinquire_record();
#endif
6.2主控程序模块
main。
c源文件:
#include”stu。
h"
#include"
sort.c"
#include"
show。
c”
append。
c"
#include”find。
voidmain(void)
{
voidsave();
voidmenu();
voidopenfile();
//用于打开文件,形成链表
intsel;
openfile();
//用于打开文件信息,输出到链表里
while
(1)
{
menu();
fflush(stdin);
scanf("
%d”,&
sel);
//读取输入的sel
switch(sel)
case0:
save();
break;
case1:
append_record();
/*增加学生*/
case2:
show_record();
/*显示学生*/
case3:
delete_record();
break;
/*删除学生*/
case4:
change_record();
/*修改学生*/
case5:
inquire_record();
/*查询学生*/
case6:
sort_record();
//排序
default:
printf("
\n输入无效,请重新输入\n"
);
}
}
}
voidsave()
STU*p=NULL;
FILE*fp;
char*filename=”E:
\\student.txt”;
staticintcount=0;
chary_n;
if(shouldsave)
{
printf(”\n资料已更改,是否保存?
(yorn)\n”);
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—>
free(p);
}
free(head);
exit(0);
}
if(head->
next==NULL)
printf(”\n记录为空\n”);
return;
}else
p=head-〉next;
if((fp=fopen(filename,”w"
))==NULL)
\n文件不能打开\n"
);
return;
while(p!
=NULL)
fprintf(fp,fomat,p->
number,p->
name,p—>
sex,p—>
score[0],p->
score[1],p-〉score[2],p->
score[3],p->
score[4],p—〉average);
p=p—〉next;
count++;
fclose(fp);
保存完毕,共保存%d条记录,是否继续?
\n”,count);
scanf(”%c”,&y_n);
if(y_n=='
y’||y_n==’Y'
)
return;
else
head-〉next!
head->
next=head->
next->
free(p);
}
free(head);
printf(”\n你已退出系统,再见。
\n”);
exit(0);
else
printf("
\n你已退出系统,再见。
.\n"
}
voidmenu()
\n****************************\n"
添加学生\n"
printf(”2。
显示学生\n”);
printf(”3.删除学生\n"
printf(”4。
修改学生\n"
5,查询学生\n"
printf(”6。
排序学生\n"
printf(”0。
退出\n”);
printf(”******************************\n"
请选择"
voidopenfile()//用于打开文件,形成链表
FILE*fp;
STU*p1=NULL,*p2=NUL