C语言程序设计实验课程设计结果汇报Word文件下载.docx
- 文档编号:17760397
- 上传时间:2022-12-09
- 格式:DOCX
- 页数:25
- 大小:323.04KB
C语言程序设计实验课程设计结果汇报Word文件下载.docx
《C语言程序设计实验课程设计结果汇报Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验课程设计结果汇报Word文件下载.docx(25页珍藏版)》请在冰豆网上搜索。
3、查询功能:
按条件(班级、学号、姓名)显示学生的上机时间。
4、机器使用情况的显示(显示方式不限但要一目了然)
模块二:
程序分析
说明分析思路:
概括:
总体上应该非为六个大部分,包括上机登陆,信息查询,计费查询,机器使用情况,登陆下机,退出系统
1.登陆上机:
学生信息包括学号,班级,姓名,还有上机时间,机器编号,机器使用情况等,应该采用结构体来含括并引用这些信息如:
Structstudent
{
Charnum;
Charname;
……..
}student[30];
;
并且结构体必须至少可以保存30个学生的信息;
2.信息查询,采用for循环以及dowhile语句嵌套使用,根据多种情况查询使用switch语句;
3.计费查询,通过获取系统时间,再与上机时间作比较,按每小时1元计费.(注意:
获取系统时间的程序从网上查询得知)
4.机器使用情况,模仿逻辑运算的知识,无人使用的机器可以标记为mark=0,反之则mark=1;
采用循环语句写较为方便,通过比较机器的标记mark的值,再用另外的变量来记录未使用的机器和已经在使用的机器
5.登陆下机,输入用户的信息即可
6.退出系统:
正在退出系统,感谢您的使用
模块三:
流程图如下:
CxStudent()函数流程图
模块四:
程序代码如下:
#include<
stdio.h>
time.h>
string.h>
Windows.h>
structstudent
charnum[15];
chartheClass[8];
charname[20];
charonTime[8];
intmark;
intno;
voidadd()
for(intm=0,x=0;
m<
30;
m++)
{
if(student[m].mark==0)
x++;
}
printf("
\n\t目前空闲可用的机器共有%d台,学生人数不能多于可用机器总数"
x);
intn,i;
\n请输入要上机的学生的总数:
"
);
for(i=0;
i<
10;
i++)
scanf("
%d"
&
n);
if(n>
x)
{
printf("
空闲机器不够用,请重新输入总数:
continue;
}
else
break;
inta[30];
i=0;
for(intf=0;
f<
f++)
if(student[f].mark==0)
a[i]=f;
i++;
if(i==n)
n;
i++)
printf("
\t请输入第%d个学生学号:
i+1);
do
scanf("
%s"
student[a[i]].num);
if(strlen(student[a[i]].num)!
=12)
{
printf("
输入学号出错,请重新输入:
m=31;
}
else
for(f=0;
f++)
{
if(a[i]==f)
f=f+1;
if(strcmp(student[a[i]].num,student[f].num)==0)
{
printf("
当前有此学号学生在上机,检查是否输入有误,重新输入:
m=31;
break;
}
else
m=32;
}
}while(m==31);
\t请输入第%d个学生班级:
student[a[i]].theClass);
if(strlen(student[a[i]].theClass)!
=7)
班级输入错误,请重新输入:
continue;
m=32;
\t请输入第%d个学生姓名:
scanf("
student[a[i]].name);
\t请输入第%d个学生上机时间(如08:
02,“:
”要用英文输入法输入):
student[a[i]].onTime);
if(strlen(student[a[i]].onTime)!
=5)
输入时间错误,请重新输入(如08:
”要用英文输入法输入):
elseif(student[a[i]].onTime[2]!
='
:
'
)
输入有误,请重新输入(如08:
elseif(student[a[i]].onTime[0]<
3'
if((student[a[i]].onTime[0]=='
2'
)&
&
(student[a[i]].onTime[1]>
))
printf("
02):
m=31;
continue;
elseif(student[a[i]].onTime[3]>
5'
else
m=32;
elseif(student[a[i]].onTime[0]>
student[a[i]].mark=1;
您已经成功输入%d个学生的信息"
//system("
cls"
}
voidsearchStudent()
inti=0,b,c,d;
m++)
if(student[m].mark==1)
a[i]=m;
do
charfind[20];
\n查询方式:
1.根据学号查询2.根据班级查询3.根据姓名查询\n请选择:
b);
if(b<
1||b>
3)
选择出错,请重新选择:
switch(b)
case1:
d=0;
\t请输入学生的学号:
find);
for(i=0;
x;
if(strcmp(student[a[i]].num,find)==0)
if(d==0)
\n学生姓名\t学生班级\t学生学号\t上机时间\t所用机号\n"
%s\t%s\t%s%s%d"
student[a[i]].name,student[a[i]].theClass,student[a[i]].num,student[a[i]].onTime,student[a[i]].no);
d++;
if(d==0)
\n提示:
没有这个学生\n"
\n\t1.继续查询\n\t0.返回主菜单"
\n\t请输入您的选择:
do
scanf("
c);
if(c<
0||c>
1)
}while(m==31);
case2:
\t请输入学生的班级:
if(strcmp(student[a[i]].theClass,find)==0)
if(d==0)
没有这个班的学生\n"
\n\t1.继续查询\n\t2.返回主菜单"
1||c>
2)
case3:
\t请输入学生的姓名:
if(strcmp(student[a[i]].name,find)==0)
default:
printf("
提示:
输入错误"
}while(c);
voidcalculate()
intfee;
chartimes[30];
time_trawtime;
structtm*timeinfo;
time(&
rawtime);
timeinfo=localtime(&
strcpy(times,asctime(timeinfo));
inti=0;
if(i==0)
当前没有学生在上机\n"
else
所有学生上机费用如下:
\n"
for(i=0;
%d号机\t学生:
\t%s\t%s"
student[a[i]].no,student[a[i]].num,student[a[i]].name);
if((student[a[i]].onTime[3]-48)*10+(student[a[i]].onTime[4]-48)>
(times[14]-48)*10+(times[15]-48))
fee=(times[11]-48)*10+times[12]-(student[a[i]].onTime[0]-48)*10-student[a[i]].onTime[1];
else
fee=(times[11]-48)*10+times[12]-(student[a[i]].onTime[0]-48)*10-student[a[i]].onTime[1]+1;
if(fee<
0)
\t费用为:
%d元\n"
fee+24);
elseprintf("
fee);
voidsearchPC()
intn,m=0;
\n目前可用的机器为:
for(inti=0;
if(student[i].mark==0)
n=student[i].no;
%d号\t"
n);
m++;
\n\t共%d台机器可用\n"
m);
voidOut()
charfind[10];
rawtime=time(NULL);
strftime(times,29,"
%H:
%M"
localtime(&
rawtime));
\n\t请输入要下机同学的学号:
if(strcmp(student[a[i]].num,find)==0)
(times[3]-48)*10+(times[4]-48))
fee=(times[0]-48)*10+times[1]-(student[a[i]].onTime[0]-48)*10-student[a[i]].onTime[1];
fee=(times[0]-48)*10+times[1]-(student[a[i]].onTime[0]-48)*10-student[a[i]].onTime[1]+1;
\n学生学号学生姓名所用机号上机时间下机时间费用\n"
%s%s%d%s%s%d\n"
student[a[i]].num,student[a[i]].name,student[a[i]].no,student[a[i]].onTime,times,fee);
student[a[i]].mark=0;
m=31;
//system("
if(m!
=31)
学号可能输入错误,找不到该生\n"
intmanu()
intd;
\t|-------------欢迎进入机房收费管理系统-------------|\n"
\t|您的操作已成功,请继续选择,可供选择的操作有:
|\n"
\t|1.登记上机2.学生查询|\n"
\t|3.计费查询4.机器使用情况|\n"
\t|5.下机登记6.退出系统|\n"
\t|--------------------------------------------------|\n"
\n\t请输入您的选择:
d);
if(d<
1||d>
6)
输入错误,请重新输入选择:
return(d);
voidchoice()
\n\t\t\t\t提示\n\t学生学号为12个字符(如012345671111)\n\t班级为七位数字(如:
1121813)\n\t姓名为20个字符(中英文均可)\n\t输入时间要用英文输入法,特别时间格式中的“:
”必须用英文输入如00:
00\n"
intquit=0;
student[i].mark=0;
student[i].no=i+1;
while(!
quit)
switch(manu())
add();
break;
searchStudent();
calculate();
case4:
searchPC();
case5:
Out();
case6:
\n\t正在退出系统\t谢谢使用\t再见\n"
quit=1;
voidmain()
{intch;
请自觉遵守校纪校规,严禁通宵上网\n"
同意,请按1,不同意请按2"
\n请选择"
ch);
system("
switch(ch)
case1:
choice();
break;
case2:
\t\t\t\t感谢您的使用,再见\n"
模块五:
实验心得:
通过此次试验,我认识到对于c语言这门课程的学习还存在着许多的问题,拿到一个程序,感觉到无法下手,这应该是我还是缺少足够的实践能力,无法将所学到的知识运用到实际的编程问题中,打个比方,int指的是整型常量,大家都应该知道,但是在编程中,往往会由于实际需求,数字的大小超过了int的最大数字,这就会导致了一些莫名的问题,而且呢这些问题往往很容易被我们所忽略,这样导致的问题往往比较难找到,找出并且将问题纠正,这样一来就导致了浪费时间,打击了自信心,认为自己很笨,以后也不敢下手去写程序,这样就形成了一个恶性循环,导致这门课程学的很差,甚至挂科,补考,重修,还是不过,后面的结果我就不说了。
所以了,我们应该敢于动手去写程序,这样才会发现问题,发现并改正问题,学到没有学过的或者忘记或者没有学好的知识,还能将所学的知识熟练地运用到实际编程中去,从中获得许多益处。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 实验 课程设计 结果 汇报