学生选修程序系统设计Word文档下载推荐.docx
- 文档编号:20395698
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:35
- 大小:242.89KB
学生选修程序系统设计Word文档下载推荐.docx
《学生选修程序系统设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《学生选修程序系统设计Word文档下载推荐.docx(35页珍藏版)》请在冰豆网上搜索。
voidbrowse_linformation();
voidenter_sinformation();
voidsearch_num();
voidsearch_score();
voidl_choice_num();
do
{
puts("
\t\t\t学生选修课系统设计\n"
);
\t学号:
20091001585班级序号:
031093-09姓名:
王琳\n\n"
\t\t*******************MENU******************\n\n"
\t\t\t|No1.课程信息录入|"
\t\t\t|No2.学生选课信息录入|"
\t\t\t|No3.课程信息浏览|"
\t\t\t|No4.按课程号查询|"
\t\t\t|No5.按学分查询|"
\t\t\t|No6.某门课程学生选修情况|"
\t\t\t|No7.退出|"
\n\n\t\t*****************************************\n\n"
printf("
Choiceyournumber(1-7):
[]\b\b"
scanf("
%d"
&
n);
if(n<
1||n>
7)/*对选择的数字做判断*/
w=1;
getchar();
}
elsew=0;
while(w==1);
/*选择功能*/
switch(n)
case1:
enter_linformation();
break;
/*输入模块*/
case2:
enter_sinformation();
case3:
browse_linformation();
/*浏览模块*/
case4:
search_num();
/*查找模块*/
case5:
search_score();
case6:
l_choice_num();
/*统计模块*/
case7:
exit(0);
/*退出*/
}
/*****主函数*****/
voidmain()
menu();
二、各功能模块设计
1.输入模块
(1)课程信息录入
[分析]
单独看各数据信息,编号、总学时、授课学时、实验或上机时间、学分、开课学期为整数,采用整型;
课程名称和课程性质是字符型,可以采用字符型数组。
数据信息存放在文件中,一条记录对应一门课程,既符合习惯也方便信息选录管理,并且存放到TXT文件中,每次输入的信息可以覆盖以前的信息,方便多学期使用。
采用结构体的形式,课程结构体成员包括编号、课程名称、课程性质、总学时、授课学时、实验或上机时间、学分、开课学期,因为要存放若干条选课信息就用结构体数组。
structlesson
intnum;
//课程编号
charname[20];
//课程名称
charkind[10];
//课程性质
intstime;
//总学时
intttime;
//授课学时
intetime;
//实验或上机学时
intscore;
//学分
intterm;
//开课学期
intchoice_num;
//选修该课的学生人数
}les[M];
//les[M]中每个数组元素对应一条课程信息
注意:
les[M]中的M为课程数,程序中采用宏定义的方式,可以随时在源宏定义中修改,本程序宏定义#defineM20。
模块流程图如图4-2-1所示。
voidenter_linformation()//课程信息录入函数
inti,m,k,w1;
printf("
总共多少门课(0-%d)?
"
M-1);
scanf("
m);
printf_face();
for(i=0;
i<
m;
i++)
{
printf("
\n请输入第%d条课程信息\n"
i+1);
l_input(i);
//调用输入函数
}
if(i!
=0)l_save(m);
//调用保存函数
请选择下一步操作:
<
1>
返回继续录入课程信息<
2>
回到主菜单<
3>
退出程序[]\b\b"
k);
if(k<
1||k>
3)
w1=1;
elsew1=0;
while(w1==1);
switch(k)
case1:
case2:
case3:
(2)课程信息录入
如上所述,分析数据信息类型,确定结构体及文件存放形式,采用结构体数组。
structstudent
intnumber;
//学号
intnum[20];
}stu[N];
//stu[n]中每个数组元素对应一条学生选课信息
voidenter_sinformation()//学生选课信息录入函数
{
voids_input(inti);
inti,n,k,w1;
x=load_lesson();
\n总共有多少学生(0-%d)?
:
N-1);
n;
{printf("
\n请输入第%d个学生学号:
\n"
s_input(i);
<
返回继续录入选课信息<
2.查找模块
[需求分析]
该模块的功能是根据输入的课程信息查找对应的记录,其中查找方式可以分为两种:
按学分查询和按编号查询。
[程序]
(1)按课程号查询模块
//按课程号查询函数
voidsearch_num()
inti,k,flag=0,w1;
structlessons;
\n\n输入你要查询的课程编号:
s.num);
load_lesson();
x;
if(s.num==les[i].num)
{flag=1;
printf_one(i);
if(flag==1)
Found!
else
Notfound!
返回继续查找课程信息<
(2)按学分查询模块
//按学分查询函数
voidsearch_score()
intmark;
\n\n输入你要查询的课程学分:
mark);
if(mark==les[i].score)
3.浏览模块
该模块的功能是显示所有选修课程信息。
voidbrowse_linformation()//课程信息浏览函数
{intk,w1;
intload_lesson();
voidprintf_n(intn);
//从文件读入课程信息
printf_n(x);
//显示课程信息
2)
///////////////
4.统计学生选课情况
该函数是统计某门课程学生选课人数。
//某门课程学生选修情况查询模块
voidl_choice_num()
inti,k,flag=0,w1;
选修这门课的总人数为:
%d\n"
les[i].choice_num);
三、公共函数
(1)显示数据结构项目函数
voidprintf_face()//公共函数1:
显示数据结构项目函数
\n\tnumbernamekindstimeetimettimescoreterm\n"
(2)显示一个课程信息记录
voidprintf_one(inti)//公共函数2:
显示一个课程信息记录
{printf("
\n\t%d%s%s%d%d%d%d%d\n"
les[i].num,les[i].name,les[i].kind,les[i].stime,
les[i].ttime,les[i].etime,les[i].score,les[i].term);
(3)课程输入函数
voidl_input(inti)//输入一个记录到函数
les[i].num);
%s"
les[i].name);
les[i].kind);
les[i].stime);
les[i].ttime);
les[i].etime);
les[i].score);
les[i].term);
(4)课程保存函数
l_save(intn)//保存课程信息到文件函数
FILE*fp;
inti;
if((fp=fopen("
lesrecord.txt"
"
wb"
))==NULL)
\nCannotopenfile\n"
returnNULL;
fprintf(fp,"
%d%s%s%d%d%d%d%d\n"
fclose(fp);
(5)课程加载函数
intload_lesson()//加载课程信息记录并可以计算记录个数
{FILE*fp;
inti;
if((fp=fopen("
r"
{printf("
\ncannotopenfile\n"
return0;
for(i=0;
!
feof(fp);
fscanf(fp,"
%d%s%s%d%d%d%d%d"
les[i].num,&
les[i].name,&
les[i].kind,&
les[i].stime,
&
les[i].ttime,&
les[i].etime,&
les[i].score,&
fclose(fp);
return(i);
(6)显示所有课程信息
voidprintf_n(intx)//显示所有课程信息记录
{intj;
for(j=0;
j<
j++)
{if(j%10==0)
\n\npassanykeytocontinue>
..."
getchar();
\n\n"
printf_one(j);
}getchar();
(7)输入整个记录函数
voids_input(inti)//输入一个记录到函数
intj,k,m,n,w1,total=0;
stu[i].number);
\n你想选多少门课[]\b\b"
现在输入课程编号,依次用空格隔开!
for(j=0;
scanf("
stu[i].num[j]);
for(k=0;
k<
k++)
if(les[k].num==stu[i].num[j])
{total+=les[k].score;
les[k].choice_num++;
}
}
if(total<
60)
警告:
你所选课程总学分不到60!
返回重新录入选课信息<
if(n<
{
}
switch(n)
请重新输入你的学号:
s_input(i);
};
第五部分:
上机操作
一、数据源
根据前面所列的数据输入形式,输入数据
二、编译、连接和运行(略)
三、运行结果
下面是各个模块的界面图。
1.主菜单函数:
图5-1-1主菜单界面
在主界面出现以后输入1并按【Enter】键,结果如图5-2-1所示。
图5-2-1选择菜单界面
输入要输入的记录数后逐条增加,如图5-2-2所示。
图5-2-2输入课程信息界面
并且选择下一步操作:
1.返回继续录入课程信息;
2.回到主菜单;
3.退出程序
(2)学生选课信息录入
返回主界面后,输入2并按【Enter】键,输入选课学生人数及选课学生人数,并且依次输入学生学号和课程编号,要求所选课程总学分不得少于60,第一位学生选课成功,而第二位由总学分不到需要重新选课。
结果如图所示5-2-3所示。
图5-2-3学生选课信息录入界面
2.浏览模块
如图所示5-3-1所示。
图5-3-1课程信息浏览界面
3.课程查询模块
(1)按课程号查询
图5-4-1按编号查询课程信息界面
(2)按学分查询
图5-4-2按学分查询课程信息界面
4.统计模块
图5-5-1某门课程学生选课情况统计
第六部分:
程序的优缺点
程序的优点:
算法是程序的灵魂,程序的优点首先表现在算法上的优点,其次才是功能上的。
【算法上的优点】主要体现在以下二点:
1.程序采用模块化设计,程序的主体的功能大都由各功能模块完成。
程序设计模块化有利于程序的进一步改进及有助于程序执行效率的提高。
2.程序执行次序控制、FOR循环、功能模块函数的巧妙结合。
例如[课程录入信息]界面结束,可返回[系统菜单]界面。
另外,对结构体数组数据的录入采用了层次明显的程序步骤,有助于相应功能模块的准确高效运行。
【功能上的优点】主要体现在以下三点:
1.简洁明了的程序菜单。
程序主要采用了六组层次不同的菜单,相互独立又相互联系,巧妙相接,符合用户的使用习惯与思维。
2.人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。
程序提示不仅层次分明,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地进行程序的操作。
3.智能化的模块设计。
程序的智能化主要体现在减少了许多人工操作。
如功能模块操作结束后,会出现界面让录者判断是继续输入、返回主菜单还是退出,这样给用户带来了操作的方便,大大提高了学生选课的效率。
【程序的缺点】主要表现在以下三点:
1.程序虽然经过多次精简,但仅仅是形式上、小范围的精简,仍
未得到本质上的精简,即未找到更加简单、更加高效、更加合理、更小占用的资源的算法。
2.程序仍然存在不合理的地方,例如当输入错误信息以后,界面不能自动返回。
3.程序功能仍然不够完善。
例如信息没有删除、排序、修改和插入,学生信息录入以后不能保存。
4.程序表操作的单调。
针对以上缺点提出程序的改进思路:
【针对第一点:
程序算法精简问题】
>
改进思路:
1.算法上除了采用结构体数组外,考虑在程序的算法设计上引入链表结构,考察这样对数据组织存贮效率上是否具有提高作用。
2.就现有知识水平、经验来看,对我来说,本程序的算法设计上已经是最精简的了。
C语言知识博大精深,有必要对C语言的专著进行研究学习,多阅读别人的程序代码、多动手实践操作与设计,这样便对程序算法精简改进提供了可能。
【针对第二点:
用户输入错误问题】
对每个数据输入段代码进行更深的研究与分析,明确变量的类
型、可能的数值,然后进行分类判断(if或switch语句),必要时借助for循环语句来控制程序进行,保障各模块运行相对独立,稳定准确执行各自功能。
典型方法是如果输入数据错误,通过printf输出问题,并用for或(do)while构成循环,输入三次以上程序自动跳出主菜单或直到用户输入正确为止。
【针对第三点:
程序功能完善问题】
[学生选课信息模块]设计思路:
可另行设置独立模块,能一次性多输入选课用户,并将其分别存放在文件中,等待用户调用查看浏览和统计。
可增加[选课信息修改的功能模块]设计思路:
首先系统应
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 选修 程序 系统 设计