学生选修课程系统设计.docx
《学生选修课程系统设计.docx》由会员分享,可在线阅读,更多相关《学生选修课程系统设计.docx(16页珍藏版)》请在冰豆网上搜索。
学生选修课程系统设计
沈阳航空工业学院
课程设计
学号200604021133
班级6402104
姓名王浩
指导教师刘成
2007年9月16日
沈阳航空工业学院
课程设计任务书
院系:
电子工程系专业:
电子信息工程班级:
6402104
学号:
200604021133题目:
学生选修课程系统设计
一、课程设计时间
2007年9月10日至2007年9月14日,共计1周,20学时。
二、课程设计内容
用C语言编写软件完成以下任务:
假定有10门课程(参见file26.txt),每门课程有:
课程编号,课程名称,学分,学时。
为自己设计一个选修课程系统,并将自己选课的信息保存到自己所创建的文件myfile.txt中。
注意:
确保总学分不少于8分。
三、课程设计要求
1.程序质量:
✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括“读取数据”、“输入选课信息”、“查看已选情况”、“退出”4项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:
课程结束后,上交课程设计说明书和源程序。
课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字
指导教师:
学生签名:
五、成绩:
六、教师评语:
目录
一.需求分析2
二.程序流程图2
输出函数流程图错误!
未定义书签。
添加数据函数流程图5
保存函数流程图5
显示函数流程图错误!
未定义书签。
三.核心技术的实现说明及相应程序段7
四.个人总结11
五.参考文献12
六.源程序12
一.需求分析
通过对本次C语言程序设计题目要求的仔细分析而得知,全部程序的大体设计的实现过程主要分为四个模块,其中每个模块对应相应的一个函数,它们的功能分别是:
输出函数()、添加数据函数()、保存数据()、显示函数()和退出函数()。
而就在这几个函数之中,前四个函数的实现严格按照题目的要求,而后面的两个函数属于附加功能。
1.输出函数()是为了从系统中调出以有的文件,以便使用。
2.添加数据函数()让使用者选择自己要选的课。
3.保存函数()保存以选课程。
4.显示函数()显示以选课程。
5.退出函数()用来退出程序。
二.程序主体流程图
图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}
图6输出函数
voidread_data()
{
inti;
printf("课程号课程名学分学时\n");
for(i=0;i<=9;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;
floatsum=0;
printf("进入选课阶段:
\n");
printf("请输入选修的课程号\n");
printf("(注意:
你所选科目学分不少于8分!
)\n");
for(i=0;i<=9;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<=7)
printf("您的学分不到8分,请继续输入");
if(sum>7)break;
}
printf("您所选课程的总学分为:
%2.1f\n",sum);
}
/******************************************************/
voidreads()
{
inti;
for(i=1;i<11;i++)
{
);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
);
}
}
图7添加函数
(3)保存函数()
在选课同时进行的,记录所选的课程,并在以后可以调出保存的文件。
具体函数如下。
voidreads()
{
inti;
for(i=1;i<11;i++)
{
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()
{
FILE*fp;
inti;
if((fp=fopen("d:
\\myfile26txt","wb"))==NULL)
{
printf("cannotopenfile\n");
return;
}
fread(&sub,243,1,fp);
fclose(fp);
}
图8保存函数
四.个人总结
通过这次课程设计,我尝试了用C语言软件编写一个实际应用的程序,我深深的体会到编程是一个需要谨慎与严密精神的工作,同时我也感觉到做一名优秀程序员的不易。
在编程序过程中,我积极的和同学讨论,请教老师一些困难的问题和难点,最终编好和完善了程序。
使程序基本能完成编好和完善了程序,而且用户界面也比较友好,在运行过程中输出内容明了,循环顺畅,退出方便,很好的完成了任务。
五.参考文献
1谭浩强.C程序设计.北京:
清华大学出版社.2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社.2006
六.源程序
#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<=9;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;
floatsum=0;
printf("进入选课阶段:
\n");
printf("请输入选修的课程号\n");
printf("(注意:
你所选科目学分不少于8分!
)\n");
for(i=0;i<=9;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)break;
}
printf("您所选课程的总学分为:
%3.1f\n",sum);
}
/******************************************************/
voidreads()
{
inti;
for(i=1;i<11;i++)
{
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()
{
FILE*fp;
inti;
if((fp=fopen("d:
\\file26.txt","wb"))==NULL)
{
printf("cannotopenfile\n");
return;
}
fread(&sub,243,1,fp);
fclose(fp);
}
/*******************************************************/
voidexit1()
{
printf("谢谢您进入选课系统,再见!
\n");
}
/***********************************************************/
voids()
{
inti;
scanf("%d",&i);
switch(i)
{
case1:
read_data();
printf("!
!
!
注意:
你所选科目的学分不少于8学分!
!
!
\n");
s();break;
case2:
input();s();break;
case3:
reads();save();s();break;
case4:
exit1();break;
}
}
/********************************************************/
/**********************************************************/
main()
{
{
printf("********欢迎进入选课系统********\n");
printf("\n1读取数据;");
printf("\n2输入选课信息;");
printf("\n3查看以选信息;");
printf("\n4退出.");
}
s();
}