




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、沈 阳 航 空 工 业 学 院 课程设计学 号 200704033011 班 级 7403301 姓 名 李晓 指导教师 王 晓 岩 2009 年 3 月 6 日沈阳航空工业学院课程设计任务书院系:航空宇航工程学院 专业:飞行器设计与工程 班级7403301学号:200704033011 题目:机房上机系统一、课程设计时间200809第2学期第1周,共计1周,20学时。二、课程设计内容用C语言编写程序完成以下任务:(1)从键盘输入学生的学号,姓名,系别,机时数等信息,保存在computer.txt文件中。(2)上机:记录当前的上机时间。(3)下机:再次记录当前的上机时间,计算上机所用的时间,并
2、从机时数中扣除。(4)预存机时。三、课程设计要求1. 程序质量:² 贯彻结构化的程序设计思想。² 用户界面友好,功能明确,操作方便。² 用户界面中的菜单至少应包括“录入学生信息”、“上机”、“下机”、“预存机时”和“退出”5项。² 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、说明书成绩六、教师评语沈 阳 航 院 设 计 用 纸目录一、需求分析1二、程序流程图2三、核心技术的实现说明及相应程序
3、段5四、个人总结11五、参考文献11六、源程序1218一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:录入学生信息(add),上机(enter),下机,预存机时(addtime),退出(quite)。在上面基础上可加以查询(query)加以修饰1、录入学生信息 主要实现程序最初运行时学生数据的录入以及其后的运行中学生数据的追加功能;2、预存机时 实现的功能是按照学号对学生的机时进行增加;3、进入 按照题目的具体要求实现的是按学号进行的上机以及记录当前上机时间;4、下机 按照题目要求是实现学生按学号下机功能并记录当前上机
4、时间,计算上机时间,并在原机时中扣除;5、查询 实现按学号查询学生的姓名,系别,机时等信息;6、退出 在执行功能之后根据需要终止程序的执行。每一个学生记录都包含学号、姓名、系别,以及机时,在程序当中,将学生记录类型定义为结构体类型,添加以及追加的学生信息直接写入d盘的computer.txt文件中,学生的每次上机,其学号都要与computer.txt中的信息保持一致,而且在上机与下机时分别记录时间,并扣除所用上机时间,保证了上机系统的准确性。二、程序流程图1、程序总体结构图图1程序总体结构图2、具体功能框图(1)添加学生信息add图2 添加学生数据函数(2)读取学生数据reads图3读取学生数
5、据(3)学生上机充值addtime三、核心技术的实现说明及相应程序段本程序主要由六个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,添加学生信息、充值、和上下机时间的计算以及查询是程序中较为核心的部分,下面分别进行说明。1、添加数据函数 添加数据是在学生文件(computer.txt)中写入信息,且以追加读写的方式打开,这样才可以保证以前已经存在的数据不丢失。具体的程序段如下:void add()/*添加学生信息*/FILE *fp; int n,i; struct student stu; if(fp=fopen("d:compu
6、ter.txt","aw")!=NULL)/*新建学生文件并添加信息*/ printf("请输入要添加的学生数量,按回车键确认:"); scanf("%d",&n); for(i=0;i<n;i+) printf("n请输入第%d个学生的学号,姓名,系别用空格分开,并按回车键确认:n",i+1); scanf("%s%s%s",stu.num,,stu.xibie); printf("n请输入第%d个学生的机时,并按回车键确认:n",i
7、+1); scanf("%f",&stu.lefttime); fprintf(fp,"n%s %s %s %f",stu.num,,stu.xibie,stu.lefttime);/*学生信息写入文件*/ fclose(fp);2、充值函数该函数的核心内容是对源文件的更新。该函数执行时,首先调用reads函数将文件中的学生信息读入数组当中,并由用户输入待充值学生的学号,而后按照该学号进行查找,如果文件中存在该学生的数据,则增加该学生的机时,并重写机时,否则输出学生信息不存在的提示信息。对学生机时的增加是在结构体数组中实现的,当学
8、生的信息被找到后,位于数组中该学生的剩余时间将加上读入的要增加的机时,并重新写入文件中。具体程序段如下:void addtime()struct student stuN,temp; int n,l; FILE *fp; printf("n请输入要充值的学生学号,按回车键确认:"); scanf("%s",temp.num); reads(stu,&n); for(l=0;l<n;l+) if(strcmp(temp.num,stul.num)=0) break; if(l>n) printf("无此学生信息!")
9、; return; printf("n请输入要增加的时间,按回车键确认:n"); scanf("%f",&temp.lefttime); stul.lefttime=temp.lefttime+stul.lefttime; if(fp=fopen("d:computer.txt","w")=NULL) printf("打开文件失败!"); return; for(l=0;l<n;l+) fprintf(fp,"n%s %s %s %f",stul.num,stu
10、,stul.xibie,stul.lefttime); fclose(fp); printf("充值成功!n");3、上机与下机函数 上机与下机部分时本程序最为核心的部分,主要有上机函数以及主函数中的下机部分组成,并应用了时间函数该过程的思路为在:上机时,学生要输入学号,学生输入学号后,如果在学生信息文件中未发现学生的信息则提示未找到该学生,如发现则提示可以上机,并以start记录上机的时间;下机时,学生依然要输入学号。具体情况与上机类似,此时要记录下机时间end(start与end皆为整形,且以小时为单位)。然后应用时间差计算函数(difftime)算出上机所
11、用时间,借助中间变量将时间转换成秒,读出上级学号原时间,其差即为学生的剩余时间,将剩余时间写入学生信息,覆盖原来的信息。具体程序段如下:上机部分:case 3: enter(); time_t start,end; start=time(NULL); break;void enter() struct student stuN; char number20; int k,n; reads(stu,&n); printf("n请输入学生学号,按回车键确认:n"); getchar(); scanf("%s",number); for(k=0;k&l
12、t;n;k+) if(strcmp(number,stuk.num)=0) break; if(k>=n) printf("没有找到该学生信息!n"); return; else printf("n信息正确,可以登陆n");下机部分case 4:struct student stuN,temp;/*下机*/ int n,j; FILE *fp; printf("n输入下机的学号,以回车结束n"); getchar(); scanf("%s",temp.num); reads(stu,&n); for(
13、j=0;j<n;j+) if(strcmp(temp.num,stuj.num)=0) break; if(j>n)printf("无此学生信息!"); return; end=time(NULL); float m; m=difftime(end,start); float l;l=(m/3600);temp.lefttime=l; stuj.lefttime=stuj.lefttime-temp.lefttime;if(fp=fopen("d:computer.txt","w")=NULL) printf("
14、打开文件失败!"); return; for(j=0;j<n;j+) fprintf(fp,"n%s %s %s %f",stuj.num,,stuj.xibie,stuj.lefttime); fclose(fp); printf("下机成功!n"); break;四、个人总结这次课程设计中,我积极的和同学讨论,并在老师的热心帮助下完成了任务.这次实践使我又进一步熟悉和掌握了C语言的一些基本应用,我深深的体会到编程是一个需要毅力与严密的工作,更使我明白了我们应该努力把所学运用到实践中去。在编程序过程中,我积极的和同学讨
15、论,并在老师的热心帮助下完成了任务。五、参考文献1 谭浩强C程序设计北京:清华大学出版社,20052 刘成等C语言程序设计实验指导与习题集北京:中国铁道出版社,2006六、源程序#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#include<time.h>#include<stddef.h>#define N 20struct studentchar num20; char name10; char xibie10; float
16、lefttime;void menu();void reads(struct student stuN,int *n);void add();void enter();void exit();void addtime();void query();void main() int d; while(1) menu(); printf("n 请输入您要选择的操作序号,按回车键确认:"); scanf("%d",&d); switch(d) case 1: add();break; case 2: addtime();break; case 3: en
17、ter(); time_t start,end; start=time(NULL); break;case 4:struct student stuN,temp;/*下机*/ int n,j; FILE *fp; printf("n输入下机的学号,以回车结束n"); getchar(); scanf("%s",temp.num); reads(stu,&n); for(j=0;j<n;j+) if(strcmp(temp.num,stuj.num)=0) break; if(j>n)printf("无此学生信息!"
18、); return; end=time(NULL); float m; m=difftime(end,start); float l;l=(m/3600);temp.lefttime=l; stuj.lefttime=stuj.lefttime-temp.lefttime;if(fp=fopen("d:computer.txt","w")=NULL) printf("打开文件失败!"); return; for(j=0;j<n;j+) fprintf(fp,"n%s %s %s %f",stuj.num,st
19、,stuj.xibie,stuj.lefttime); fclose(fp); printf("下机成功!n"); break; case 5:query();break; case 6: exit(0); default: printf("输入错误,请输入列表中存在的序号!n "); void menu()/*主菜单*/printf("n * 机房上机系统* "); printf("n 1 时间录入"); printf("n 2 充值"); printf("n 3 上机
20、"); printf("n 4 下机"); printf("n 5 查询"); printf("n 6 退出");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
21、%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","aw")!=NULL)/*新建学生文件并添加信息*/ printf("请输入要添加的学生数量,按回车键确认:"); scanf("%d",&n); for(i=0;i<n;i
22、+) printf("n请输入第%d个学生的学号,姓名,系别用空格分开,并按回车键确认:n",i+1); scanf("%s%s%s",stu.num,,stu.xibie); printf("n请输入第%d个学生的机时,并按回车键确认:n",i+1); scanf("%f",&stu.lefttime); fprintf(fp,"n%s %s %s %f",stu.num,,stu.xibie,stu.lefttime);/*学生信息写入文件*/ fcl
23、ose(fp);void enter() struct student stuN; char number20; int k,n; reads(stu,&n); printf("n请输入学生学号,按回车键确认:n"); getchar(); scanf("%s",number); for(k=0;k<n;k+) if(strcmp(number,stuk.num)=0) break; if(k>=n) printf("没有找到该学生信息!n"); return; else printf("n信息正确,可以登陆n");void addtime()struct student stuN,temp; int n,l; FILE *fp; printf("n请输入要充值的学生学号,按回车键确认:"); scanf("%s",temp.num); reads(stu,&n); for(l=0;l<n;l+) if(strcmp(temp.num,stul.num)=0) break; if(l>n) printf("无此学生信息!"); retur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年家用电器购销合同
- 长沙6号线施工方案
- 公路运输合同样本
- 佣工合同样本
- 构建持续学习的职业生态计划
- 锁盒安装施工方案
- 2025租未装修房屋合同书模板
- 农村灶具销售合同样本
- 出口合同样本 收汇时间
- 2025武汉市经济适用房买卖合同
- 自来水公司安全生产课件
- PANTONE潘通色卡TPX颜色在线查询(1-2部分)
- 复方制剂质量控制
- 外周灌注指数PI
- 浆砌片石挡土墙施工工艺-
- 人教版小学四年级数学下册《第三单元 运算律》大单元整体教学设计2022课标
- 人美版初中美术八年级下册教案 全册
- 财务管理委托代理会计服务 投标文件(技术方案)
- 重庆医药卫生学校入学考试数学试题
- 一年级综合实践《认识安全标志》第一课时说课稿
- 北师大版四年级下册小数乘法竖式计算200题及答案
评论
0/150
提交评论