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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

南昌大学软件学院C语言程序设计工程实训大作业班级:09软件技术(2)班学号:8001509107姓名:吴承增指导老师:危建国2010年12月10日系统说明书1.问题描述:该程序包内容包括以下的模块,均用子函数完成:(1)主菜单(2)输入若干条记录并保存文件(指学生的信息)(3)学生信息录入、修改、删除、查询、存储。(4)学生信息的浏览及排序(冒泡排序算法)。(5)学生成绩的录入、修改。(6)统计及格和优秀人数(7)退出系统2.程序设计和程序流程图:解决方案:学生成绩档案管理主菜单学生成绩管理学生档案管理查询统计录入成绩修改成绩读入学生信息录入学生成绩查询学生成绩修改学生信息删除学生信息存储学生信息按学号查询按姓名查询按学号排序浏览按数学成绩排序按成绩排序按英语成绩排序按C语言排序按总成绩排序主函数流程图:For(;;)循环用“cls”清屏P5||p0进入主菜单MainMemu()输出switch语句句输入case语句开始选择功能键进入系统定义学生str[MAX]定义结构体student各部分功能的流程图:录入学生成绩流程图:统计功能流程图如图3所示:i=i+1开始用”cls”清屏dowhile输出成绩退回主菜单Ncount=1YN图3统计模块流程图冒泡排序流程图:排序学生信息流程图:声明存储数列变量nCardArray[]声明外层循环控制变量i声明内层循环控制变量j声明临时变量temp开始结束nCarrdArray[j]与nCrrdArray[j+1]值互换输出结果fori=0to5forj=0to5-inCarrdArray[j]nCrrdArray[j+1]forj=0t6真假开始把第i+1个学生信息复制传递到下一个结构体中switch语句case(q)定义指向char数组形式排序q0,q=5Case1…case5返回主菜单用”cls”清屏定义结构体student删除学生成绩信息流程图:NYNY开始n=SearchStudnCOUNT-=1是否删除?for(i=0;inCOUNT;i++)学号、姓名、个课程成绩数据前移输出成功提示nCOUNT-=1结束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()//主函数mainmemu4.拟采用开发平台:VisualC++,BorlandC++等。实验分析与结论:成绩录入函数按次序录入系统中现存所有学生的所有科目上,每录入一个学生的成绩,首先显示其姓名和学号,然后依次输入英语、高数和C语言成绩。各科成绩初始化为0.修改学生信息函数调用函数对需要修改信息的学生进行查找,找到后返回该学生所对应的下标值n,将用户录入的新值存入数组中.删除学生信息函数调用SeachStud()函数对需要删除信息的学生进行查找,找到后返回该学生所对应的下标值n,用数组中第n个后面的元素依次向前覆盖,学生总数减1,即nCount-1。需要强调的是,数组是静态存储分配方式,在声明时,系统已经给数组分配了其标注的全部内在空间,而且直到本段代码运行结束都不会改变。所以,不可能将数组中不用的元素所占用的空间释放掉。本函数从后向前覆盖,删除学生信息,由于每个数组的读写的循环次数都不是以其长度为准的。而是以nCount值的大小来进行的,因此nCount—可以保证不会读到最后一个无效数据。收获与体会:学生成绩档案管理系统具备了数据的输入和成绩分类分析的功能。它能进行单独的一次数据处理。学习过循环结构以后,结合所学的知识点,增加系统重复处理数据的能力,既检验对知识的实际应用能力,又把系统的功能进一步充实。刚开始很难下手,请教同学和老师后慢慢入手。渐渐地写点程序。本次对学生成绩档案管理系统编写程序让我更加熟悉宏定义,函数调用,数组,排序等运用以及switch语句,if语句,while语句。这次编程让我对C语言的综合编程能力的掌握,培养学生的逻辑思维能力,最终达到学生能完全独立编制、调试程序的能力。程序代码:/*purpose:结构体输出author:凌风叶子Wuchengzengcreated:2010/11/1111:11:11*/#includestdio.h#includestdlib.h#includetime.h#includeconio.h#includestring.h#includefstream.h//#includewindows.h#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;inCOUNT;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;inCOUNT;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(

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功