C语言学生成绩管理系统设计与实现设计.docx
《C语言学生成绩管理系统设计与实现设计.docx》由会员分享,可在线阅读,更多相关《C语言学生成绩管理系统设计与实现设计.docx(36页珍藏版)》请在冰豆网上搜索。
C语言学生成绩管理系统设计与实现设计
(此文档为word格式,下载后您可任意编辑修改!
)
以下文档格式全部为word格式,下载后您可以任意修改编辑。
本系统在开发过程中,注意使其符合操作的业务流程,并力求系统的全面性、通用性,使得本系统不只适用于一家教育机构。
在开发方法的选择上,选择了生命周期法与原型法相结合的方法,遵循系统调查研究、系统分析、系统设计和系统实施四个主要阶段进行设计,而在具体的设计上,采取了演化式原型法,随着用户的使用及对系统了解的不断加深,对某一部分或几部分进行重新分析、设计、实施。
本论文主要从系统分析、系统设计、系统实施与使用等几个方面进行介绍
【关键词】成绩管理成绩查询C语言面向过程
WiththeimplementationofClanguagestudentachievementmanagementsystemdesign
Abstract:
Thissystemaccordingtothedevelopmentrequirementsaremainlyappliedineducationsystemofeducation,thedailyworkofthedigitalarchivesmanagementofstudentperformance.Thissystemcanmakethecollegedevelopmentstafftoreducetheworkingpressure,educationalandteachingtothevariousservicesandinformationmanagement,alsocanreducetheuseofforce,acceleratequeryspeed,strengthenmanagement,aswellasthenationaldepartmentsaboutthepaceofnormalization,makeeachmanagementstandardized.
Atpresent,theschoolworkmultifarious,materialmore,thoughvariousmanagementinformationsystempopular,andforstudents'performancemanagement,itacompleteandunifiedsystem.Therefore,thedevelopmentofasuitableandthepopulace,compatibilitygoodsystemisverynecessary.
Thissystemintheprocessofdevelopment,payattentiontotheoperationofthebusinessprocess,andstrivetosystemofcomprehensive,generalization,makesthissystemnotonlyapplicabletoaeducationinstitutions.Onthechoiceofmethodsinthedevelopmentlifecyclemethod,amethodofcombiningwiththeprototype,followthesystemresearchandsystematicanalysis,systemdesignandsystemimplementation,fourmainstages,andthespecificdesigninthedesign,takingtheevolutionasusersofprototype,theuseofsystemandthedeepeningunderstandingofapartorafewpartsforanalysis,designandimplementation.Thisthesismainlyfromthesystemanalysis,systemdesignandsystemimplementationanduseetc.【KeyWords】AchievementManagementAchievementQueryCProgrammingLanguageProcedure-Oriented
目 录
第1章绪论1
1.1学籍管理系统概述1
1.2面向过程编程的基础知识2
第2章需求分析5
2.1目标5
2.2要求5
2.3学生成绩管理系统的功能6
第3章概要设计7
3.1主模块7
3.2添加学生信息7
3.3显示学生信息7
3.4排序学生信息7
3.5查找学生信息8
第4章详细设计与实现9
第5章流程图11
第6章源代码12
6.1数据结构与函数声明的头文件12
6.2主控程序模块13
6.3添加学生模块20
6.4显示学生模块21
6.5对学生进行排序模块22
6.6查找学生模块30
致谢35
参考文献36
第1章绪论
本章介绍学生学籍管理系统的有关知识、面向过程的编程技术以及应用程序的开发方法和开发过程等基础理论知识,这是深入了解后续内容的必要准备。
1.1学籍管理系统概述
1.1.1管理信息系统的概念
管理信息系统(ManagementInformationSystems,简称MIS),是一个不断发展的新型学科,MIS的定义随着计算机技术和通信技术的进步也在不断更新,在现阶段普遍认为MIS是人为或计算机设备以及其他信息处理手段组成并用于管理信息的系统。
包括以下几个基本概念:
(1)MIS的对象就是信息。
信息是经过加工的对决策者有价值的数据。
信息的主要特征是来源分散,数量庞大。
信息来源于生产第一线、社会环境、市场以及行政管理等部门。
信息具有时间性。
(2)系统是由相互联系、相互作用的若干要素按一定的规则组成并具有一定功能的整体。
系统由输入、处理、输出、反馈、控制等五个基本要素组成。
(3)管理信息由信息的采集、信息的传递、信息的储存、信息的加工、信息的维护和信息的使用等五个方面组成。
MIS包括计算机、网络通信设备等硬件成分,也包括操作系统、应用软件包等软件成分,并随着计算机技术和通信技术的迅速发展还会出现更多的内容。
1.1.2课题背景
目前社会上信息管理系统发展飞快,各个企事业单位都引入了信息管理软件来管理自己日益增长的各种信息,学生管理系统也是有了很大的发展,商业化的学生信息管理软件也不少.但本系统完全独立开发,力求使系统功能简洁明了,但功能齐全且易于操作
1.1.3目的背景与意义
1.1.3项目开发的目标
建立学生信息管理系统,采用计算机对学生信息进行管理,进一步提高办学效益和现代化水平。
帮助广大教师提高工作效率,实现学生信息管理工作流程的系统化、规范化和自动化。
1.1.4开发工具的选择
现在,市场上可以选购的应用开发产品很多,流行的也有数十种。
目前在我国市场上最为流行、使用最多、最为先进的可用作企业级开发工具的产品有:
Microsoft公司的Visual C++6.0,TurboC等。
本系统在Microsoft Visual C++6.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章需求分析
学籍管理系统应具有如下
5、能在屏幕上以列表的方式输出所有学生的信息。
2.1目标
(1)掌握和利用C语言进行程序设计的能力。
(2)理解和运用结构化程序设计的思想和方法。
(3)掌握开发一个小型实用系统的基本方法。
(4)学会调试一个较长程序的基本方法。
(5)掌握书写程序设计开发文档的能力(书写课程设计报告)。
2.2要求
(1)用C语言实现系统。
(2)利用结构体链表实现学生成绩的数据结构设计。
(3)系统具有增加、查询、插入、排序等基本功能。
(4)系统的各个功能模块要求用文件的形式实现。
(5)完成设计任务并书写课程设计报告。
(6)将学生成绩信息存在文件中。
2.3学生成绩管理系统的功能
3--显示所有学生信息
5--添加学生信息
6--删除学生信息
7--修改学生信息
8--保存学生信息文件
9--读入学生信息文件
0--退出
此项目主要考察我们对结构体、指针、文件的操作,以及C语言算法的掌握,所以完成此题目要求较高的设计能力,尤其是要有大局意识。
如何调试程序也非常重要,通过这个程序可学到以前调试程序没有的经验。
第3章概要设计
将学生成绩管理系统划分为以下几个模块
3.1主模块
功能概述:
1.提供系统菜单的显示功能
2.提供打开文件,并导入文件记录的功能
3.提供保存文件信息的功能
3.2添加学生信息
功能:
1.根据输入的相关信息,将学生信息添加到单向链表中
3.3显示学生信息
功能:
1.将链表中的所有信息完全显示
3.4排序学生信息
功能:
(排序分为升序和降序两种排序方式)
3.根据单科成绩进行排序
4.根据平均分进行排序
3.5查找学生信息
功能:
1.查询学生信息,直接返回找到的信息
2.修改学生信息,根据找到的学生信息,对其进行修改
3.删除学生信息,根据找到的相关学生信息,从链表中删除这条记录第4章详细设计与实现
程序设计中用到的学生信息结构体类型
在单独的头文件stu.";
定义shouldsave全局变量,判断是否需要保存资料(0为不保存,1为保存)
intshouldsave=0;
各相关函数的声明
externvoidappend_record();添加记录
externvoidshow_record();输出全部记录
externvoiddelete_record();删除记录
externvoidchange_record();更改记录
externvoidinquire_record();查询记录
externvoidsort_record();记录排序第5章流程图
图1.1
第6章源代码
6.1数据结构与函数声明的头文件
stu.";录入文件的数据格式
intshouldsave=0;判断是否需要保存资料的全局变量
externvoidappend_record();添加记录
externvoidshow_record();输出全部记录
externvoiddelete_record();删除记录
externvoidchange_record();更改记录
externvoidinquire_record();查询记录
externvoidsort_record();记录排序
#endif
6.2主控程序模块
#include"stu.(void)
{
voidsave();
voidmenu();
voidopenfile();用于打开文件,形成链表
intsel;
openfile();用于打开文件信息,输出到链表里
while
(1)
{
menu();
fflush(stdin);
scanf("%d",&sel);读取输入的sel
switch(sel)
{
case0:
save();break;
case1:
append_record();break;*增加学生*
case2:
show_record();break;*显示学生*
case3:
delete_record();break;*删除学生*
case4:
change_record();break;*修改学生*
case5:
inquire_record();break;*查询学生*
case6:
sort_record();break;排序
default:
printf("\n输入无效,请重新输入\n");break;
}
}
}
voidsave()
{
STU*p=NULL;
FILE*fp;
char*filename="E:
\\student.txt";
staticintcount=0;
chary_n;
if(shouldsave)
{
printf("\n资料已更改,是否保存?
(yorn)\n");
fflush(stdin);
scanf("%c",&y_n);
if(y_n!
='y'&&y_n!
='Y')
{
printf("\n.......%c........\n资料未保存\n",y_n);
释放空间
for(;");
return;
}else
{
p=(filename,"w"))==NULL)
{
printf("\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);
printf("保存完毕,共保存%d条记录,是否继续?
\n",count);
fflush(stdin);
scanf("%c",&y_n);
if(y_n=='y'||y_n=='Y')
return;
else
{
释放空间
for(;");
exit(0);
}
}
else
{
printf("\n你已退出系统,再见......\n");
exit(0);
}
}
voidmenu()
{
printf("\n****************************\n");
printf("1.添加学生\n");
printf("2.显示学生\n");
printf("3.删除学生\n");
printf("4.修改学生\n");
printf("5,查询学生\n");
printf("6.排序学生\n");
printf("0.退出\n");
printf("******************************\n");
printf("请选择");
}
voidopenfile()用于打开文件,形成链表
{
FILE*fp;
STU*p1=NULL,*p2=NULL;,*temp=NULL;
chary_n;
staticintcount=0;用于统计记录数
charu8IsFileNull;
fp=fopen("E:
\\student.txt","r");
if(fp==NULL)
{
printf("\n=====>提示:
文件还不存在,是否创建?
(yn)\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");
;
}
printf("\n=====>提示:
文件已经打开,正在导入记录......\n");
");
return;
}
rewind(fp);
while(!
feof(fp))
{
p1=(STU*)malloc(LEN);
fscanf(fp,"%s%s%c%d%d%d%d%d%f\n",p1->number,p1->name,&p1->sex,&p1->score[0],&p1->score[1],&p1->score[2],&p1->score[3],&p1->score[4],&p1->average);
p1->next=NULL;
p2->next=p1;
p2=p1;
count++;
}
fclose(fp);
printf("\n=====>提示:
记录导入完毕,共导入%d条记录.\n",count);
}
6.3添加学生模块
voidappend_record()
{
STU*p1=NULL,*p2=NULL;用P1来申请空间,P2来指向表尾
chary_n='y';
intcount=0;
for(p2==='y'||y_n=='Y')
{
p1=(STU*)malloc(LEN);
fflush(stdin);
scanf("%s%s%c%d%d%d%d%d",p1->number,p1->name,&(p1->sex),&p1->score[0],&p1->score[1],&p1->score[2],&p1->score[3],&p1->score[4]);
p1->average=(float)(p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3]+p1->score[4])5;
p1->next=NULL;
p2->next=p1;
p2=p1;
count++;
printf("\n添加完成,共添加%d条记录,是否继续添加?
YN\n",count);
shouldsave=1;
fflush(stdin);
scanf("%c",&y_n);
}
6.4显示学生模块
voidshow_record()
{
STU*p=NULL;
if(");
for(p=");
}
else
{
printf("3:
按性别排序\n");
printf("4:
按语文排序\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)
{
case1:
for(;");
for(q=");
scanf("%d",&sel);
if(pre;
if(sel==1)
{
scanf("%s",number);
for(pre=pre;
}
}
elseif(sel==2)
{
scanf("%s",name);
for(pre=pre;
}
}
}
returnpre;
}
voidinquire_record()查找记录
{
STU*p=find();
if((p==NULL)||(p->next==NULL))
{
pri