学生选修课程系统设计.docx
- 文档编号:7429170
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:12
- 大小:63.18KB
学生选修课程系统设计.docx
《学生选修课程系统设计.docx》由会员分享,可在线阅读,更多相关《学生选修课程系统设计.docx(12页珍藏版)》请在冰豆网上搜索。
学生选修课程系统设计
沈阳航空工业学院
课程设计
学号200604061096
班级6406103
姓名孙彦文
指导教师王晓岩
2008年3月11日
沈阳航空工业学院
课程设计任务书
一、课程设计题目:
学生选修课程系统设计
二、课程设计工作自2008年3月10日起至2008年3月21日止
三、课程设计内容:
用C语言编写软件完成以下任务:
假定有10门课程(参见下表),每门课程有:
课程编号,课程名称,学分,学时。
为自己设计一个选修课程系统,并将自己选课的信息保存到自己所创建的文件myfile.txt中。
注意:
确保总学分不少于8分。
四、课程设计要求:
程序质量:
✧贯彻结构化程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括“读取数据”、“输入选课信息”、“查看已选情况”、“退出”4项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:
✧封面
✧课程设计任务书
✧目录
✧需求分析(分析题目的要求)
✧程序流程图(总体流程图和主要功能模块流程图)
✧核心技术的实现说明及相应程序段
✧个人总结
✧参考资料
✧源程序及适当的注释
指导教师:
学生签名:
5、成绩:
六、教师评语:
目录
题目3
需求分析4
总体设计4
流程图5
关键技术分析6
总结体会8
参考文献9
源程序9
题目
假定有10门课程(参见下表),每门课程有:
课程编号,课程名称,学分,学时。
为自己设计一个选修课程系统,并将自己选课的信息保存到自己所创建的文件myfile.txt中。
注意:
确保总学分不少于8分。
1毛泽东思想概论232
2思想道德修养232
3法律基础
(1)232
4C语言程序设计3.556
5计算机文化基础232
6大学英语(上下)8128
7高等数学(上下)696
8网络技术基础232
9统计学原理464
10经济法概论232
需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为四个模块,其中每一个模块对应一个函数,他们的功能分别是:
输出函数()添加数据函数()显示函数()保存数据()退出函数()。
在这些函数当中,前3个函数的实现严格按照题目的要求,而第四个函数属于附加功能。
1.输出函数()输出选课信息,以便同学选择课程。
2.添加函数()让使用者选择自己要选的课。
3.显示函数()用来显示备选科目信息。
4保存函数()保存所选课程信息。
5.退出函数()退出选课系统。
总体设计
填加函数的流程图
保存函数的流程图
关键技术分析
(1)输出函数()
该函数主要用来显示科目信息,便于学生选课。
函数如下。
#include
inta[10],n=0;
structsubject
{
intnum;
charname[50];
floatscore;
inttime;
}sub[10]={{1,"毛泽东思想概论",2,32},{2,"思想道德修养",2,32},
{3,"法律基础",2,32},{4,"C程序",3.5,56},
{5,"计算机基础",2,32},{6,"英语",8,128},
{7,"数学",6,96},{8,"网络",2,32},
{9,"统计",4,64},{10,"经济学",2,32}
};
voidread_data()
{
inti;
printf("课程号课程名学分学时\n");
for(i=0;i<10;i++)
{
printf("%3d\t\t%-13s%1.1f%13d\n",sub[i].num,sub[i].name,sub[i].score,sub[i].time);
}
}
/*****************************************************/
(2)添加函数()
此函数使同学根据提示键入所选科目的序号,便与同学选课。
函数如下。
voidinput()/*根据提示信息选择课程*/
{
inti,j=0,k;
floatsum=0;
printf("欢迎进入选课阶段:
\n");
printf("请输入选修的课程号\n");
printf("(注意:
你所选科目学分不少于8分!
)\n");
for(i=0;i<10;i++)
{
printf("第i门课程号:
",i+1);j++;
scanf("%d",&a[j]);
if(a[j]==0){break;}
n=n+1;
sum=sum+sub[a[j]-1].score;
if(sum<8)
printf("您的学分之和不到8分,请继续输入");
if(sum>=8&&sum<33.5){printf("您所选课程的学分已足8分,是否还要继续选课\n");
printf("********************如果继续请按1****************\n");
printf("******************如果不再选课请按0****************\n");
scanf("%d",&k);if(k==0)break;}
if(sum>=33.5)break;
}
printf("您所选课程的总学分为:
%2.1f\n",sum);
}
(3)保存函数()
在选课同时进行的,记录所选的课程,并在以后可以调出保存的文件。
具体函数如下。
voidsave()/*保存选课信息*/
{
inti;
FILE*fp;
if((fp=fopen("d:
\\myfile.txt","w"))==NULL)
{
printf("cannotopenfile\n");
return;
}
for(i=1;i<=10;i++)
{if(a[i]!
=1)
fwrite(&sub[a[i]-1],sizeof(structsubject),1,fp);
fclose(fp);
}
编程总结体会
通过几天的课设使我的C语言编程水平进一步提高,逻辑思维、全局观也得到了锻炼,使我的综合水平的到进一步提升。
并且我也在这几天里对课本中所学的知识得到进一步理解,并且能理论结合实际,将所编写程序很好的完成。
通过这几天的学习使我明白了C语言是门需要很强逻辑性的学科,在编写程序时必须思维缜密,一个符号的错误就会谬以千里。
所以在以后的C语言学习中一定要谨慎小心。
另外,有些程序只适合少量的学科,在以后的学习中要加强此方面的锻炼。
参考文献
谭浩强.C程序设计.北京:
清华大学出版社,2005
源程序
#include
#include
inta[10],n=0;
structsubject/*显示课程信息*/
{
intnum;
charname[50];
floatscore;
inttime;
}sub[10]={{1,"毛泽东思想概论",2,32},{2,"思想道德修养",2,32},
{3,"法律基础",2,32},{4,"C程序",3.5,56},
{5,"计算机基础",2,32},{6,"英语",8,128},
{7,"数学",6,96},{8,"网络",2,32},
{9,"统计",4,64},{10,"经济学",2,32}
};
voidread_data()/*将所给课程信息按规则列出*/
{
inti;
printf("课程号课程名学分学时\n");
for(i=0;i<10;i++)
{
printf("%3d\t\t%-13s%1.1f%13d\n",sub[i].num,sub[i].name,sub[i].score,sub[i].time);
}
}
voidinput()/*根据提示信息选择课程*/
{
inti,j=0,k;
floatsum=0;
printf("欢迎进入选课阶段:
\n");
printf("请输入选修的课程号\n");
printf("(注意:
你所选科目学分不少于8分!
)\n");
for(i=0;i<10;i++)
{
printf("第i门课程号:
",i+1);j++;
scanf("%d",&a[j]);
if(a[j]==0){break;}
n=n+1;
sum=sum+sub[a[j]-1].score;
if(sum<8)
printf("您的学分之和不到8分,请继续输入");
if(sum>=8&&sum<33.5){printf("您所选课程的学分已足8分,是否还要继续选课\n");
printf("********************如果继续请按1****************\n");
printf("******************如果不再选课请按0****************\n");
scanf("%d",&k);if(k==0)break;}
if(sum>=33.5)break;
}
printf("您所选课程的总学分为:
%2.1f\n",sum);
}
voidreads()
{
inti;
for(i=1;i<=10;i++)
{if(a[i]!
=1)
printf("%3d%6s%1.1f%5d\n",sub[a[i]-1].num,sub[a[i]-1].name,sub[a[i]-1].score,sub[a[i]-1].time
);
}
}
voidsave()/*保存选课信息*/
{
inti;
FILE*fp;
if((fp=fopen("d:
\\myfile.txt","w"))==NULL)
{
printf("cannotopenfile\n");
return;
}
for(i=1;i<=10;i++)
{if(a[i]!
=1)
fwrite(&sub[a[i]-1],sizeof(structsubject),1,fp);
fclose(fp);
}}
voidmain()
{
inti;
printf("********欢迎进入选课系统********\n");
printf("\n*****************1读取数据****************;");
printf("\n*****************2输入选课信息************;");
printf("\n*****************3查看以选信息************;");
printf("\n*****************4退出*******************;");
while
(1)
{
scanf("%d",&i);
switch(i)
{
case1:
read_data();
printf("!
!
!
注意:
你所选科目的学分之和不少于8学分!
!
!
\n");
break;
case2:
input();save();break;
case3:
reads();break;
case4:
printf("谢谢使用选课系统");exit(0);
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 选修 课程 系统 设计