《C语言程序设计》大作业.docx

上传人:b****7 文档编号:10252148 上传时间:2023-02-09 格式:DOCX 页数:43 大小:206.01KB
下载 相关 举报
《C语言程序设计》大作业.docx_第1页
第1页 / 共43页
《C语言程序设计》大作业.docx_第2页
第2页 / 共43页
《C语言程序设计》大作业.docx_第3页
第3页 / 共43页
《C语言程序设计》大作业.docx_第4页
第4页 / 共43页
《C语言程序设计》大作业.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

《C语言程序设计》大作业.docx

《《C语言程序设计》大作业.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》大作业.docx(43页珍藏版)》请在冰豆网上搜索。

《C语言程序设计》大作业.docx

《C语言程序设计》大作业

南昌大学软件学院

C语言程序设计工程实训

 

 

班级:

09软件技术

(2)班

学号:

**********

******

********

2010年12月10日

系统说明书

1.问题描述:

该程序包内容包括以下的模块,均用子函数完成:

(1)主菜单

(2)输入若干条记录并保存文件(指学生的信息)

(3)学生信息录入、修改、删除、查询、存储。

(4)学生信息的浏览及排序(冒泡排序算法)。

(5)学生成绩的录入、修改。

(6)统计及格和优秀人数

(7)退出系统

2.程序设计和程序流程图:

解决方案:

 

主函数流程图:

 

各部分功能的流程图:

录入学生成绩流程图:

 

统计功能流程图如图3所示:

 

图3统计模块流程图

 

冒泡排序流程图:

排序学生信息流程图:

删除学生成绩信息流程图:

3.系统的基本功能(主要数据和函数功能描述):

charxh[15];//以字符串数组形式存储学生学号

charname[25]//以字符串数组形式存储学生姓名

charsex[5];//性别floatsxcj;//数学成绩

floatyycj;//英语成绩floatCyycj;//C语言成绩

floatave;//平均成绩floatsum;//总成绩

#defineN4//宏定义学生#defineMAX60//学生最大个数

intnCOUNT=0;//记录当前学生个数structstudent//定义结构体学生

intScoreNew()//录入学生成绩intaverage()//求平均数

intxsxscj()//显示输入学生信息、将学生打印到屏幕上

intxsxsxx()//显示学生信息intxhcjpx()//按学生学号排序学生信息intsxcjpx()按数学成绩排序学生信息intyycjpx()按英语成绩排序学生信息

intCyypx()//按C语言成绩排序学生信息intzcjpx()按总成绩排序学生信息

intpxxsxx()//排序学生信息intaxhcx()//按学号查询

intaxmcx()//按姓名查询intSearchStud()//查询学生成绩信息

intzjxsxx()//增加学生信息intxgxsxx()//修改学生信息

intscxsxx()//删除学生信息intgxxscj()//更新学生信息

inttjxscj()//统计学生成绩intsave()//保存到文件

((fp=fopen("stu_list.txt","wb"))==NULL)//以只读方式打开文件stu_list.txt

(fwrite(&str[i],sizeof(structstudent),1,fp)!

=1)//创建文件并以二进制形式打开

intxswj()//显示文件信息

intmain()//主函数mainmemu

4.拟采用开发平台:

VisualC++,BorlandC++等。

实验分析与结论:

成绩录入函数按次序录入系统中现存所有学生的所有科目上,每录入一个学生的成绩,首先显示其姓名和学号,然后依次输入英语、高数和C语言成绩。

各科成绩初始化为0.

修改学生信息函数调用函数对需要修改信息的学生进行查找,找到后返回该学生所对应的下标值n,将用户录入的新值存入数组中.

删除学生信息函数调用SeachStud()函数对需要删除信息的学生进行查找,找到后返回该学生所对应的下标值n,用数组中第n个后面的元素依次向前覆盖,学生总数减1,即nCount-1。

需要强调的是,数组是静态存储分配方式,在声明时,系统已经给数组分配了其标注的全部内在空间,而且直到本段代码运行结束都不会改变。

所以,不可能将数组中不用的元素所占用的空间释放掉。

本函数从后向前覆盖,删除学生信息,由于每个数组的读写的循环次数都不是以其长度为准的。

而是以nCount值的大小来进行的,因此nCount—可以保证不会读到最后一个无效数据。

收获与体会:

学生成绩档案管理系统具备了数据的输入和成绩分类分析的功能。

它能进行单独的一次数据处理。

学习过循环结构以后,结合所学的知识点,增加系统重复处理数据的能力,既检验对知识的实际应用能力,又把系统的功能进一步充实。

刚开始很难下手,请教同学和老师后慢慢入手。

渐渐地写点程序。

本次对学生成绩档案管理系统编写程序让我更加熟悉宏定义,函数调用,数组,排序等运用以及switch语句,if语句,while语句。

这次编程让我对C语言的综合编程能力的掌握,培养学生的逻辑思维能力,最终达到学生能完全独立编制、调试程序的能力。

程序代码:

/*

purpose:

结构体输出

author:

凌风叶子Wuchengzeng

created:

2010/11/1111:

11:

11

*/

#include

#include

#include

#include

#include

#include

//#include

#defineN4//宏定义学生

#defineMAX60//学生最大个数

intnCOUNT=0;//记录当前学生个数

intp;

//intsave();

//intduquwj();

//intxiugaiwj();

//charcStudNo[60][13]={"8001509060","8001509061"};

//charcStudName[80][13]={"承增","叶子"};

 

structstudent

{

charxh[15];//学号

charname[25];//姓名

charsex[5];//性别

floatsxcj;//数学成绩

floatyycj;//英语成绩

floatCyycj;//C语言成绩

floatave;//平均成绩

floatsum;//总成绩

}

str[MAX];

//structstudent[MAX];

 

intScoreNew()//录入学生成绩

{

intaverage();//求平均数

inti=0;

charch;

system("cls");

do{

printf("\t\t设计者:

吴承增班级:

软件技术092班\n");

printf("\t\t================================================\n");

printf("\t\t--------------录入学生信息---------------\n");

printf("\t\t================================================\n");

printf("\t\t请录入第%d学生信息\n",i+1);

printf("\n\t\t输入学生学号:

");

scanf("%s",str[i].xh);

fflush(stdin);

printf("\n\t\t输入学生姓名:

");

fflush(stdin);

scanf("%s",str[i].name);

printf("\n\t\t输入学生性别:

");

fflush(stdin);

scanf("%s",str[i].sex);

printf("\n\t\t输入学生数学成绩:

");

fflush(stdin);

scanf("%f",&str[i].sxcj);

printf("\n\t\t输入学生英语成绩:

");

fflush(stdin);

scanf("%f",&str[i].yycj);

printf("\n\t\t输入学生C语言成绩:

");

fflush(stdin);

scanf("%f",&str[i].Cyycj);

i++;

nCOUNT=i;

printf("\n\t\t是否继续输入?

(Y/N)");

fflush(stdin);

ch=getch();

system("cls");

}

while(ch!

='n'&&ch!

='N');

average();

printf("\n");

system("cls");

return0;

}

 

intaverage()//求平均数

{

inti;

for(i=0;i

{

str[i].sum=str[i].sxcj+str[i].yycj+str[i].Cyycj;

str[i].ave=str[i].sum/3;

}

return0;

}

//将学生打印到屏幕上

intxsxscj()//显示输入学生信息

{

inti;

average();

system("cls");

printf("\t\t设计者:

吴承增班级:

软件技术092班\n");

printf("\t\t================================================\n");

printf("\t\t------------显示学生成绩信息-----------\n");

printf("\t\t================================================\n");

printf("----------------------------------------------------------------------------\n");

printf("学号姓名性别数学英语C语言总成绩平均成绩\n");

printf("----------------------------------------------------------------------------\n");

for(i=0;i

{

printf("%s",str[i].xh);

printf("\t%s",str[i].name);

printf("\t%s",str[i].sex);

printf("\t%.1f",str[i].sxcj);

printf("\t%.1f",str[i].yycj);

printf("\t%.1f",str[i].Cyycj);

printf("\t%.1f",str[i].sum);

printf("\t%.1f\n",str[i].ave);

}

fflush(stdin);

system("pause");

system("cls");

return0;

}

intxsxsxx()//显示学生信息

{

intxswj();

intq;

system("cls");

printf("\t\t设计者:

吴承增班级:

软件技术092班\n");

printf("\t\t================================================\n");

printf("\t\t--------------显示学生信息---------------\n");

printf("\t\t================================================\n");

printf("\t\t--------------显示输入学生信息---------------1\n");

printf("\t\t--------------显示文件学生信息---------------2\n");

printf("\t\t--------------按0返回!

--------------00\n");

printf("\t\t请选择功能键:

");

scanf("%d",&q);

switch(q){

case0:

printf("\nexit\n");

q=0;

break;

case1:

xsxscj();break;

case2:

xswj();break;

default:

printf("\t\t输入错误!

\n");

system("pause");

break;}

system("cls");

return0;

}

intxhcjpx()//按学生学号排序学生信息

{

structstudentt;

inti,j;

average();

for(j=0;j

for(i=0;i

{

if(str[i].sxcj

{

t=str[i];

str[i]=str[i+1];

str[i+1]=t;

}

}

printf("InputENTERagain!

\n");

system("pause");

xsxscj();

return0;

}

intsxcjpx()//按数学成绩排序学生信息

{

structstudentt;

inti,j;

average();

for(j=0;j

for(i=0;i

{

if(str[i].sxcj

{

t=str[i];

str[i]=str[i+1];

str[i+1]=t;

}

}

printf("InputENTERagain!

\n");

system("pause");

xsxscj();

return0;

}

intyycjpx()//按英语成绩排序学生信息

{

structstudentt;

inti,j;

average();

for(j=0;j

for(i=0;i

{

if(str[i].yycj

{

t=str[i];

str[i]=str[i+1];

str[i+1]=t;

}

}

printf("InputENTERagain!

\n");

system("pause");

xsxscj();

return0;

}

 

intCyypx()//按C语言成绩排序学生信息

{

structstudentt;

inti,j;

average();

for(j=0;j

for(i=0;i

{

if(str[i].Cyycj

{

t=str[i];

str[i]=str[i+1];

str[i+1]=t;

}

}

printf("InputENTERagain!

\n");

system("pause");

xsxscj();

return0;

}

 

intzcjpx()//按总成绩排序学生信息

{

structstudentt;

inti,j;

average();

for(j=0;j

for(i=0;i

{

if(str[i].sum

{

t=str[i];

str[i]=str[i+1];

str[i+1]=t;

}

}

printf("InputENTERagain!

\n");

system("pause");

xsxscj();

return0;

}

 

intpxxsxx()//排序学生信息

{

intq;

system("cls");

while(q){

printf("\t\t设计者:

吴承增班级:

软件技术092班\n");

printf("\t\t================================================\n");

printf("\t\t----------------排序学生信息--------------\n");

printf("\t\t================================================\n");

printf("\t\t---------------按学生学号排序-----------1\n");

printf("\t\t---------------按数学成绩排序-----------2\n");

printf("\t\t---------------按英语成绩排序-----------3\n");

printf("\t\t---------------按C语言成绩排序-----------4\n");

printf("\t\t----------------按总成绩排序--------------5\n");

printf("\t\t-------------------按0返回!

---------------00\n");

printf("\t\t================================================\n");

printf("\t\t请选择功能键:

");

scanf("%d",&q);

switch(q){

case00:

printf("\nexit\n");

q=0;

break;

case1:

xhcjpx();break;

case2:

sxcjpx();break;

case3:

yycjpx();break;

case4:

Cyypx();break;

case5:

zcjpx();break;

default:

printf("\t\t输入错误!

\n");

system("pause");

break;}

system("cls");

}

return0;

}

 

intaxhcx()//按学号查询

{

inti;

charxuehao[12];

average();

printf("\t\t请输入学生学号:

");

fflush(stdin);

scanf("%s",xuehao);

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

{

if(!

strcmp(str[i].xh,xuehao))

{

printf("\t\t设计者:

吴承增班级:

软件技术092班\n");

printf("----------------------------------------------------------------------------\n");

printf("学号姓名性别数学英语C语言总成绩平均成绩\n");

printf("----------------------------------------------------------------------------\n");

printf("%s",str[i].xh);

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

printf("%s",str[i].sex);

printf("%.1f",str[i].sxcj);

printf("%.1f",str[i].yycj);

printf("%.1f",str[i].Cyycj);

printf("%.1f",str[i].sum);

printf("%.1f\n",str[i].ave);

system("pause");

returni;

}

}

printf("\n\t\t此学生不存在或输入错误!

\n");

fflush(stdin);

system("pause");

return0;

}

 

intaxmcx()//按姓名查询

{

inti;

charstre[20];

average();

printf("\t\t请输入学生姓名:

");

fflush(stdin);

gets(stre);

for(i=0;i

{

if(!

strcmp(str[i].name,stre))

{

printf("\t\t设计者:

吴承增班级:

软件技术092班\n");

printf("-----------------------------------------------------------------------------\n");

printf("学号姓名性别数学英语C语言总成绩平均成绩\n");

printf("-----------------------------------------------------------------------------\n");

printf("%s",str[i].xh);

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

printf("%s",str[i].sex);

printf("%.1f",str[i].sxcj);

printf("%.1f",str[i].yycj);

printf("%.1f",str[i].Cyycj);

printf("%.1f",str[i].sum);

printf("%.1f\n",str[i].ave);

system("pause");

returni;

}

}

printf("\n\t\t此学生不存在或输入错误!

\n");

fflush(stdin);

system("pause");

return0;

}

 

intSearchStud()//查询学生成绩信息

{

intq;

system("cls");

while(q){

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

当前位置:首页 > 高等教育 > 军事

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

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