机房上机系统.doc_第1页
机房上机系统.doc_第2页
机房上机系统.doc_第3页
机房上机系统.doc_第4页
机房上机系统.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

沈 阳 航 空 工 业 学 院 课程设计学 号 200704032042 班 级 7403202 姓 名 李宏南 指导教师 王 晓 岩 2009 年 3 月 1 日沈阳航空工业学院课程设计任务书院系:航空宇航工程学院 专业:飞行器制造(钣金与模具) 班级:7403202学号:200704032042 题目:机房上机系统一、课程设计时间200809第2学期第1周,共计1周,20学时。二、课程设计内容用C语言编写程序完成以下任务:(1)从键盘输入学生的学号,姓名,系别,机时数等信息,保存在computer.txt文件中。(2)上机:记录当前的上机时间。(3)下机:再次记录当前的上机时间,计算上机所用的时间,并从机时数中扣除。(4)预存机时。三、课程设计要求1. 程序质量: 贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。 用户界面中的菜单至少应包括“录入学生信息”、“上机”、“下机”、“预存机时”和“退出”5项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、说明书成绩六、教师评语沈 阳 航 院 设 计 用 纸目录一、需求分析1二、程序流程图2三、核心技术的实现说明及相应程序段7四、课设总结10五、参考文献11六、源程序1116一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为四个模块,其中每一个模块对应一个函数,它们的功能分别是:添加学生数据函数,开始上机函数,结束下机函数,以及预存机时函数。在这些函数均实现严格按照题目的要求,稳定运行并实现其功能。1、添加学生数据函数 主要实现程序最初运行时学生数据的录入以及其后的运行中学生数据的追加功能;2、开始上机函数 实现的功能是记录当时上机时间;3、结束下机函数 实现再次记录时间,计算所用机时,读取已存机时,计算并写入剩余机时的功能;4、预存机时函数 允许预先存储并增加机时数;除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个学生记录都包含学号、姓名、系别,以及机时数,在程序当中,将学生记录类型定义为结构体类型,添加以及追加的学生信息直接写入d盘的computer.txt文件中,其它函数每次对学生记录的访问,其数据来源都是computer.txt文件,这样做不但可以保证学生数据的一致性,而且可以对学生数据进行永久保存,保证每次运行程序都可以采用原来的数据。二、程序流程图1、程序总体结构图图1程序总体结构图2、具体功能框图(1)添加学生数据函数add图2 添加学生数据函数(2)读取学生数据reads图3读取学生数据(3)预存机时函数addtime图4 预存机时函数(4)开始上机函数(并入主函数内)图5 开始上机函数(4)下机函数(并入主函数内)图6下机函数三、核心技术的实现说明及相应程序段本程序主要由四个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当中,添加数据函数、删除数据函数和排序函数是程序中较为核心的部分,下面分别进行说明。1、添加数据函数 添加数据分为两种情况,其一是在学生文件(computer.txt)不存在的情况下,首先由程序创建一个新文件,并将录入的学生信息写入该文件当中;其二是在学生文件(computer.txt)已经存在的情况下,此时文件要以读写方式或追加的方式打开,这样才可以保证以前已经存在的数据不丢失。具体的程序段如下:FILE *fp; int n,i; struct student stu; if(fp=fopen(d:computer.txt,w)!=NULL)/*新建学生文件并添加信息*/ printf(请输入要添加的学生数量,按回车键确认:); scanf(%d,&n); for(i=1;i=n;i+) printf(n请输入第%d个学生的学号,姓名,系别用空格分开,并按回车键确认:n,i); scanf(%s%s%s,stu.num,,stu.xibie); printf(n请输入第%d个学生的机时,并按回车键确认:n,i); scanf(%f,&stu.lefttime); fprintf(fp,n%s %s %s %f ,stu.num,,stu.xibie,stu.lefttime);/*学生信息写入文件*/ fclose(fp);2、上下机函数该函数的核心内容是利用时间函数分先后两次从系统时间中截取由长整形表示的瞬时,通过difftime求时间差再从已存机时中扣除得到剩余时间。为节省程序段和方便时间截取,上机和下机程序被同时并入主程序的switch函数中,同时利用了临时结构体进行数据储存和赋值,最终写入txt文档。具体程序段如下:case 2: enter(); time_t start,end; start=time(NULL); break; case 3: struct student stuN,temp; int n,i; FILE *fp; printf(n再次输入您的学号,以回车结束n); getchar(); scanf(%s,temp.num); reads(stu,&n); for(i=0;i=n)printf(无此学生信息!); return; end=time(NULL); float k,j; k=difftime(end,start); j=(k/3600);temp.lefttime=j; stui.lefttime=stui.lefttime-temp.lefttime; if(fp=fopen(d:computer.txt,w)=NULL)printf(打开文件失败!); return; for(i=0;in;i+) fprintf(fp,n%s %s %s %f,stui.num,,stui.xibie,stui.lefttime); fclose(fp); printf(下机成功!); break;3、预存时间函数同上下机函数类似,首先调用reads函数将文件中的学生信息读入数组当中,并由用户输入待添加机时学生的学号,而后按照该学号进行查找,如果文件中存在该学生的数据,则弹出所需添加时间,再次利用temp结构体将数据处理储存。具体程序段如下:struct student stuN,temp; int n,i; FILE *fp; printf(n请输入要更改信息的学生学号,按回车键确认:); getchar(); scanf(%s,temp.num); reads(stu,&n); for(i=0;i=n) printf(无此学生信息!); return; printf(n请输入要增加的时间,按回车键确认:n); scanf(%f,&temp.lefttime); stui.lefttime=temp.lefttime+stui.lefttime; if(fp=fopen(d:computer.txt,w)=NULL) printf(打开文件失败!); return; for(i=0;in;i+) fprintf(fp,n%s %s %s %f,stui.num,,stui.xibie,stui.lefttime); fclose(fp); printf(充值成功!n);四、课设总结 本次课程设计对我来说是一个很大的挑战,为什么这么说呢?因为对我们这些非计算机系的学生来说,只学过简单的理论和基础编程,要编写一个命题程序无疑是非常困难的,为此,我们不得不尽我们所能去查找各类资料,并从中去粗取精,归为己用。这些“逼”出来的的行动在不知不觉中令我们学到了很多的C语言知识,并且提升了我们的课业能力熟练度,是非常有意义的。在设计程序的过程中,我不断地遇到各种困难,每次通过难关,都感觉自己成长了一点。最终我的程序设计成功,当然,这不只是我一个人的功劳。没有老师的悉心指导和同学们热心帮助,我相信我一个人是没有办法做到的。更多的感觉是自己在面对一个难题时的无力,这使我更加迫切想要地学习和充实自我,为我在未来的学习和生活中添加新的动力。五、参考文献1 谭浩强C程序设计北京:清华大学出版社,20052 刘成等C语言程序设计实验指导与习题集北京:中国铁道出版社,2006六、源程序#include#include#include#include#includetime.h#include#define N 20struct studentchar num20; char name10; char xibie10; float lefttime;void menu();void reads(struct student stuN,int *n);void add();void enter();void exit();void addtime();void main() int n; while(1) menu(); printf(n 请输入您要选择的操作序号,按回车键确认:); scanf(%d,&n); switch(n) case 1: add();break; case 2: enter(); time_t start,end; start=time(NULL); break; case 3: struct student stuN,temp; int n,i; FILE *fp; printf(n再次输入您的学号,以回车结束n); getchar(); scanf(%s,temp.num); reads(stu,&n); for(i=0;i=n)printf(无此学生信息!); return; end=time(NULL); float k,j; k=difftime(end,start); j=(k/3600);temp.lefttime=j; stui.lefttime=stui.lefttime-temp.lefttime; if(fp=fopen(d:computer.txt,w)=NULL)printf(打开文件失败!); return; for(i=0;in;i+) fprintf(fp,n%s %s %s %f,stui.num,,stui.xibie,stui.lefttime); fclose(fp); printf(下机成功!); break; case 4: addtime();break; case 5: exit(0); default: printf(输入错误,请输入列表中存在的序号!n ); void menu()printf( * 班级成绩管理系统* ); printf(n 1 信息录入); printf(n 2 开始上机); printf(n 3 结帐下机); printf(n 4 预存机时); printf(n 7 退出);void reads(struct student stuN,int *n) FILE *fp; int i=0; if(fp=fopen(d:computer.txt,r)=NULL) printf(文件打开失败!n); return; else for(i=0;!feof(fp);i+) fscanf(fp,%s%s%s%f,stui.num,,&stui.xibie,&stui.lefttime); *n=i; fclose(fp);void add()/*添加学生信息*/FILE *fp; int n,i; struct student stu; if(fp=fopen(d:computer.txt,w)!=NULL)/*新建学生文件并添加信息*/ printf(请输入要添加的学生数量,按回车键确认:); scanf(%d,&n); for(i=1;i=n;i+) printf(n请输入第%d个学生的学号,姓名,系别用空格分开,并按回车键确认:n,i); scanf(%s%s%s,stu.num,,stu.xibie); printf(n请输入第%d个学生的机时,并按回车键确认:n,i); scanf(%f,&stu.lefttime); fprintf(fp,n%s %s %s %f ,stu.num,,stu.xibie,stu.lefttime);/*学生信息写入文件*/ fclose(fp);void enter() struct student stuN; char number20; int i,n; reads(stu,&n); printf(n请输入学生学号,按回车键确认:n); getchar(); scanf(%s,number); for(i=0;i=n) printf(没有找到该学生信息!n); return; else printf(n信息正确,可以登陆n); void addtime()struct student stuN,temp; int n,i; FILE *fp; printf(n请输入要更改信息的学生学号,按回车键确认:); getchar(); scanf(%s,temp.num); reads(stu,&n); for(i=0;i=n) pr

温馨提示

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

评论

0/150

提交评论