C语言课程设计学生选课系统实习报告材料.docx
- 文档编号:27113990
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:57
- 大小:457.49KB
C语言课程设计学生选课系统实习报告材料.docx
《C语言课程设计学生选课系统实习报告材料.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生选课系统实习报告材料.docx(57页珍藏版)》请在冰豆网上搜索。
C语言课程设计学生选课系统实习报告材料
C语言上机实习报告
院系:
班级:
姓名:
指导老师:
2010-8-28至2010-9-4
七、上机实习………………………………………………………………………..28
八、设计实习心得…………………………………………………………………..29
九、参考书目………………………………………………………………………..29
十、学生选课系统与程序…………………………………………………………..30
一、设计目的
随着信息技术对人类社会进行的全方位渗透,一种新的文化形态——信息时代的计
算机文化已经形成。
计算机知识成为当代知识分子结构中不可缺少的重要部分。
C语言是近年来国内外得到迅速推广使用的一种高级语言。
C语言功能丰富,表达能
力强,使用灵活方便,应用广,目标程序效率高,可移植性好,既具有高级语言的优点,
又具有低级语言的语言特点,因此C语言对我们来说很重要。
学习的目的在于将所学到的东西运用于实践,这样方可在实践中巩固以前所学的理论知识,同时提高自己学习的能力,完善自己掌握的技能,使得我们既能够从实践中强化以前所学的知识,也能让我们在实践中学到更多新的东西,还能锻炼我们的动手能力,这是书本上不能学到的。
此次设计就在于让我们把以往所学运用于实践中,让我们通过对实际生活中的实例进行观察和理论分析后,总结出一套可行的解决方案,然后用编程的方法,把解决方案变为可能。
此次设计,也让我们巩固和加深了对C语言课程的基本知识的理解和掌握,帮助我们掌握C语言编程和程序调试的基本技能,让我们体验了如何用C语言进行基本的软件设计,同时也提高了我们书写程序说明的能力和用C语言解决实际问题的能力。
二、设计要求
1.认真分析实习指导老师分配的课程设计题目的要求;
2.写出详细设计说明,分块论述;
3.编写程序代码,调试程序使其能正确运行,并且可以实现预期的功能;
4.设计完成的软件要便于操作和使用,有整齐、美观的使用界面;
5.设计完成后提交课程设计报告和源代码文件的电子文档。
三、题目及其要求
假定有n门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于15)自由选课。
试设计一个选修课程系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)课程信息和学生选课信息录入功能(课程信息用文件保存)
(3)课程信息浏览功能
(4)查询功能
(5)按学分查询
(6)某门课程学生选修情况(可选项)
四、需求分析
根据题目要求,由于课程和学生所选课程的信息是存放在文件中的,所以要提供文件的输入输出等操作;在程序过程中还要进行添加课程、浏览课程、查找课程、选择课程、删除课程以及退出系统等操作,所以应提供相应的输入、现实、查找、选择、删除和退出等功能的函数来实现;另外还要在最开始设置菜单函数,实现其它功能的选择。
五、总体设计
根据以上的题目要求以及需求分析,我认为可将我要设计的程序分为十一个模块:
主函数、菜单函数、输入课程、添加课程、修改课程、查找课程、选择课程、删除课程、浏览课程、退出系统、保存文件。
(系统功能模块如图5-1所示)
六、详细设计
6.1、主函数
主函数一般设计简洁,本次设计遵循程序清晰可读,功能完善的原则,尽量合理简化程序。
在主函数中,仅提供了标准输出函数的调用和菜单函数的调用。
主函数流程图如下图所示:
其代码如下所示:
/*主函数*/
voidmain()
{
intb=1;
system("color6f");
printf("\n\n\n\n\n\n\n\n\n\n\t\t\t正在启动系统>>>>>>>>>>>>\t\n");
for(i=0;i<100000000;i++);
system("color2f");
menu();
}
6.2、菜单函数
根据所要实现的功能,我编译了一个菜单函数,将所有选择功能集中,提供给用户进行选择。
这样做既可以使程序更加紧然有序,也为用户提供了方便快捷的选择,使得整个设计更加人性化。
菜单函数的流程图如下图所示:
菜单函数的代码如下所示:
voidmenu()
{
chark[100]="\n\n\n\t\t\t\t\t052081班王兵武\n\n\n\n\n\n\n";
char*m=k;
do
{
system("cls");
puts("\n\t\t***************管理员菜单***************");
puts("\n\t\t\t\t1.输入课程.");
puts("\n\t\t\t\t2.添加课程.");
puts("\n\t\t\t\t3.修改课程.");
puts("\n\t\t\t\t4.查找课程.");
puts("\n\t\t\t\t5.选择课程.");
puts("\n\t\t\t\t6.删除课程.");
puts("\n\t\t\t\t7.浏览课程.");
puts("\n\t\t\t\t8.退出系统.\n");
puts("\t\t********************************************\n");
printf("\n\t\t请输入您的选择(1-8):
\t");
scanf("%d",&a);
printf("\n\t\t--------------------------------------------\n\n");
switch(a)
{
case1:
input();break;
case2:
add();break;
case3:
amend();break;
case4:
search();break;
case5:
select();break;
case6:
cross_off();break;
case7:
output();break;
case8:
{
system("cls");for(i=0;i<10000000;i++);
system("color8f");puts("\n\n\n\n\t\t\t谢谢使用。
已退出系统。
");
for(m=k;m } default: puts("输入错误! ");break; } printf("按任意键返回首层\n"); getch(); } while(a! =8); } 运行主函数和菜单函数效果如下: 显示进入系统 进入主菜单: 6.3各模块设计 通过主函数调用菜单函数,通过菜单函数里的开关语句选择调用各功能函数。 下面详述各功能函数。 6.3.1输入函数 通过菜单函数调用此函数用于输入已有课程信息,并通过输入函数调用保存函数将课程信息保存在“课程.txt”文件中。 其流程图如下所示: 其代码如下: /*输入函数*/ voidinput() { inti,flag=0,num=0; charq; do { flag=0; printf("请输入课程编号: "); scanf("%d",&num); for(i=0;i if(num==KC[i].num) { flag=1;break; } if(flag) { printf("此课程已存在! 按任意键返回主菜单。 \n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("请输入: "); q=getch();menu(); } else { KC[count].num=num; printf("请输入课程名称: "); scanf("%s",KC[count].name); printf("请输入课程性质: "); scanf("%s",KC[count].xingzhi); printf("请输入课程学时: "); scanf("%d",&KC[count].xueshi); printf("输入实验上机学时: "); scanf("%d",&KC[count].shiyan_shangji); printf("请输入课程学分: "); scanf("%f",&KC[count].xuefen); printf("请输入开课学期: "); scanf("%d",&KC[count].xueqi); count++;baocun();printf("输入成功! \n"); } }while(flag==1); } 输入函数运行效果如下图: (1)输入新课程,显示继续添加: (2)重复输入则运行如下: 6.3.2添加函数 通过菜单函数调用添加课程函数,进行新课程的添加。 输入课程编号,判断其是否已经存在,已存在则选择重新输入或者返回主菜单,不存在则继续添加该课程的其他信息,并调用保存函数将其信息保存在“课程.txt”文件中。 其流程图如下所示: 程序代码如下: /*添加函数*/ voidadd() { inti,j,flag=0,num=0; charq; do{ flag=0; printf("请输入课程编号: "); scanf("%d",&num); for(i=0;i { if(num==KC[i].num){ flag=1; break; } } if(flag){ printf("此课程已存在! \n\t\t请重新选择: 1--->重新输入;其它键--->返回主菜单\n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("请输入: \n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); q=getch(); if(q=='1')add(); elsemenu();} else { j=count; KC[j].num=num; printf("请输入课程名称: "); scanf("%s",KC[j].name); printf("请输入课程性质: "); scanf("%s",KC[j].xingzhi); printf("请输入课程学时: "); scanf("%d",&KC[j].xueshi); printf("输入实验上机学时: "); scanf("%d",&KC[j].shiyan_shangji); printf("请输入课程学分: "); scanf("%f",&KC[j].xuefen); printf("请输入开课学期: "); scanf("%d",&KC[j].xueqi); count++; baocun(); printf("添加成功! \n"); printf("请继续选择: 1--->继续输入;其它键--->返回主菜单\n"); q=getch(); if(q! ='1')menu(); } }while(flag==1); } 其运行效果如下图所示: (1)所添加课程原来不存在,则继续添加该课程信息: (2)所添加课程已经存在,则继续选择进行下一步操作: 6.3.3修改函数 修改函数用于对已经存在的课程信息进行相应的修改,用来修改已有课程的名称、学时、实验上机学时、学分和开课学期相关信息。 调用该函数时,先输入课程编号,判断其实都存在,如果存在,则进行相应项的修改,修改完毕保存然后选择继续修改或者返回主菜单。 若不存在,则进行选择,选择继续修改或者返回主菜单。 流程图如下所示 修改模块代码如下: /*修改函数*/ voidamend() { intnum,i,flag=0; charq; do { printf("请输入要修改的课程编号: "); scanf("%d",&num); for(i=0;i if(num==KC[i].num)flag=1; if(flag==1) { printf("请输入修改后的课程名称: "); scanf("%s",KC[i].name); printf("请输入修改后课程性质: "); scanf("%s",KC[i].xingzhi); printf("请输入修改后课程学时: "); scanf("%d",&KC[i].xueshi); printf("输入修改后实验上机学时: "); scanf("%d",&KC[i].shiyan_shangji); printf("请输入修改后课程学分: "); scanf("%f",&KC[i].xuefen); printf("请输入修改后开课学期: "); scanf("%d",&KC[i].xueqi); baocun(); printf("修改成功! 请选择: 1--->继续修改;其它键--->返回主菜单\n"); flag=0; printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("请输入: "); q=getch(); if(q! ='1')menu(); elseamend(); } else { printf("无此课程! 1--->重新输入;任意键--->返回主菜单\n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("请输入: "); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); q=getch(); if(q! ='1')menu(); elseamend(); } }while(flag==0); } 运行修改函数效果如下: (1)输入已有课程,继续修改其他信息,显示修改成功,然后继续选择: (2)输入课程不存在,选择继续修改或者返回主菜单: 6.3.4查找函数 调用查找函数,先选择按编号查找或者按学分查找,然后进行下一步。 输入1,则按编号进行查找,若该课程存在,则程序将该课程信息打印在屏幕上,若不存在,则打印不存在信息并提示继续选择查找或者返回主菜单;输入2,则按学分进行查找,若该课程已存在,则程序将其信息打印与屏幕上,若不存在则打印不存在的信息,并提示继续选择。 查找模块流程图如下 其代码如下所示: voidsearch() { charq; intnum,i,xuefen,m,flag=0; puts("\n\n\n\t\t请选择: 1--->按编号查询;2--->按学分查询\n"); scanf("%d",&m); if(m==1) do{ printf("请输入课程编号: "); scanf("%d",&num); for(i=0;i { if(num==KC[i].num){flag=1;break;} } if(flag) { printf("课程编号课程名称课程性质课程学时实验上机课程学分 开课学期\n"); printf("%d\t%s\t%s\t%d\t%d\t%1.f\t%d\n",KC[i].num,KC[i].name,KC[i].xingzhi,KC[i].xueshi, KC[i].shiyan_shangji,KC[i].xuefen,KC[i].xueqi); } else { printf("无此课程! \n请选择: 1--->重新输入;其它键--->返回主菜单\n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("请输入: \n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); q=getch();if(q! ='1')menu(); } }while(flag==0); if(m==2) do{ printf("请输入课程学分: "); scanf("%d",&xuefen); for(i=0;i { if(xuefen==KC[i].xuefen){flag=1;break;} } if(flag) { printf("课程编号课程名称课程性质课程学时实验上机课程学分 开课学期\n"); printf("%d\t%s\t%s\t%d\t%d\t%1.f\t%d\n", KC[i].num,KC[i].name,KC[i].xingzhi,KC[i].xueshi,KC[i].shiyan_shangji,KC[i].xuefen,KC[i].xueqi); } else { printf("无此课程! \n请选择: 1--->重新输入;其它键--->返回主菜单\n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("请输入: \n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); q=getch();if(q! ='1')menu(); } }while(flag==0); if((m! =1)&&(m! =2)) {printf("\n\t\t您的输入有误。 按任意键返回主菜单。 \t");q=getch();menu();} } 运行效果如下五幅图所示: (1)有主菜单选择“4”查找课程,提示选择按编号或者学分进行查找: (1)按编号输入查找,输入已有课程math编号2,效果如下: (2)按编号查询课程,输入编号不存在,提示相关信息及作出相关选择: (4)按学分查询,输入已有课程学分,打印相关信息并提示选择: (5)输入的学分不存在,显示不存在的信息并提示选择: 6.3.5选择课程 在菜单函数中选择5,进入选课函数,系统会提示输入课程编号已经学生的学号。 若输入的课程编号存在,则打印选课成功,并将所选择的课程的信息存入“选课.txt”文档中,并提示选择继续选课或者返回主菜单;若输入的课程编号不存在,则打印岂不存在并提示进行选择继续选课或者返回主菜单。 其流程图如下所示: 选课函数的代码如下: /*选课课程*/ voidselect() { longnum2=0,xuehao1; inti,flag=0; charq; FILE*fp_; fp_=fopen("选课.txt","w"); if(fp_==NULL) { printf("Fileopenerror! \n"); exit(0); } do{ printf("请输入课程编号: "); scanf("%d",&num2); printf("请输入您的学号: "); scanf("%ld",&xuehao1); for(i=0;i if(num2==KC[i].num) { flag=1;break; } } if(flag) { fprintf(fp_,"%d\t%s\t%s\t%d\t%d\t%1.f\t%d\n", KC[i].num,KC[i].name,KC[i].xingzhi,KC[i].xueshi, KC[i].shiyan_shangji,KC[i].xuefen,KC[i].xueqi); xuanke[count1].KCnum=num2; xuanke[count1].xuehao=xuehao1; printf("选课成功! \n"); printf("您的学号为: %d\n您所选课程号为: %d\n", xuanke[count1].xuehao,xuanke[count1].KCnum); flag=1; if(fclose(fp_)) { printf("Cannotclosethefile! \n"); } printf("\n\n\t\t请选择是否继续选课: 1--->继续选课;其它键--->返回主菜单\n\n"); printf("*****************************************\n\n"); q=getch(); if(q=='1')select(); elsemenu(); } else { printf("无此课程! 请选择: 1--->继续选课;其它键--->返回主菜单\n\n"); printf("*****************************************\n\n"); q=getch(); if(q=='1')select(); elsemenu(); } }while(flag==0); } 调用选课函数后效果如下两幅图所示: (1)输入课程编号存在时,打印选课成功,并将信息存入文档: (2)输入的课程编号不存在,则打印不存在的信息,并提示做出选择: 6.3.6删除课程 有主菜单选择6,进入删除函数。 执行此函数,先输入课程编号,若编号存在,则从文件中删除该课程,并打印删除成功,提示按任意键返回主菜单;若编号不存在,则打印输入课程不存在,提示重新输入或者返回主菜单。 其流程图如下所示: 其代码如下: voidcross_off() { charq; intnum4=0; inti,j,flag=0; do{ printf("请输入要删除的课程编号: "); scanf("%d",&num4); for(i=0;i if(num4==KC[i].num) {flag=1;break;} if(flag){ for(j=i;j { KC[j].num=KC[j+1].num;strcpy(KC[j].name,KC[j+1].name); strcpy(KC[j].xingzhi,KC[j+1].xingzhi); KC[j].x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 学生 选课 系统 实习 报告 材料
![提示](https://static.bdocx.com/images/bang_tan.gif)