程序设计基础.doc_第1页
程序设计基础.doc_第2页
程序设计基础.doc_第3页
程序设计基础.doc_第4页
程序设计基础.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

C语言课程设计报告-兰州交通大学新能源与动力工程学院新能源与动力工程学院C语言基础课程设计 学生成绩记录薄设计学 生 姓 名: 高晓红 刘良海 李 桃 张金龙 学 号: 201110708 201110742 201110737 201110718 班 级: 热能与动力工程 指 导 老 师: 邓伟华 日 期: 一、设计内容设计一个C语言程序(销售管理系统),具体要求:编译一个C语言成绩记录薄,每个学生信息包括:学号、姓名、C语言成绩。具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的成绩;(3)按学号或姓名查询成绩;(4)添加成绩记录;(5)修改指定姓名或学号的学生的成绩并可存盘;(6)显示输出60分以下、6079、8089、90分以上各分数段的学生信息(可选项)。二、课程设计目的(1)巩固和加深学生对C语言课程的基本知识的理解和掌握;(2)掌握C语言编程和程序调试的基本技能;(3)利用C语言进行基本的软件设计;(4)掌握书写程序设计说明文档的能力;(5)提高运用C语言解决实际问题的能力。三、课程设计要求(1)分析课程设计题目的要求;(2)写出详细设计说明;(3)编写程序代码,调试程序使其能正确运行;(4)设计完成的软件要便于操作和使用,有整齐、美观的使用界面;(5)设计完成后提交课程设计报告和源代码文件的电子文档。四、程序描述本程序为成绩记录簿,采用的是结构体和数组的相关知识点进行操作,对于每一个功能都使用了自定义函数进行模块化处理。拥有增加成绩,删除成绩,查找单个学生升级,查找全班学生成绩,写入文件,读取文件,管理课程序号,退出功能。五、设计过程 1、这个程序是用函数调用的方式实现的,由以下的模块图说明,每个模块代表一个函数。 显 示 主 菜 单输 入 成 绩查 找 学 生 成绩显示学生成绩修 改 成 绩排 序按分数段统计学 号姓 名姓 名按学号按各科成绩主体模块 成绩管理系统模块图 2、程序的运行过程由流程图表示:(见下页) 开始 输出菜单输入序号i2104653退出用文件读写数据统计分数段人数编辑学生信息显示学生信息查询学生信息对各科成绩排序六、函数功能说明及流程图:(1)按姓名查询并显示一个记录函数:void chaxun_xingming(Student stud ,int n);功能:按姓名查询并显示一个记录流程图:否开始I=n输出not find!是输出该生的姓名、学号及各科成绩等信息结束(2)按姓名查找并显示信息 函数:void chaxun_xingming(Student stud ,int n);功能:按姓名查找并显示一个记录流程图:否开始I=n输出not find !是输出该生的姓名、学号及各科成绩等信息结束(3)根据姓名和学号添加学生的成绩 函数:int shuru(Student stud ,int n);功能:可以根据姓名和学号添加学生的成绩流程图: 编辑/开始输入姓名输入学号输入各科成绩保 存结 束成绩=0或min是否从学号1开始, 逐一统计各分数段的人数引用第三变量,调换max与min 输出结果 结束7、 源代码#include#include #include #include#includetypedef struct char num44; char name44; int chinese; int math; int english; int cyuyan;double aver;Student;Student stu44;int shuru(Student stud,int n)/*输入若干条记录*/int i=0;char sign,x44;double a=0.0; while(sign!=n&sign!=N) printf(输入学生学号:); scanf(%s,stun+i.num); printf(输入学生姓名:); scanf(%s,stun+); printf(输入学生的语文、数学、英语、c语言:);scanf(%d%d%d%d,&stun+i.chinese,&stun+i.math,&stun+i.english,&stun+i.cyuyan);a=1.0*(stun+i.chinese+stun+i.math+stun+i.english+stun+i.cyuyan)/4; stun+i.aver=a;gets(x); /*清除多余的输入*/ printf(是否继续输入?(Y/N):n);scanf(%c,&sign);i+; return(n+i);void xianshi(Student stud,int n) /*显示所有记录*/ int i ;printf(-n); /*格式头*/ printf(学号 姓名 语文 数学 英语 c语言 平均成绩 n); printf(-n); for(i=0;in;i+) printf(%-10s%-10s%-10d%-10d%-10d%-10d%-10.2lfn,stui.num,,stui.chinese,stui.math,stui.english,stui.cyuyan,stui.aver); void xiugai(Student stud,int n)/*修改*/ int i=0,choice=1; char x44; while(choice!=0) printf(请输入您要修改的学生的学号:n); scanf(%s,x);if(x=0) printf(请重新输入:n); else printf(请选择您要修改的内容:n); printf( - n); printf(| 姓名 请按 1 |n);printf(| 语文 请按 2 |n);printf(| 数学分数 请按 3 |n);printf(| 英语分数 请按 4 |n); printf(| c语言 请按 5 |n);printf(| 退出 请按 0|n); printf(+-+n); printf(请输入您的选择:); scanf(%d, &choice); switch(choice) case 0:break; case 1: printf(请输入新姓名:); scanf(%s, ); break; case 2: printf(请输入新的语文分数:); scanf(%d, &stui.chinese); break;case 3: printf(请输入新的数学分数:); scanf(%d,&stui.math); break;case 4: printf(请输入新的英语分数:); scanf(%d, &stui.english); break; case 5: printf(请输入新的c语言分数:); scanf(%d, &stui.cyuyan); break; default: printf(n无效选项!); break; break; return; int shanchu(Student stud,int n) /*按姓名查找,删除一条记录*/ char s20; int i;int j; i=0;printf(输入要删除记录的姓名:); scanf(%s,s); while(strcmp(,s)!=0&in) i+; /*如果已输入的与已存在的不相等,则进行i+1,直 到相等*/if(i=n) /*当si=sn*/printf(not find!n); return(n); for(j=i;jn-1;j+) /*删除操作*/ strcpy(stuj.num,stuj+1.num); /*如果删掉上个姓名,则将下面的往上移*/strcpy(,stuj+1.name); stuj.chinese=stuj+1.chinese; stuj.math=stuj+1.math; stuj.english=stuj+1.english; stuj.cyuyan=stuj+1.cyuyan;stuj.aver=stuj+1.aver; printf(Delete Successed!n); return(n-1); void chaxun_xingming(Student stud,int n) /*按姓名查找并显示一个记录*/ char s20; int i=0; printf(输入姓名:); scanf(%s,s); while(strcmp(,s)!=0&in) i+; /*查找判断*/ if(i=n) printf(not find!n); /*输入失败信息*/ return; printf(该生的姓名、学号是:%s %sn,,stui.num); /*输出该学生信息*/ printf(语文 高数 英语 c语言 平均成绩是:%d,%d,%d,%d,%lfn,stui.chinese,stui.math,stui.english,stui.cyuyan,stui.aver); void paixu_xuehao(Student stud,int n) /*按学号排序*/ int i,j,p,q,r,w; double y; char x20,t10; for(i=0;in-1;i+) /*冒泡法排序*/ for(j=0;j0) strcpy(t,studj.num); strcpy(studj.num,studj+1.num); strcpy(studj+1.num,t); strcpy(x,); strcpy(,studj+1.name); strcpy(studj+1.name,x); y=stuj.aver;stuj.aver=stuj+1.aver;stuj+1.aver=y; p=stuj.chinese;stuj.chinese=stuj+1.chinese;stuj+1.chinese=p; q=stuj.math;stuj.math=stuj+1.math;stuj+1.math=q; r=stuj.english;stuj.english=stuj+1.english;stuj+1.english=r; w=stuj.cyuyan;stuj.cyuyan=stuj+1.cyuyan;stuj+1.cyuyan=w; return; void paixu_pingjun(Student stud44,int n) /*按平均成绩排序*/ int i,j,p,q,r,w; double y; char x20,t10; for(i=0;in-1;i+) /*冒泡法排序*/ for(j=0;jstuj+1.aver) y=stuj.aver;stuj.aver=stuj+1.aver;stuj+1.aver=y; p=stuj.chinese;stuj.chinese=stuj+1.chinese;stuj+1.chinese=p; q=stuj.math;stuj.math=stuj+1.math;stuj+1.math=q; r=stuj.english;stuj.english=stuj+1.english;stuj+1.english=r; w=stuj.cyuyan;stuj.cyuyan=stuj+1.cyuyan;stuj+1.cyuyan=w; strcpy(x,); strcpy(,stuj+1.name); strcpy(stuj+1.name,x); strcpy(t,stuj.num); strcpy(stuj.num,stuj+1.num); strcpy(stuj+1.num,t); return;void paixu_chinese(Student stud44,int n) /*按语文成绩排序*/ int i,j,p,q,r,w; double y; char x20,t10; for(i=0;in-1;i+) /*冒泡法排序*/ for(j=0;jstuj+1.chinese) y=stuj.aver;stuj.aver=stuj+1.aver;stuj+1.aver=y; p=stuj.chinese;stuj.chinese=stuj+1.chinese;stuj+1.chinese=p; q=stuj.math;stuj.math=stuj+1.math;stuj+1.math=q; r=stuj.english;stuj.english=stuj+1.english;stuj+1.english=r; w=stuj.cyuyan;stuj.cyuyan=stuj+1.cyuyan;stuj+1.cyuyan=w; strcpy(x,); strcpy(,stuj+1.name); strcpy(stuj+1.name,x); strcpy(t,stuj.num); strcpy(stuj.num,stuj+1.num); strcpy(stuj+1.num,t); return;void paixu_english(Student stud44,int n) /*按英语成绩排序*/ int i,j,p,q,r,w; double y; char x20,t10; for(i=0;in-1;i+) /*冒泡法排序*/ for(j=0;jstuj+1.english); y=stuj.aver;stuj.aver=stuj+1.aver;stuj+1.aver=y; p=stuj.chinese;stuj.chinese=stuj+1.chinese;stuj+1.chinese=p; q=stuj.math;stuj.math=stuj+1.math;stuj+1.math=q; r=stuj.english;stuj.english=stuj+1.english;stuj+1.english=r; w=stuj.cyuyan;stuj.cyuyan=stuj+1.cyuyan;stuj+1.cyuyan=w; strcpy(x,); strcpy(,stuj+1.name); strcpy(stuj+1.name,x); strcpy(t,stuj.num); strcpy(stuj.num,stuj+1.num); strcpy(stuj+1.num,t); return;void paixu_math(Student stud44,int n) /*按数学成绩排序*/ int i,j,p,q,r,w; double y; char x20,t10; for(i=0;in-1;i+) /*冒泡法排序*/ for(j=0;jstuj+1.math) y=stuj.aver;stuj.aver=stuj+1.aver;stuj+1.aver=y; p=stuj.chinese;stuj.chinese=stuj+1.chinese;stuj+1.chinese=p; q=stuj.math;stuj.math=stuj+1.math;stuj+1.math=q; r=stuj.english;stuj.english=stuj+1.english;stuj+1.english=r; w=stuj.cyuyan;stuj.cyuyan=stuj+1.cyuyan;stuj+1.cyuyan=w; strcpy(x,); strcpy(,stuj+1.name); strcpy(stuj+1.name,x); strcpy(t,stuj.num); strcpy(stuj.num,stuj+1.num); strcpy(stuj+1.num,t); return;void paixu_cyuyan(Student stud44,int n) /*按c语言成绩排序*/ int i,j,p,q,r,w; double y; char x20,t10; for(i=0;in-1;i+) /*冒泡法排序*/ for(j=0;jstuj+1.cyuyan) y=stuj.aver;stuj.aver=stuj+1.aver;stuj+1.aver=y; p=stuj.chinese;stuj.chinese=stuj+1.chinese;stuj+1.chinese=p; q=stuj.math;stuj.math=stuj+1.math;stuj+1.math=q; r=stuj.english;stuj.english=stuj+1.english;stuj+1.english=r; w=stuj.cyuyan;stuj.cyuyan=stuj+1.cyuyan;stuj+1.cyuyan=w; strcpy(x,); strcpy(,stuj+1.name); strcpy(stuj+1.name,x); strcpy(t,stuj.num); strcpy(stuj.num,stuj+1.num); strcpy(stuj+1.num,t); return;void tongji(Student stud44,int n)/按分数段统计人数 int i,j,a,max,min,k,l,q,p,w; k=0,l=0,p=0,q=0,w=0; printf(你想统计哪科成绩: 1、语文 2、数学 3、英语 4、c语言 n); scanf(%d,&j); printf(input 2 score:n);/*输入一个分数段*/ scanf(%d%d,&max,&min); if(maxmin) a=max;max=min;min=a; if(j=1)for(i=0;imin&stui.chinesemax) k+; printf(分数段的人数为:%dn,k); else if(j=2)for(i=0;imin&stui.mathmax) l+; printf(分数段的人数为:%dn,l); else if(j=3)for(i=0;imin&stui.englishmax) p+; printf(分数段的人数为:%dn,p); else if(j=4) for(i=0;imin&stui.cyuyanmax) w+; printf(分数段的人数为:%dn,w); else if(j=5)for(i=0;imin&stui.avermax) q+; printf(分数段的人数为:%dn,q); return;int wenjian2(Student stud44,int n) /*从文件中读入数据*/ int i=0,num; FILE *fp; /*定义文件指针*/ char filename20; /*定义文件名*/ printf(tttInput the filename:); scanf(ttt%s,filename); /*输入文件名*/ if(fp=fopen(filename,rb)=NULL) /*打开文件*/ printf(tcannt open the file,maybe you should to advance to the higher classn); /*打开失败信息*/ printf(ttt); system(pause); return(n); fscanf(fp,%d,&num); /*读入总记录量*/ while(inum) /*循环读入数据*/ fscanf(fp,%s %s %d %d %d %d %lfn,stun+i.num,stun+,&stun+i.chinese,&stun+i.math,&stun+i.english,&stun+i.cyuyan,&stun+i.aver);i+;n+=num; fclose(fp); /*关闭文件*/printf(tttSuccessed!n);printf(ttt); system(pause); return(n); void wenjian1(Student stud44,int n) /*将所有记录写入文件*/int i=0;FILE *fp; /*定义文件指针*/char filename20; /*定义文件名*/ printf(Input the filename:);/*输入文件名*/ scanf(%s,filename); if(fp=fopen(filename,w)=NULL) /*打开文件*/ printf(tcannt open the file,maybe you should to advance to the higher classn); return; fprintf(fp,%dn,n); /*循环写入数据*/ while(in) fprintf(fp,%s %s %d %d %d %d %lfn,stui.num,,stui.chinese,stui.math,stui.english,stui.cyuyan,stui.aver); i+; fclose(fp); /*关闭文件*/ printf(Successed!n); /*返回成功信息*/ int menu() /*菜单函数*/ int c; do printf(*n);printf(tt);printf(欢迎进入兰州交通大学新能源与动力工程学院学生成绩管理系统n); printf(ttn); printf( -学生信息管理系统菜单tttttttn); printf(tttt 1. 编辑 n); printf(tttt 2. 显示 n); printf(tttt 3. 查询 n); printf(tttt 4. 排序 n); printf(tttt 5. 统计 n); printf(tttt 6. 文件 n); printf(tttt 0. 退出 n); printf(*n); printf(ttt请选择(0-6):); scanf(%d,&c); while(c6); return(c-0); /*返回选择*/ int bianji() printf(tt 1. 录入n); printf(tt 2 .修改n); printf(tt 3. 删除 n); printf(tt 按其它数字键退出 n);int i;scanf(%d,&i);return i;int chaxun() printf(tt 1. 按姓名查询n); printf(tt 按其它数字键退出n);int i;scanf(%d,&i);return i;int paixu() printf(tt 1. 按学号n); printf(tt 2 .按语文成绩n); printf(tt 3 .按数学成绩n); printf(tt 4 .按英语成绩n); printf(tt 5 .按C语言成绩n); printf(tt 6 .按平均成绩n); printf(tt按其它数字键退出n); int i; scanf(%d,&i); return i;int wenjian() printf(tt 1. 从文件中读入数据n); printf(tt 2 .将所有记录写入文件n); printf(tt 按其它数字键退出 n);int i;scanf(%d,&i);return i;void main() /*主函数*/ int n=0; for(;) for(;) switch(menu() case 1: switch(bianji() case 1:n=shuru(stu,n);xianshi(stu,n); break; case 2:xiugai(stu ,n);xianshi(stu,n); break; case 3:shanchu(stu ,n);xianshi(stu,n); break; break; case 2:xianshi(stu,n);break; case 3: switch(chaxun() case 1:chaxun_xingming(stu,n);break; break; case 4: switch(paixu() case 1:paixu_xuehao(stu,n);xianshi(stu,n); break ; case 2:paixu_chinese(stu ,n);xianshi(stu,n);break; case 3:paixu_math(stu ,n);xianshi(stu,n); break; case 4:paixu_english(stu ,n);xianshi(stu,n); break; case 5:paixu_cyuyan(stu ,n);xianshi(stu,n); break; case 6:paixu_pingjun(stu ,n);xianshi(stu,n); break; break; case 5:tongji(stu,n);break; case 6: switch(wenjian() case 1:n=wenjian2(stu,n);break; case 2:wenjian1(stu ,n);break; break; case 0: exit(0); /*结束程序*/ 八、运行框 *1功能函数主菜单*2编辑录入学生信息 *3编辑修改学生信息*4编辑删除学生信息*5显示学生信息*6按照姓名查询学生个人信息*7按照学号或各科成绩由高到

温馨提示

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

评论

0/150

提交评论