C语言课程设计说明书课程管理系统文档格式.docx
《C语言课程设计说明书课程管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计说明书课程管理系统文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
7.调用函数四(查询课程详细信息):
显示所有输入的课程信息;
8.退出;
四、调试与测试:
调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施
完成每一个函数后,进行单独调试,对测试结果有错的,逐个修改,最后合并在一起进行调试,修改,直到正确无误为止。
测试过程中,在函数四(查找课程信息)中无法将输入信息同已有信息进行比较,经同学指点顺利解决;
1主函数模块(主菜单)
是为了定义一个菜单函数,其功能在于供使用者选择输出菜单功能选择。
其运行结果如下图:
运行正常
2课程信息录入功能
是为了输入课程的详细信息包括课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息
其运行结果如下图
3课程信息浏览功能为了让使用者能浏览所有课程详细信息
4排序:
按开课学期排序为了让使用者按开课学期排序所有课程详细信息
5查询功能:
按课程名称查询是为了使用者按课程名来查询课程详细信息
6退出
是为了使用者退出程序所作的功能
♦调试方法:
先将主函数完毕,在分别加入录入函数、输出函数、查找函数、保存等模块后再调试。
无错之后编译运行。
♦遇到的主要问题及解决方法:
(1)忘记加分号。
(2)忽略了“+”与“++”的区别及\n与n的区别。
(3)scanf("
%d%d"
&
a,&
b);
输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:
6,9输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键
(4)switch语句中漏写break语句。
五、核心源程序清单和执行结果:
#include"
stdlib.h"
/*标准输入、输出头文件*/
windows.h"
/*包含字符串函数处理头文件*/
string.h"
/*包含动态存储与释放函数头文件*/
structsubinf
{
intnum;
/*定义课程编号*/
charname[20];
/*课程名称*/
charfeat[20];
/*课程性质*/
intttime;
/*定义总学时*/
intltime;
/*定义授课学时*/
intetime;
/*定义上机学时*/
floatscore;
/*学分*/
intterm;
/*开课学期*/
};
voidindex()
{
voidsub_add();
/*课程信息录入*/
voidsub_view();
/*信息浏览*/
voidtaxis();
/*排序*/
voidsearch();
/*对课程名称查询*/
voidquit();
/*退出系统*/
intinput;
/*输入*/
charinput_1;
do
{
printf("
\n\t欢迎使用课程管理系统"
);
\n\t1.课程信息录入"
\n\t2.课程信息浏览"
\n\t3.按开课学期排序"
\n\t4.按课程名称查询(修改与删除)"
\n\t5.退出本系统"
\n\t请选择服务类型(1-5):
"
scanf("
%d"
&
input);
if(input!
=1&
&
input!
=2&
=3&
=4&
=5)
printf("
\n\t输入错误!
请重输入\n"
\n\t按任意键返回..."
input_1=getchar();
}
if(input==5)
{
quit();
}
while(input!
=5&
=6);
switch(input)
case1:
sub_add();
break;
case2:
sub_view();
break;
case3:
taxis();
case4:
search();
}
voidsub_add()
voidindex();
inti=0,j;
intinp;
FILE*fp;
charinput;
structsubinfsubs;
structsubinfsub_taxis[100];
printf("
\n\t课程信息录入"
\n\n\n\t请输入课程信息\n\n"
\t课程编号:
scanf("
subs.num);
\n\t课程名称:
%s"
subs.name);
\n\t课程性质:
subs.feat);
\n\t总学时:
subs.ttime);
\n\t授课学时:
subs.ltime);
\n\t实验或上机学时:
subs.etime);
\n\t学分:
%f"
subs.score);
\n\t开课学期:
subs.term);
if((fp=fopen("
sub.dat"
"
rb"
))!
=NULL)
do
fread(&
sub_taxis[i],sizeof(structsubinf),1,fp);
i=i+1;
while(!
feof(fp));
fclose(fp);
for(j=0;
j<
=i;
j++)
if(subs.num==sub_taxis[j].num)
{
printf("
\n\n\n\t!
该编号已经被使用"
\n\t按任意键重录入..."
input=getchar();
sub_add();
break;
}
))==NULL)
fp=fopen("
wb"
else
ab"
fwrite(&
subs,sizeof(structsubinf),1,fp);
fclose(fp);
\n\n\n\t信息已经成功录入!
按任意键继续..."
input=getchar();
{
\n\n\n\t1.继续输入\n"
\t2.返回主菜单\n"
\n\t请选择服务类别(1或2):
inp);
if(inp!
inp!
=2)
{
\n\t没有这项服务!
\n"
\t按任意键重新选择..."
input=getchar();
while(inp!
=2);
switch(inp)
sub_add();
index();
voidsub_view()
intinp,i=0,n=0;
structsubinfsubview[100];
\n\n\n\t未输入任何信息,请返回进行课程信息录入!
\n\t按任意键回主菜单..."
input=getchar();
index();
else
subview[i],sizeof(structsubinf),1,fp);
while(!
do
课程信息录入
课程编号09050001
课程名称:
高数
课程性质:
必修课
总学时20
授课学时20
实验或上机学时10
学分4.0
开课学期2
*******************************************
\n\t课程信息浏览"
\t共有%d/%d条记录"
n+1,i-1);
\n\n\t课程编号:
%d\n"
subview[n].num);
%s\n"
subview[n].name);
subview[n].feat);
subview[n].ttime);
subview[n].ltime);
subview[n].etime);
%f\n"
subview[n].score);
subview[n].term);
\n\n\t1.[上一页]\t2.[下一页]\t3.[返回]\n"
\n\t请选择(1-3):
scanf("
switch(inp)
{
case1:
{
if(n==0)
{
printf("
\n\t已到达首页\n\t按任意键重新选择..."
input=getchar();
}
else
{
n=n-1;
break;
}
case2:
if(n==i-2)
\n\t已经到达尾页\n\t按任意键重新选择..."
n=n+1;
case3:
index();
default:
printf("
\n\t按任意键重新选择..."
input=getchar();
while(inp!
=3);
voidtaxis()
inti=0,m,n;
structsubinfsub_taxis[100],temp;
\n\n\t未输入任何信息,无法排序.请返回进行课程信息录入!
\t按任意键返回主菜单..."
rewind(fp);
for(m=0;
m<
i-1-1;
m++)
for(n=0;
n<
i-1-1-m;
n++)
if(sub_taxis[n].term>
sub_taxis[n+1].term)
temp=sub_taxis[n];
sub_taxis[n]=sub_taxis[n+1];
sub_taxis[n+1]=temp;
if((fp=fopen("
\n\n\n\t数据读取失败!
!
\t请按任意键退出本系统..."
exit(0);
else
for(m=0;
i-1;
m++)
fwrite(&
sub_taxis[m],sizeof(structsubinf),1,fp);
fclose(fp);
\n\n\n\t排序完成!
index();
voidsearch()
voidchange(intx);
voiddel(intx);
structsubinfsubs[100],subf[100];
charinput,feature[10];
inti=0,w,j,inp,k=0,n=0;
while(!
feof(fp))
fread(&
subs[i],sizeof(structsubinf),1,fp);
i=i+1;
\n\n\n\t请输入所查询的课程名称:
feature);
for(j=0;
=i-2;
w=strcmp(subs[j].name,feature);
if(w==0)
subf[k]=subs[j];
k=k+1;
}
elseif(k==0&
j==(i-2))
system("
cls"
\n\n\n\t没有找到符合要求的记录!
do
******************************
课程信息浏览
*******************************
system("
\n\t课程信息查询"
\t共为您查询到%d/%d条记录"
n+1,k);
\n\t课程编号:
subf[n].num);
subf[n].name);
subf[n].feat);
subf[n].ttime);
subf[n].ltime);
subf[n].etime);
subf[n].score);
subf[n].term);
\n\n\t1.[上一页]\t2.[下一页]\t3.[修改]\n\t4.[删除]\t5.[返回]\n"
\n\t请选择(1-5):
switch(inp)
case1:
if(n==0)
{
\n\t已到达首页\n\t按任意键重新选择"
else
n=n-1;
case2:
if(n==k-1)
\n\t已到达最末页\n\t按任意键重新选择"
n=n+1;
case3:
for(j=0;
if(subf[n].num==subs[j].num)
change(j);
break;
case4:
del(j);
case5:
default:
\n\t对不起,没有这项服务!
\n\t按任意键重新选择!
while(inp!
=5);
voidchange(intx)
intinp,i=0,j;
FILE*fp,*fp1;
structsubinfsubs,sub_tax