C语言班级学生成绩管理方案_第1页
C语言班级学生成绩管理方案_第2页
C语言班级学生成绩管理方案_第3页
C语言班级学生成绩管理方案_第4页
C语言班级学生成绩管理方案_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

课程设计汇报

C语言程序设计课程设计

专业电气工程及其自动化

班级

姓名

学号

指导教师

年月

新保源与劭力工程等觉钵程钺4t总务零

课程名称:c语言程序设计课程设计指导教师(签名):

班级:_姓名学号:

一、课程设计题目

班级成绩管理系统

二、课程设计使用的原始资料(数据)及设计技术规定:

安装有windows操作系统电脑

VisualC++6.0

二、课程设计的目的

学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语

和政治)等

三、课程设计的重要内容和规定(包括原始数据、技术参数、设计规定、工作量

规定等)

1.输入功能:可以一次完毕无数条信息的输入。

2.输出功能:能按班级输出学生的成绩单。

3.修改功能:完毕对单个学生成绩H勺修改。

4.查找功能:完毕对单个学生信息查找,并显示。

5.排序功能:按学生成绩进行排序,并显示。

四、工作进度安排

7月8日:选择课程设计题目,确定分组

7月9日:查找资料.,编辑程序

7月10日:查找资料,编辑程序

7月11日:查找资料,修改程序

7月12日:审核和打分

五、重要参照文献

[1]谭浩强.《C语言程序设计》(第二版).北京:清华大学出版社,2023.

[2]谭浩强《C程序设计程序设计学习辅导》.北京:清华大学出版社,2023.

审核同意意见

系主任(签字)年月日

指导教师评语及成绩评估表

设计过程设计汇报小组答辩总成绩

(40)(50)(10)(100)

成绩

指导教师签字:

年月日

目录

一.引言.........................................................-1-

1.1设计目的..........................................-1-

1.2意义...............................................-1-

L3内容...............................................-2-

重要任务...........................................-2-

二.重要功能和功能..............................................-3-

2.1重要功能...........................................-3-

2.2规定...............................................-4-

三.系统的数据需求及性能分析....................................-4-

3.1数据需求.........................................-4-

3.2系统H勺性能分析....................................-5-

四.输入输出规定...............................................-5-

五.整体框架构造...............................................-6-

六.学生成绩业务管理图.........................................-7

七.系统概要设计..................................................-9

7.1程序时模块构成......................................-9-

7.2学生信息构造数组...................................-9-

7.3各个程序的重要功能简介:........................-10-

八.系统详细设计................................................-11-

8.1函数简介..........................................-11-

九.调试与测试.................................................-13-

9.1系统调试.........................................-13-

9.2系统测试..........................................-13-

十.总结........................................................-20-

参照文献........................................................-22-

附录源代码....................................................-23

一・引言

1.1设计目的

1.学生成绩的录入

2.能记录学生的成绩,求学生日勺总分及平均分

3.能查询单个学生成绩

4.能修改单个学生信息

1.2意义

伴随经济日勺迅速发展,科技日勺日益普及。目前我国日勺信息数字化

工作也进入一种全新发展时期,尤其是高校日勺信息化建设已进入了全

面日勺发展阶段,诸多高校充足地认识到,信息化建设己经成为了高校

提高自身管理水平、提高综合竞争实力的重要手段。在高校,多种信

息管理系统层出不穷。通过本系统,可以实现对学生成绩的有效管理,

减少教务人员、教师日勺工作量,该系统可以很好日勺满足学校教学、管

理方面的规定。为教务人员、教师提供学生成绩管理系统,以轻松实

现学生成绩管理。系统化的成绩管理可以减少教务人员及教师由于工

作量大而出现错误,为学校减少不必要日勺人力、物力、财力,便于学

生成绩的增长、删除、修改、查询。

1.3内容

对一种有N个学生的班级,每个学生有四门课程。该系统实现

对班级成绩的录入、显示、修改、排序、保留等操作出J管理。

1.4重要任务

1.能按完毕对学生成绩W、J录入、修改。

2.能记录学生的成绩,求学生口勺总分及平均分。

3.能查询学生各科成绩。

二.重要功能和功能

2.1重要功能

1.学生查询功能:为了以便学生查找成绩等信息,将所有信息按

照需要进行分类。这样学生就能很以便日勺找到自己所需要的信息。

2.管理员查询功能:管理员可以通过条件选择查询所有信息,并

进行排序。

3.添加功能:管理员可以输入学生成绩等有关信息。

4.修改功能:输入密码后管理员可以对数据库中的信息进行修改,

系统可以通过管理员时给出H勺条件查找出所要修改H勺信息,对修改后

的信息进行保留。

5.记录功能:管理员可以通过此功能对信息进行记录。

2.2规定

使用二进制文献方式存储数据,系统以菜单方式工作学生成绩

信息包括:学号,班别,姓名,四门课程成绩(语文、数学、英语和

政治)等。规定使用二进制文献方式存储数据,系统以菜单方式工作,

实现对学生成绩日勺录入,修改,记录,排序,查询,输出等功能。

三.系统的数据需求及性能分析

3.1数据需求

通过查阅资料以及对程序口勺理解,总结出顾客对数据口勺需求如下:

1.学生信息:

包括:学号、学生姓名等信息。

2.课程信息:

包括:课程编号、课程名称等。

3.基本数据维护功能:

(1)录入学生W、J成绩信息。

(2)显示学生的成绩信息。

(3)保留学生日勺成绩信息。

(4)排序学生的成绩信息。

(5)记录学生的成绩信息。

3.2系统的性能分析

1.系统口勺高速性、稳定性、安全性。

2.系统人机界面友好,易学易用。

3.系统维护成本较低。

四.输入输出规定

在菜单项选择项中1・7,选择功能项,进行对应选项的函数调用。

1.每一条记录包括一种学生日勺学号、姓名、4门成绩、平均成绩;

2.输入功能:输入学生的I基本信息存入磁盘文献中;

3.显示功能:输出已存盘日勺学生信息;

4.排序功能:输出顾客所要选择科目的提问,输入科目后输出该

科目一排好的学生成绩,并按学生平均成绩进行排序;

5.插入功能:插入新的信息;

6.修改功能,输入密码.错误输出与否继续输入密码.对口勺则逐一输

出与否想要修改学生信息;

7.保留功能:将学生记录保留在任何自定义的文献中。

五.整体框架构造

初梦[化录1示拌序入改[留退出

图1整体框架构造图

六.学生成绩业务管理图

---------]双聒修

/f新数改或添一/成绩数//记录/

/输出/

图2学生成绩业务管理图

七.系统概要设计

7.1程序的模块构成

第一种模块:先定义好某些必要的全局变量以及调用H勺函数和构

造体数组。

第二个模块:设计一种菜单函数menu。;实现能供顾客选择功能

项。

第三个模块:用enter。函数实现成绩的输入。

第四个模块:用save。函数实现成绩时保留。

第五个模块:用print。函数实现成绩输出。

第六个模块:用cort()函数实现成绩排序功能。

第七个模块:用modify。函数实现成绩修改功能。

第八个模块:用count。函数实现成绩记录功能。

main函数实现总出J控制台界面,调用voidenter(),voidcortQ,

voidmodifyO,voidcount(),print(),voidsave(),函数实现多种顾客

功能规定。

7.2学生信息构造数组

structstu

charname[20];

intnum;

intscore[MJ;

);

7.3各个程序的重要功能简介:

1.为便于顾客使用,先定义一种常数N表达人数,学生信息的构

造体数组,以及调用功能项的函数。

2.voidmain():运用swithch。实现各函数日勺调用,系统根据输

入日勺数字选项来调用对应日勺函数。

3.voidEnter():用来执行学生成绩记录口勺输入。

4.voidPrint():显示所有学生的I信息。

5.voidsave():这是一种不返回值日勺有参函数,形参为“链表头

的指针”,可以把学生记录保留在电脑上由自己任意命名的二进制文

献。

6.voidCortO:要排序的科目的J序号,用选择排序法实现函数

学生成绩的排序。

7.voidModify():需要通过密码验证,进入菜单后可实现对学

生资料的修改。

8.voidCount():可以显示学生日勺平均成绩以及科目最高分。

八.系统详细设计

8.1函数简介

1.主函数main()运用swithch。实现各函数的调用,系统根据输入

的数字选项来调用对应的函数。重要实现“功能选择'’的界面,在这个

界面里有显示系统口勺九大功能,根据每个功能前面口勺序号进行选择。

等执行完每一种函数功能后,按任一键回到主界面也要通过这个函数

来实现!

2.voidEnter。函数用scanf依次输入学生信息,在输入多门成绩

成绩时,用for循环来实现,结尾调用save。函数保留。

3.voidPrint()函数为了使界面美观对学生成绩用%5d输出,且

用换行实现,学生信息整洁排列。

4.voidCort()函数先定义choice1,输出想要排序的I科目日勺序号,

用选择排序法实现函数学生成绩的排序。

5.voidModify()函数先定义好一种密码以及flag=0;假如输入

的I密码错误则flag=l,用do..while实现与否重新输入密码,密码精确

后调用modi()函数,实现修改功能。

6.voidCount()函数用menul函数实现一种菜单功能。用switch

实现,顾客选择想执行日勺功能,从而调用Showl()Show2()Show3

()。

图3构造图

8.2记录函数流程

九,调试与测试

9.1系统调试

1.在enter。函数中对学生成绩的J输入月scanf(u%d,\s);当输入一

门成绩后就会跳回,使接下来日勺程序无法运行,改为for(j=l;j<=M;j十十)

scanf("%d”,&s[i].score[]);将错误处理。

2.在enter函数中,输入姓名用scanf("%s”,&s[i].name);错误,在

scanf函数中日勺输入项假如是字符数组名代表该数组出J起始地址.则应

改为scanf("%d”,s[i].name)。

3.在运行print()函数时,第四门课显示出来的分数并非输入项:

错误,在定义时将户1,应改为户0。

4.在count。函数中,show3();输出的I人数比实际的I多一人,由于

b++在循环结束之后会自增一次,则比实际日勺大一。

9.2系统测试

1.运行时进入主界面,系统根据输入的数字选项来调用对应的函

数。重要实现“功能选择''的界面,在这个界面里有显示系统日勺七大功

能,根据每个功能前面的序号进行选择。如下为该界面;

SI

1

2

3成绩保

7

学生人数级NUH课程数竽9语文i英语2政治3

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXMXXXXMXXXXMXXXXMXXXXXXXXMXX

图5:主菜单

2.进行学生成绩输入时按照提醒选择1键,录入第一种学员信息。

完毕后屏幕下方出现提醒“与否继续输入?(Y\N)”,此时,按键

盘上的N键则为结束输入,返回主菜单;若按Y键,则继续输入第

二个学生信息,依比类推。

图6:成绩录入

3.当规定显示学生成绩时输入2键,按下回车键即出现如下界面

图中所显示的即为刚刚输入H勺学生成绩:

c:"D:\PrograBFiles\licrosoftVisualStudio\IyProjects\dfzdf\Debug\dfzd...□

6成绯统计

7退出系统

学生人数级NUH课程数学0语文1英语2政治3

1

hoic学e-7:2

6口

655

88五65

al数

6688菊

28五

92治

b2数

6996

9885

C3

刎好熊

-一

1绩录△

2成

绩显

3成

绩保

4甚

绩重

5成

绩统

6成

电系

7退

的翱

学生人数级课程类吾文央语政治

NUNjI123

choicel-7:

图7成绩显示

4.选择保留成绩是选择3,按下回车则提醒输入文献名则由图所

示:

j回

3姒s

4s

5成t

6

?第t

语2

学生人数级NUM英语3政治4

noicel-7:3

nterthefilenane:3

ilewriteerror

iT舜建i

1绩

2绩

^绩

31

45绩

5成

6.

7玄

语34

学生人数级NUM

XXXXXX1

khoicel-7:

图8:成绩保留

5.当执行对学生成绩进行排序时,输入4键,会出现一种选择界

面让所要排序日勺科目,当输入一种数字时及执行对该科目成绩的排序

命令,详细如下截图:

c:*D:\PrograaFiles\licrosoftVisualStudio\lyProjects\dfzdf\Debug\dfxd...:

°□X

6成象统计

?退出系统

学生人数级NUM课程数学。语文1英语2政治3

-7:4

choicesubject1-4:

Thesortednumbers:

658592

及靖

成X

退

课程

语文1英语2政治3

图9:成绩排序

6.改时需要进行密码验证当密码错误时不能进行该操作,只有输

入对H勺的密码才能运行,运行成果如下图:

:\Progra>Files\licrosoftVisualStudio\lyProjects\dfzdf\Debug\dfzd...nix

-7:4

choicesubject1-4:

3

Thesortednumbers:

658592

旗薜

狂V

1雷

2成

3成

4祗

5成

主u

6成e

7退q

q

政治

英语

W数23

学生人数级NUM

choicel-7:5

[pleaseenteryoucode:

1234a

[pleaseinputmodifyNo:1

podify<y/n>?

Lrl

图1():成绩修改

7.当需要进行成绩记录时,输入数字6,按回车即可出现一种选

择界面:输入数字1即显示每科成绩最高的学生信息:输入数字2即

显示每科H勺平均成绩;输入数字3则退出该功能的运行。截图如下:

图11:成绩记录

十.总结

在这为期一周内时间内,通过我们小组各组员之间的互相讨论和

合作,我们完毕了班级成绩管理系统系统口勺程序设计。

虽然在这学期中,我们已经学习了《C语言程序设计》这门课,

不过我所学的知识最多也就是在做作业H勺时候才会用到,平时没有什

么练习的机会,这次口勺课程设计是我第一次通过自己构思,和同学讨

论并且不停查阅资料来设计一项程序。这次设计,不仅巩固了我此前

所学口勺知识,还让我对C语言有了更深一步口勺理解,掌握了更多的

技巧和技能。

C语言是计算机程序设计日勺重要理论基础,在我们后来日勺学习和

工作中均有着十分重要的地位。要学好这种语言,仅仅学习书本上日勺

知识是不够的,还要常常自己动手,有较强的实践能力。只有多动手,

常常编写程序,才能发现我们学习上的漏洞和自己的局限性,并在实

践中处理这些问题,不停提高自己转化知识的能力。

在我们小组有处理不了的问题时,我们会积极查阅有关的资料,

或向其他同学问询,这不仅丰富了我们的知识,还增进了我们同学之

间的友谊。

这次设计中,我们日勺收获尚有就是学会了用流程图来体现自己的I

想法,并根据流程图来逐渐实现程序的功能。在这次课程设计中,我

们首先对系统日勺整体功能进行了构思、,然后用构造化分析措施进行分

析,将整个系统清晰的划分为几种模块,再根据每个模块日勺功能编写

代码。并且尽量时将模块细分,最终在进行函数日勺调用。我们在函数

的I编写过程中,我们不仅用到了for循环、while循环和switch语句,

还用到了函数之间的调用(包括递归调用)。由于我们是分工编写代

码,最终需要将每个人的代码放到一起进行调试。由于我们每个人写

的函数的思想不都同样,因此在调试的过程中也碰到了困难,但通过

我们耐心的修改,终于功夫不负有心人,我们成功了!

在参照书上,我们不仅参照了谭浩强主编的第二版《C语言程序

设计》进行参照。

当然,我们的程序尚有某些不完善的地方,例如说,当输入日勺数

据不符合我们定义F、J数据KJ格式W、J时候,程序会出现某些错误,有时

会出现主菜单出J死循环;在一次程序运行中,只能行使一种权限,要

想再行使另一种权限,就只能退出程序,然后再运行程序。

一周的课程设计即将结束,时间虽短,不过我收获了诸多。最终,

谢谢老师和同学们内指导,更要感谢我们小组组员之间的合作与交流。

参照文献

[1]谭浩强.《C语言程序设计》(第二版).北京:清华大学出版社,2023.

[2]谭浩强《C程序设计程序设计学习辅导》.北京:清华大学出版社,2023.

附录源代码

#include<stdio.h>/*1/0函数*/

#include<string.h>/*字符串函数*/

#defineM4/*课程数*/

#defineNUM3/*人数*/

#dcfineNULLO

#includc<stdio.h>

#include<string.h>

intavar[M];

structstu

charname[20];

intnum;

intscore[M];

);

voidenter(structstus[],intn);

voidprint(structstus[],intn);

voidsave(structstus[],intn);

voidsort(structstus[],intn);

voidmodify(structstus[].intn);

voidcount(struc:stus[],intn);

intmcnu();

voidmain()

voidclrscr();

structsluslu(lenl[NUM];

for(二)

swi-ch(menuo)

case-:cn-cr(s-udcnLNUM)b-rcak;

case2:prm【(scdent.NUM)crrea”

case3:save(s-udenLNUM)a-rear

case4:sor-(s-uden.nNUM);break」

case5:modify(scdcnLNUM)“brcar

case6nount(s【ude=.NUM)&rear

case7:recm"

3--menu。

5--choice"

**************************

prin三--\n睹

printf("1成绩录入\n");

printf("2成绩显示\n");

printf("3成绩保留\n"):

printf("4成绩排序\n”);

printf("5成绩修改\n");

printf("6成绩记录\n");

printf("7退出系统\n");

printf("学生人数级NUM课程数学0语文1英语2政治3\n");

do

printfC,Xnchoice1-7:");

scanf("%d",&choice);

)

whilc(choicc<l||choicc>7);

returnchoice:

voiden(er(struc(stus[],intn)

charc;

inti=0;

intj;

do

printf("pleaseenterthemessage:\nn);

gelcharO;

printf("entername:\n");

scanf("%s",s[i|.namc);

prin(f("enlernum:\n");

scanf("%d".&sfi].num);

printf("cntcrscore:\n");

for(j=0;j<M;j++)

scanf("%d",&sli].scorc(j]);

prinlf("按Y继续录入,按N结束录入!)

getchar();

scanf("%c",&c);

if(c!='Y'&&c!=y)

break;

++i;

}whilc(i!=n);

)

voidsave(structstus[],intn)

(

FILE*fp;

inti;

charsave[20];

printf("cntcrthefilename:");

scanf("%su,savc);/*输入选择项*/

if((fp=fbpen("stu-list'\"wb"))==NULL)

printf("cannotopenfile\n");

return;

else

for(i=0;i<n;i++)

if(fwrite(&s[i],sizeof(structstu)J,fp)!=l);

printf("filewriteeiror\n");

fclose(fp);

printf(',success\n,');

voidprint(structs(us[],intn)

inti,j;

for(i=0;i<n;i++)

(

printf("数学语文英语政治\n”);

printf(,'%s",s[i].name);

printf("%d",s[i].num);

for(j=0;j<M;j++)

printf("%5d'\s[i].score(j]);

printf("\n");

)

I

voidsort(structslus[],intn)/*排序列

{

intij,min,temp,k;

printf("pleasechoicesubjectl-4:\n");

scanf("%d",&k);

for(i=0;i<n-l;i++)

min=i;

for(j=i+l;j<n;j++)

if(s[min].score[k]>s[j].score[k])

tcmp=s|i

温馨提示

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

评论

0/150

提交评论