1、第十二讲 C 语言大作业设计思路今天,我们来做 C 语言高级程序设计讲座的最后一讲,主要讲一下 C 语言大作业的设计思路。当前,很多院校在 C 语言结课的时候都要求做一份大作业,作为考核的一部分,很多同学为此挠头,在这里我们将一些设计的思路,希望能给大家一点提示。所谓大作业,其实质目的就是让学生在制作过程中体验这种设计思路,一般来说,思路有了,其他的就不在话下了。毕竟我们不是要求来做这种 Windows 之类的大型软件,Microsoft 的精英开发了好几年,如果我们用 C 语言来做,恐怕也不是一朝一夕能完成的。我们要求学生能够设计出一个小型的游戏或者一个小型的数据库管理软件就很好了。我们在设
2、计之前,一般考虑以下几点:1、问题定义我们首先要知道应该做什么。2、可行性分析然后确定这个方案能否实施,不要做那种自己不可能完成的程序, “只有想不到,没有做不到”这句话以马克思主义哲学的观点来看是不成立的。3、需求分析如果这个方案可行,就要考虑这个程序需要实现什么功能。4、系统设计前面的都确定后,要设计出宏观的框架,例如主界面。5、详细设计详细的设计每一项功能。6、编译并测试一般来讲,我们提倡每完成一项内容都要编译测试。7、运行维护自己用自己的软件,用所有想到的错误操作来操作它,找出所有的内在 BUG。8、发布如果你自己没有找到错误了,该软件就差不多可以交上去了,结合开发过程我们就可以写出论
3、文来。下面我们来介绍一个简单的人工智能程序。初始化人机界面/*exper_1.c*/#include#include#include#define N 11char *pre=“p1“,“p2“,“p3“,“p4“,“p5“,“p6“,“p7“,“p8“,“p9“,“p10“,“p11“;char *symptom=“咳嗽“,“ 流鼻涕“,“怕冷“,“打喷嚏“,“痰多“,“ 体温高“,“血象偏高 “,“泛酸“,“ 呕吐“,“上腹隐痛“,“食欲不振“,;main()int i,j;FILE *fp;char answer;char midpreN5;if(fp=fopen(“c:bcbinpre
4、.txt“,“wt“)=NULL)printf(“Can not open flie“);exit(0);for(i=0;i#include#include#include#define N 10#define M 11struct RLint rnum;int rpsum;char preN5;char res5;struct RL zrulN;char *pre=“p1“,“p2“,“p3“,“p4“,“p5“,“p6“,“p7“,“p8“,“p9“,“p10“,“p11“;char *symptom=“咳嗽“,“ 流鼻涕“,“怕冷“,“打喷嚏“,“痰多“,“ 体温高“,“血象偏高 “,“
5、泛酸“,“ 呕吐“,“上腹隐痛“,“食欲不振“,;char *result=“r1“,“r2“,“r3“;char *diagnose=“上感“,“支气管炎“,“胃炎“;int have()FILE *fp;int i,ri=-1,rs=0;char mstr5;char dstrN5;if(fp=fopen(“c:bcbinjingyan.txt“,“rt“)=NULL)printf(“Can not open flie“);exit(0);while(fscanf(fp,“%s“,mstr)!=EOF)if(!strstr(mstr,“p“)zrulri.rnum=atoi(mstr);i
6、f(ri0)zrulri-1.rpsum=rs-1;for(i=0;izrulri-1.rpsum;i+)strcpy(zrulri-1.pre,dstr);strcpy(zrulri-1.res,dstrrs-1);rs=0;elsestrcpy(dstrrs,mstr);rs+;zrulri.rpsum=rs-1;for(i=0;izrulri.rpsum;i+)strcpy(zrulri.pre,dstr);strcpy(zrulri.res,dstrrs-1);fclose(fp);return(ri+1);query(int n)FILE *fp,*fpi;char lstrN5;c
7、har mstr5;int i=0,j=0,k=0;int psum=0;int agrees=0;int m;if(fp=fopen(“c:bcbinpre.txt“,“rt“)=NULL)printf(“Can not open flie“);exit(0);if(fpi=fopen(“c:bcbinreason.txt“,“wt“)=NULL)printf(“Can not open flie“);exit(0);while(fscanf(fp,“%s“,mstr)!=EOF)strcpy(lstr,mstr);i+;fclose(fp);psum=i;for(i=0;in;i+)if(
8、zrul.rpsum=psum)for(j=0;jpsum;j+)for(k=0;kzrul.rpsum;k+)if(!strcmp(lstrj,zrul.prek)agrees+;if(agrees=zrul.rpsum)fprintf(fpi,“%s “,zrul.res);agrees=0;for(m=0;m11;m+)if(!strcmp(zrul.res,resultm)printf(“n 对你的症状做出的诊断为:%sn“,diagnosem);fclose(fpi);main()int n;system(“c:bcbinexper_1.exe“);n=have();query(n);文本经验数据库1 p1 p2 p3 p4 p5 p6 p7 r12 p1 p5 p6 r23 p8 p9 p10 p11 r3大家可以通过对本例程的进一步完善使之成为一个专家系统,让自己的电脑成为家庭医生。到这里,你是不是对 C 语言大作业的设计有了一定的思路了呢?我们这一讲就到这里了。