1、C语言程序设计大作业南昌大学软件学院C语言程序设计工程实训大作业班级: 09软件技术(2)班 学号: * * * * * 2010年12月10日系统说明书1.问题描述: 该程序包内容包括以下的模块,均用子函数完成:(1)主菜单(2)输入若干条记录并保存文件(指学生的信息) (3)学生信息录入、修改、删除、查询、存储。 (4)学生信息的浏览及排序(冒泡排序算法)。 (5)学生成绩的录入、修改。(6)统计及格和优秀人数 (7)退出系统 2.程序设计和程序流程图:解决方案:主函数流程图:各部分功能的流程图:录入学生成绩流程图:统计功能流程图如图3所示:图3 统计模块流程图冒泡排序流程图:排序学生信息
2、流程图: 删除学生成绩信息流程图:3.系统的基本功能(主要数据和函数功能描述):char xh15; /以字符串数组形式存储学生学号 char name25/ 以字符串数组形式存储学生姓名 char sex5; /性别 float sxcj; /数学成绩 float yycj; /英语成绩 float Cyycj; /C语言成绩 float ave; /平均成绩 float sum; /总成绩#define N 4 /宏定义学生 #define MAX 60 /学生最大个数int nCOUNT=0; /记录当前学生个数struct student /定义结构体学生int ScoreNew()
3、/录入学生成绩int average() /求平均数int xsxscj() /显示输入学生信息、将学生打印到屏幕上int xsxsxx() /显示学生信息int xhcjpx() /按学生学号排序学生信息int sxcjpx()按数学成绩排序学生信息int yycjpx()按英语成绩排序学生信息int Cyypx() /按C语言成绩排序学生信息int zcjpx()按总成绩排序学生信息int pxxsxx()/排序学生信息 int axhcx() /按学号查询int axmcx() /按姓名查询int SearchStud() /查询学生成绩信息int zjxsxx() /增加学生信息int
4、 xgxsxx() /修改学生信息int scxsxx() /删除学生信息int gxxscj() /更新学生信息int tjxscj() /统计学生成绩int save() /保存到文件(fp=fopen(stu_list.txt,wb)=NULL) /以只读方式打开文件stu_list.txt(fwrite(&stri,sizeof(struct student),1,fp)!=1) /创建文件并以二进制形式打开int xswj() /显示文件信息int main() /主函数mainmemu4.拟采用开发平台: Visual C+,Borland C+等。实验分析与结论:成绩录入函数按次
5、序录入系统中现存所有学生的所有科目上,每录入一个学生的成绩,首先显示其姓名和学号,然后依次输入英语、高数和C语言成绩。各科成绩初始化为0. 修改学生信息函数调用函数对需要修改信息的学生进行查找,找到后返回该学生所对应的下标值n,将用户录入的新值存入数组中.删除学生信息函数调用SeachStud()函数对需要删除信息的学生进行查找,找到后返回该学生所对应的下标值n,用数组中第n个后面的元素依次向前覆盖,学生总数减1,即nCount-1。需要强调的是,数组是静态存储分配方式,在声明时,系统已经给数组分配了其标注的全部内在空间,而且直到本段代码运行结束都不会改变。所以,不可能将数组中不用的元素所占用
6、的空间释放掉。本函数从后向前覆盖,删除学生信息,由于每个数组的读写的循环次数都不是以其长度为准的。而是以nCount值的大小来进行的,因此nCount可以保证不会读到最后一个无效数据。 收获与体会:学生成绩档案管理系统具备了数据的输入和成绩分类分析的功能。它能进行单独的一次数据处理。学习过循环结构以后,结合所学的知识点,增加系统重复处理数据的能力,既检验对知识的实际应用能力,又把系统的功能进一步充实。刚开始很难下手,请教同学和老师后慢慢入手。渐渐地写点程序。本次对学生成绩档案管理系统编写程序让我更加熟悉宏定义,函数调用,数组,排序等运用以及switch语句,if语句,while语句。这次编程让
7、我对C语言的综合编程能力的掌握,培养学生的逻辑思维能力,最终达到学生能完全独立编制、调试程序的能力。程序代码:/* purpose: 结构体输出 author: 凌风叶子 Wuchengzeng created: 2010/11/11 11:11:11*/#include#include#include#include#include#include /#include#define N 4 /宏定义学生#define MAX 60 /学生最大个数int nCOUNT=0; /记录当前学生个数int p; /int save();/int duquwj();/int xiugaiwj(); /
8、char cStudNo6013=8001509060,8001509061;/char cStudName8013=承增,叶子;struct student char xh15; /学号 char name25; /姓名 char sex5; /性别 float sxcj; /数学成绩 float yycj; /英语成绩 float Cyycj; /C语言成绩 float ave; /平均成绩 float sum; /总成绩strMAX;/struct studentMAX;int ScoreNew() /录入学生成绩 int average(); /求平均数 int i=0; char c
9、h; system(cls); do printf( tt 设计者:吴承增 班级:软件技术092班n); printf( tt=n); printf( tt- 录 入 学 生 信 息 -n); printf( tt=n); printf( tt请录入第%d学生信息n,i+1); printf(n tt输入学生学号: ); scanf(%s,stri.xh); fflush(stdin); printf(n tt输入学生姓名: ); fflush(stdin); scanf(%s,stri.name); printf(n tt输入学生性别: ); fflush(stdin); scanf(%s,
10、stri.sex); printf(n tt输入学生数学成绩: ); fflush(stdin); scanf(%f,&stri.sxcj); printf(n tt输入学生英语成绩: ); fflush(stdin); scanf(%f,&stri.yycj); printf(n tt输入学生C语言成绩: ); fflush(stdin); scanf(%f,&stri.Cyycj); i+; nCOUNT=i; printf(n tt是否继续输入?(Y/N); fflush(stdin); ch=getch(); system(cls); while(ch!=n&ch!=N); avera
11、ge(); printf(n); system(cls); return 0; int average() /求平均数 int i; for(i=0;inCOUNT;i+) stri.sum=stri.sxcj+stri.yycj+stri.Cyycj; stri.ave=stri.sum/3; return 0;/将学生打印到屏幕上int xsxscj() /显示输入学生信息 int i; average(); system(cls); printf( tt 设计者:吴承增 班级:软件技术092班n); printf( tt=n); printf( tt- 显 示 学 生 成 绩 信 息 -
12、n); printf( tt=n); printf( -n); printf( 学号 姓名 性别 数学 英语 C语言 总成绩 平均成绩n); printf( -n); for(i=0;inCOUNT;i+) printf( %s,stri.xh); printf(t%s,stri.name); printf(t%s,stri.sex); printf(t%.1f,stri.sxcj); printf(t%.1f,stri.yycj); printf(t%.1f,stri.Cyycj); printf(t%.1f,stri.sum); printf(t%.1fn,stri.ave); fflus
13、h(stdin); system(pause); system(cls); return 0;int xsxsxx() /显示学生信息 int xswj(); int q; system(cls); printf( tt 设计者:吴承增 班级:软件技术092班n); printf( tt=n); printf( tt- 显 示 学 生 信 息 -n); printf( tt=n); printf( tt- 显示输入学生信息 -1n); printf( tt- 显示文件学生信息 -2n); printf( tt- 按 0 返回! -00n); printf( tt请选择功能键: ); scanf
14、(%d,&q); switch(q) case 0:printf(n exitn); q=0; break; case 1: xsxscj();break; case 2: xswj();break; default :printf( tt输入错误!n); system(pause); break; system(cls); return 0; int xhcjpx() /按学生学号排序学生信息 struct student t; int i,j; average(); for(j=0;jnCOUNT;j+) for(i=0;inCOUNT-j;i+) if(stri.sxcjstri+1.s
15、xcj) t=stri; stri=stri+1; stri+1=t; printf( Input ENTER again !n); system(pause); xsxscj(); return 0;int sxcjpx() /按数学成绩排序学生信息 struct student t; int i,j; average(); for(j=0;jnCOUNT;j+) for(i=0;inCOUNT-j;i+) if(stri.sxcjstri+1.sxcj) t=stri; stri=stri+1; stri+1=t; printf( Input ENTER again !n); system
16、(pause); xsxscj(); return 0; int yycjpx() /按英语成绩排序学生信息 struct student t; int i,j; average(); for(j=0;jnCOUNT;j+) for(i=0;inCOUNT-j;i+) if(stri.yycjstri+1.yycj) t=stri; stri=stri+1; stri+1=t; printf( Input ENTER again !n); system(pause); xsxscj(); return 0;int Cyypx() /按C语言成绩排序学生信息 struct student t;
17、int i,j; average(); for(j=0;jnCOUNT;j+) for(i=0;inCOUNT-j;i+) if(stri.Cyycjstri+1.Cyycj) t=stri; stri=stri+1; stri+1=t; printf( Input ENTER again !n); system(pause); xsxscj(); return 0;int zcjpx() /按总成绩排序学生信息 struct student t; int i,j; average(); for(j=0;jnCOUNT;j+) for(i=0;inCOUNT-j;i+) if(stri.sum
18、stri+1.sum) t=stri; stri=stri+1; stri+1=t; printf( Input ENTER again !n); system(pause); xsxscj(); return 0;int pxxsxx() /排序学生信息 int q; system(cls); while(q) printf( tt 设计者:吴承增 班级:软件技术092班n); printf( tt=n); printf( tt-排 序 学 生 信 息 -n); printf( tt=n); printf( tt- 按 学 生 学 号 排 序 -1n); printf( tt- 按 数 学
19、成 绩 排 序 -2n); printf( tt- 按 英 语 成 绩 排 序 -3n); printf( tt- 按 C语言 成 绩 排 序 -4n); printf( tt-按 总 成 绩 排 序 -5n); printf( tt- 按 0 返回! -00n); printf( tt=n); printf( tt请选择功能键:); scanf(%d,&q); switch(q) case 00:printf(n exitn); q=0; break; case 1: xhcjpx();break; case 2: sxcjpx();break; case 3: yycjpx();break
20、; case 4: Cyypx() ;break; case 5: zcjpx() ;break; default :printf( tt输入错误!n); system(pause); break; system(cls); return 0;int axhcx() /按学号查询 int i; char xuehao12; average(); printf( tt请输入学生学号:); fflush(stdin); scanf(%s,xuehao); for(i=0;i=nCOUNT;i+) if(!strcmp(stri.xh,xuehao) printf( tt 设计者:吴承增 班级:软件
21、技术092班n); printf( -n); printf( 学号 姓名 性别 数学 英语 C语言 总成绩 平均成绩 n); printf( -n); printf( %s,stri.xh); printf( %s, stri.name); printf( %s, stri.sex); printf( %.1f,stri.sxcj); printf( %.1f,stri.yycj); printf( %.1f,stri.Cyycj); printf( %.1f,stri.sum); printf( %.1fn,stri.ave); system(pause); return i; printf
22、(n tt此学生不存在或输入错误!n); fflush(stdin); system(pause); return 0;int axmcx() /按姓名查询 int i; char stre20; average(); printf( tt请输入学生姓名: ); fflush(stdin); gets(stre); for(i=0;inCOUNT;i+) if(!strcmp(stri.name,stre) printf( tt 设计者:吴承增 班级:软件技术092班n); printf( -n); printf( 学号 姓名 性别 数学 英语 C语言 总成绩 平均成绩n); printf(
23、-n); printf( %s,stri.xh); printf( %s,stri.name); printf( %s,stri.sex); printf( %.1f,stri.sxcj); printf( %.1f,stri.yycj); printf( %.1f,stri.Cyycj); printf( %.1f,stri.sum); printf( %.1fn,stri.ave); system(pause); return i; printf(n tt此学生不存在或输入错误!n); fflush(stdin); system(pause); return 0;int SearchStud() /查询学生成绩信息 int q; system(cls); while(q)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1