《C语言程序设计》大作业.doc_第1页
《C语言程序设计》大作业.doc_第2页
《C语言程序设计》大作业.doc_第3页
《C语言程序设计》大作业.doc_第4页
《C语言程序设计》大作业.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

南昌大学软件学院C语言程序设计工程实训大作业班级: 09软件技术(2)班 学号: 8001509107 姓名: 吴承增 指导老师: 危建国 2010年12月10日系统说明书1.问题描述: 该程序包内容包括以下的模块,均用子函数完成:(1)主菜单(2)输入若干条记录并保存文件(指学生的信息) (3)学生信息录入、修改、删除、查询、存储。 (4)学生信息的浏览及排序(冒泡排序算法)。 (5)学生成绩的录入、修改。(6)统计及格和优秀人数 (7)退出系统 2.程序设计和程序流程图:解决方案:学生成绩档案管理主菜单学生成绩管理学生档案管理查询统计录入成绩修改成绩读入学生信息录入学生成绩查询学生成绩修改学生信息删除学生信息存储学生信息按学号查询按姓名查询按学号排序浏览按数学成绩排序按成绩排序按英语成绩排序按C语言排序按总成绩排序主函数流程图:For(;)循环用“cls”清屏P5|pnCrrdArrayj+1for j=0 to 6真假排序学生信息流程图:开始把第i+1个学生信息复制传递到下一个结构体中switch语句 case(q)定义指向char数组形式排序q0,q=5Case1case5返回主菜单用”cls”清屏定义结构体student删除学生成绩信息流程图:NYNY开始n=SearchStudnCOUNT-=1是否删除?for(i=0;inCOUNT;i+)学号、姓名、个课程成绩数据前移输出成功提示nCOUNT-=1结束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() /录入学生成绩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 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+等。实验分析与结论:成绩录入函数按次序录入系统中现存所有学生的所有科目上,每录入一个学生的成绩,首先显示其姓名和学号,然后依次输入英语、高数和C语言成绩。各科成绩初始化为0. 修改学生信息函数调用函数对需要修改信息的学生进行查找,找到后返回该学生所对应的下标值n,将用户录入的新值存入数组中.删除学生信息函数调用SeachStud()函数对需要删除信息的学生进行查找,找到后返回该学生所对应的下标值n,用数组中第n个后面的元素依次向前覆盖,学生总数减1,即nCount-1。需要强调的是,数组是静态存储分配方式,在声明时,系统已经给数组分配了其标注的全部内在空间,而且直到本段代码运行结束都不会改变。所以,不可能将数组中不用的元素所占用的空间释放掉。本函数从后向前覆盖,删除学生信息,由于每个数组的读写的循环次数都不是以其长度为准的。而是以nCount值的大小来进行的,因此nCount可以保证不会读到最后一个无效数据。 收获与体会:学生成绩档案管理系统具备了数据的输入和成绩分类分析的功能。它能进行单独的一次数据处理。学习过循环结构以后,结合所学的知识点,增加系统重复处理数据的能力,既检验对知识的实际应用能力,又把系统的功能进一步充实。刚开始很难下手,请教同学和老师后慢慢入手。渐渐地写点程序。本次对学生成绩档案管理系统编写程序让我更加熟悉宏定义,函数调用,数组,排序等运用以及switch语句,if语句,while语句。这次编程让我对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(); /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 ch;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,); printf(n tt输入学生性别: ); fflush(stdin); scanf(%s,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);average(); 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- 显 示 学 生 成 绩 信 息 -n);printf( tt=n); printf( -n); printf( 学号 姓名 性别 数学 英语 C语言 总成绩 平均成绩n);printf( -n); for(i=0;inCOUNT;i+)printf( %s,stri.xh); printf(t%s,);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);fflush(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(%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.sxcj)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(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; 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.sumstri+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- 按 数 学 成 绩 排 序 -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;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 设计者:吴承增 班级:软件技术092班n); printf( -n); printf( 学号 姓名 性别 数学 英语 C语言 总成绩 平均成绩 n); printf( -n); printf( %s,stri.xh); printf( %s, ); 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 axmcx() /按姓名查询 int i; char stre20;average(); printf( tt请输入学生姓名: ); fflush(stdin); gets(stre); for(i=0;inCOUNT;i+) if(!strcmp(,stre) printf( tt 设计者:吴承增 班级:软件技术092班n); printf( -n); printf( 学号 姓名 性别 数学 英语 C语言 总成绩 平均成绩n); printf( -n); printf( %s,stri.xh); printf( %s,); 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) 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=n);printf( tt请选择功能键: );scanf(%d,&q);switch(q)case 00:printf(n exitn);q=0;break;case 1: axhcx();break;case 2: axmcx();break;default :printf( tt输入错误!n);system(pause);break;system(cls);return 0; int zjxsxx() /增加学生信息 char ch; int i; i=nCOUNT; do system(cls);printf( tt n); printf( tt请录入新增加学生信息n); printf(n tt请录入第%d学生信息n,i+1); printf(n tt输入学生学号: ); scanf(%s,stri.xh); fflush(stdin); printf(n tt输入学生姓名: ); fflush(stdin); gets(); printf(n tt输入学生性别: ); fflush(stdin); gets(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);printf(n tt增加成功!n); i+; nCOUNT=i; printf(n tt是否继续增加?(Y/N); fflush(stdin); ch=getch(); system(cls); while(ch!=n&ch!=N); printf(n); return 0;int xgxsxx() /修改学生信息 int i;char xuehao12; printf( tt请输入要修改的学生学号:); fflush(stdin); scanf(%s,xuehao); for(i=0;inCOUNT;i+) if(!strcmp(stri.xh,xuehao) printf(n tt请输入要修改学生信息:n);printf(n tt输入学生学号: ); scanf(%s,stri.xh); fflush(stdin); printf(n tt输入学生姓名: ); gets(); fflush(stdin); printf(n tt输入学生性别: ); fflush(stdin); gets(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);printf(n tt修改成功!n);system(pause);return i; printf(n tt要修改学生的信息不存在!n);fflush(stdin);system(pause); system(cls);return 0;int scxsxx() /删除学生信息 int i;char xuehao14;char ch; printf( tt请输入要删除学生的学号: ); fflush(stdin);scanf( %s,xuehao);printf( tt是否删除?(Y/N);ch=getch();if(ch!=N|n) for(i=0;inCOUNT;i+) if(!strcmp(stri.xh,xuehao) if(i=nCOUNT)nCOUNT-=1; else stri=strnCOUNT-1; nCOUNT-=1; printf(n tt删除成功!n);system(pause);return i; printf(n tt要删除的学生信息不存在!n);fflush(stdin);system(pause); system(cls);return 0;int gxxscj() /更新学生信息 int q; system(cls);while(q) printf( tt 设计者:吴承增 班级:软件技术092班n); printf( tt=n); printf( tt- 更 新 学 生 信 息 -n); printf( tt=n);printf( tt- 增 加 学 生 信 息 -1n);printf( tt- 修 改 学 生 信 息 -2n);printf( tt- 删 除 学 生 信 息 -3n);printf( tt- 排 序 学 生 信 息 -4n);printf( tt- 按 0 返回! -00n);printf( tt请选择功能键: );scanf(%d,&q);switch(q)case 0:printf(n exitn);q=0; break;case 1: zjxsxx();break;case 2: xgxsxx();break;case 3: scxsxx();break;case 4: pxxsxx();break;default :printf( tt输入错误!n);system(pause);break;system(cls);return 0;float shuxue() /数学平均成绩 int i; float ave,sum=0; for(i=0;inCOUNT;i+) sum=sum+stri.sxcj; ave=sum/nCOUNT; return ave;float yingyu() /英语平均成绩 int i; float ave,sum=0; for(i=0;inCOUNT;i+) sum=sum+stri.yycj; ave=sum/nCOUNT; return ave;float Cyuyan() /C语言平均成绩 int i; f

温馨提示

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

评论

0/150

提交评论