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