沈阳航空工业学院
课程设计任务书
电子信息工程学院 电子信息工程专业 84020103班 学号[1**********]55
一、课程设计题目:机房上机系统
二、课程设计工作自2009年9月7日起至2009年7月11日止 三、课程设计内容:
用C 语言编写软件完成以下任务:
(1)从键盘输入学生的学号,姓名,系别,机时数等信息,保存在computer.txt 文件中。
(2)上机:记录当前的上机时间。
(3)下机:再次记录当前的上机时间,计算上机所用的时间,并从机时数中扣除。
(4)预存机时。
四、课程设计要求:
程序质量:
● 贯彻结构化程序设计思想。
● 用户界面友好,功能明确,操作方便;可以加以其它功能或修
饰。
用户界面中的菜单至少应包括“录入学生信息”、“上机”、“下机”、“预存机时”和“退出”5项。
● 代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下: ● 封面
● 课程设计任务书 ● 目录
● 需求分析(分析题目的要求)
● 程序流程图(总体流程图和主要功能模块流程图) ● 核心技术的实现说明及相应程序段 ● 个人总结 ● 参考资料
● 源程序及适当的注释
指导教师:_ __ 学生签名:__ __ 五、成绩:
六、教师评语:
目录
一、需求分析 ............................................................ 1 二、程序流程图 ........................................................ 3 三、核心技术的实现说明及相应程序段 . ............... 7 四、个人总结 . .......................................................... 11 五、参考文献 . .......................................................... 12 六、源程序 . .............................................................. 12
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为三个模块,其中每一个模块对应一个函数,他们的功能分别是:查找函数(search ),写文件的函数(xiewj)以及主函数(main )。在这些函数当中,后一个是主函数,调用后两个函数来实现对程序的编辑和设计。
1、查找函数 主要是通过你输入的学生的一个信息来查找学生的相关信息,并显示;
2、写入学生数据函数 实现的功能是把已经编成结构化的信息放入computer.dat 文件中;
3、主函数 通过调用查找函数和写文件函数以及switch 函数,用case1,case2,case3,case4来实现学生的上机,下机,储存时间和查询信息;
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个学生记录都包含学号、姓名,上机种类、预存机时,
在程序当中,将学生记录类型定义为结构体类型,添加以及追加的学生信息直接写入E 盘的student.dat 文件中,其他函数每次对学生记录的访问,其数据来源都是student.dat 文件,这样做不但可以保证学生数据的一致性,而且可以对学生数据进行永久保存,保证每次运行程序都可以采用原来的数据。
二、程序流程图
1. 总体结构图
图1程序总体结构图
2、各子程序结构图
(1) 查找函数
图2查找函数
(2)写入学生数据函数
图3写入学生数据函数
三、核心技术的实现说明及相应程序段
本程序主要由两个自定义函数和一个主函数组成,其中主函
数以菜单的形式调用其他函数来实现要求的所有功能。在这些函
数当中,查找函数和写入学生数据函数是程序中较为核心的部分,
下面分别进行说明。
1、 查找函数 主要是通过你输入的学生的一个信息来
查找学生的相关信息;运用while 语句和time 函数。
程序如下:
void search(struct student b[],int x,int n ,double yjs) /*在数据系统中查找学生信息*/
{
int i=0;
while( b[i].number!=x&&i
i++;
if(i
b[i].jsshu=b[i].jsshu-yjs;
j=i;
printf("\n\n\n\n\n\n");
printf("
||*************************************************\n");
printf(" || your
name is :%s\n",b[i].name);
printf(" || number is :%d\n",b[i].number);
printf(" || department is:%s\n",b[i].department);
printf(" || sjzhonglei is:%s\n",b[i].sjzhonglei);
printf(" || jsshu is :%d\n",b[i].jsshu);
printf("
||***********************************************||\n")
printf("\n\n\n\n\n\n");
}
time_t start,end;
int js=0;
int servenumber;
2、写入学生数据函数
该函数的核心内容主要是通过你输入的学生的一个信息来查
找学生的相关信息;运用fopen 打开指定路径下的文件,运用
fwrite 写入学生信息。
程序如下:
void xiewj(struct student b[],int x,int n)
{ FILE *fp;
if((fp=fopen("c:\\comp.dat","w+"))==NULL) /*打开文件判断*/
{
printf("cant't set up file comp.dat\n");
exit(1);
}
for(x=0;x
{ if(fwrite(&stu[x],sizeof(struct student),1,fp)!=1)
printf("writing
wrong\n");
}
}
3. 时间函数
struct tm *p,*p1;
time_t start,end;
start=time(NULL);
end=time(NULL);
p1=localtime(&end);
printf(asctime(p1);
printf("\n");
p=localtime(&start);
printf(asctime(p));
yjs=difftime(end,start)/3600;
file is printf("上机时间是:%f",yjs);
四、个人总结
看到题目才知道自己其实对C 语言一点也不了解,题目和我
自己想的简直就是十万八千里的,想了很多天才有了一些思路,
通过和同学的讨论. 向老师请教,才初步的把程序编出来。但是还
是有一些错误,这些错误主要是在时间函数上,来回改了两三天
才发现是没有头文件的问题。还有存储时间那段还是请了一个朋
友帮我改了许多,早上还改了几个地方才有了眉目的,就是想要
是再完美一点就更好了。终于在努力下有了结果。虽然很累的但
是我还是收获很多的,这个程序有用到时间函数,通过看老师科
件,学会了时间函数,觉得很高兴。从中让我了解到C 语言的用
处。我想对我以后的考试和自学都会有一定的收获的,而且为我
在后几天的考级增加了信心。
五、参考文献
1 谭浩强.C 程序设计.北京:清华大学出版社,2005
2 刘成等.C 语言程序设计实验指导与习题集.北京:中国铁道
出版社,2006
3 廖湖声 叶乃文 .C
六、源程序
#include
#include
#include
#define MAX 5
#include"stddef.h"
int j=0;
double js=0;
int num=0;
struct student {
int number; /*学号*/
char name[10]; /*
姓名*/
char department[50]; /*
系别*/
char sjzhonglei[10]; /*上
机种类*/
double jsshu; /*
预存机时*/
}stu[MAX]={ {001,"xiaozhang","zhizao","ziyou",10},
{002,"xiaoliu","dongli","ziyou",8},
{003,"xiaoli","dianzi","ziyou",20},
{004,"xiaohuang","jisuanji","ziyou",25},
{005,"xiaozhao","guojing","ziyou",5}
};
void search(struct student b[],int x,int n,double yjs) /*在数
据中查找学生信息*/
{
int i=0;
while( b[i].number!=x&&i
i++;
if(i
b[i].jsshu=b[i].jsshu-yjs;
j=i;
printf("\n\n\n\n\n\n");
printf("
||*************************************************\n");
printf(" || your name
is :%s\n",b[i].name);
printf(" || number
is :%d\n",b[i].number);
printf(" || department
is:%s\n",b[i].department);
printf(" || sjzhonglei
is:%s\n",b[i].sjzhonglei);
printf(" || jsshu
is :%f\n",b[i].jsshu);
printf("
||*************************************************||\n");
printf("\n\n\n\n\n\n");
}
struct tm *p,*p1;
time_t start,end;
double yjs;
int servenumber;
void xiewj(struct student b[],int x,int n){
FILE *fp;
if((fp=fopen("c:\\comp.dat","w+"))==NULL) /*打开文件判断*/
{
printf("cant't set up file comp.dat\n");
exit(1);
}
for(x=0;x
{
if(fwrite(&stu[x],sizeof(struct student),1,fp)!=1)
printf("writing file is wrong\n");
}
}
main()
{
xiewj(stu,0,5);
printf("\n\n\n\n\n\n");
printf(" ||**************welcome to
computer****************||\n");
printf(" || please choose one of
serves as follow: ||\n");
printf(" || 1:register ||\n");
printf(" || 3:save the jspiao ||\n");
printf(" || 4:inquire the
information ||\n");
printf(" || 2:leave
||\n");
printf(" || 0:EXIT ||\n");
printf("
||*************************************************||\n");
printf("\n\n\n\n\n\n");
a:
scanf("%d",&servenumber);
switch(servenumber)
{
case 1:
printf("
======================REGISTER====================\n\n\n
");
start=time(NULL);p=localtime(&start);
printf(asctime(p));
printf("\n");
printf(" welcome to study\n\n please enter your number:\n\n\n");
scanf("%d",&num);
search(stu,num,MAX,0);
break;
case 2:
printf("
======================LEAVE====================\n\n\n");
end=time(NULL);
p1=localtime(&end);
printf(asctime(p1));
printf("\n");
printf(" Before you leave,please enter your
number\n\n\n");
scanf("%d",&num);
yjs=difftime(end,start)/3600;
printf("上机时间是:%f",yjs);
search(stu,num,MAX,yjs);
printf("\n\n\n you can leave!\n\n\n");
break;
case 3:
printf("
======================SAVE====================\n\n\n"); printf(" save time,please enter your number\n\n\n");
scanf("%d",&num);
search(stu,num,MAX,0);
printf(" please enter how many js which you want to save:\n\n\n");
scanf("%lf",&js);
stu[j].jsshu=stu[j].jsshu+js;
printf(" you have saved %f js\n",js); printf(" To sum up,you have had %f js \n",stu[j].jsshu);
break;
case 4:
printf("
======================INQIRMENT====================\n\n\n");
printf(" inquire your information,please enter your number:\n\n\n");
scanf("%d",&num);
search(stu,num,MAX,0);
break;
case 0: exit(0);
沈 阳 航 院 设 计 用 纸
default:printf(" please enter the correct number!!\n");
}
getchar();
goto a;
}
17
沈阳航空工业学院
课程设计任务书
电子信息工程学院 电子信息工程专业 84020103班 学号[1**********]55
一、课程设计题目:机房上机系统
二、课程设计工作自2009年9月7日起至2009年7月11日止 三、课程设计内容:
用C 语言编写软件完成以下任务:
(1)从键盘输入学生的学号,姓名,系别,机时数等信息,保存在computer.txt 文件中。
(2)上机:记录当前的上机时间。
(3)下机:再次记录当前的上机时间,计算上机所用的时间,并从机时数中扣除。
(4)预存机时。
四、课程设计要求:
程序质量:
● 贯彻结构化程序设计思想。
● 用户界面友好,功能明确,操作方便;可以加以其它功能或修
饰。
用户界面中的菜单至少应包括“录入学生信息”、“上机”、“下机”、“预存机时”和“退出”5项。
● 代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下: ● 封面
● 课程设计任务书 ● 目录
● 需求分析(分析题目的要求)
● 程序流程图(总体流程图和主要功能模块流程图) ● 核心技术的实现说明及相应程序段 ● 个人总结 ● 参考资料
● 源程序及适当的注释
指导教师:_ __ 学生签名:__ __ 五、成绩:
六、教师评语:
目录
一、需求分析 ............................................................ 1 二、程序流程图 ........................................................ 3 三、核心技术的实现说明及相应程序段 . ............... 7 四、个人总结 . .......................................................... 11 五、参考文献 . .......................................................... 12 六、源程序 . .............................................................. 12
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为三个模块,其中每一个模块对应一个函数,他们的功能分别是:查找函数(search ),写文件的函数(xiewj)以及主函数(main )。在这些函数当中,后一个是主函数,调用后两个函数来实现对程序的编辑和设计。
1、查找函数 主要是通过你输入的学生的一个信息来查找学生的相关信息,并显示;
2、写入学生数据函数 实现的功能是把已经编成结构化的信息放入computer.dat 文件中;
3、主函数 通过调用查找函数和写文件函数以及switch 函数,用case1,case2,case3,case4来实现学生的上机,下机,储存时间和查询信息;
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个学生记录都包含学号、姓名,上机种类、预存机时,
在程序当中,将学生记录类型定义为结构体类型,添加以及追加的学生信息直接写入E 盘的student.dat 文件中,其他函数每次对学生记录的访问,其数据来源都是student.dat 文件,这样做不但可以保证学生数据的一致性,而且可以对学生数据进行永久保存,保证每次运行程序都可以采用原来的数据。
二、程序流程图
1. 总体结构图
图1程序总体结构图
2、各子程序结构图
(1) 查找函数
图2查找函数
(2)写入学生数据函数
图3写入学生数据函数
三、核心技术的实现说明及相应程序段
本程序主要由两个自定义函数和一个主函数组成,其中主函
数以菜单的形式调用其他函数来实现要求的所有功能。在这些函
数当中,查找函数和写入学生数据函数是程序中较为核心的部分,
下面分别进行说明。
1、 查找函数 主要是通过你输入的学生的一个信息来
查找学生的相关信息;运用while 语句和time 函数。
程序如下:
void search(struct student b[],int x,int n ,double yjs) /*在数据系统中查找学生信息*/
{
int i=0;
while( b[i].number!=x&&i
i++;
if(i
b[i].jsshu=b[i].jsshu-yjs;
j=i;
printf("\n\n\n\n\n\n");
printf("
||*************************************************\n");
printf(" || your
name is :%s\n",b[i].name);
printf(" || number is :%d\n",b[i].number);
printf(" || department is:%s\n",b[i].department);
printf(" || sjzhonglei is:%s\n",b[i].sjzhonglei);
printf(" || jsshu is :%d\n",b[i].jsshu);
printf("
||***********************************************||\n")
printf("\n\n\n\n\n\n");
}
time_t start,end;
int js=0;
int servenumber;
2、写入学生数据函数
该函数的核心内容主要是通过你输入的学生的一个信息来查
找学生的相关信息;运用fopen 打开指定路径下的文件,运用
fwrite 写入学生信息。
程序如下:
void xiewj(struct student b[],int x,int n)
{ FILE *fp;
if((fp=fopen("c:\\comp.dat","w+"))==NULL) /*打开文件判断*/
{
printf("cant't set up file comp.dat\n");
exit(1);
}
for(x=0;x
{ if(fwrite(&stu[x],sizeof(struct student),1,fp)!=1)
printf("writing
wrong\n");
}
}
3. 时间函数
struct tm *p,*p1;
time_t start,end;
start=time(NULL);
end=time(NULL);
p1=localtime(&end);
printf(asctime(p1);
printf("\n");
p=localtime(&start);
printf(asctime(p));
yjs=difftime(end,start)/3600;
file is printf("上机时间是:%f",yjs);
四、个人总结
看到题目才知道自己其实对C 语言一点也不了解,题目和我
自己想的简直就是十万八千里的,想了很多天才有了一些思路,
通过和同学的讨论. 向老师请教,才初步的把程序编出来。但是还
是有一些错误,这些错误主要是在时间函数上,来回改了两三天
才发现是没有头文件的问题。还有存储时间那段还是请了一个朋
友帮我改了许多,早上还改了几个地方才有了眉目的,就是想要
是再完美一点就更好了。终于在努力下有了结果。虽然很累的但
是我还是收获很多的,这个程序有用到时间函数,通过看老师科
件,学会了时间函数,觉得很高兴。从中让我了解到C 语言的用
处。我想对我以后的考试和自学都会有一定的收获的,而且为我
在后几天的考级增加了信心。
五、参考文献
1 谭浩强.C 程序设计.北京:清华大学出版社,2005
2 刘成等.C 语言程序设计实验指导与习题集.北京:中国铁道
出版社,2006
3 廖湖声 叶乃文 .C
六、源程序
#include
#include
#include
#define MAX 5
#include"stddef.h"
int j=0;
double js=0;
int num=0;
struct student {
int number; /*学号*/
char name[10]; /*
姓名*/
char department[50]; /*
系别*/
char sjzhonglei[10]; /*上
机种类*/
double jsshu; /*
预存机时*/
}stu[MAX]={ {001,"xiaozhang","zhizao","ziyou",10},
{002,"xiaoliu","dongli","ziyou",8},
{003,"xiaoli","dianzi","ziyou",20},
{004,"xiaohuang","jisuanji","ziyou",25},
{005,"xiaozhao","guojing","ziyou",5}
};
void search(struct student b[],int x,int n,double yjs) /*在数
据中查找学生信息*/
{
int i=0;
while( b[i].number!=x&&i
i++;
if(i
b[i].jsshu=b[i].jsshu-yjs;
j=i;
printf("\n\n\n\n\n\n");
printf("
||*************************************************\n");
printf(" || your name
is :%s\n",b[i].name);
printf(" || number
is :%d\n",b[i].number);
printf(" || department
is:%s\n",b[i].department);
printf(" || sjzhonglei
is:%s\n",b[i].sjzhonglei);
printf(" || jsshu
is :%f\n",b[i].jsshu);
printf("
||*************************************************||\n");
printf("\n\n\n\n\n\n");
}
struct tm *p,*p1;
time_t start,end;
double yjs;
int servenumber;
void xiewj(struct student b[],int x,int n){
FILE *fp;
if((fp=fopen("c:\\comp.dat","w+"))==NULL) /*打开文件判断*/
{
printf("cant't set up file comp.dat\n");
exit(1);
}
for(x=0;x
{
if(fwrite(&stu[x],sizeof(struct student),1,fp)!=1)
printf("writing file is wrong\n");
}
}
main()
{
xiewj(stu,0,5);
printf("\n\n\n\n\n\n");
printf(" ||**************welcome to
computer****************||\n");
printf(" || please choose one of
serves as follow: ||\n");
printf(" || 1:register ||\n");
printf(" || 3:save the jspiao ||\n");
printf(" || 4:inquire the
information ||\n");
printf(" || 2:leave
||\n");
printf(" || 0:EXIT ||\n");
printf("
||*************************************************||\n");
printf("\n\n\n\n\n\n");
a:
scanf("%d",&servenumber);
switch(servenumber)
{
case 1:
printf("
======================REGISTER====================\n\n\n
");
start=time(NULL);p=localtime(&start);
printf(asctime(p));
printf("\n");
printf(" welcome to study\n\n please enter your number:\n\n\n");
scanf("%d",&num);
search(stu,num,MAX,0);
break;
case 2:
printf("
======================LEAVE====================\n\n\n");
end=time(NULL);
p1=localtime(&end);
printf(asctime(p1));
printf("\n");
printf(" Before you leave,please enter your
number\n\n\n");
scanf("%d",&num);
yjs=difftime(end,start)/3600;
printf("上机时间是:%f",yjs);
search(stu,num,MAX,yjs);
printf("\n\n\n you can leave!\n\n\n");
break;
case 3:
printf("
======================SAVE====================\n\n\n"); printf(" save time,please enter your number\n\n\n");
scanf("%d",&num);
search(stu,num,MAX,0);
printf(" please enter how many js which you want to save:\n\n\n");
scanf("%lf",&js);
stu[j].jsshu=stu[j].jsshu+js;
printf(" you have saved %f js\n",js); printf(" To sum up,you have had %f js \n",stu[j].jsshu);
break;
case 4:
printf("
======================INQIRMENT====================\n\n\n");
printf(" inquire your information,please enter your number:\n\n\n");
scanf("%d",&num);
search(stu,num,MAX,0);
break;
case 0: exit(0);
沈 阳 航 院 设 计 用 纸
default:printf(" please enter the correct number!!\n");
}
getchar();
goto a;
}
17