C语言课程设计说明书课程管理系统_第1页
C语言课程设计说明书课程管理系统_第2页
C语言课程设计说明书课程管理系统_第3页
C语言课程设计说明书课程管理系统_第4页
C语言课程设计说明书课程管理系统_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学号: 09050011 c语言课程设计设计说明书课程管理系统起止日期: 2010 年 06 月 21 日 至 2010年 06 月 27 日学生姓名: 班级: 09级通信工程(1)班 成绩: 指导老师(签字): 电子信息工程系2010年6月21日天津理工大学中环信息学院目 录一、设计目的3二、总体设计3三、详细设计3四、调试与测试4五、核心源程序清单8六、仍存在的问题34七、心得体会 34一、设计目的假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计学生选修课程系统,使之能提供以

2、下功能:1、课程信息录入功能(课程信息用文件保存) 2、课程信息浏览功能3、排序:按开课学期排序4、查询功能:按课程名称查询5、课程修改、删除(可选项)二、总体设计(程序设计组成框图、流程图)课程修改及删除课程查询课程排序课程信息浏览课程信息录入课程管理系统退出系统void searchvoid taxisvoid sub_viewvoid sub_addinput 5input 4input 3input 2input 1n是1-5input n(1-5)start三、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)1 宏定义,文件包含,定义结构体变量;2 从主函

3、数进入;3 显示程序进入界面;4 调用函数一(录入课程详细信息):键盘上输入课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息5 调用函数二(浏览课程详细信息):在键盘上输入课程名,显示对应课程的详细信息。6 调用函数三(排序:按开课学期排序): 7 调用函数四(查询课程详细信息):显示所有输入的课程信息;8 退出;四、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施完成每一个函数后,进行单独调试,对测试结果有错的,逐个修改,最后合并在一起进行调试,修改,直到正确无误为止。测试过程中,在函数四(查找课程信息)中无法将输入信息

4、同已有信息进行比较,经同学指点顺利解决; 1 主函数模块(主菜单)是为了定义一个菜单函数,其功能在于供使用者选择输出菜单功能选择。其运行结果如下图:运行正常2 课程信息录入功能是为了输入课程的详细信息包括课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息其运行结果如下图运行正常3课程信息浏览功能为了让使用者能浏览所有课程详细信息其运行结果如下图运行正常4排序:按开课学期排序为了让使用者按开课学期排序所有课程详细信息其运行结果如下图运行正常5查询功能:按课程名称查询是为了使用者按课程名来查询课程详细信息其运行结果如下图:运行正常6退出是为了使用者退出程序所作的功能其运行结

5、果如下图:运行正常¨ 调试方法:先将主函数完毕,在分别加入录入函数、输出函数、查找函数、保存等模块后再调试。无错之后编译运行。¨ 遇到的主要问题及解决方法:(1)忘记加分号。(2)忽略了“+”与“+”的区别及n与n的区别。(3) scanf ( "%d%d", &a, &b);输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:6,9输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键(4)switch 语句中漏写break 语句。五、核心源程序清单和执行结果:#include"stdlib.h" /*标

6、准输入、输出头文件*/#include"windows.h" /*包含字符串函数处理头文件*/#include"string.h" /*包含动态存储与释放函数头文件*/struct subinfint num; /*定义课程编号*/char name20; /*课程名称*/ char feat20; /*课程性质*/ int ttime; /*定义总学时*/ int ltime; /*定义授课学时*/ int etime; /*定义上机学时*/ float score; /*学分*/ int term; /*开课学期*/ ;void index() vo

7、id sub_add(); /*课程信息录入*/void sub_view(); /*信息浏览*/void taxis(); /*排序*/void search(); /*对课程名称查询*/void quit(); /*退出系统*/int input; /*输入*/char input_1; do printf("nt 欢迎使用课程管理系统 "); printf("nt 1.课程信息录入 "); printf("nt 2.课程信息浏览 ");printf("nt 3.按开课学期排序 ");printf("

8、nt 4.按课程名称查询(修改与删除) ");printf("nt 5.退出本系统 ");printf("nt请选择服务类型(1-5):");scanf("%d",&input);if(input!=1&&input!=2&&input!=3&&input!=4&&input!=5) printf("nt输入错误!请重输入n");printf("nt按任意键返回.");input_1=getchar();input

9、_1=getchar();if (input=5)quit(); while(input!=1&&input!=2&&input!=3&&input!=4&&input!=5&&input!=6);switch (input) case 1:sub_add(); break; case 2:sub_view();break; case 3:taxis();break; case 4:search();break; void sub_add()void index();void sub_add();int i=0,j

10、;int inp;file *fp;char input;struct subinf subs;struct subinf sub_taxis100;printf("nt 课程信息录入 ");printf("nnnt请输入课程信息nn");printf("t课程编号:");scanf("%d",&subs.num);printf("nt课程名称:");scanf("%s",);printf("nt课程性质:");scanf(&qu

11、ot;%s",subs.feat);printf("nt总学时:");scanf("%d",&subs.ttime);printf("nt授课学时:");scanf("%d",&subs.ltime);printf("nt实验或上机学时:");scanf("%d",&subs.etime);printf("nt学分:");scanf("%f",&subs.score);printf("

12、nt开课学期:");scanf("%d",&subs.term);if (fp=fopen("sub.dat","rb")!=null) dofread(&sub_taxisi,sizeof(struct subinf),1,fp); i=i+1;while(!feof(fp);fclose(fp);for (j=0;j<=i;j+)if (subs.num=sub_taxisj.num) printf("nnnt!该编号已经被使用");printf("nt按任意键重录入.

13、");input=getchar();input=getchar();sub_add();break;if (fp=fopen("sub.dat","rb")=null) fp=fopen("sub.dat","wb"); elsefclose(fp);fp=fopen("sub.dat","ab");fwrite(&subs,sizeof(struct subinf),1,fp); fclose(fp);printf("nnnt信息已经成功录入!

14、按任意键继续.");input=getchar();input=getchar();do printf("nnnt1.继续输入n");printf("t2.返回主菜单n");printf("nt请选择服务类别(1或2):");scanf("%d",&inp);if (inp!=1&&inp!=2) printf("nt没有这项服务!n");printf("t按任意键重新选择.");input=getchar();input=getchar()

15、;while (inp!=1&&inp!=2);switch(inp)case 1: sub_add(); break; case 2: index(); break;void sub_view()void index();void sub_view();int inp,i=0,n=0;file *fp;char input;struct subinf subview100;if (fp=fopen("sub.dat","rb")=null) printf("nnnt未输入任何信息,请返回进行课程信息录入!n");pr

16、intf("nt按任意键回主菜单.");input=getchar();input=getchar();index();else dofread(&subviewi,sizeof(struct subinf),1,fp);i=i+1; while (!feof(fp); fclose(fp); do 课程信息录入课程编号09050001课程名称:高数课程性质:必修课总学时20授课学时20实验或上机学时10学分4.0开课学期2*printf("nt 课程信息浏览 ");printf("t共有%d/%d条记录",n+1,i-1);

17、printf("nnt课程编号: %dn",subviewn.num);printf("nt课程名称: %sn",);printf("nt课程性质: %sn",subviewn.feat);printf("nt总学时: %dn",subviewn.ttime);printf("nt授课学时: %dn",subviewn.ltime);printf("nt实验或上机学时: %dn",subviewn.etime);printf("nt学分:

18、%fn",subviewn.score);printf("nt开课学期: %dn",subviewn.term);printf("nnt1.上一页t2.下一页t3.返回n");printf("nt请选择(1-3):");scanf("%d",&inp);switch (inp)case 1: if (n=0) printf("nt已到达首页nt按任意键重新选择.");input=getchar();input=getchar();elsen=n-1;break;case 2:i

19、f (n=i-2)printf("nt已经到达尾页nt按任意键重新选择.");input=getchar();input=getchar();elsen=n+1;break;case 3: index();break;default:printf("nt没有这项服务!nt按任意键重新选择.");input=getchar();input=getchar();while (inp!=3);void taxis()void index();int i=0,m,n;file *fp;char input;void index();struct subinf s

20、ub_taxis100,temp;if (fp=fopen("sub.dat","rb")=null) printf("nnt未输入任何信息,无法排序.请返回进行课程信息录入!n");printf("t按任意键返回主菜单.");input=getchar();input=getchar();index();else rewind(fp);dofread(&sub_taxisi,sizeof(struct subinf),1,fp);i=i+1;while(!feof(fp);fclose(fp);for (

21、m=0;m<i-1-1;m+) for (n=0;n<i-1-1-m;n+)if (sub_taxisn.term>sub_taxisn+1.term)temp=sub_taxisn;sub_taxisn=sub_taxisn+1;sub_taxisn+1=temp;if (fp=fopen("sub.dat","wb")=null) printf("nnnt数据读取失败!n");printf("t请按任意键退出本系统.");input=getchar();input=getchar();exit

22、(0);else for (m=0;m<i-1;m+)fwrite(&sub_taxism,sizeof(struct subinf),1,fp);fclose(fp);printf("nnnt排序完成!nt按任意键回主菜单.");input=getchar();input=getchar();index();void search()void index();void change(int x);void del(int x);file *fp;struct subinf subs100,subf100;char input,feature10;int i=

23、0,w,j,inp,k=0,n=0;if (fp=fopen("sub.dat","rb")=null) printf("nnnt未输入任何信息,请返回进行课程信息录入!n");printf("nt按任意键回主菜单.");input=getchar();input=getchar();index();elsefp=fopen("sub.dat","rb");while (!feof(fp)fread(&subsi,sizeof(struct subinf),1,fp)

24、;i=i+1;fclose(fp);printf("nnnt请输入所查询的课程名称:");scanf("%s",feature);for (j=0;j<=i-2;j+)w=strcmp(subsj. name,feature);if(w=0)subfk=subsj;k=k+1; else if (k=0&&j=(i-2) system("cls");printf("nnnt没有找到符合要求的记录!nt按任意键回主菜单.");input=getchar();input=getchar();ind

25、ex();do*课程信息浏览课程编号09050001课程名称:高数课程性质:必修课总学时20授课学时20实验或上机学时10学分4.0开课学期2*system("cls");printf("nt 课程信息查询 ");printf("t共为您查询到%d/%d条记录",n+1,k);printf("nt课程编号: %dn",subfn.num);printf("nt课程名称: %sn",);printf("nt课程性质: %sn",subfn.feat);pri

26、ntf("nt总学时: %dn",subfn.ttime);printf("nt授课学时: %dn",subfn.ltime);printf("nt实验或上机学时: %dn",subfn.etime);printf("nt学分: %fn",subfn.score);printf("nt开课学期: %dn",subfn.term);printf("nnt1.上一页t2.下一页t3.修改nt4.删除t5.返回n");printf("nt请选择(1-5):");

27、scanf("%d",&inp);switch (inp)case 1:if (n=0) printf("nt已到达首页nt按任意键重新选择");input=getchar();input=getchar();elsen=n-1;break;case 2:if (n=k-1)printf("nt已到达最末页nt按任意键重新选择");input=getchar();input=getchar();elsen=n+1;break;case 3:for (j=0;j<=i-2;j+)if (subfn.num=subsj.nu

28、m)change(j); break;case 4: for (j=0;j<=i-2;j+)if (subfn.num=subsj.num) del(j); break;case 5: index(); break;default :printf("nt对不起,没有这项服务!nt按任意键重新选择!");input=getchar();input=getchar();while(inp!=5);void change(int x)int inp,i=0,j;void index();file *fp,*fp1;char input;struct subinf subs,

29、sub_taxis100;do system("cls");printf("nnnt!注意:一旦修改就无法恢复!您确定要修改该记录吗?n");printf("nt1.是,我要修改t2.不,返回n");printf("nt请输入(1-2):");scanf("%d",&inp);if (inp!=1&&inp!=2)printf("nt没有这项服务!n");printf("t按任意键重新选择.");input=getchar();in

30、put=getchar();while (inp!=1&&inp!=2);if (inp=2)index();if (inp=1) system("cls");printf("nnnt请输入课程信息n");printf("nt课程编号:");scanf("%d",&subs.num);printf("nt课程名称:");scanf("%s",);printf("nt课程性质:");scanf("%s&qu

31、ot;,subs.feat);printf("nt总学时:");scanf("%d",&subs.ttime);printf("nt授课学时:");scanf("%d",&subs.ltime);printf("nt实验或上机学时:");scanf("%d",&subs.etime);printf("nt学分:");scanf("%f",&subs.score);printf("nt开课学期:&

32、quot;);scanf("%d",&subs.term);if (fp1=fopen("sub.dat","rb")!=null) do fread(&sub_taxisi,sizeof(struct subinf),1,fp1); i=i+1; while(!feof(fp1);fclose(fp1);for (j=0;j<x;j+)if (subs.num=sub_taxisj.num) system("cls");printf("nnnt此编号已用!n");prin

33、tf("t按任意键回主菜单.");printf("0");input=getchar();input=getchar();index(); break;for (j=x+1;j<i-2;j+) if (subs.num=sub_taxisj.num)system("cls");printf("nnnt此编号已使用!n");printf("1");printf("t按任意键返回管理菜单");input=getchar();input=getchar();index();

34、break;sub_taxisx=subs; fp=fopen("sub.dat","wb");for (j=0;j<i-1;j+) fwrite(&sub_taxisj,sizeof(struct subinf),1,fp);fclose(fp);printf("nnt信息修改完成!按任意键回主菜单.");input=getchar();input=getchar();index();void del(int y)void index();char input;file *fp;int inp,i=0,j;struct subinf sub_taxis100;do system("cls");printf("nnnt!注意:一旦删除就无法恢复!您确定要删除该记录吗?n");printf("nt1.是,我要删除该记录t2.否,返回n");printf("nt请输入(1或2):");scanf("%d",&inp);if (inp!=1&&inp!=2)printf("nt没有这项服务!n");printf(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论