C语言课程设计学生选课系统实习报告.docx

上传人:b****7 文档编号:9894023 上传时间:2023-02-07 格式:DOCX 页数:56 大小:376.23KB
下载 相关 举报
C语言课程设计学生选课系统实习报告.docx_第1页
第1页 / 共56页
C语言课程设计学生选课系统实习报告.docx_第2页
第2页 / 共56页
C语言课程设计学生选课系统实习报告.docx_第3页
第3页 / 共56页
C语言课程设计学生选课系统实习报告.docx_第4页
第4页 / 共56页
C语言课程设计学生选课系统实习报告.docx_第5页
第5页 / 共56页
点击查看更多>>
下载资源
资源描述

C语言课程设计学生选课系统实习报告.docx

《C语言课程设计学生选课系统实习报告.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生选课系统实习报告.docx(56页珍藏版)》请在冰豆网上搜索。

C语言课程设计学生选课系统实习报告.docx

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("error!

\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=K

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1