版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计〔大作业〕报告课程名称:程序设计根底设计题目:学生成绩记录簿设计院系:信息技术学院班级:xx设计者:xx学号:xx指导教师:xx设计时间: xx信息技术学院昆明学院课程设计〔大作业〕任务书姓名:xx 院〔系〕:信息技术学院专业:计算机科学与技术 学号:xx任务起止日期:xx课程设计题目:学生成绩记录簿课程设计要求:编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。具体功能:系统以菜单方式工作;2.创立学生成绩信息并以磁盘文件保存;3.读取磁盘文件并显示输出所有学生的成绩;4.查询学生成绩;〔1〕按学号查询成绩;〔2〕学号姓名查询成绩;5.修改指定姓名或学号的学生的成绩并可存盘;6.显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。工作方案及安排:星期一:老师的大概讲解及主函数、目录函数的编写和调试;星期二:创立学生信息、输出学生信息和修改学生信息的函数编写及调试;星期三:学生信息查询、学生成绩分段和学生成绩排序的函数编写及调试;星期四:整个函数的最终调试,课程设计〔大作业〕报告的书写;星期五:辩论。指导教师签字年月日课程设计〔大作业〕成绩学号:xx 姓名:xx 指导教师:xx课程设计题目:学生成绩记录簿设计总结:通过这次的课程设计,增加了我对学习C语言学习的兴趣,虽然还不是真正的明白所有的C语言的子函数和里面的一些逻辑顺序,但我从C语言这门课程开始,已经发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用根底知识,对计算机的运行也有一个大体的了解。这次课程设计经过老师的讲解,自己的查找,在网上的搜索,实现题目上的要求,先做出一些简单的函数和程序,一步步的在做出其它的内容,不过在实际操作过程中犯得一些错误也还是会得到一些意外的收获。在具体的操作中,对这学期的C语言的理论知识得到稳固,在设计的过程中也发现自己的缺乏之处,在以后的学习和上机的操作中会更加注意,同时体会到C语言的简洁和灵活。在上机操作中我们的任何不懂的问题都会暴露出来,对于我们来说是是件好事,在课程设计的过程中特别是对数组和循环有了深刻的理解。通过实际的操作,学会C语言程序编程的根本步骤、根本方法,开发了自己的逻辑思维能力,培养了分析问题,解决问题的能力。指导教师评语:成绩:填表时间: 指导教师签名:目录一.问题的定义5二、需求分析5三、总体设计5四、详细设计6五、调试与测试30六、结语30一.问题的定义编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。要求:1.数据存储采用文件形式。3.功能完善,适当注释4.模块化设计、结构化编程二、需求分析系统能实现以下主要功能:1.系统以菜单方式工作2.创立学生成绩信息并以磁盘文件保存;3.读取磁盘文件并显示输出所有学生的成绩;4.查询学生成绩〔1〕按学号查询成绩〔2〕学号姓名查询成绩4.添加成绩记录;5.修改指定姓名或学号的学生的成绩并可存盘;6.显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。三、总体设计根据系统的要求,系统总体设计如图1所示。学生成绩记录簿学生成绩记录簿创立学生信息学生成绩排名退出成绩记录簿学生成绩分段查询学生信息修改学生成绩输出学生信息按学号修改按姓名修改按学号查询按姓名查询60分以下80—89分90分以上60—79分图1系统总体结构四、详细设计该局部主要包括:数据结构设计、函数设计〔包括函数原型、算法思想、流程描述〕、代码设计及程序运行结果显示。(一)学生成绩数据结构设计#include<stdio.h>#include<stdlib.h>#include<string.h>inti,j,k,y;FILE*fp;Structstu{ intno; charname[30];floatcscore; longa;};structstus[100];(二)函数设计1.主函数main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能。2.其他各功能函数(1)学生成绩信息录入函数voidinput()算法思想:①依次录入结构体数组中所包含的各个成员;②直到输入的结构体成员中信息全部为0,数据输入结束;③返回实际录入的学生成绩信息数。(2)将学生成绩信息输出为voidoutput()算法思想:①定义结构体变量的指针变量;②输出所输入的全部信息,假设不能输出信息给出提示信息;③将文件中的信息依次读出,最后结构体的指针为NULL。(3)从文件中修改学生成绩信息voidmodify()算法思想:①定义指向结构体变量的指针和指向文件的指针;②修改方式分为两种〔学号和姓名〕,选择是给出相应的信息;③将修改后的信息保存,并提示。3.流程描述〔1〕菜单函数intfun(){ intn; system("cls"); printf("\n\n\t\t\t\t成绩记录薄"); printf("\n\n\t\t\t"); for(i=0;i<33;i++) printf("*"); printf("\n"); printf("\t\t\t************菜单*************\n"); printf("\t\t\t*1、创立学生的信息!\t*\n"); printf("\t\t\t*2、输出所有学生的信息!\t*\n"); printf("\t\t\t*3、修改成绩!\t*\n"); printf("\t\t\t*4、查询!\t*\n"); printf("\t\t\t*5、显示成绩分段的学生信息!\t*\n"); printf("\t\t\t*6、学生成绩排名!\t*\n"); printf("\t\t\t*7、退出成绩记录薄!\t*\n"); printf("\t\t\t"); for(i=0;i<33;i++) printf("*"); printf("\n\n"); printf("\n\t\t\t请输入选项:"); scanf("%d",&n); returnn;}(2)学生成绩信息录入函数voidinput(){ system("cls");i=0; fp=fopen("out.dat","w"); printf("请以0作为输入学生学号信息的结束!\n"); do { printf("输入学生的学号:"); scanf("%d",&s[i].no); printf("输入学生的姓名:"); scanf("%s",s[i].name); printf("输入学生的C语言成绩:"); scanf("%f",&s[i].cscore); printf("输入添加成绩的时间:"); scanf("%ld",&s[i].a); if(s[i].no!=0) fprintf(fp,"%d%-4s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a); }while(s[i].no!=0); fclose(fp);}voidoutput()//学生全部信息输出{ if((fp=fopen("out.dat","r"))==NULL) {printf("Cannotopenthefile!\n"); }printf("\t\t\t全部的学生信息:\n");k=0;while(fscanf(fp,"%d%s%f%ld",&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!=EOF) {printf("\t\t\t%d\t%s\t%.1f\t%ld\n",s[k].no,s[k].name,s[k].cscore,s[k].a);k++; }fclose(fp); }〔3〕学生信息输出函数voidoutput(){ if((fp=fopen("out.dat","r"))==NULL) {printf("Cannotopenthefile!\n"); }printf("\t\t\t全部的学生信息:\n");k=0;while(fscanf(fp,"%d%s%f%ld",&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!=EOF) {printf("\t\t\t%d\t%s\t%.1f\t%ld\n",s[k].no,s[k].name,s[k].cscore,s[k].a);k++; }fclose(fp); }〔4〕修改学生信息函数voidmodify(){ charst[30]; intx,num; floatnu; longh; k=0; system("cls"); if((fp=fopen("out.dat","r"))==NULL) {printf("Cannotopenthefile!\n");return; }while(fscanf(fp,"%d%s%f%ld",&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!=EOF) {k++; }fclose(fp); printf("输入1表示用学号修改,输入2表示用姓名修改!请选择:\n"); scanf("%d",&x); if(x==1) { printf("请输入修改成绩人的学号:");scanf("%d",&num); for(i=0;i<k;i++) if(num==s[i].no) { printf("请输入修改的成绩:\n"); scanf("%f",&nu); s[i].cscore=nu; printf("请输入修改的时间:\n"); scanf("%ld",&h); s[i].a=h; fp=fopen("out.dat","w"); for(i=0;i<k;i++) fprintf(fp,"%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a); fclose(fp); printf("修改成功\n"); return; } printf("没有找到该生的信息!\n"); return; } if(x==2) { printf("请输入修改成绩人的姓名:"); scanf("%s",st); for(i=0;i<k;i++) if(strcmp(s[i].name,st)==0) { printf("请输入修改的成绩:\n"); scanf("%f",&nu); s[i].cscore=nu; printf("请输入修改成绩的时间:\n"); scanf("%ld",&h); s[i].a=h; fp=fopen("out.dat","w"); for(i=0;i<k;i++) fprintf(fp,"%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a); fclose(fp); printf("修改成功\n"); return; } printf("没有找到该生的信息!\n"); return; }(5)代码设计和执行结果头文件Structstu{ intno;/*学号*/charname[30];/*姓名*/floatcscore;/*成绩*/ longa;/*时间*/};structstus[100];/******以下是函数原型*******/voidinput()/*输入记录*/voidoutput()/*输出记录*/voidmodify()/*修改记录*/2.源程序代码与运行结果#include<stdio.h>#include<stdlib.h>#include<string.h>inti,j,k,y;FILE*fp;structstu//结构体函数的定义{ intno; charname[30];floatcscore; longa;};structstus[100];intfun()//目录函数{ intn; system("cls"); printf("\n\n\t\t\t\t成绩记录薄"); printf("\n\n\t\t\t"); for(i=0;i<33;i++) printf("*"); printf("\n"); printf("\t\t\t************菜单*************\n"); printf("\t\t\t*1、创立学生的信息!\t*\n"); printf("\t\t\t*2、输出所有学生的信息!\t*\n"); printf("\t\t\t*3、修改成绩!\t*\n"); printf("\t\t\t*4、查询!\t*\n"); printf("\t\t\t*5、显示成绩分段的学生信息!\t*\n"); printf("\t\t\t*6、学生成绩排名!\t*\n"); printf("\t\t\t*7、退出成绩记录薄!\t*\n");printf("\t\t\t"); for(i=0;i<33;i++) printf("*"); printf("\n\n"); printf("\n\t\t\t请输入选项:"); scanf("%d",&n); returnn;}voidinput()//输入学生的学号、姓名、成绩信息{ system("cls");i=0; fp=fopen("out.dat","w"); printf("请以0作为输入学生学号信息的结束!\n"); do { printf("输入学生的学号:");scanf("%d",&s[i].no); printf("输入学生的姓名:"); scanf("%s",s[i].name); printf("输入学生的C语言成绩:"); scanf("%f",&s[i].cscore); printf("输入添加成绩的时间:"); scanf("%ld",&s[i].a); if(s[i].no!=0)fprintf(fp,"%d%-4s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a); }while(s[i].no!=0); fclose(fp);}voidoutput()//学生全部信息输出{ if((fp=fopen("out.dat","r"))==NULL) {printf("Cannotopenthefile!\n"); }printf("\t\t\t全部的学生信息:\n");k=0;while(fscanf(fp,"%d%s%f%ld",&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!=EOF) {printf("\t\t\t%d\t%s\t%.1f\t%ld\n",s[k].no,s[k].name,s[k].cscore,s[k].a);k++; }fclose(fp); }voidmodify()//修改学生信息{ charst[30]; intx,num; floatnu; longh; k=0; system("cls"); if((fp=fopen("out.dat","r"))==NULL) {printf("Cannotopenthefile!\n");return; }while(fscanf(fp,"%d%s%f%ld",&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!=EOF) {k++; }fclose(fp); printf("输入1表示用学号修改,输入2表示用姓名修改!请选择:\n"); scanf("%d",&x); if(x==1) { printf("请输入修改成绩人的学号:");scanf("%d",&num); for(i=0;i<k;i++) if(num==s[i].no) { printf("请输入修改的成绩:\n"); scanf("%f",&nu); s[i].cscore=nu; printf("请输入修改的时间:\n"); scanf("%ld",&h); s[i].a=h; fp=fopen("out.dat","w"); for(i=0;i<k;i++)fprintf(fp,"%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a); fclose(fp); printf("修改成功\n"); return; } printf("没有找到该生的信息!\n"); return; } if(x==2) { printf("请输入修改成绩人的姓名:"); scanf("%s",st); for(i=0;i<k;i++) if(strcmp(s[i].name,st)==0) { printf("请输入修改的成绩:\n"); scanf("%f",&nu); s[i].cscore=nu; printf("请输入修改成绩的时间:\n"); scanf("%ld",&h); s[i].a=h; fp=fopen("out.dat","w"); for(i=0;i<k;i++) fprintf(fp,"%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a); fclose(fp); printf("修改成功\n"); return; } printf("没有找到该生的信息!\n"); return; }}voidlookat()//学生信息查询{ charst[30]; intx,num; k=0; system("cls"); if((fp=fopen("out.dat","r"))==NULL) {printf("Cannotopenthefile!\n");return; }while(fscanf(fp,"%d%s%f%ld",&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!=EOF) {k++; } printf("输入1表示用学号查询,输入2表示用姓名查询!请选择:\n"); scanf("%d",&x); if(x==1) { printf("请输入查询的学号:"); scanf("%d",&num); for(i=0;i<k;i++) if(num==s[i].no) { printf("%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a); return; } printf("对不起,找不到该生!\n"); return;} if(x==2) {printf("请输入查询的姓名:"); scanf("%s",st); for(i=0;i<k;i++) if(strcmp(s[i].name,st)==0) { printf("%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a); return; } printf("对不起,找不到该生!\n"); }}voidsubsection()//学生成绩分段{ system("cls"); k=0; if((fp=fopen("out.dat","r"))==NULL) {printf("Cannotopenthefile!\n"); }while(fscanf(fp,"%d%s%f%ld",&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!=EOF) {k++; } printf("\t\t\t90分以上学生的信息!\n"); for(i=0;i<k;i++) if(s[i].cscore>=90) printf("\t\t\t%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a); printf("\n\n");printf("\t\t\t80到89分学生的信息!\n");for(i=0;i<k;i++) if(s[i].cscore<90&&s[i].cscore>=80) printf("\t\t\t%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a); printf("\n\n");printf("\t\t\t60到79分学生的信息!\n");for(i=0;i<k;i++) if(s[i].cscore>=60&&s[i].cscore<80) printf("\t\t\t%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a); printf("\n\n");printf("\t\t\t60分以下学生的信息!\n");for(i=0;i<k;i++) if(s[i].cscore<60) printf("\t\t\t%d%s%.1f%ld\n",s[i].no,s[i].name,s[i].cscore,s[i].a); printf("\n\n");}voidrank()//成绩的排序{ structstut; k=0; system("cls"); if((fp=fopen("out.dat","r"))==NULL) {printf("Cannotopenthefile!\n"); }while(fscanf(fp,"%d%s%f%ld",&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!=EOF) {k++; }for(i=0;i<k;i++) for(j=i+1;j<k+1;j++) if(s[i].cscore<s[j].cscore) {t=s[i];s[i]=s[j];s[j]=t;} for(i=0;i<k;i++) printf("\t\t\t第%d名%d%-4s%.1f%ld\n",i+1,s[i].no,s[i].name,s[i].cscore,s[i].a);}voidchoose(intn)//目录的选项{ system("cls"); switch(n) { case1:input(); printf("\n\n\n\n\t\t\t是否返回?输入1表返回,输入2表退出!\n"); scanf("%d",&y);if(y==1) choose(fun());break; case2:output(); printf("\n\n\n\n\t\t\t是否返回?输入1表返回,输入2表退出!\n"); scanf("%d",&y);if(y==1) choose(fun());break; case3:modify(); printf("\n\n\n\n\t\t\t是否返回?输入1表返回,输入2表退出!\n"); scanf("%d",&y);if(y==1) choose(fun());break; case4:lookat(); printf("\n\n\n\n\t\t\t是否返回?输入1表返回,输入2表退出!\n"); scanf("%d",&y);if(y==1) choose(fun());break; case5:subsection(); printf("\n\n\n\n\t\t\t是否返回?输入1表返回,输入2表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 有限空间作业事故应急救援指南
- 热石疗法理疗师服务标准
- 禽流感季节性免疫接种管理方案
- 粉尘作业场所职业病危害防控
- 健康轻食沙拉制作指引
- 蜂群越冬管理技术操作指引
- 经络疏通专项理疗流程规范
- 会员健康档案建立管理规范
- 职业健康监护档案数字化归档规范
- 贵重物资盘点管理规范
- 四年级道德与法治这些东西哪里来
- (完整版)口腔科学试题库
- 血小板聚集与临床应用
- GB/T 23853-2022卤水碳酸锂
- GB/T 30452-2013光催化纳米材料光解指数测试方法
- FZ/T 74001-2020纺织品针织运动护具
- 2023年深圳市南山区事业单位招聘笔试题库及答案解析
- (本科)会计学原理(第三版)全套教学课件完整版PPT
- 清华大学数学实验1
- 分子生物学实验实验操作
- 黑布林阅读The Fisherman and His Soul 渔夫和他的灵魂及练习(含答案)
评论
0/150
提交评论