学生成绩管理系统 C语言 课程设计Word文件下载.docx

上传人:b****6 文档编号:19689474 上传时间:2023-01-08 格式:DOCX 页数:18 大小:82.76KB
下载 相关 举报
学生成绩管理系统 C语言 课程设计Word文件下载.docx_第1页
第1页 / 共18页
学生成绩管理系统 C语言 课程设计Word文件下载.docx_第2页
第2页 / 共18页
学生成绩管理系统 C语言 课程设计Word文件下载.docx_第3页
第3页 / 共18页
学生成绩管理系统 C语言 课程设计Word文件下载.docx_第4页
第4页 / 共18页
学生成绩管理系统 C语言 课程设计Word文件下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统 C语言 课程设计Word文件下载.docx

《学生成绩管理系统 C语言 课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统 C语言 课程设计Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统 C语言 课程设计Word文件下载.docx

做这么一个课程设计,一方面是为了检查我们一个学期以来的学习成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。

2需求分析

随着学校规模的发展扩大,学校要向着大型化,规模化发展,而对于学生信息管理系统有关的信息随之增加。

在这种情况下单靠人工来处理学生的信息不但显得大不从心,而且极容易出错。

因此,需要开发学生管理系统,该系统可以实现由计算机代替人工执行一系列复杂而繁琐的操作,使得学校管理人员可以轻松快捷的完成学生信息管理的任务。

2.1数据需求分析

本系统的主要数据是学生信息。

学生信息包括:

学生学号,姓名,性别,语文成绩,数学成绩,英语成绩,平均成绩,总成绩等。

2.2功能需求分析

本系统主要实现对学生成绩信息进行管理,需要实现以下几个方面的管理功能:

(1)创建学生信息:

录入学生的信息。

(2)查找学生信息:

按学号、姓名查找。

(3)删除学生信息;

按学号、姓名删除。

(4)更新学生信息:

找到要修改的学号,修改相应信息。

(5)排序学生信息:

按某科目或者总分排序。

(6)统计学生信息:

统计及格和优秀人数。

(7)插入学生信息:

插入一个新的学生。

源代码

#include<

stdio.h>

/*引用库函数*/

stdlib.h>

ctype.h>

string.h>

typedefstruct/*定义结构体数组*/

{

charnum[10];

/*学号*/

charname[20];

/*姓名*/

intscore;

/*成绩*/

}Student;

Studentstu[80];

/*结构体数组变量*/

intmenu_select()/*菜单函数*/

charc;

do

{

system("

cls"

);

/*运行前清屏*/

printf("

\t\t欢迎使用学生信息管理系统\n"

\t\t*****************************************\n"

\t\t****学生管理信息系统****\n"

/*菜单选择*/

\t\t|1.请输入记录|\n"

\t\t|2.显示所有记录|\n"

\t\t|3.排序|\n"

\t\t|4.添加记录|\n"

\t\t|5.删除记录|\n"

\t\t|6.查询|\n"

\t\t|7.统计系统信息|\n"

\t\t|8.从正文中添加记录|\n"

\t\t|9.将所有记录存储到文件中|\n"

\t\t|0.退出程序|\n"

\t\t请选择使用选项:

(0-9):

"

c=getchar();

/*读入选择*/

}while(c<

'

0'

||c>

9'

return(c-'

/*返回选择*/

}

intInput(Studentstud[],intn)/*输入若干条记录*/

{

inti=0;

charsign,x[10];

/*x[10]为清除多余的数据所用*/

while(sign!

='

n'

&

sign!

N'

)/*判断*/

\t\t\t请输入学生证号:

/*交互输入*/

scanf("

\t\t\t%s"

stud[n+i].num);

\t\t\t请输入学生姓名:

stud[n+i].name);

\t\t\t请输入学生成绩:

\t\t\t%d"

&

stud[n+i].score);

gets(x);

/*清除多余的输入*/

\t\t\t是否继续输入记录?

(Y/N)"

\t\t\t%c"

sign);

/*输入判断*/

i++;

}

return(n+i);

voidDisplay(Studentstud[],intn)/*显示所有记录*/

inti;

printf("

\t\t\t-----------------------------------\n"

/*格式头*/

\t\t\t学生证号姓名成绩\n"

for(i=1;

i<

n+1;

i++)/*循环输入*/

\t\t\t%-16s%-15s%d\n"

stud[i-1].num,stud[i-1].name,stud[i-1].score);

if(i>

1&

i%10==0)/*每十个暂停*/

{

printf("

/*格式*/

\t\t\t"

system("

pause"

}

system("

voidSort_by_score(Studentstud[],intn)/*按成绩排序*/

inti,j,*p,*q,s;

chart[10];

for(i=0;

n-1;

i++)/*冒泡法排序*/

for(j=0;

j<

n-1-i;

j++)

if(stud[j].score<

stud[j+1].score)

{

strcpy(t,stud[j+1].num);

strcpy(stud[j+1].num,stud[j].num);

strcpy(stud[j].num,t);

strcpy(t,stud[j+1].name);

strcpy(stud[j+1].name,stud[j].name);

strcpy(stud[j].name,t);

p=&

stud[j+1].score;

q=&

stud[j].score;

s=*p;

*p=*q;

*q=s;

}

intInsert_a_record(Studentstud[],intn)/*插入一条记录*/

charx[10];

/*清除多余输入所用*/

\t\t\t学生证号:

/*交互式输入*/

scanf("

stud[n].num);

\t\t\t学生姓名:

stud[n].name);

\t\t\t学生成绩:

stud[n].score);

gets(x);

n++;

Sort_by_score(stud,n);

\t\t\t添加成功!

\n"

/*返回成功信息*/

return(n);

intDelete_a_record(Studentstud[],intn)/*按姓名查找,删除一条记录*/

chars[20];

inti=0,j;

\t\t\t请输入该学生姓名:

/*交互式问寻*/

%s"

s);

while(strcmp(stud[i].name,s)!

=0&

n)i++;

/*查找判断*/

if(i==n)

\t\t\t无法找到该信息!

/*返回失败信息*/

return(n);

for(j=i;

j++)/*删除操作*/

strcpy(stud[j].num,stud[j+1].num);

strcpy(stud[j].name,stud[j+1].name);

stud[j].score=stud[j+1].score;

\t\t\t删除成功!

return(n-1);

voidQuery_a_record(Studentstud[],intn)/*查找并显示一个记录*/

\t\t\t请输入要查询的学生姓名:

{

/*输入失败信息*/

return;

\t\t\t该学生学生证号:

%s\n"

stud[i].num);

/*输出该学生信息*/

\t\t\t该学生的成绩:

%d\n"

stud[i].score);

voidStatistic(Studentstud[],intn)/*新增功能,输出统计信息*/

inti,j=0,k=0,sum=0,flag,m=0;

floataver;

/*成绩平均值*/

n;

i++)/*循环输入判断*/

sum+=stud[i].score;

if(stud[j].score>

stud[i].score)j=i;

if(stud[k].score<

stud[i].score)k=i;

aver=1.0*sum/n;

\t\t\t总计%d记录.\n"

n);

/*总共记录数*/

\t\t\t最低学生成绩:

/*最低分*/

%s姓名:

%s成绩:

stud[j].num,stud[j].name,stud[j].score);

\t\t\t最高学生成绩:

/*最高分*/

stud[k].num,stud[k].name,stud[k].score);

\t\t\t平均成绩:

%5.2f\n"

aver);

/*平均分*/

\n\t\t\t挂科学生信息:

i++)

flag=0;

if(stud[i].score<

60)

flag=1;

++m;

}

if(flag==1)

stud[i].num,stud

[i].name,stud[i].score);

}

if(m)printf("

\t\t\t挂科人数为:

m);

elseprintf("

\t\t\t无学生挂科!

intAddfromText(Studentstud[],intn)/*从文件中读入数据*/

inti=0,num;

FILE*fp;

/*定义文件指针*/

charfilename[20];

/*定义文件名*/

\t\t\t请输入文件名:

filename);

/*输入文件名*/

if((fp=fopen(filename,"

rb"

))==NULL)/*打开文件*/

\t\t\t无法打开文件!

/*打开失败信息*/

fscanf(fp,"

%d"

num);

/*读入总记录量*/

while(i<

num)/*循环读入数据*/

fscanf(fp,"

%s%s%d"

stud[n+i].num,stud[n+i].name,&

n+=num;

fclose(fp);

/*关闭文件*/

\t\t\t成功!

voidWritetoText(Studentstud[],intn)/*将所有记录写入文件*/

\t\t\t从正文中添加记录:

w"

fprintf(fp,"

/*循环写入数据*/

n)

fprintf(fp,"

%-16s%-15s%d\n"

stud[i].num,stud[i].name,stud[i].score);

成功!

voidmain()/*主函数*/

intn=0;

for(;

;

switch(menu_select())/*选择判断*/

{

case1:

\t\t\t输入记录:

/*输入若干条记录*/

n=Input(stu,n);

break;

case2:

\t\t\t显示所有记录:

/*显示所有记录*/

Display(stu,n);

break;

case3:

\t\t\t排序\n"

Sort_by_score(stu,n);

/*按学号排序*/

\t\t\t排序成功!

case4:

\t\t\t添加记录\n"

n=Insert_a_record(stu,n);

/*插入一条记录*/

case5:

\t\t\t删除记录\n"

n=Delete_a_record(stu,n);

/*按姓名查找,删除一条记录*/

case6:

\t\t\t查询\n"

Query_a_record(stu,n);

/*查找并显示一个记录*/

case7:

\n\t\t\t统计结果:

Statistic(stu,n);

/*新增功能,输出统计信息*/

case8:

n=AddfromText(stu,n);

case9:

\t\t\t将所有记录存储到文件中\n"

WritetoText(stu,n);

case0:

\t\t\t谢谢使用,再见!

/*结束程序*/

exit(0);

}

3系统总体设计

3.1系统模块划分

设计该项目可以简化学生信息管理的流程,使管理更加简便、清晰。

本程序包含输入记录、显示记录、按成绩排序、插入记录、删除记录(按姓名查找并删除)、查找并显示记录(按姓名查找)、输出系统信息等各种学生管理系统所需功能,基本能够满足管理需求。

本系统主要是对学生信息的管理,包括了有关学生信息的创建、查询、删除、更新、排序、统计、插入等功能。

整个系统分为以下几个模块。

设计该程序是为了实现更简洁的学生信息管理,满足管理学生学号、姓名和成绩等信息的要求。

系统具体功能如下:

(1)输入记录——输入的记录包括:

学生学生证号、姓名、成绩;

(2)显示记录——显示所有以上输入记录或根据成绩排序后的记录;

(3)按成绩排序——根据学生成绩由大到小排序;

(4)插入一条记录——插入一条包含学生信息的记录;

(5)删除一条记录——查找姓名,并删除该学生记录;

(6)查找——按照学生姓名查找并显示该学生信息;

(7)输出统计信息——输出包含:

记录总数、最高分、最低分、平均分和挂科学生信息等;

(8)读取信息——将保存与VC同一个盘的文件中的学生记录读取出来;

(9)存储信息——将学生信息保存指定文件中;

(10)退出程序。

3.2系统模块结构图

根据系统功能设计,对应的系统模块结构图如图1所示:

3.3程序结构

该系统首先定义了包含:

学生学号、姓名、成绩的结构体。

然后定义了菜单函数供用户选择,紧接着定义了实现以上各功能的子函数。

最后是主函数,主函数通过switch语句实现对各子函数的调用。

4系统详细设计

4.1数据描述——结构体类型定义说明

说明:

该程序定义了一个结构体,结构体变量名为student,结构体数组包含:

(char型)学号、(char型)学生姓名以及(int型)学生成绩。

该结构体如下:

charnum[10];

charname[20];

intscore;

/*结构体数组变量*/

4.2函数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1