第一篇:c语言课程设计运动会比赛计分系统(含任务书)
一、课程设计目的
将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:
(1)进一步巩固、加深学生所学专业课程《C语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用C语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。(5)掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。
(6)熟练掌握C语言的基本语法,灵活运用各种数据类型。
(7)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。
二、课程设计名称及内容
课程设计名称:运动会比赛计分系统
设计内容:设计一个运动会比赛计分系统,该系统要求对运动会比赛得分进行管理和维护。
三、任务和要求
要求:初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数 各项目名次取法有如下几种:
(1)取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;
(2)取前3名:第一名得分5,第二名得分3,第三名得分2;(3)用户自定义:各名次权值由用户指定。
四、设计方案提示
(1)界面
系统以菜单方式工作(2)输入数据并存入文件
使用到结构体变量和动态链表,由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。对输入的信息进行合法性判断,直到输入正确为止。都输入完成后,调用写文件函数对指定的文件进行写操作,把输入的信息写入到文件中。(3)显示所有记录
将文件中的所有记录以表格的形式输出。如果文件未打开会出现“文件打开失败!按任意键返回...”,关闭文件。(4)查询
所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,查看参赛学校信息和比赛项目信息等。二:算法设计:
信息输入模块、比赛结果录入模块以及查询模 题目的总体要求是要建立三个模块:信息输入模块、建立三个模块 块。在建立完之后,要求该程序能够在用户将各种必要的信息记录之后,用户可以查询所 有学校的比赛成绩,而且也可以生成团体总分表,查看参赛学校信息和比赛项目信息等一切 录入的信息,为此,要示编程人员能通过一些具体的程序将以上的功能加以实现。在建立三个模块的大前提下,我们将采用结构体,循环体,指针和各种函数来实现这 种功能,在数据结构体中,要采用结构体数组,其中包括学校、项目、运动员三个结构体。学校结构体成员包括学校校名、竞赛项目、得分项目结构体成员包括项目名、权值。(1)在此程序中,包括几个头文件:mainfile.h;dos.h;conio.h;momery.h;接下来,定义全)局变量,其中包括“参赛学校项目数 N;男子项目数 M;女子项目数 W;参赛学校g_school;竞赛项目 g_sport;各名次链表指针 ptrHead,ptrThis,ptrNew;总体设计:系统设计为信息输入模块、比赛结果录入模块和查询模块三个模块。总
体设计:系统设计为信息输入模块、比赛结果录入模块和查询模块三个模块。
(2)各种结构的分析:)各种结构的分析: 静态存储方式: 它是指在程序运行期间由系统分配固定的存储空间的方式,全局变量全部存 静态存储方式: 放在静态存储区中,在程序开始执行时给全局变量分配存储区,程序执行完毕就释放,在程 序执行过程中它们占据固定的存储单元,而不是动态地进行分配和释放。用 static 声明局部变量:使用该变量可以使局部变量的值在函数调用结束后不消失而保留原 值,这即为静态局部变量的特点。静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不 释放。对静态局部变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。如在定义局部变 量时不赋初值的话,则对静态局部不说,编译时自动赋初值 0(对数值型变量)或空字符
总体设计 信息输入模块 比赛结果录入模块 查询模块 设置参赛信息 设置竞赛项目总数 主菜单 设置竞赛项目信息 设置项目名次取法 生成报表 打印竞赛项目信息 填充参赛信息 请输入您的选择 开始。而对自动变量来说,如果不赋初值则它的值是一个不确定的值。虽然静态局部 变量在函数调用结束后仍然存在,但其他函数是不能引用它的。Malloc 函数 函数的作用是在内存的动态存储区中分配一个长度为 size 的连续空间。此函数的值 是一个指向分配域起始地址的指针,如果此函数未能成功地执行,则返回空指针。链表是动态地进行存储分配的一种结构,所谓建立动态链表是指在程序执行过程中从无到有 地建立一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系。循环结构是结构程序设计的基本结构之一,它和顺序结构、选择结构共同作为各种复 循环结构 杂程序的基本构造单元。通常用 while、do…while 语句实现循环,最常用的是 for 3
语句的循 环,夺循环中还有循环的嵌套,它是指一个循环体内又包含另一个完整的循环结构。用语句 来实现从循环体内跳出来,即提前结束循环,接着执行循环下面的语句,但 break 语句不能 用于循环语句和 swich 语句之外的任何其他语句中。另外一种就是 continue 语句,它的作用 是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判 定。Swich 语句 语句是多分支选择语句,它后面括号内的“表达式”,ANSI 标准允许它为任何类 型。当表达式的值与一个 case 后面的常量表达式的值相等时,就执行此 case 后面的语句,若所有的 case 中的常量表达式的值都没有与表达式的值匹配的,就执行 default 后面的语句,每一个 case 的常量表达式的值必须都不相同;否则就会出现相互矛盾的现象。各个 case 和 default 的出现次序不影响执行结果,执行完一个 case 后面的语句后,流程控制转移到下一 个 case 继续执行。“case 常量表达式”只是起语句标号作用,并不是在该处进行条件判断。在执行 swich 语句时,根据 swich 后面表达式的值找到匹配的入口标号,就从此标号开始执 行下去,不再进行判断程序流程图 开始 请输入您的选择 c s i p q 编号 n=0? i<=2 i=0 i=1 0 2 1 MAX—M MAX—W 男团总分 女团总分 r 团体总分 输出 t 生成报表 结束 HOU 第 6 页 2010/9/5 项目名次的取法及每一名次的分值 开始 请选择编号 0 1 2 0 7 输入名次 0 5 1 5 1 3 t=i 2 3 2 2 i=i+1 3 2 i>0 4 1 n<5 n<3 输出
****************************MENU1******************************* ****** 1.enter!!2.record!!3.search!!******************************************************************************* choice your number:()
二、课程设计体会 在此次的 C 语言的课程设计中,我不仅 学到了许多有庆这方面的专业知识,更重要的是我学会了如何在拿到一个题目时进行简单的 程序分析,并编译出一些相对简单的程序,当然了,对自己编译出的不对的程序,我也能 4
进 行一些分析,并对其进行完善。在此次的学习过程中,老师教给了我们很多的东西,从一开 始的不懂 VC++这种软件,到最后的我们可以进行较熟练的应用它,也许在这过程中,我们 无论是学生还是老师都遇到了一些小的困难,但是在我们师生的共同努力下,我们最终还是 克服了它,单从这一点来说,我们就学到了许多的东西,比如 teamwork,同学之间的相互 帮助以及与老师的配合,都证明了这一点,我相信这是我此次学习C 语言程序的最大收获。在我的程序设计的过程中,遇到了很大有难题,特别是在刚拿到我的题目时,头脑中 根本没有头绪,更不要说去编译程序了,当时真的很担心是否可以完成老师布置的任务,但 慢慢的在学习的过程中,我开始懂得了一些编译的方法,就尝试着去编译一些程序,结果还 是很好,最后我编出了我题目的程序,但是在程序的运行过程中,又遇到了新的难题,那就 是我所编的程序中有太多的错误,根本无法进行运行,没办法,只好硬着头皮修改,不过还好,在老师和同学们的帮助下,我最终将我的程序成功地进行了运行,在我自己的程序运行 时,心中有一种说不出的高兴,是的,自己这几天的努力总是没有白费。
五.附录:
源代码:
#include
}itemnode;typedef struct {
int schoolnum;
int score;
int mscore;
int wscore;
itemnode c[m+w];}headnode;headnode h[n];
void input(){
int i,j,k,s;
for(i=0;i { h[i].schoolnum=0; h[i].score=0; h[i].mscore=0; h[i].wscore=0; } for(i=0;i { printf(“n学 校 编 号:”); scanf(“%d”,&h[i].schoolnum); for(j=0;j { printf(“n项 目 编 号:”); scanf(“%d”,&h[i].c[j].itemnum); printf(“n取前3或前5名:”); scanf(“%d”,&h[i].c[j].top); while(h[i].c[j].top!=3&&h[i].c[j].top!=5) {printf(“n输入错误,请重新输入!:”); scanf(“%d”,&h[i].c[j].top);break;} printf(“n获得几个名次:”);6 scanf(“%d”,&k); for(s=0;s<5;s++) h[i].c[j].range[s]=0; for(s=0;s { l: printf(“n名 次:”); scanf(“%d”,&h[i].c[j].range[s]); if(h[i].c[j].top==3) switch(h[i].c[j].range[s]) { case 0:h[i].c[j].mark[s]=0; break; case 1:h[i].c[j].mark[s]=5; break; case 2:h[i].c[j].mark[s]=3; break; case 3:h[i].c[j].mark[s]=2; break; default:{puts(“输入错误!请重新输入!”); goto l;} } else switch(h[i].c[j].range[s]) { case 0:h[i].c[j].mark[s]=0; break; case 1:h[i].c[j].mark[s]=7; break; case 2:h[i].c[j].mark[s]=5; break; case 3:h[i].c[j].mark[s]=3; break; case 4:h[i].c[j].mark[s]=2; break; case 5:h[i].c[j].mark[s]=1; break; default:{puts(“输入错误!请重新输入!”); goto l;} } h[i].score=h[i].score+h[i].c[j].mark[s]; if(j<=m-1) h[i].mscore=h[i].mscore+h[i].c[j].mark[s]; else h[i].wscore=h[i].wscore+h[i].c[j].mark[s]; } printf(“n”); } } } void output(){ int choice,i,j,t; int a[n]; int sign; do { printf(“n***************************1.按学校编号****************************n”); printf(“*****************************2.按学校总分****************************n”); printf(“*****************************3.按男团总分****************************n”); printf(“*****************************4.按女团总分****************************n”); printf(“*****************************请根据提示进行操作!:”); scanf(“%d”,&choice); printf(“n”); switch(choice) { case 1:for(i=0;i { printf(“n学校编号:%dn”,h[i].schoolnum); printf(“学校总分:%dn”,h[i].score); 输出 输出 输出 输出 printf(“男团总分:%dn”,h[i].mscore); printf(“女团总分:%dn”,h[i].wscore); printf(“n”); } break; case 2:for(i=0;i a[i]=i; for(i=0;i { for(j=i+1;j if(h[a[i]].score { t=a[i]; a[i]=a[j]; a[j]=t; } } for(i=0;i { printf(“n学校编号:%dn”,h[a[i]].schoolnum); printf(“******************学校总分:%dn”,h[a[i]].score); printf(“******************男团总分:%dn”,h[a[i]].mscore); printf(“******************女团总分:%dn”,h[a[i]].wscore); printf(“n”); } break; case 3:for(i=0;i a[i]=i; for(i=0;i { for(j=i+1;j if(h[a[i]].mscore { t=a[i]; a[i]=a[j]; a[j]=t; } } for(i=0;i { printf(“n学校编号:%dn”,h[a[i]].schoolnum); printf(“******************学校总分:%dn”,h[a[i]].score); printf(“******************男团总分:%dn”,h[a[i]].mscore); printf(“******************女团总分:%dn”,h[a[i]].wscore); printf(“n”); } break; case 4:for(i=0;i a[i]=i; for(i=0;i { for(j=i+1;j if(h[i].wscore { t=a[i]; a[i]=a[j]; a[j]=t; } } for(i=0;i { printf(“n学校编号:%dn”,h[a[i]].schoolnum); printf(“******************学校总分:%dn”,h[a[i]].score); printf(“******************男团总分:%dn”,h[a[i]].mscore); printf(“******************女团总分:%dn”,h[a[i]].wscore); printf(“n”); } break; } printf(“是否继续操作(1/0)?:”); scanf(“%d”,&sign); printf(“n”); }while(sign==1); } void chaxun(){ int choice; int i,j,k,s; printf(“n*****1:按学校编号查询n”); printf(“n*****2:按项目编号查询n”); printf(“n*****请选择查询方式:”); scanf(“%d”,&choice); switch(choice) { case 1: do { printf(“要查询的学校编号:”); scanf(“%d”,&i); if((i>n)||(i<=0)) printf(“错误:这个学校没有参加此次运动会!n”); else { printf(“******************要查询的项目编号:”); scanf(“%d”,&j); if(j>m+w||j==0) printf(“******************此次运动会没有这个项目******************n”); else { printf(“这个项目取前 %d名,该学校的成绩如下:n”, 11 h[0].c[j-1].top); for(k=0;k<5;k++) if(h[i-1].c[j-1].range[k]!=0) printf(“名次:%dn”,h[i-1].c[j-1].range[k]); } } printf(“是否继续操作(1/0)?:”); scanf(“%d”,&s); printf(“n”); }while(s==1); break; case 2: do { printf(“要查询的项目编号:”); scanf(“%d”,&s); if(s>m+w||s==0) printf(“此次运动会不包括这个项目n”); else { printf(“该项目取前 %d名,取得名次的学校n”,h[0].c[s-1].top); for(i=0;i for(j=0;j<5;j++) if(h[i].c[s-1].range[j]!=0) printf(“ 学 校 编 号 :%d,名次:%dn”,h[i].schoolnum,h[i].c[s-1].range[j]); } printf(“是否继续操作(1/0)?:”); scanf(“%d”,&i); printf(“n”); }while(i==1); break; } } void write(){ int i,j,s; FILE *fp; if((fp=fopen(“sportsdata结果.txt”,“a+”))==NULL) { printf(“不能打开文件n”); exit(1); } fputs(“学校编号 学校总分 男子总分”,fp);fputs(“n”,fp); for(i=0;i { fprintf(fp,“%2dtt ”,h[i].schoolnum); fprintf(fp,“%2dtt”,h[i].score); fprintf(fp,“%2dtt”,h[i].mscore); fprintf(fp,“%2d ”,h[i].wscore); fputs(“n”,fp); } fclose(fp);} 女子总分 void read() { FILE *fp; int i,j,s; if((fp=fopen(“sportsdata.txt”,“r”))==NULL) { printf(“文件不存在,不能打开文件!n”); exit(1); } for(i=0;i { fscanf(fp,“%d”,&h[i].schoolnum); // for(j=0;j // { fscanf(fp,“%d”,&h[i].c[j].itemnum); fscanf(fp,“%d”,&h[i].c[j].top); // for(s=0;s<5;s++) // { fscanf(fp,“%d”,&h[i].c[j].range[s]); // } // } } fclose(fp);} int main(){ FILE *fp; int choice; int flag1=1,flag2=1; system(“cls”); do { printf(“n####***********************************************####n”); printf(“n####******************校级运动会分数统计系统*******************####n”); printf(“nn ####^^^^^^^^^^^^^^1.录入信息^^^^^^^^^^^^^^####n”); printf(“nn ####^^^^^^^^^^^^^^2.读取信息^^^^^^^^^^^^^^####n”); printf(“nn ####^^^^^^^^^^^^^^3.显示信息^^^^^^^^^^^^^^####n”); printf(“nn ####^^^^^^^^^^^^^^4.查询信息^^^^^^^^^^^^^^####n”); printf(“nn ####^^^^^^^^^^^^^^5.退出程序^^^^^^^^^^^^^^####n”); printf(“n####*************************************************************####n”); printf(“nn请根据提示选择操作!:”); scanf(“%d”,&choice); if(choice==1) flag1=0; else if((fp=fopen(“sportsdata.txt”,“r”))!=NULL) flag2=0; else { system(“cls”); printf(“没有信息,请你录入信息!n”); } }while(flag1&&flag2); switch(choice) { case 1: 欢迎使用程序 printf(“n==========请输入信息========n”); input(); write();printf(“==========信息已存入档=========”); main(); case 2: read(); write; break; case 3: printf(“===========输出信息==========n”); if(flag1) read(); output(); main(); case 4: printf(“===========查询信息==========n”); if(flag1) read(); chaxun(); main(); case 5: printf(“n退出系统!谢谢使用!nn”);exit(0); default: printf(“输入错误!n”);exit(0); } 六主要知识点 面向过程程序设计方法 界面制作,switch的应用。 数组或链表的实现与应用。 文件的读写。 七.其他 程序设计可在VC++、C++ Builder环境下进行。八.参考资料 [1] 黄明等编著《C语言课程设计》北京:电子工业出版社 [2] 郭翠英编著《C语言课程设计案例精编》北京:中国水利水电出版社 [3] 宁正元《数据结构(c语言)》 南京:东南大学出版社。2000年6月第1版 [4] 严蔚敏等 《数据结构(c语言版)》 北京:清华大学出版社,1997年4月第1版 [5] 谭浩强编著《C程序设计题解与上机指导(第3版)》北京:清华大学出版社 [6] 谭浩强编著《C程序设计(第3版)》北京:清华大学出版社 #include #include #define m 1//男子项目数目 #define w 1//女子项目数目 #define null 0 struct itemnode{ int itemnum;//项目编号 int top; //取名次的数目 int range[5];//名次 int mark[5];//分数 char name[8];}; //定义项目结点的类型 struct headnode{ int schoolnum; //学校编号 int score; //学校总分 int mscore; //男团体总分 int wscore; //女团体总分 itemnode c[m+w]; //项目数组 };//定义头结点类型 headnode h[n];//定义一个头结点数组 void inputinformation()//输入信息,建立系统 { int i,j,k,s;char ch; for(i=0;i { h[i].score=0; h[i].mscore=0; h[i].wscore=0; //初始化头结点 printf(“====参赛学校编号:”); scanf(“%d”,&h[i].schoolnum); for(j=0;j { printf(“ 参赛项目编号:”); scanf(“%d”,&h[i].c[j].itemnum); printf(“ 取前3名or前5名:”); scanf(“%d”,&h[i].c[j].top); printf(“ 所取名次数量:”); scanf(“%d”,&k); for(s=0;s //输入头结点信息//输入项目信息 { h[i].c[j].range[s]=0; h[i].c[j].mark[s]=0;//初始化排名和分数 printf(“ 所获得的名次:”); scanf(“%d”,&h[i].c[j].range[s]); //输入所获名次信息 printf(“ 该运动员姓名:”); getchar(ch); gets(h[i].c[j].name); if(h[i].c[j].top==3) switch(h[i].c[j].range[s]) { case 0: h[i].c[j].mark[s]=0;break; case 1: h[i].c[j].mark[s]=5;break; case 2: h[i].c[j].mark[s]=3;break; case 3: h[i].c[j].mark[s]=2;break; } else switch(h[i].c[j].range[s]) { case 0: h[i].c[j].mark[s]=0;break; case 1: h[i].c[j].mark[s]=7;break; case 2: h[i].c[j].mark[s]=5;break; case 3: h[i].c[j].mark[s]=3;break; case 4: h[i].c[j].mark[s]=2;break; case 5: h[i].c[j].mark[s]=1;break; } h[i].score=h[i].score+h[i].c[j].mark[s];//按取前三名还是取前五名分别记分 if(j<=m-1) h[i].mscore=h[i].mscore+h[i].c[j].mark[s];//是男子项目(取前三名)则记到男子分数里面去 else h[i].wscore=h[i].wscore+h[i].c[j].mark[s];//是女子项目(取前五名)则记到女子项目里面去 } printf(“n”); } } printf(“n”);} void output() //输出函数 { int choice,i,j,k;int remember[n];int sign; do { printf(“*******************1.按参赛学校编号输出.*******************n”); printf(“*******************2.按参赛学校总分输出.*******************n”); printf(“n*********************** 请选择编号*************************n:”); scanf(“%d”,&choice); switch(choice) { case 1: for(i=0;i { printf(“nn*****学校编号:%d”,h[i].schoolnum); printf(“*****学校总分:%d” ,h[i].score); printf(“*****男团总分:%d”,h[i].mscore); printf(“*****女团总分:%d ”,h[i].wscore); } //按编号顺序输出 break; case 2: for(i=0;i remember[i]=i; for(i=0;i { for(j=i+1;j if(h[remember[i]].score { k=remember[i]; remember[i]=remember[j]; remember[j]=k; } } // 用冒泡排序方法,用辅助数组记住头结点下标 for(i=0;i { printf(“nn*****学校总分:%d”,h[remember[i]].score); printf(“*****学校编号:%d” ,h[remember[i]].schoolnum); printf(“*****男团总分:%d”,h[remember[i]].mscore); printf(“*****女团总分:%d ”,h[remember[i]].wscore); //按所记下标顺序输出 } //按学校总分输出 break; } printf(“n”); printf(“请选择继续,0 跳出n”); scanf(“%d”,&sign);}while(sign==2);//循环执行输出语句 printf(“nnn”);} //查询函数 void inquiry() { int choice;int i,j,k,s; printf(“n*****按学校编号查询*****n”); do{ printf(“要查询的参赛学校编号:”); scanf(“%d”,&i); if(i>n) printf(“错误:这个学校没有参加此次运动会!”); else { printf(“所要查询的参赛项目编号:”); scanf(“%d”,&j); if(j>m+w||j==0) printf(“此次运动会没有这个项目nn”);//学校编号超出范围,则输出警告 else { printf(“n这个项目取前%d名,该学校的成绩如下:n”,h[0].c[j-1].top); for(k=0;k<5;k++) if(h[i-1].c[j-1].range[k]!=0) { printf(“所获得的名次:%dn”,h[i-1].c[j-1].range[k]);//输出要查询学校项目的成绩 } } } printf(“n”); printf(“请选择 2 继续 , 0 跳出n”); scanf(“%d”,&s); printf(“nn”); }while(s==2); //循环执行输出语句 } //把数据存储在文件中 void writedata() { FILE *report; int i; if((report=fopen(“sportsdata.txt”,“w”))==null){ printf(“不能打开文件n”); exit(1); } for(i=0;i fwrite(&h[i],sizeof(headnode),1,report); fclose(report);} //按头结点块写入 //读出文件中数据的函数 void readdata() { FILE *report; int i,j,k,s; if((report=fopen(“sportsdata.txt”,“r”))==null) { printf(“file can not be openedn”); exit(1); } for(i=0;i { printf(“学校编号:”); fread(&k,sizeof(int),1,report); printf(“%dn”,k); printf(“学校总分:”); fread(&k,sizeof(int),1,report); printf(“%dn”,k); printf(“男团总分:”); fread(&k,sizeof(int),1,report); printf(“%dn”,k); printf(“女团总分:”); fread(&k,sizeof(int),1,report); printf(“%dn”,k); printf(“nnn”); getch(); for(j=0;j { printf(“项目编号:”); fread(&k,sizeof(int),1,report); printf(“%dn”,k); printf(“所取得的名次数量:”); fread(&k,sizeof(int),1,report); printf(“%dn”,k); for(s=0;s<5;s++) { fread(&k,sizeof(int),1,report); if(k!=0) printf(“名次:”); printf(“%dn”,k); } for(s=0;s<5;s++) { fread(&k,sizeof(int),1,report); if(k!=0) printf(“分数:”); printf(“%dn”,k); } } printf(“nnn”); getch();} fclose(report);//关闭文件 } //按照读一个数据就输出一个数据的方式显示数据内容 void main(){ int choice; printf(“n ╔===================★ welcome ★======================╗n”); printf(“n ******************运动会比赛计分系统*******************n”); printf(“n ★★★★★★ Design by 陈雪芸 ★★★★★★ n”); printf(“nn ********************1.输入比赛信息*********************n”); printf(“ ********************2.输出比赛信息*********************n”); printf(“ ********************3.查询比赛信息*********************n”); printf(“ ********************4.退出系统 *********************nn”); printf(“ ╚========╝nnn”); printf(“请选择要实现步骤的编号:nn”); scanf(“%d”,&choice);switch(choice){ case 1: inputinformation(); writedata(); main(); case 2: output(); main(); case 3: inquiry(); main(); case 4: exit(0); default: exit(0); } } 河南工程学院 《汇编语言》 课程设计任务书 适用专业: 计算机科学与技术 适用班级: 本科 2014年12月20日 《汇编语言》课程设计任务书 一、课程设计目的与任务 汇编语言课程设计是本科教学过程中重要环节。通过课程设计,培养计算机专业学生,运用所学知识,进一步提高学生汇编语言综合编程能力和程序调试技能。并能够使学生更加熟练运用汇编程序设计语言,来解决计算机应用领域实际问题的能力,以及为设计其它应用软件提供帮助,进而提高学生的软件设计能力。 二、课程设计环境要求 1、硬件配置:586以上电脑 2、操作系统:WINDOWS 98/XP/2000等 3、软件需求:MASM 6.15 三、课程设计基本要求 要求通过查阅与设计课题相关的文献资料,自学与其相关内容,掌握MASM 6.15集成开发环境的使用。根据题目要求,自由分组,自选一个题目完成,根据各小组每个学生的出勤情况、负责部分完成情况、最后答辩情况及报告撰写是否规范,形成个人成绩。具体要求如下: 1、在整个设计期间,无违纪现象(迟到、早退、逃课),态度认真; 2、整体架构正确合理、流程图清晰无误; 3、设计尽可能完成题目所要求的功能; 4、程序代码清晰,便于阅读; 5、报告书写规范; 6、提供可运行的课程设计系统,并参加上机面试答辩; 7、在课程设计结束时,上交实习报告和程序清单。 四、课程设计内容 1、计算比赛成绩。编制一个程序,要求完成以下功能:(1)9名评委,每个评委给分范围为0~10(整数); (2)9名评委给分中,去掉一个最高分和一个最低分,剩余7名评委的平均分 即为参赛者的得分(精确到小数点后1位); (3)并将得分输出显示。 2、成绩评定。编制一个程序,要求完成以下功能:(1)以十进制形式从键盘随机输入成绩(不多于50个); (2)显示成绩评定的等级(90-100为优,80-90为良,70-80为中,60-70为及格,60分以下为不及格); (3)统计出各个等级的人数并以十进制形式显示输出;(4)当输入Q时,退出程序。 3、成绩排序。编制一个程序,要求完成以下功能: (1)以十进制形式从键盘随机输入成绩(不多于50个),并用逗号或空格分隔各学生成绩; (2)对该班的成绩进行递减排序,并以十进制形式显示排序结果并用逗号或空格分隔; (3)计算全班的平均分并以十进制形式显示输出;(4)当输入Q时,退出程序。 4、代码转换程序设计。编制一个程序,要求完成以下功能: 完成一个字母或数制之间的转化,主程序分别具有6种可选择的子功能,按相应的字符可分别进入相应的子功能并在屏幕上显示结果,按“Q”键退出。6种可选择的子功能分别为: (1)实现小写字母向大写字母的转换;(2)实现大写字母向小写字母的转换;(3)实现大写字母与小写字母的互换;(4)实现二进制数向十六进制数的转换;(5)实现十六进制数向二进制数的转换;(6)实现十六进制数向十进制数的转换。 5、信息检索。编制一个程序,要求完成以下功能: (1)完成一个信息检索系统,在数据区,有9个不同的信息,编号为0~8,每个信息包括50个字符; (2)从键盘输入0~8之间的一个编号,然后在屏幕上显示相应编号的信息内容;(3)当输入Q时,退出程序。、字符统计。编制一个程序,要求完成以下功能:(1)从键盘输入一个字符串(串长不大于100);(2)以十进制输出字符串中非字母字符的个数; (3)输出原字符串; (4)找出字符串中ASCII 码值最大的字符,在字符串中用红色显示;(5)字符串的输入和结果的输出都要有必要的提示,且提示独占一行。 7、奇偶数判断。编制一个程序,要求完成以下功能:(1)从键盘输入两个四位十六进制数;(2)将这两个数以二进制形式输出; (3)找出这两个数中的偶数,若有则以十进制输出,若无,输出“NO”;(4)计算这两个数的平方和,并以十进制形式输出; (5)数据的输入和结果的输出都要有必要的提示,且提示独占一行。 8、十进制数字串处理。编制一个程序,要求完成以下功能:(1)从键盘输入一个以回车结束的十进制数字串(不超过20 个)。(2)按 ASCII 码值降序显示这个数字串中最大和最小的两个数字。(3)以十进制形式显示数字串中所有数字的和。 (4)以十进制形式显示数字串中最大数与最小数的乘积。(5)对数字串进行处理,使每个字符在字符串中只出现一次。 (6)数据的输入和结果的输出都要有必要的提示,且提示独占一行。 五、课程设计报告 课程设计报告主要包含以下内容: 1、课程设计的题目,本设计所实现的功能简述; 2、主要的设计思想简述; 3、主要程序的框图; 4、源程序代码(要求在关键的位置注释,从而增加程序的可读性); 5、程序调试结果及分析; 6、课程设计的总结,主要包括以下内容:(1)课程设计中所遇到的主要问题和解决方法。(2)创新和得意之处。 (3)课程设计中存在的不足,需要进一步改进的设想。(4)课程设计的感想和心得体会。 7、参考文献(不少于5篇)。 六、课程设计时间、地点及辅导教师 1、时间:2014-2015学年第1学期第19周 2、班级:计算机科学与技术1241、1242 3、地点:计算机学院机房 4、辅导教师:王雪瑞 前4个题目,每组不超过两个人;第5个题目一人,6、7、8三个题目每组不超过3人。 2007-2008学年第二学期 《C语言程序设计》 课程设计报告 系 部: 三 系 专业班级: 电子资讯工程(2)班 学 号: 070306210 姓 名: 冀 鹏 超 设计题目: 同学通讯录设计 起讫日期: 2008.6.16 至 2008.6.29 指导老师: 徐 化 祥 2008 年 6 月 宿迁学院课程设计报告 课程设计(论文)内容要求: 1.本课程设计的目的 (1)熟练掌握C语言的基本知识和技能;(2)掌握程序设计的一些经典算法和基本方法;(3)了解数组、指针和结构体的应用; (4)利用所学的基本知识和技能,解决日常生活中经常面临的问题;(5)培养分析、解决问题的能力;提高学生的科技论文写作能力。 2.课程设计的任务及要求 1)课程设计题目:同学通讯录设计 2)基本要求: (1)设计一个菜单将在实现的功能显示出来,并有选择提示; (2)通讯簿应包含姓名、性别、电话号码、QQ号码、Email、班级、宿舍等基本信息;(3)能够查询全部成员清单; (4)能够按号码或姓名查询某一个成员的信息;(5)能够增加、修改某一个成员的信息; (6)要求有错误提示功能,例如性别只能输入F,M,输入错误提示重新输入。 3)创新要求: (1)加入删除功能,实现对指定成员信息的删除操作; (2)信息的输入输出可以用文件的存取和显示的方式,建立文件,直接存取默认檔或指定文件。 4)课程设计报告编写要求 (1)要按照课程设计模板的规格书写课程设计报告;(2)报告包括目录、正文、心得体会、参考文献等; (3)课程设计论文用A4纸统一打印,装订按学校的统一要求完成。 5)参考数据: (1)谭浩强.C程序设计(第三版).北京:清华大学出版社,2005.7(2)张强华.C语言程序设计.北京:人民邮电出版社,2001.8(3)http://www.teniu.cc/ 6)提交内容: 6.18 209实验室 编程设计与调试 6.186.28 209实验室 提交所有数据 6.282345int i,j;/*下面的循环是对初始值的处理*/ for(i=0;i strcpy(stu[i].sex,”“);stu[i].age=0;strcpy(stu[i].tel,”“);strcpy(stu[i].major,”“);strcpy(stu[i].classes,”“);strcpy(stu[i].room,”“);strcpy(stu[i].qq,”“);strcpy(stu[i].email,”“);strcpy(stu[i].others,”“);} 宿迁学院课程设计报告 int print1(){ int n;printf(”tttt<<通讯录>>n“);printf(”**************************************************************n“);printf(”t欢迎使用本通讯录应用程序,愿您从中找到所需要的信息。n“);printf(”制作人:冀鹏超 & 李长明t学号:070306210 & 070306211t班级:07电子信息(2)班n“);printf(”**************************************************************n“);printf(”n“);printf(”ttt1.浏览通讯簿n“);printf(”ttt2.输入同学信息n“);printf(”ttt3.查询同学信息n“);printf(”ttt4.删除同学信息n“);printf(”ttt5.增加同学信息n“);printf(”ttt6.修改同学信息n“);printf(”ttt7.退出通讯簿n“);printf(”n请输入您的选择(1-7):“);scanf(”%d“,&n);return n;} void menu(struct txl stu[]){ int i,j,flag=1;char str[15];for(;flag==1;){ switch(print1()) 电话{ :case 1: for(i=0;stu[i].age!=0;i++){ printf(”姓名: %sn性别:%sn年龄:%dn%sn 班 级 : %sn 宿 舍 : %sn 专 业 : %snQQ号:%snEmail: %sn“,stu[i].name,stu[i].sex,stu[i].age,stu[i].tel,stu[i].classes,stu[i].room,stu[i].major,stu[i].qq,stu[i].email); } printf(”其它信息:%sn“,stu[i].others);if(i==0)printf(”目前通讯簿为空,请先输入信息n“); 宿迁学院课程设计报告 ,stu[i].room,stu[i].major,stu[i].qq,stu[i].email); } if(i==N)printf(”t通讯簿中没有你要找的同学!n“);break; printf(”其它信息:%sn“,stu[i].others);break;} case 4: printf(”现在你将进行删除操作!请输入要删除的同学的名字,按Enter结束.n“); scanf(”%s“,str);for(i=0;i if(strcmp(stu[i].name,str)==0){ printf(”姓名: %sn性别:%sn年班级:%sn 宿舍:%sn 专业:%snQQ龄:%dn电话:%sn号:%snEmail: %sn“,stu[i].name,stu[i].sex,stu[i].age,stu[i].tel,stu[i].classes,stu[i].room,stu[i].major,stu[i].qq,stu[i].email); printf(”该同学将被删除n“); } 宿迁学院课程设计报告 scanf(”%s“,stu[i].name);printf(”输入同学的性别: “);scanf(”%s“,stu[i].sex);printf(”输入同学的年龄: “);scanf(”%d“,stu[i].age);printf(”输入同学的电话: “);scanf(”%s“,stu[i].tel);printf(”输入同学的班级: “);scanf(”%s“,stu[i].classes);printf(”输入同学的宿舍: “);scanf(”%s“,stu[i].room);printf(”输入同学的专业: “);scanf(”%s“,stu[i].major);printf(”输入同学的QQ号: “);scanf(”%s“,stu[i].qq);printf(”输入同学的Email: “);scanf(”%s“,stu[i].email);printf(”输入同学的其它信息: “);scanf(”%s“,stu[i].others);} } break;case 7: flag=0;break;default: printf(”你的输入有错误,请重新输入!n");} } } void main(){ struct txl stu[N]; } init(stu);menu(stu); 宿迁学院课程设计报告 四、测试结果 1.通讯录菜单如下图所示: 2.输入“1”,进行“浏览通讯录操作: 3.输入“2”,进行“输入同学信息”的操作: 宿迁学院课程设计报告 8.输入“7”,进行“退出通讯簿”操作: 宿迁学院课程设计报告 五、设计心得 自从记事以来就听过了计算机这个高科技,现在终于实现了自己的一个小小愿望——成为了计算机系的一名学生,这学期我们学的C语言,以前就听过这个名字,打开书一看简直一窍不通,学好这门科简直就是一个挑战,课前课后都要把书啃一遍,要不然上课就跟不上,终于学期快结束了,我们有一个课程设计,在两个星期内,完成一个复杂的程序,我们的题目是做一个通讯簿。 通过为期一周的C课程设计实验课使我了解到了一个程序开发的过程,虽然规模不大,但为我以后的编程学习打下了基础。在编程的过程中,我体会到了学习编程的辛苦,为了一个算法的实现而思考,为了一个小小的编译错误而花时间去寻找,这需要很大的毅力和耐心,而且要有良好的思维,这才使得我完成这个任务,也使我感到一分喜悦,毕竟自己完成了一个有模有样的程序。于此,我也发现自己的一些不足,良好的编程习惯的养成,坚定的毅力和耐心仍是我要加强的,同别人的交流也是必须的,这样才能不断使我进步。在这次设计中,我遇到了很多困难,但我没有向困难低头,通过查询数据,虚心向同学、老师请教,才一一得到了解决。我发现平时学的太少了,在今后我首先要把老师在课堂讲的弄懂,弄透,在此基础上利用课余时间多看课外书籍,拓宽知识面。在设计过程中,合作精神必不可少。单凭一个人的力量是不能完成的,毕竟一个人学的很有限。每个人掌握的不同。我相信:态度决定一切,只有努力才有收获。 总的来说,这次程序设计让我获益匪浅,对C语言也有了进一步的认识:C语言功能高、表达能力强、使用灵活方便、目标程序效率高。 C语言是在国内外广泛使用的一种计算机语言,我相信除了以上优点之外还有许多,希望能在以后的学习中有更深入的认识。 很感谢这次的课程设计,它使我更加深刻地体会到多看专业书的重要性,只有掌握了一定量的专业知识才能得心应手地解决诸多问题;另外,做任何事都要有耐心,不要一遇到困难就退缩;在学习和工作中要时刻谨记“团结”二字,它好比通向成功的铺路石,不可或缺。 人生的道路是曲折的,但正是因为曲折人生才光彩夺目,在人生的路上,总遇到重重困难,但正是因为困难我们才变的更坚强。今后的路还很长,面对困难,让我们用行动去俘虏它吧! 宿迁学院课程设计报告 六、参考文献 [1] 谭浩强.C++程序设计.北京:清华大学出版社,2004 [2] http://www.teniu.cc/ [4] http://www.teniu.cc/ [5] 刘振安.C程序设计课程设计.北京:机械工业出版社,2004 [6] 张强华.C语言程序设计.北京:人民邮电出版社,2001.8 617- 《C++语言课程设计》任务书 专业 班级 学号 姓名 一、实践目的 通过本课程设计教学,为学生提供一个综合运用所学知识,解决实际问题的机会,增强其实践动手能力和工程实践能力,锻炼和培养学生的自学能力,使学生能利用C++语言设计功能较全的一个应用程序,得到程序设计方法、文献资料查询、设计报告写作的综合训练。同时加深对< 二、实践任务与要求 1、编写一个简单的基于MFC的应用程序(5学时) 《C++程序设计实践教程》P218-P226综合设计题中任选一题。 2、参照《C++程序设计实践教程》中P64-74的实例,从以下各题中任选一题,在vc++环境下编写一个基于控制台方式的应用程序(Win32 Console Application,25学时)1).教学管理系统。学生信息包括学生的班级代号、学号和姓名,选课信息包括每个学生该学期所选课程,成绩包括每个学生所选的课程的考核成绩。系统功能要求如下: (1)能输入学生信息、选课信息和成绩。 (2)能输出各班的某门课程不及格的名单(含学号、姓名和成绩)。(3)能输出某门课程全年级前5名的学号、姓名和成绩。(4)能输出某门课程每个班的总平均分(从高到低排列)。(5)能输出某门课程某班的成绩单(按学号排列)。 2).通讯录管理程序。通讯录要求存储姓名、性别、工作单位、住宅电话、移动电话、办公电话、E-mail地址等内容。系统功能要求如下: (1)通讯录记录按姓名排序存放,显示时每屏不超过20个记录,超过时分屏显示。(2)增加某人的通讯录。(3)修改某人的通讯录。(4)删除某人的通讯录。 (5)按多种方式查询符合条件的信息。(6)用文件存储数据。 3).图书室管理系统。该系统存储以下信息: (1)对于同一作者同一书名的书,存储书名、书目编号、作者名、库存册数(不包括已借出的)、已借出册数。 (2)对于每一本书还要存储一个登录号(这是区别每一本书的唯一标志)、当前借阅该书的读者姓名与借书证号、借阅日期。 系统功能要求如下:(1)创建存储系统。(2)增加新书。 (3)删去无使用价值的旧书。 (4)处理借书。要求读者提供书目号与登录号,一位读者限借2册。检查库中有无读者要求借阅的图书,检查该读者已借阅图书数量。 (5)处理还书。 (6)查询某登录号的书是谁借了。 4).工资管理系统。该系统在磁盘上存储了某单位上月全体职工的工资信息。对于每一位职工存储以下信息:月份,职工编号,基本工资,津贴,岗贴,补贴,房贴,交通费,应发数,房租,储蓄,会费,个人所得税,应扣数,实发数。个人所得税计算方法设为:工资少于800元的部分为0,800~2000元的部分为5%,2000~5000元的部分为10%,5000元以上的部分为20%。 系统功能要求如下: (1)创建存储职工工资信息的存储系统。(2)添加某职工的工资信息。(3)删除某职工的工资信息。 (4)修改某职工的部分工资信息(当月开始增加或减少某些项工资或扣款数变化)。(5)输出指定编号职工的工资信息(借查询用)。(6)输出当月全体职工的工资信息(发工资用)。 5).车票管理系统。一车站每天有n个发车班次,每个班次都有一班次号(1,2,3,…,n),固定的发车时间固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。例如: 班次 发车时间 起点站 终点站 行车时间 额定载量 已订票人数 1 8:30 长沙 广州 2 9:30 长沙 南昌 1.5 3 8:00 长沙 南宁 4.5 4 10:00 长沙 武汉 3.5 ……(1)录入班次信息(信息用文件保存),可不定时地增加班次数据。 (2)浏览班次信息,可显示出所有班次当前状况。如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息。 (3)查询路线:可按班次号查询,也可按终点站查询。 (4)售票和退票功能。当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数。退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。 三、实习纪律 1、独立思考、完成程序设计的所有内容,严禁抄袭。2、按时上、下机,不得无故缺课 四、设计报告要求 设计报告要求简洁、严谨(3000-4000字,4页),应包括以下几方面的内容: 1、系统功能概述 2、主要的数据结构概述 3、系统结构框架 4、各主要功能模块的实现算法(画出流程图或自然语言描述) 5、调试过程中遇到的主要问题及解决的方法;对设计和编码的回顾讨论和分析;改进思想;收获和体会等 6、主要程序模块的清单 五、时间安排 上机时间:18-19周 最后一次实验检查程序运行情况并交设计报告。 六、成绩评定规则 1、程序调试结果分优、良、中、及格、不及格五等,占总课程成绩的60% 2、实验过程评价:在上机操作过程中学生的上机能力按优、良、中三档评定,占课程总成绩的20% 3、实验报告评价占课程总成绩的20% 指导教师 李利明 中南大学 计算机基础教学实验中心 2012.6.1第二篇:运动会比赛计分系统
第三篇:2012语言课程设计任务书
第四篇:C语言课程设计任务书-学生通讯系统(范文模版)
第五篇:《C++语言课程设计》任务书_2012