C语言课程设计说明书课程管理系统.docx

上传人:b****6 文档编号:8414538 上传时间:2023-01-31 格式:DOCX 页数:29 大小:95.68KB
下载 相关 举报
C语言课程设计说明书课程管理系统.docx_第1页
第1页 / 共29页
C语言课程设计说明书课程管理系统.docx_第2页
第2页 / 共29页
C语言课程设计说明书课程管理系统.docx_第3页
第3页 / 共29页
C语言课程设计说明书课程管理系统.docx_第4页
第4页 / 共29页
C语言课程设计说明书课程管理系统.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

C语言课程设计说明书课程管理系统.docx

《C语言课程设计说明书课程管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计说明书课程管理系统.docx(29页珍藏版)》请在冰豆网上搜索。

C语言课程设计说明书课程管理系统.docx

C语言课程设计说明书课程管理系统

 

C语言课程设计

设计说明书

 

课程管理系统

 

起止日期:

2010年06月21日至2010年06月27日

学生姓名:

班级:

09级通信工程

(1)班

成绩:

指导老师(签字):

 

目录

 

一、设计目的```````````````````````````````````````````````````````3

二、总体设计```````````````````````````````````````````````````````3

三、详细设计```````````````````````````````````````````````````````3

四、调试与测试`````````````````````````````````````````````````````4

五、核心源程序清单`````````````````````````````````````````````````8

六、仍存在的问题`````````````````````````````````````````34

七、心得体会``````````````````````````````````````````````````````34

一、设计目的

假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。

试设计学生选修课程系统,使之能提供以下功能:

1、课程信息录入功能(课程信息用文件保存)

2、课程信息浏览功能

3、排序:

按开课学期排序

4、查询功能:

按课程名称查询

5、课程修改、删除(可选项)

 

二、总体设计(程序设计组成框图、流程图)

 

 

 

 

三、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)

1.宏定义,文件包含,定义结构体变量;

2.从主函数进入;

3.显示程序进入界面;

4.调用函数一(录入课程详细信息):

键盘上输入课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息

5.调用函数二(浏览课程详细信息):

在键盘上输入课程名,显示对应课程的详细信息。

6.调用函数三(排序:

按开课学期排序):

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"/*标准输入、输出头文件*/

#include"windows.h"/*包含字符串函数处理头文件*/

#include"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欢迎使用课程管理系统");

printf("\n\t1.课程信息录入");

printf("\n\t2.课程信息浏览");

printf("\n\t3.按开课学期排序");

printf("\n\t4.按课程名称查询(修改与删除)");

printf("\n\t5.退出本系统");

printf("\n\t请选择服务类型(1-5):

");

scanf("%d",&input);

if(input!

=1&&input!

=2&&input!

=3&&input!

=4&&input!

=5)

{

printf("\n\t输入错误!

请重输入\n");

printf("\n\t按任意键返回...");

input_1=getchar();

input_1=getchar();

}

if(input==5)

{

quit();

}

}

while(input!

=1&&input!

=2&&input!

=3&&input!

=4&&input!

=5&&input!

=6);

switch(input)

{

case1:

sub_add();break;

case2:

sub_view();break;

case3:

taxis();break;

case4:

search();break;

}

}

voidsub_add()

{

voidindex();

voidsub_add();

inti=0,j;

intinp;

FILE*fp;

charinput;

structsubinfsubs;

structsubinfsub_taxis[100];

printf("\n\t课程信息录入");

printf("\n\n\n\t请输入课程信息\n\n");

printf("\t课程编号:

");

scanf("%d",&subs.num);

printf("\n\t课程名称:

");

scanf("%s",subs.name);

printf("\n\t课程性质:

");

scanf("%s",subs.feat);

printf("\n\t总学时:

");

scanf("%d",&subs.ttime);

printf("\n\t授课学时:

");

scanf("%d",&subs.ltime);

printf("\n\t实验或上机学时:

");

scanf("%d",&subs.etime);

printf("\n\t学分:

");

scanf("%f",&subs.score);

printf("\n\t开课学期:

");

scanf("%d",&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!

该编号已经被使用");

printf("\n\t按任意键重录入...");

input=getchar();

input=getchar();

sub_add();

break;

}

}

if((fp=fopen("sub.dat","rb"))==NULL)

{

fp=fopen("sub.dat","wb");

}

else

{

fclose(fp);

fp=fopen("sub.dat","ab");

}

fwrite(&subs,sizeof(structsubinf),1,fp);

fclose(fp);

printf("\n\n\n\t信息已经成功录入!

按任意键继续...");

input=getchar();

input=getchar();

do

{

printf("\n\n\n\t1.继续输入\n");

printf("\t2.返回主菜单\n");

printf("\n\t请选择服务类别(1或2):

");

scanf("%d",&inp);

if(inp!

=1&&inp!

=2)

{

printf("\n\t没有这项服务!

\n");

printf("\t按任意键重新选择...");

input=getchar();

input=getchar();

}

}

while(inp!

=1&&inp!

=2);

switch(inp)

{

case1:

sub_add();break;

case2:

index();break;

}

}

voidsub_view()

{

voidindex();

voidsub_view();

intinp,i=0,n=0;

FILE*fp;

charinput;

structsubinfsubview[100];

if((fp=fopen("sub.dat","rb"))==NULL)

{

printf("\n\n\n\t未输入任何信息,请返回进行课程信息录入!

\n");

printf("\n\t按任意键回主菜单...");

input=getchar();

input=getchar();

index();

}

else

{

do

{

fread(&subview[i],sizeof(structsubinf),1,fp);

i=i+1;

}

while(!

feof(fp));

fclose(fp);

do

{

课程信息录入

课程编号09050001

课程名称:

高数

课程性质:

必修课

总学时20

授课学时20

实验或上机学时10

学分4.0

开课学期2

*******************************************

printf("\n\t课程信息浏览");

printf("\t共有%d/%d条记录",n+1,i-1);

printf("\n\n\t课程编号:

%d\n",subview[n].num);

printf("\n\t课程名称:

%s\n",subview[n].name);

printf("\n\t课程性质:

%s\n",subview[n].feat);

printf("\n\t总学时:

%d\n",subview[n].ttime);

printf("\n\t授课学时:

%d\n",subview[n].ltime);

printf("\n\t实验或上机学时:

%d\n",subview[n].etime);

printf("\n\t学分:

%f\n",subview[n].score);

printf("\n\t开课学期:

%d\n",subview[n].term);

printf("\n\n\t1.[上一页]\t2.[下一页]\t3.[返回]\n");

printf("\n\t请选择(1-3):

");

scanf("%d",&inp);

switch(inp)

{

case1:

{

if(n==0)

{

printf("\n\t已到达首页\n\t按任意键重新选择...");

input=getchar();

input=getchar();

}

else

{

n=n-1;

}

break;

}

case2:

{

if(n==i-2)

{

printf("\n\t已经到达尾页\n\t按任意键重新选择...");

input=getchar();

input=getchar();

}

else

{

n=n+1;

}

break;

}

case3:

{

index();

break;

}

default:

{

printf("\n\t没有这项服务!

\n\t按任意键重新选择...");

input=getchar();

input=getchar();

}

}

}

while(inp!

=3);

}

}

voidtaxis()

{

voidindex();

inti=0,m,n;

FILE*fp;

charinput;

voidindex();

structsubinfsub_taxis[100],temp;

if((fp=fopen("sub.dat","rb"))==NULL)

{

printf("\n\n\t未输入任何信息,无法排序.请返回进行课程信息录入!

\n");

printf("\t按任意键返回主菜单...");

input=getchar();

input=getchar();

index();

}

else

{

rewind(fp);

do

{

fread(&sub_taxis[i],sizeof(structsubinf),1,fp);

i=i+1;

}

while(!

feof(fp));

fclose(fp);

}

for(m=0;m

for(n=0;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("sub.dat","wb"))==NULL)

{

printf("\n\n\n\t数据读取失败!

!

!

\n");

printf("\t请按任意键退出本系统...");

input=getchar();

input=getchar();

exit(0);

}

else

{

for(m=0;m

fwrite(&sub_taxis[m],sizeof(structsubinf),1,fp);

fclose(fp);

}

printf("\n\n\n\t排序完成!

\n\t按任意键回主菜单...");

input=getchar();

input=getchar();

index();

}

voidsearch()

{

voidindex();

voidchange(intx);

voiddel(intx);

FILE*fp;

structsubinfsubs[100],subf[100];

charinput,feature[10];

inti=0,w,j,inp,k=0,n=0;

if((fp=fopen("sub.dat","rb"))==NULL)

{

printf("\n\n\n\t未输入任何信息,请返回进行课程信息录入!

\n");

printf("\n\t按任意键回主菜单...");

input=getchar();

input=getchar();

index();

}

else

fp=fopen("sub.dat","rb");

while(!

feof(fp))

{

fread(&subs[i],sizeof(structsubinf),1,fp);

i=i+1;

}

fclose(fp);

printf("\n\n\n\t请输入所查询的课程名称:

");

scanf("%s",feature);

for(j=0;j<=i-2;j++)

{

w=strcmp(subs[j].name,feature);

if(w==0)

{

subf[k]=subs[j];

k=k+1;

}

elseif(k==0&&j==(i-2))

{

system("cls");

printf("\n\n\n\t没有找到符合要求的记录!

\n\t按任意键回主菜单...");

input=getchar();

input=getchar();

index();

}

}

do

{

******************************

课程信息浏览

课程编号09050001

课程名称:

高数

课程性质:

必修课

总学时20

授课学时20

实验或上机学时10

学分4.0

开课学期2

*******************************

system("cls");

printf("\n\t课程信息查询");

printf("\t共为您查询到%d/%d条记录",n+1,k);

printf("\n\t课程编号:

%d\n",subf[n].num);

printf("\n\t课程名称:

%s\n",subf[n].name);

printf("\n\t课程性质:

%s\n",subf[n].feat);

printf("\n\t总学时:

%d\n",subf[n].ttime);

printf("\n\t授课学时:

%d\n",subf[n].ltime);

printf("\n\t实验或上机学时:

%d\n",subf[n].etime);

printf("\n\t学分:

%f\n",subf[n].score);

printf("\n\t开课学期:

%d\n",subf[n].term);

printf("\n\n\t1.[上一页]\t2.[下一页]\t3.[修改]\n\t4.[删除]\t5.[返回]\n");

printf("\n\t请选择(1-5):

");

scanf("%d",&inp);

switch(inp)

{

case1:

{

if(n==0)

{

printf("\n\t已到达首页\n\t按任意键重新选择");

input=getchar();

input=getchar();

}

else

{

n=n-1;

}

break;

}

case2:

{

if(n==k-1)

{

printf("\n\t已到达最末页\n\t按任意键重新选择");

input=getchar();

input=getchar();

}

else

{

n=n+1;

}

break;

}

case3:

{

for(j=0;j<=i-2;j++)

if(subf[n].num==subs[j].num)

{

change(j);

break;

}

}

case4:

{

for(j=0;j<=i-2;j++)

if(subf[n].num==subs[j].num)

{

del(j);

break;

}

}

case5:

index();break;

default:

{

printf("\n\t对不起,没有这项服务!

\n\t按任意键重新选择!

");

input=getchar();

input=getchar();

}

}

}

while(inp!

=5);

}

voidchange(intx)

{

intinp,i=0,j;

voidindex();

FILE*fp,*fp1;

charinput;

structsubinfsubs,sub_tax

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 节日庆典

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1