C语言课设 机房上机系统.docx
《C语言课设 机房上机系统.docx》由会员分享,可在线阅读,更多相关《C语言课设 机房上机系统.docx(13页珍藏版)》请在冰豆网上搜索。
C语言课设机房上机系统
沈阳航空工业学院
课程设计
学号200604111003
班级6411101班
姓名高威
指导教师王晓岩
2008年3月9日
沈阳航空工业学院
课程设计任务书
材料科学与工程学院金属材料专业6411101班学号200604111003
一、课程设计题目:
机房上机系统
二、课程设计工作自2008年3月3日至3月7日
三、课程设计内容:
用C语言编写软件完成以下任务:
四、课程设计要求:
1数据信息(学生的学号,姓名,系别,上机种类存的机时数等)保存在comp.dat文件中
2上机签到
3下机
4存机时票和查询某同学信息等
程序质量:
●贯彻结构化程序设计思想。
●用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
●用户界面中的菜单至少应包括“运算选项”、“数据输入”、“保存结果”、“退出”4项。
●代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:
●封面
●课程设计任务书
●目录
●需求分析(分析题目的要求)
●程序流程图(总体流程图和主要功能模块流程图)
●核心技术的实现说明及相应程序段
●个人总结
●参考资料
●源程序及适当的注释
指导教师:
___王晓岩_________________
学生签名:
___高威_______________
目录
一、需求分析1
二、程序流程图3
三、核心技术的实现说明及相应程序段6
四、个人总结10
五、参考文献11
六、源程序11
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为三个模块,其中每一个模块对应一个函数,他们的功能分别是:
查找函数(search),写文件的函数(xiewj)以及主函数(main)。
在这些函数当中,前两个是两个子函数,而后面的一个函数属于对前两个的调用。
1、查找函数主要是通过你输入的学生的一个信息来查找学生的相关信息;
2、写入学生数据函数实现的功能是把已经编成结构化的信息放入comp.dat文件中;
3、主函数按照题目的具体要求实现的是把学生的相关的要用到的信息显示在页面上,实现调用子函数的过程,和其他查找的过程;
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个学生记录都包含学号、姓名,以及英语、计算机和数学三门成绩,在程序当中,将学生记录类型定义为结构体类型,添加以及追加的学生信息直接写入E盘的student.dat文件中,其他函数每次对学生记录的访问,其数据来源都是student.dat文件,这样做不但可以保证学生数据的一致性,而且可以对学生数据进行永久保存,保证每次运行程序都可以采用原来的数据。
二、程序流程图
1、程序总体结构图
当
(1)
输入
真
n=1?
假
上机
输入
真
n=3?
假
下机
输入
真
n=3?
假
有机时
输入
真
n=4?
假
查信息
n=0
退出
图1程序总体结构图
2、各子程序结构图
(1)查找函数
结构化程序
inti=0;
while(b[i].number!
=x&&ii++;
if(i是否
b[i],isshu=b[i],jsshu-yis
退出
j=i;
输出学生信息
图2查找函数
(2)写入学生数据函数
定义打开文件
是否能够以写入式打开指定路径下的文件?
是否
for(x=0;x
退出
是否能将信息写入指定文件?
是否
输出学生
各项信息
写入
错误
图3写入学生数据函数
三、核心技术的实现说明及相应程序段
本程序主要由两个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,查找函数和写入学生数据函数是程序中较为核心的部分,下面分别进行说明。
1、查找函数主要是通过你输入的学生的一个信息来查找学生的相关信息;运用while语句和time函数。
程序如下:
voidsearch(structstudentb[],intx,intn)/*在数据系统中查找学生信息*/
{
inti=0;
while(b[i].number!
=x&&ii++;
if(ib[i].jsshu=b[i].jsshu-yjs;
j=i;
printf("\n\n\n\n\n\n");
printf("||*************************************************\n");
printf("||yournameis:
%s\n",b[i].name);
printf("||numberis:
%d\n",b[i].number);
printf("||departmentis:
%s\n",b[i].department);
printf("||sjzhongleiis:
%s\n",b[i].sjzhonglei);
printf("||jsshuis:
%d\n",b[i].jsshu);
printf("||*************************************************||\n");
printf("\n\n\n\n\n\n");
}
time_tstart,end;
intjs=0;
intservenumber;
2、写入学生数据函数
该函数的核心内容主要是通过你输入的学生的一个信息来查找学生的相关信息;运用fopen打开指定路径下的文件,运用fwrite写入学生信息。
程序如下:
voidxiewj(structstudentb[],intx,intn)
{
FILE*fp;
if((fp=fopen("c:
\\comp.dat","w+"))==NULL)/*打开文件判断*/
{
printf("cant'tsetupfilecomp.dat\n");
exit
(1);
}
for(x=0;x{
if(fwrite(&stu[x],sizeof(structstudent),1,fp)!
=1)
printf("writingfileiswrong\n");
}
//fprintf(b[x].name,b[x].number,b[x].department,b[x].sjzhonglei,b[x].jsshu,fp);
}
四、个人总结
看到题目才知道自己其实对C语言一点也不了解,题目和我自己想的简直就是十万八千里的,还要从新温习书上的东西前几天大约在周三左右吧,就是一直在看书在找一些有关我的题目所需要的函数然后查库函数到周四开始我的程序,没有多少成果还是有很多的错误有的问同学有的是在老师的帮助下解决的,唯一让我庆幸的就是我的课设还不是很难就在很多应用的地方都有找到的,就是在程序中应用的时间问题上还不是很清楚就是找了一些资料,由于并不是以前学过的,还是有些生疏的。
还是请了一个朋友帮我改了许多,这已经到周五了,早上还改了几个地方才有了眉目的,就是想要是再完美一点就更好了。
有几个地方还是要改的,可是好像不是很对就不行了,就把那些用\\删掉了,是同学给我加的,不太理解应该是用VC写的时候用的吧把它删掉就好了。
终于在努力下有了结果。
虽然很累的但是我还是收获很多的。
我想对我以后的考试和自学都会有一定的收获的,而且我还在四月考级,这也帮我学习它提高了很多信心的。
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
3廖湖声叶乃文.C
六、源程序
#include
#include
#include
#defineMAX5
intj=0,yjs=0;
intnum=0;
structstudent{
intnumber;/*学号*/
charname[10];/*姓名*/
chardepartment[50];/*系别*/
charsjzhonglei[10];/*上机种类*/
intjsshu;/*存的机时数*/
}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}
};
voidsearch(structstudentb[],intx,intn)/*在数据系统中查找学生信息*/
{
inti=0;
while(b[i].number!
=x&&ii++;
if(ib[i].jsshu=b[i].jsshu-yjs;
j=i;
printf("\n\n\n\n\n\n");
printf("||*************************************************\n");
printf("||yournameis:
%s\n",b[i].name);
printf("||numberis:
%d\n",b[i].number);
printf("||departmentis:
%s\n",b[i].department);
printf("||sjzhongleiis:
%s\n",b[i].sjzhonglei);
printf("||jsshuis:
%d\n",b[i].jsshu);
printf("||*************************************************||\n");
printf("\n\n\n\n\n\n");
}
time_tstart,end;
intjs=0;
intservenumber;
voidxiewj(structstudentb[],intx,intn){
FILE*fp;
if((fp=fopen("c:
\\comp.dat","w+"))==NULL)/*打开文件判断*/
{
printf("cant'tsetupfilecomp.dat\n");
exit
(1);
}
for(x=0;x{
if(fwrite(&stu[x],sizeof(structstudent),1,fp)!
=1)
printf("writingfileiswrong\n");
}
//fprintf(b[x].name,b[x].number,b[x].department,b[x].sjzhonglei,b[x].jsshu,fp);
}
main(){
//clrscr();
//textbackground(GREEN);
//textcolor(RED);
xiewj(stu,0,5);
printf("\n\n\n\n\n\n");
printf("||**************welcometocomputer****************||\n");
printf("||pleasechooseoneofservesasfollow:
||\n");
printf("||1:
register||\n");
printf("||2:
leave||\n");
printf("||3:
savethejspiao||\n");
printf("||4:
inquiretheinformation||\n");
printf("||0:
EXIT||\n");
printf("||*************************************************||\n");
printf("\n\n\n\n\n\n");
a:
scanf("%d",&servenumber);
switch(servenumber)
{
case1:
printf("======================REGISTER====================\n\n\n");
start=time(NULL);
printf("welcometostudy\n\npleaseenteryournumber:
\n\n\n");
scanf("%d",&num);
search(stu,num,MAX);
break;
case2:
printf("======================LEAVE====================\n\n\n");
end=time(NULL);
yjs=difftime(end,start);
printf("Beforeyouleave,pleaseenteryournumber\n\n\n");
scanf("%d",&num);
search(stu,num,MAX);
printf("\n\n\nyoucanleave!
\n\n\n");
break;
case3:
printf("======================SAVE====================\n\n\n");
printf("savetickets,pleaseenteryournumber\n\n\n");
scanf("%d",&num);
search(stu,num,MAX);
printf("pleaseenterhowmanyjswhichyouwanttosave:
\n\n\n");
scanf("%d",&js);
stu[j].jsshu=stu[j].jsshu+js;
printf("youhavesaved%djs\n",js);
printf("Tosumup,youhavehad%djs\n",stu[j].jsshu);
break;
case4:
printf("======================INQIRMENT====================\n\n\n");
printf("inquireyourinformation,pleaseenteryournumber:
\n\n\n");
scanf("%d",&num);
search(stu,num,MAX);
break;
case0:
exit(0);
default:
printf("pleaseenterthecorrectnumber!
!
\n");
}
getchar();
gotoa;
}