




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈 阳 航 空 工 业 学 院 课程设计学 号 200704021100班 级 7402104姓 名 石 峰指导教师 尹 航2008年 9 月 8 日沈阳航空工业学院课程设计任务书电子信息工程学院 电子信息工程专业 7402104班 学号200704021100一、课程设计题目:健身跑学分管理系统二、课程设计工作自2008年9月8日起至2008年9月12日止三、课程设计内容:运用所学的C语言知识,编制和调试程序,具有如下功能:学生的记录信息要保存在磁盘文件中(记录结构至少应该包括以下四项:学号,姓名、累计次数、学分)。学分计算方法:在一个学期内累计次数达到20次,可得到0.5学分,否则没有学分,新学期开始累计次数从0开始累计。在大学期间,最多可得到2学分。该系统具有如下功能:(1) 学生记录输入 (2) 跑步签到(每签到一次,累计次数加1)。(3) 按学号进行排序 (4) 查询(可按学号、学分等进行查询)(5) 插入新的学生记录 (6) 自己再加一项功能四、课程设计要求:程序质量:l 贯彻结构化程序设计思想。l 用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。l 用户界面中的菜单至少应包括“输入数据”、“跑步签到”、“排序”、“查询”、“退出”5项。l 代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书:课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:l 封面l 课程设计任务书l 目录l 需求分析(分析题目的要求)l 程序流程图(总体流程图和主要功能模块流程图)l 核心技术的实现说明及相应程序段l 个人总结l 参考资料l 源程序及适当的注释指导教师: 学生签名:成绩: 教师评语沈 阳 航 院 设 计 用 纸目录一、需求分析1二、程序流程图2三、核心技术的实现说明及相应程序段9四、个人总结11五、参考文献11六、源程序1118一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为六个模块,其中每一个模块对应一个函数,他们的功能分别是:学生信息输入函数(shuru),学生签到函数(qiandao),按学号排序函数(paixu),按学号查询函数(chaxun),输出学分满0.5的学生函数(de)以及插入新的学生记录函数 (enter)。1、学生信息输入函数 主要实现程序最初运行时学生数据的录入以及其后的运行中学生数据的追加功能;2、学生签到函数 实现的功能是按照学号对学生的数据记录进行添加;3、按学号排序函数 按照题目的具体要求实现的是按学号的递增顺序显示出相应的学生数据;4、按学号查询函数 可以实现按照学号对学生的信息进行查询;5、输出学分满0.5的学生函数 可以实现对学生记录中学分达到0.5的学生进行输出;6、插入新的学生记录函数 可以实现插入新的学生信息。除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个学生记录都包含学号、姓名、签到次数以及学分,在程序当中,将学生记录类型定义为结构体类型,添加以及追加的学生信息直接写入D盘的student.txt文件中,其他函数每次对学生记录的访问,其数据来源都是student.txt文件,这样做不但可以保证学生数据的一致性,而且可以对学生数据进行永久保存,保证每次运行程序都可以采用原来的数据。二、程序流程图1、程序总体结构图开始i=0输出表格i+输入字符1234567shuruqiandaopaixuchaxundeenter退出结束 (图1 程序总体结构图)2、具体功能框图(1)学生信息输入函数开始定义int a,iac,b=0输入ac=b a=(size-b)是 否i=b 输出”输入超限”i(a+c)输入信息i+结束(图2学生信息输入函数)(2)学生签到函数开始i=0istudk+1.num 真 假 studk.numstudk+1.num输出stud0.num到studsize-1.num(图4按学号排序函数)三、核心技术的实现说明及相应程序段本程序主要由六个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,学生信息输入函数、学生签到函数和按学号排序函数是程序中较为核心的部分,下面分别进行说明。1、学生信息输入函数 学生信息输入时是在学生文件(student.txt)不存在的情况下,首先由程序创建一个新文件,并将录入的学生信息写入该文件当中。具体程序段如下所示:void shuru()/*输入学生信息*/ FILE *fp; int a,i,c; int b=0; if(fp=fopen(d:student.txt,w+)=NULL) printf(文件打开失败n); return; printf(n添加学生人数:); scanf(%d,&a); c=b; if(a=(SIZE-b) for(i=b;i(a+c);i+) printf(n输入学生信息:); printf(n输入学生学号:); scanf(%d,&studi.num); printf(n输入学生姓名:); scanf(%s,); printf(n输入签到次数:); scanf(%d,&studi.time); printf(n输入学分:); scanf(%f,&studi.score); b+; elseprintf(输入超限n); fclose(fp); 2、学生签到函数学生签到函数的核心内容是随着学生签到次数的增加,学分增长。该函数执行时,首先由用户输入签到学生的学号,如果文件中存在该学生的数据信息,那么此学生签到次数将比原来增加1次,如果签到次数未达到20次,则学分为0;如果签到次数达到20次,则学分变为0.5。具体程序段如下所示:void qiandao()/*学生签到*/ FILE *fp; int i,num; printf(n输入学生学号:); scanf(%d,&num); if(fp=fopen(d:student.txt,r+)=NULL) printf(文件打开失败n); return; for(i=0;iSIZE;i+) fread(&studi,sizeof(struct stud),1,fp); if(num=studi.num) studi.time+; if(studi.time=20) studi.score+=0.5; printf(n%dt%st%dt%f,studi.num,,studi.time,studi.score); fclose(fp); 3、按学号排序函数对于按学号进行排序部分采用的是冒泡法排序,由于冒泡法排序涉及到两个数组元素的信息交换,因此还需要定义一个中间变量来协助。具体程序段如下所示:void paixu()/*按学号进行排序*/ FILE *fp; int i,k,t,p; char q50; float r; if(fp=fopen(d:student.txt,r+)=NULL) printf(文件打开失败 n); return; for(t=0;tSIZE;t+) fread(&studt,sizeof(struct stud),1,fp); for(t=0;tSIZE-1;t+)/*冒泡法排序*/ for(k=0;kstudk+1.num) p=studk.num; studk.num=studk+1.num; studk+1.num=p; strcpy(q,); strcpy(,studk+1.name); strcpy(studk+1.name,q); p=studk.time; studk.time=studk+1.time; studk+1.time=p; r=studk.score; studk.score=studk+1.score; studk+1.score=r; if(fp=fopen(d:student.txt,r+)=NULL) printf(文件打开失败n); return; for(i=0;iSIZE;i+) fwrite(&studi,sizeof(struct stud),1,fp); for(i=0;iSIZE;i+) if(studi.num!=0) printf(n%dt%st%dt%f,studi.num,,studi.time,studi.score); fclose(fp);四、个人总结 C语言课程设计结束了,我受益良多。我本人认为C语言是一门很难的课程,而且一开始我对自己的课程设计并没有信心,不知道该如何入手,但是在老师和同学的帮助下,渐渐产生了思路。以前不明白的通过翻阅课本,都有了深刻的认识。虽然在整个程序中有很多不足,例如题目要求:学生学分不得超过2.0,在我的程序中没有实现,但我认为经过这次课程设计,我的进步已经很大了。五、参考文献1 谭浩强C程序设计北京:清华大学出版社,20072 刘成等C语言程序设计实验指导与习题集北京:中国铁道出版社,2006六、源程序#include#include#include#include#include#define SIZE 20struct stud/(student的一个结构体,包含学号、姓名、签到次数、以及学分) int num; char name10; int time; float score; studSIZE;void shuru()/*输入学生信息*/ FILE *fp; int a,i,c; int b=0; if(fp=fopen(d:student.txt,w+)=NULL) printf(文件打开失败n); return; printf(n添加学生人数:); scanf(%d,&a); c=b; if(a=(SIZE-b) for(i=b;i(a+c);i+) printf(n输入学生信息:); printf(n输入学生学号:); scanf(%d,&studi.num); printf(n输入学生姓名:); scanf(%s,); printf(n输入签到次数:); scanf(%d,&studi.time); printf(n输入学分:); scanf(%f,&studi.score); b+; elseprintf(输入超限n); fclose(fp); void qiandao()/*学生签到*/ FILE *fp; int i,num; printf(n输入学生学号:); scanf(%d,&num); if(fp=fopen(d:student.txt,r+)=NULL) printf(文件打开失败n); return; for(i=0;iSIZE;i+) fread(&studi,sizeof(struct stud),1,fp); if(num=studi.num) studi.time+; if(studi.time=20) studi.score+=0.5; printf(n%dt%st%dt%f,studi.num,,studi.time,studi.score); fclose(fp); void paixu()/*按学号进行排序*/ FILE *fp; int i,k,t,p; char q50; float r; if(fp=fopen(d:student.txt,r+)=NULL) printf(文件打开失败 n); return; for(t=0;tSIZE;t+) fread(&studt,sizeof(struct stud),1,fp); for(t=0;tSIZE-1;t+)/*冒泡法排序*/ for(k=0;kstudk+1.num) p=studk.num; studk.num=studk+1.num; studk+1.num=p; strcpy(q,); strcpy(,studk+1.name); strcpy(studk+1.name,q); p=studk.time; studk.time=studk+1.time; studk+1.time=p; r=studk.score; studk.score=studk+1.score; studk+1.score=r; if(fp=fopen(d:student.txt,r+)=NULL) printf(文件打开失败n); return; for(i=0;iSIZE;i+) fwrite(&studi,sizeof(struct stud),1,fp); for(i=0;iSIZE;i+) if(studi.num!=0) printf(n%dt%st%dt%f,studi.num,,studi.time,studi.score); fclose(fp);void chaxun()/*按学号查询学生信息*/ FILE *fp; int i,num; printf(n请输入学生学号:); scanf(%d,&num); if(fp=fopen(d:student.txt,r+)=NULL) printf(文件打开失败n); return; for(i=0;iSIZE;i+) fread(&studi,sizeof(struct stud),1,fp); if(num=studi.num) printf(n%dt%st%dt%f,studi.num,,studi.time,studi.score); void de()/*输出学分满0.5的学生*/ FILE *fp; int t; if(fp=fopen(d:student.txt,r+)=NULL) printf(文件打开失败 n); return; for(t=0;tSIZE;t+) if(studt.score=0.5)printf(n%dt%st%dt%f,studt.num,,studt.time,studt.score);void enter()/*记录插入*/ FILE *fp; int a,i,c; int b=0; if(fp=fopen(d:student.txt,r+)=NULL) printf(文件打开失败!n); return; printf(n请输入要记录的学生数量:); scanf(%d,&a); c=b; if(a=(SIZE-b) for(i=b;i(a+c);i+) printf(n输入学
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家政人员劳务合同范本
- 工厂租赁合同范本模板
- 个人贷款购房合同范本
- 产品研发合同范本模板
- 物联网服务合同范本
- 餐饮正规加盟合同范本
- 养殖鱼苗购销合同范本
- 减水剂代理合同范本
- 工装集成吊顶合同范本
- 年产24万吨环保粘合剂及1000吨锂电池正极粘结剂配套溶剂新建项目可行性研究报告模板-立项备案
- 骨质疏松诊治与中医药
- LY/T 2383-2014结构用木材强度等级
- GB/T 528-2009硫化橡胶或热塑性橡胶拉伸应力应变性能的测定
- GB/T 4950-2021锌合金牺牲阳极
- 中日关系历史
- GB/T 15171-1994软包装件密封性能试验方法
- 2023年江苏省中学生生物学竞赛(奥赛)初赛试题和答案
- 信息系统运维服务方案
- 化工试生产总结报告
- 导数与原函数的对称性 微专题课件-2023届高三数学一轮复习
- DB32-T 3129-2016适合机械化作业的单体钢架塑料大棚 技术规范-(高清现行)
评论
0/150
提交评论