判断学生能否毕业系统.docx
- 文档编号:5106037
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:18
- 大小:82.70KB
判断学生能否毕业系统.docx
《判断学生能否毕业系统.docx》由会员分享,可在线阅读,更多相关《判断学生能否毕业系统.docx(18页珍藏版)》请在冰豆网上搜索。
判断学生能否毕业系统
课程设计任务书
一、课程设计题目:
判断学生能否毕业系统
二、课程设计工作自年月日起至年月日止
三、课程设计内容:
运用所学的c语言知识,编制和调试程序,具有如下功能:
(1)输入学生成绩信息,并将其保存到磁盘文件中。
学生成绩信息纪录中包括:
学号、姓名、课程名称、成绩、及格标识、课程标识和学分;学生所学课程共三类:
必修课、院级选修课和专业选修课。
(2)可自行规定学生毕业条件,如必修课及格门次不得少于5门,院级选修课学分不少于6分,专业选修课不少于8分,共获得学分的前提是该门课必须及格。
(3)进行学生毕业与否的判断,如不能毕业的请给出原因,判断后所得结果也要保存在文件中。
学生毕业信息纪录应包括学号、姓名、毕业标识和原因。
四、课程设计要求:
程序质量:
●贯彻结构化程序设计思想。
●用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
●用户界面中的菜单至少应包括“运算选项”、“数据输入”、“保存结果”、“退出”4项。
●代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:
●封面
●课程设计任务书
●目录
●需求分析(分析题目的要求)
●程序流程图(总体流程图和主要功能模块流程图)
●核心技术的实现说明及相应程序段
●个人总结
●参考资料
●源程序及适当的注释
指导教师:
____________________
学生签名:
____________________
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段………….5四、个人总结……………..…………………….…14
五、参考文献………………………………………....14
六、源程序………………………………….......…15
一、需求分析
通过对题目的分析,本次课程设计的主要功能分为两个部分。
1
录入学生信息并且把信息写入到文件中(首先建立一个文件,并且输入学生信息,之后把学生信息写入到文件中)2判断学生能否毕业
(输入指定学生的编号,在文件中读取该学生信息。
根据学生的院级选修课,系内选修课,必修课判断学生能否毕业,对不能毕业的学生给出理由)
二、程序流程图
三、核心技术的实现说明及相应程序段
包含头文件
#include
#include
#include
定义学生结构体
structstudent
{
charxuehao[20];
//学号
charxingming[20];
//姓名
charbix[5][20];
//必修课
charyuanx[4][20];
//院选课
charxix[4][20];
//系选课
intbixiu[5];
//必修课成绩
intyuanxuan[4];
//院选课成绩
intxixuan[4];
//系选课成绩
intbi;
intyuan;
intxi;
};
voidbaocun(void)
{
定义文件指针
FILE*fp;
inti,j,shu;
定义结构体变量
structstudentstud;
printf("\n请输入录入学生的个数:
");
scanf("%d",&shu);
建立文件lesson.dat
fp=fopen("e:
\\lesson.dat","wb");
结构体初始化
for(i=0;i { stud.bi=0; stud.yuan=0; stud.xi=0; } 向文件中写入学生信息 for(i=0;i { printf("\n请输入学生学号: "); scanf("%s",stud.xuehao); printf("\n请输入学生姓名: "); scanf("%s",stud.xingming); printf("\n请输入五门必修课程的成绩"); for(j=0;j<5;j++) { printf("\n输入第%d门课程: ",j+1); scanf("%s",stud.bix[j]); printf("\n输入第%d门课程成绩: ",j+1); scanf("%d",&stud.bixiu[j]); if(stud.bixiu[j]>60) stud.bi++; } printf("\n请输入三门院选课程的成绩"); for(j=0;j<3;j++) { printf("\n输入第%d门课程: ",j+1); scanf("%s",stud.yuanx[j]); printf("\n输入第%d门课程所得学分: ",j+1); scanf("%d",&stud.yuanxuan[j]); stud.yuan=stud.yuan+stud.yuanxuan[j]; } printf("\n请输入四门院选课程的成绩"); for(j=0;j<4;j++) { printf("\n输入第%d门课程: ",j+1); scanf("%s",stud.xix[j]); printf("\n输入第%d门课程所得学分: ",j+1); scanf("%d",&stud.xixuan[j]); stud.xi=stud.xi+stud.xixuan[j]; }fprintf(fp,"%s\t%s\t",stud.xuehao,stud.xingming); 向文件中写入数据 for(i=0;i<5;i++) { fprintf(fp,"%s\t",stud.bix[i]); } for(i=0;i<3;i++) { fprintf(fp,"%s\t",stud.yuanx[i]); } for(i=0;i<4;i++) { fprintf(fp,"%s\t",stud.xix[i]); } for(i=0;i<5;i++) { fprintf(fp,"%d\t",stud.bixiu[i]); } for(i=0;i<3;i++) { fprintf(fp,"%d\t",stud.yuanxuan[i]); } for(i=0;i<4;i++) { fprintf(fp,"%d\t",stud.xixuan[i]); }fprintf(fp,"%d\t%d\t%d\n",stud.bi,stud.yuan,stud.xi); printf("\n院级选修课所得学分为%d",stud.yuan); printf("\n必修课所得学分为%d",stud.bi); printf("\n专业选修课所得学分为%d",stud.xi); } 关闭文件 fclose(fp); } 查询 voidsearch() { FILE*fp; inti,flag=0; charxuehao[20]; structstudentstud; 打开文件 fp=fopen("e: \\lesson.dat","rb"); printf("\n请输入学生学号"); scanf("%s",xuehao); 判断文件是否结束 while(! feof(fp)) { 在文件中读取学生信息 fscanf(fp,"%s\t%s\t",stud.xuehao,stud.xingming); for(i=0;i<5;i++) { fscanf(fp,"%s\t",stud.bix[i]); } for(i=0;i<3;i++) { fscanf(fp,"%s\t",stud.yuanx[i]); } for(i=0;i<4;i++) { fscanf(fp,"%s\t",stud.xix[i]); } for(i=0;i<5;i++) { fscanf(fp,"%d\t",&stud.bixiu[i]); } for(i=0;i<3;i++) { fscanf(fp,"%d\t",&stud.yuanxuan[i]); } for(i=0;i<4;i++) { fscanf(fp,"%d\t",&stud.xixuan[i]); }fscanf(fp,"%d\t%d\t%d\n",&stud.bi,&stud.yuan,&stud.xi); 判断学号是否相同 if(strcmp(xuehao,stud.xuehao)==0) { flag++; if(stud.bi>=5&&stud.yuan>=6&&stud.xi>=8) { printf("\n院级选修课所得学分为%d",stud.yuan); printf("\n必修课所得学分为%d",stud.bi); printf("\n专业选修课所得学分为%d",stud.xi); printf("\n这个学生能正常毕业"); } else { printf("\n院级选修课所得学分为%d",stud.yuan); printf("\n必修课所得学分为%d",stud.bi); printf("\n专业选修课所得学分为%d",stud.xi); printf("\n这个学生不能正常毕业"); if(stud.bi<5) printf("\n必修课没有完成,只完成了%d门",stud.bi); if(stud.yuan<6) printf("\n院级选修课没有完成,只完成了%d学分",stud.yuan); if(stud.xi<8) printf("\n系级选修课没有完成,只完成了%d学分",stud.xi); } } } if(0==flag) { printf("\n没有找到这个同学的信息"); } fclose(fp); } 菜单 voidmenu() { inti,j; for(;;) { printf("\n0退出"); printf("\n1录入学生信息"); printf("\n2判断学生能否毕业\n"); scanf("%d",&j); switch(j) { case0: exit(0);break; case1: baocun();break; case2: search();break; default: printf("\n输入错误请重新选择"); } } } voidmain() { menu(); } 四、个人总结 通过本次课程设计,使我懂得了软件的基本实现方法,认识了程序调适原理及程序调适过程的方法。 在调适程序的过程中,一开始,我对自己编制的程序错误不能了解。 不能找出错误的原因。 后来经过向同学和老师的请教我终于调适完毕。 通过我的不懈努力,终于得到正确的结果。 在这里我感谢同学和老师的帮助。 使我认识到学习要有坚持不懈的精神和毅力。 同时,我也深深意识到自己能力的不足,需要再接再厉,更深入的学习C语言,相信我会有很大的进步。 五、参考文献 1<数据结构>柳冬梅机械工业出版社 2 六、源程序 #include #include #include structstudent { charxuehao[20]; charxingming[20]; charbix[5][20]; charyuanx[4][20]; charxix[4][20]; intbixiu[5]; intyuanxuan[4]; intxixuan[4]; intbi; intyuan; intxi; }; voidbaocun(void) { FILE*fp; inti,j,shu; structstudentstud; printf("\n请输入录入学生的个数: "); scanf("%d",&shu); fp=fopen("e: \\lesson.dat","wb"); for(i=0;i { stud.bi=0; stud.yuan=0; stud.xi=0; } for(i=0;i { printf("\n请输入学生学号: "); scanf("%s",stud.xuehao); printf("\n请输入学生姓名: "); scanf("%s",stud.xingming); printf("\n请输入五门必修课程的成绩"); for(j=0;j<5;j++) { printf("\n输入第%d门课程: ",j+1); scanf("%s",stud.bix[j]); printf("\n输入第%d门课程成绩: ",j+1); scanf("%d",&stud.bixiu[j]); if(stud.bixiu[j]>60) stud.bi++; } printf("\n请输入三门院选课程的成绩"); for(j=0;j<3;j++) { printf("\n输入第%d门课程: ",j+1); scanf("%s",stud.yuanx[j]); printf("\n输入第%d门课程所得学分: ",j+1); scanf("%d",&stud.yuanxuan[j]); stud.yuan=stud.yuan+stud.yuanxuan[j]; } printf("\n请输入四门院选课程的成绩"); for(j=0;j<4;j++) { printf("\n输入第%d门课程: ",j+1); scanf("%s",stud.xix[j]); printf("\n输入第%d门课程所得学分: ",j+1); scanf("%d",&stud.xixuan[j]); stud.xi=stud.xi+stud.xixuan[j]; } fprintf(fp,"%s\t%s\t",stud.xuehao,stud.xingming); for(i=0;i<5;i++) { fprintf(fp,"%s\t",stud.bix[i]); } for(i=0;i<3;i++) { fprintf(fp,"%s\t",stud.yuanx[i]); } for(i=0;i<4;i++) { fprintf(fp,"%s\t",stud.xix[i]); } for(i=0;i<5;i++) { fprintf(fp,"%d\t",stud.bixiu[i]); } for(i=0;i<3;i++) { fprintf(fp,"%d\t",stud.yuanxuan[i]); } for(i=0;i<4;i++) { fprintf(fp,"%d\t",stud.xixuan[i]); } fprintf(fp,"%d\t%d\t%d\n",stud.bi,stud.yuan,stud.xi); printf("\n院级选修课所得学分为%d",stud.yuan); printf("\n必修课所得学分为%d",stud.bi); printf("\n专业选修课所得学分为%d",stud.xi); } fclose(fp); } voidsearch() { FILE*fp; inti,flag=0; charxuehao[20]; structstudentstud; fp=fopen("e: \\lesson.dat","rb"); printf("\n请输入学生学号"); scanf("%s",xuehao); while(! feof(fp)) { fscanf(fp,"%s\t%s\t",stud.xuehao,stud.xingming); for(i=0;i<5;i++) { fscanf(fp,"%s\t",stud.bix[i]); } for(i=0;i<3;i++) { fscanf(fp,"%s\t",stud.yuanx[i]); } for(i=0;i<4;i++) { fscanf(fp,"%s\t",stud.xix[i]); } for(i=0;i<5;i++) { fscanf(fp,"%d\t",&stud.bixiu[i]); } for(i=0;i<3;i++) { fscanf(fp,"%d\t",&stud.yuanxuan[i]); } for(i=0;i<4;i++) { fscanf(fp,"%d\t",&stud.xixuan[i]); } fscanf(fp,"%d\t%d\t%d\n",&stud.bi,&stud.yuan,&stud.xi); if(strcmp(xuehao,stud.xuehao)==0) { flag++; if(stud.bi>=5&&stud.yuan>=6&&stud.xi>=8) { printf("\n院级选修课所得学分为%d",stud.yuan); printf("\n必修课所得学分为%d",stud.bi); printf("\n专业选修课所得学分为%d",stud.xi); printf("\n这个学生能正常毕业"); } else { printf("\n院级选修课所得学分为%d",stud.yuan); printf("\n必修课所得学分为%d",stud.bi); printf("\n专业选修课所得学分为%d",stud.xi); printf("\n这个学生不能正常毕业"); if(stud.bi<5) printf("\n必修课没有完成,只完成了%d门",stud.bi); if(stud.yuan<6) printf("\n院级选修课没有完成,只完成了%d学分",stud.yuan); if(stud.xi<8) printf("\n系级选修课没有完成,只完成了%d学分",stud.xi); } } } if(0==flag) { printf("\n没有找到这个同学的信息"); } fclose(fp); } voidmenu() { inti,j; for(;;) { printf("\n0退出"); printf("\n1录入学生信息"); printf("\n2判断学生能否毕业\n"); scanf("%d",&j); switch(j) { case0: exit(0);break; case1: baocun();break; case2: search();break; default: printf("\n输入错误请重新选择"); } } } voidmain() { menu(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 判断 学生 能否 毕业 系统