C语言学生选修课程系统设计.docx
《C语言学生选修课程系统设计.docx》由会员分享,可在线阅读,更多相关《C语言学生选修课程系统设计.docx(17页珍藏版)》请在冰豆网上搜索。
C语言学生选修课程系统设计
《高级语言程序设计》课程设计
说明书
设计题目:
学生选修课程系统设计
目录
1.设计目的…………………….p2
2.总体设计……………………p3
3.详细设计…………………….p4
4.调试与测试………………….p5
5.源程序清单与执行结果…….p6
6.建议和体会………………….p21
一.设计目的
(1)基本掌握面向过程程序设计的基本思路和方法;
(2)达到熟练掌握C语言的基本知识和技能;
(3)能够利用所学的基本知识和技能,解决简单的程序设计问题
程序功能:
(1)输入信息,密码保护
(2)浏览信息
(3)查询信息,提供两种查询方式
(4)统计选课情况
(5)进入选课操作
(6)退出选课系统
二.总体设计
设计的流程图如下
三、详细设计
1、输入初始的课程信息:
课程信息用文件保存,包括课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等相关信息。
在输入课程信息前要先输入管理员密码,从而限制权限;
2、浏览模块:
按照指示就可以找到课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等相关信息;
3、查询模块:
按照指示可以选择通过学分查询信息,或者选择课程性质来查询信息;
4、选择模块:
通过输入学号和课程编号来选择所修课程,并有统计功能;
5、查阅模块:
选择主菜单的选项,可以了解统计所选课程的人数;
6、退出模块:
在主菜单选择“0”退出选课系统。
四:
调试与测试
问题一、查询模块:
其中包括课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等相关信息;当输入学分或者课程性质后,系统进行判断时,提示“输入错误!
请重新输入!
”
解决办法及步骤:
1、浏览所有课程中的学分是否为你所输入的值。
2、浏览所有课程中的课程性质是否有存在你所输入的值。
3、输出用于循环检查语句中的课程,发现乱码。
4、仔细分析乱码的原因,最后发现是变量的类型错误,错将课程性质的结构体指针变量定义为了其他类型的指针变量。
问题二、选择模块:
从主菜单进入选课系统,通过输入学号和课程编号来选择所修课程。
当输入选择信息时,系统却提示“输入错误!
解决办法及步骤:
1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入选择信息,
2、检查当我们在输入选择信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入选择信息。
五.源程序清单与执行结果
#include
structcourse
{
intnum;
charname[20];
charkind[10];
inttime;
intttime;
intetime;
intmark;
intterm;
};
structstudent
intsnum;
intcnum;
charcname[20];
/*课程信息录入*/
voidinsert()
voidmain();
FILE*fp;
structcoursec;
intcount,secret=624816;
inti,secret1;
system("color1f");
if((fp=fopen("E:
\\course.txt","a+"))==NULL)
printf("cannotopenfile\n");
}
printf("请输入系统密码:
");
scanf("%d",&secret1);
if(secret==secret1)
printf("\n密码正确,请输入课程门数:
\n");
scanf("%d",&count);
printf("课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期:
for(i=0;i{scanf("%d%s%s%d%d%d%d%d",&c.num,&c.name,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term);fprintf(fp,"%d%s%s%d%d%d%d%d\n",c.num,c.name,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);}}elseprintf("抱歉,密码错误,您无此权限\n");fclose(fp);main();} /*课程信息浏览*/voidbrowser(){voidmain();FILE*fp;structcoursec;inta;system("color3f");if((fp=fopen("E:\\course.txt","r"))==NULL){printf("\nCannotopencourse!\n");}printf("课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期:\n");for(;!feof(fp);){fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.num,&c.name,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term);printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.num,c.name,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);}fclose(fp);printf("\n1-返回主菜单;2-退出选课系统\n");scanf("%d",&a);if(a==1)main();elseexit(0);} /*课程信息查询*/voidsearch(){voidmain();FILE*fp;structcoursec;intscore;charkind[10];inta;intb;system("color2f");printf("1.按学分查询,2.按课程性质查询.\n");printf("请选择查询方式,输入选项数字:");scanf("%d",&b);if(b==1){printf("\n请输入您要查询的学分:\n");scanf("%d",&score);if((fp=fopen("E:\\course.txt","r"))==NULL){printf("\nCannotopencourse!\n");}printf("课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期:\n");for(;!feof(fp);)/*feof(fp)遇到文件结束符时返回1,否则feof(fp)返回0*/{fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.num,&c.name,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term);if(c.mark==score)printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.num,c.name,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);}}elseif(b==2){printf("\n请输入您要查询的课程性质:\n");scanf("%s",&kind);if((fp=fopen("E:\\course.txt","r"))==NULL){printf("\nCannotopencourse!\n");}printf("课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期:\n");for(;!feof(fp);){fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.num,&c.name,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term);if(strcmp(c.kind,kind)==0)printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.num,c.name,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);}}else{printf("输入错误!");exit(1);}fclose(fp);printf("\n1-返回主菜单;2-退出选课系统\n");scanf("%d",&a);if(a==1)main();elseexit(1);} /*统计选课情况*/voidxuanke_information(){voidmain();inttotal=0;inta;FILE*fp;structstudents;system("color6f");if((fp=fopen("E:\\student.txt","r"))==NULL){printf("\nCannotopenstudent!\n");}printf("学号课程编号课程名称\n");for(;!feof(fp);){fscanf(fp,"%d%d%s\n",&s.snum,&um,&ame);total++;printf("%7d%9d%13s\n",s.snum,um,ame);}printf("\n选课学生总人数为:%d人",total);fclose(fp);printf("\n1-返回主菜单;2-退出选课系统\n");scanf("%d",&a);if(a==1)main();elseexit(1);} /*学生选修课程*/voidxuan_ke(){voidmain();structstudents;structcoursec;inta;FILE*fp;system("color5f");printf("\n请输入您的学号及您要选择的课程编号:");scanf("%d%d",&s.snum,&um);if((fp=fopen("E:\\course.txt","r"))==NULL){printf("\nCannotopencourse!\n");}for(;!feof(fp);){fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.num,&c.name,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term);if(um==c.num)break;}fclose(fp);if((fp=fopen("E:\\student.txt","a+"))==NULL){printf("\nCannotopenstudent!\n");}fprintf(fp,"%d%d%s\n",s.snum,um,c.name);fclose(fp);printf("\n1-返回主菜单;2-退出选课系统\n");scanf("%d",&a);if(a==1)main();elseexit(0);} /*主菜单*/voidmain(){intn,w=0;system("color1f");printf("********************************************************************************\n");printf("学生选课系统菜单\n");printf("********************************************************************************\n");printf("1-录入选课信息\n");printf("2-浏览选课信息\n");printf("3-查询选课信息\n");printf("4-统计选课情况\n");printf("5-进入选课操作\n");printf("0-退出选课系统\n");printf("********************************************************************************\n");printf("请选择输入选项前数字:");scanf("%d",&n);do{if(n>5||n<0){printf("\n输入错误!请重新输入!\n");scanf("%d",&n);}elsew=1;}while(w==0);switch(n){case1:insert();break;case2:browser();break;case3:search();break;case4:xuanke_information();break;case5:xuan_ke();break;case0:exit(0);}return;}执行结果:1.主菜单功能2.课程信息录入或插入功能2.1密码保护 2.2信息正常录入3.课程信息浏览功能4.课程信息查询功能4.1学分查询 4.2课程性质查询5.学生选修课程功能6.统计选课情况功能六:建议和体会本学期我们的C语言程序设计课程的考试题目是让学生自主设计,老师为我们提供了相关课题;同时为激发同学们的创造性,同学们不仅可以对自己所选择的课题进行相关的改进,而且可以自拟课题。C语言的实质就是以一定的语法规范为准,通过对数据量的复杂结构运算,完成一定功能的程序,是一门计算机基础语言,我们通过这一学期的学习,对于其特点和算法有了一定程度的了解。这段时间的课程设计正是让我们巩固以前的知识并在此基础上能够有所突破。在设计的开始一段时间里,我努力弄懂每一个知识点,力求自己设计出一个完整的程序,可惜到处碰壁,一个星期下来只写了不到100行,由于时间紧迫,得到网上搜索相关程序,不断修改完善。了解到要设计一个完整的程序,其中最难的可能就属设计整个程序的框架,其中可能会需要经过很多次的修改与调试,所以必须要有耐心,直至最后设计出自己想要的程序。另外平时学习c语言的基础也很关键,因为如果平时学得就不怎么样,那么在面对一个比较有难度的程序时,可能会望而却步,看懂他人的程序都是个难点,更别说让自己去设计了。因此平时要多向同学、老师请教,查找相关资料,开拓视野,增加知识面。设计一个程序的过程就是一个解决实际问题的过程,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成、从输入到输出的要求是什么;在次我们必须捋清思路,逐一的解决问题的各个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数,然后确定处理过程--算法。感谢这次的课程设计,它使我更加深刻地体会到c语言程序编写过程的严谨与细致,还有就是无论做任何事都要有耐心,学会运用网络信息资源。不懂的问题要及时解决,不断提高编程能力。总的来说,这次程序设计让我获益匪浅,对C语言也有了进一步的认识:C语言功能高、表达能力强、使用灵活方便、目标程序效率高等等。C语言是在国内外广泛使用的一种计算机语言,相信除了以上优点,还有许多我们还未发现,希望能在以后的学习中有更深入的认识。
scanf("%d%s%s%d%d%d%d%d",&c.num,&c.name,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term);
fprintf(fp,"%d%s%s%d%d%d%d%d\n",c.num,c.name,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);
else
printf("抱歉,密码错误,您无此权限\n");
fclose(fp);
main();
/*课程信息浏览*/
voidbrowser()
inta;
system("color3f");
\\course.txt","r"))==NULL)
printf("\nCannotopencourse!
for(;!
feof(fp);)
fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.num,&c.name,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term);
printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.num,c.name,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);
printf("\n1-返回主菜单;2-退出选课系统\n");
scanf("%d",&a);
if(a==1)
exit(0);
/*课程信息查询*/
voidsearch()
intscore;
intb;
system("color2f");
printf("1.按学分查询,2.按课程性质查询.\n");
printf("请选择查询方式,输入选项数字:
scanf("%d",&b);
if(b==1)
printf("\n请输入您要查询的学分:
scanf("%d",&score);
feof(fp);)/*feof(fp)遇到文件结束符时返回1,否则feof(fp)返回0*/
if(c.mark==score)
elseif(b==2){
printf("\n请输入您要查询的课程性质:
scanf("%s",&kind);
if(strcmp(c.kind,kind)==0)
else{
printf("输入错误!
exit
(1);
/*统计选课情况*/
voidxuanke_information()
inttotal=0;
structstudents;
system("color6f");
\\student.txt","r"))==NULL)
printf("\nCannotopenstudent!
printf("学号课程编号课程名称\n");
fscanf(fp,"%d%d%s\n",&s.snum,&um,&ame);
total++;
printf("%7d%9d%13s\n",s.snum,um,ame);
printf("\n选课学生总人数为:
%d人",total);
/*学生选修课程*/
voidxuan_ke()
system("color5f");
printf("\n请输入您的学号及您要选择的课程编号:
scanf("%d%d",&s.snum,&um);
if(um==c.num)
break;
\\student.txt","a+"))==NULL)
fprintf(fp,"%d%d%s\n",s.snum,um,c.name);
/*主菜单*/
voidmain()
intn,w=0;
printf("********************************************************************************\n");
printf("学生选课系统菜单\n");
printf("1-录入选课信息\n");
printf("2-浏览选课信息\n");
printf("3-查询选课信息\n");
printf("4-统计选课情况\n");
printf("5-进入选课操作\n");
printf("0-退出选课系统\n");
printf("请选择输入选项前数字:
scanf("%d",&n);
do
if(n>5||n<0)
printf("\n输入错误!
elsew=1;
}while(w==0);
switch(n)
case1:
insert();break;
case2:
browser();break;
case3:
search();break;
case4:
xuanke_information();break;
case5:
xuan_ke();break;
case0:
return;
执行结果:
1.主菜单功能
2.课程信息录入或插入功能
2.1密码保护
2.2信息正常录入
3.课程信息浏览功能
4.课程信息查询功能
4.1学分查询
4.2课程性质查询
5.学生选修课程功能
6.统计选课情况功能
六:
建议和体会
本学期我们的C语言程序设计课程的考试题目是让学生自主设计,老师为我们提供了相关课题;同时为激发同学们的创造性,同学们不仅可以对自己所选择的课题进行相关的改进,而且可以自拟课题。
C语言的实质就是以一定的语法规范为准,通过对数据量的复杂结构运算,完成一定功能的程序,是一门计算机基础语言,我们通过这一学期的学习,对于其特点和算法有了一定程度的了解。
这段时间的课程设计正是让我们巩固以前的知识并在此基础上能够有所突破。
在设计的开始一段时间里,我努力弄懂每一个知识点,力求自己设计出一个完整的程序,可惜到处碰壁,一个星期下来只写了不到100行,由于时间紧迫,得到网上搜索相关程序,不断修改完善。
了解到要设计一个完整的程序,其中最难的可能就属设计整个程序的框架,其中可能会需要经过很多次的修改与调试,所以必须要有耐心,直至最后设计出自己想要的程序。
另外平时学习c语言的基础也很关键,因为如果平时学得就不怎么样,那么在面对一个比较有难度的程序时,可能会望而却步,看懂他人的程序都是个难点,更别说让自己去设计了。
因此平时要多向同学、老师请教,查找相关资料,开拓视野,增加知识面。
设计一个程序的过程就是一个解决实际问题的过程,从解决实际问题的角度,我们可以这样来看:
首先要了解这个问题的基本要求,即输入、输出、完成、从输入到输出的要求是什么;在次我们必须捋清思路,逐一的解决问题的各个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数,然后确定处理过程--算法。
感谢这次的课程设计,它使我更加深刻地体会到c语言程序编写过程的严谨与细致,还有就是无论做任何事都要有耐心,学会运用网络信息资源。
不懂的问题要及时解决,不断提高编程能力。
总的来说,这次程序设计让我获益匪浅,对C语言也有了进一步的认识:
C语言功能高、表达能力强、使用灵活方便、目标程序效率高等等。
C语言是在国内外广泛使用的一种计算机语言,相信除了以上优点,还有许多我们还未发现,希望能在以后的学习中有更深入的认识。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1