计算机程序设计(C语言)课程设计报告
毕业设计c语言课程设计

毕业设计c语言课程设计一、课程目标知识目标:1. 理解C语言在毕业设计中的应用场景,掌握C语言的基本语法和编程技巧。
2. 学会使用C语言进行数据结构的设计与实现,如链表、树、图等。
3. 掌握C语言在嵌入式系统、算法竞赛等领域的实际应用。
技能目标:1. 能够运用C语言编写具有实际意义的程序,解决实际问题。
2. 能够分析并优化C语言程序的运行效率,提高编程质量。
3. 培养良好的编程习惯,编写规范、易读、高质量的C语言代码。
情感态度价值观目标:1. 培养学生积极主动探索新知识的精神,提高学生的自主学习能力。
2. 增强学生的团队协作意识,培养良好的沟通与协作能力。
3. 使学生认识到C语言在计算机科学领域的重要地位,激发学生对编程的兴趣。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为毕业设计前的预备课程,旨在帮助学生掌握C语言编程技能,为毕业设计奠定基础。
2. 学生特点:学生已具备一定的计算机基础,了解编程基本概念,但实际编程能力较弱,需要加强实践操作。
3. 教学要求:注重理论与实践相结合,强调实际编程能力的培养,以项目驱动教学,提高学生的实践操作能力。
1. 独立完成C语言基础语法的学习,并能运用所学知识编写简单程序。
2. 掌握常见数据结构在C语言中的实现与应用,能够解决实际问题。
3. 编写具有一定规模的C语言项目,具备初步的软件设计能力。
4. 养成良好的编程习惯,具备团队协作能力和沟通能力。
二、教学内容1. C语言基础语法:变量定义、数据类型、运算符、表达式、控制语句(顺序、选择、循环)、函数、数组、指针。
2. 常见数据结构:链表、栈、队列、树(二叉树、查找树)、图(邻接矩阵、邻接表)。
3. 编程技巧与优化:算法复杂度分析、递归与迭代、内存管理、程序调试与优化。
4. C语言项目实践:学生信息管理系统、简易计算器、文件压缩与解压缩、小型游戏等。
5. 教学内容安排与进度:- 第一周:C语言概述、基础语法、数据类型与运算符。
C语言程序设计实验报告范文.doc

C语言程序设计实验报告范文实验名称计算出1000以内10个素数之和实验目的1、熟练掌握if、if…else、if…else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。
2、熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。
3、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。
进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。
实验内容计算并输出1000以内的10个素数以及它们的和。
要求:在程序内部加必要的注释。
由于偶数不是素数,可以不考虑对偶数的处理。
虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。
输出形式为:素数1+素数2+素数3+…+素数10=总和值。
算法描述流程图Main函数:判断素数:源程序#include#includeint sushu(int n)/* 判断素数的函数*/{int t,i;t=sqrt(n);for(i=2;i1;i-=2)/* x为奇数时,做函数计算*/{n=sushu(i); /* 做判断素数的函数调用*/( 励志天下 )if(n!=0)/* 对素数的处理*/{a[j]=n;/* 把素数由大至小存入数组a[ ]中*/j++;C语言程序设计-职工信息管理系统1C语言课程设计C语言课程设计任务书一、题目:职工信息管理系统二、目的和要求目的:要求熟练掌握C语言的基本知识和编辑技能;基本掌握结构化程序设计的基本思路和方法。
要求:设计一个职工信息管理系统,使之能提供以下功能:1、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!2、输入功能:职工信息录入(职工信息用文件保存),可以一次完成若干条记录的输入。
3、浏览功能:完成对全部职工信息的显示。
大一c语言程序课程设计

大一c语言程序课程设计一、课程目标知识目标:1. 理解C语言程序设计的基本概念,掌握数据类型、变量、运算符、表达式等基础知识;2. 学会使用顺序结构、分支结构、循环结构进行程序设计;3. 掌握数组和函数的使用,理解指针的概念及其应用;4. 了解结构体、联合体和枚举类型的使用。
技能目标:1. 能够运用C语言编写简单的程序,解决问题;2. 能够分析问题,运用逻辑思维进行程序设计;3. 能够阅读和理解他人编写的C语言程序;4. 能够对程序进行调试和优化,提高程序效率。
情感态度价值观目标:1. 培养学生的编程兴趣,激发学习积极性;2. 培养学生的团队合作意识,学会与他人共同解决问题;3. 培养学生的创新精神,敢于尝试新思路和方法;4. 培养学生严谨的学术态度,遵循编程规范。
课程性质:本课程为大一C语言程序设计的基础课程,旨在使学生掌握C语言的基本知识和编程技能,为后续专业课程打下坚实基础。
学生特点:大一学生刚接触编程,对编程知识有一定好奇心,但缺乏实际操作经验。
教学要求:结合学生特点,注重理论与实践相结合,通过案例分析和实际操作,使学生熟练掌握C语言编程技巧。
在教学过程中,注重培养学生的编程兴趣和创新能力,提高学生分析问题和解决问题的能力。
将课程目标分解为具体的学习成果,以便进行后续的教学设计和评估。
二、教学内容1. C语言概述:介绍C语言的发展历程、特点和应用领域,理解编程的基本概念。
相关教材章节:第一章2. 数据类型与运算符:讲解基本数据类型、变量定义、常量声明,运算符及其优先级。
相关教材章节:第二章3. 顺序结构程序设计:学习基本输入输出函数,编写简单的顺序结构程序。
相关教材章节:第三章4. 分支结构程序设计:介绍if语句、switch语句,学会编写分支结构程序。
相关教材章节:第四章5. 循环结构程序设计:讲解for循环、while循环、do-while循环,掌握循环结构编程。
相关教材章节:第五章6. 数组:介绍一维数组、二维数组的使用,学会存储和操作批量数据。
c语言课程设计报告项目背景

c语言课程设计报告项目背景一、课程目标知识目标:1. 学生能理解C语言课程设计报告的项目背景,掌握C语言在工程项目中的应用。
2. 学生能够掌握C语言的基本语法,如变量定义、数据类型、运算符、控制结构等,并能够运用到实际项目中。
3. 学生能够了解C语言编程规范,培养良好的编程习惯。
技能目标:1. 学生能够独立完成C语言课程设计报告的撰写,包括项目背景、需求分析、设计思路、代码实现和测试结果等。
2. 学生能够运用C语言编写简单的程序,解决实际问题,提高编程实践能力。
3. 学生能够通过课程设计,培养自己的问题分析、解决方案设计和调试能力。
情感态度价值观目标:1. 学生在学习过程中,培养对编程的兴趣和热情,提高自主学习能力。
2. 学生能够认识到C语言在计算机科学中的重要性,激发对计算机科学的热爱。
3. 学生通过团队协作完成课程设计,培养沟通协作能力和团队精神。
课程性质:本课程为C语言编程实践课程,强调理论与实践相结合,注重培养学生的编程能力和实际应用能力。
学生特点:学生为初中年级,对编程有一定的基础,具备基本的计算机操作能力,好奇心强,学习积极性较高。
教学要求:教师应关注学生的个体差异,提供针对性的指导,引导学生掌握C 语言基本知识,注重培养学生的实际操作能力和团队协作能力。
在教学过程中,将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. C语言基础知识回顾:变量定义、数据类型、运算符、控制结构(包括顺序、选择、循环结构)。
2. C语言编程规范:命名规则、注释、缩进、代码组织等。
3. 课程设计报告撰写方法:项目背景、需求分析、设计思路、代码实现、测试结果与分析。
4. 实践项目:选取与实际生活相关的问题,引导学生运用C语言进行程序设计。
- 项目一:计算器程序- 项目二:学生信息管理系统- 项目三:简易游戏开发(如:猜数字游戏)教学大纲:第一周:C语言基础知识回顾,重点讲解变量定义、数据类型和运算符。
C语言课程设计报告(多项式简单的计算器)

沈阳航空航天大学课程设计报告课程设计名称:C 语言课程设计课程设计题目:多项式简单的计算器院(系):计算机学院专业:计算机科学与技术班级:14010106学号:2011040101258 姓名:崔雨濛指导教师:孙恩岩完成日期:2012年3月16日第1章概要设计 (2)1.1题目的内容与要求 (2)1.2总体结构 (2)第2章详细设计 (3)2.1主模块 (3)2.2多项式建立模块 (4)2.3计算模块 (5)2.4显示模块 (6)第3章调试分析 (7)3.1无法完整输出多项式 (7)3.2多项式中出现多余的项目 (7)3.3用户无法自行选择结束运行程序 (7)第4章使用说明与执行结果 (8)参考文献 (10)附录(程序清单) (11)第1章概要设计1.1题目的内容与要求课程设计的内容是设计一个简单的单词替换程序,可以替换文本文件中指定的单词。
要求:(1)输入多项式各项并建立多项式。
(2)输出多项式。
(3)两个多项式相加减,并输出结果多项式。
(4)采用VC环境进行调试运行。
1・2总体结构本程序主要分为四个模块(功能模块图见图1.1):主模块,多项式建立模块, 计算模块,显示模块。
主模块:输入多项式各项,建立多项式,输出多项式。
多项式建立模块:将输入的多项式各项以链表形式建立起来。
计算模块:比较两个多项式的系数和指数,合并同类项。
显示模块:显示输入的多项式及结果多项式。
图1.1功能模块图第2章详细设计2.1主模块控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块, 实现各项功能,流程如图2.1所示。
图2.1主模块流程图2.2多项式建立模块注释:根据多项式的项数循环存入结构体中2.3计算模块比较两个多项式的系数和指数,合并同类项。
流程图如图 2.3所示图2.3计算模块流程图注释:具体比较方法如下:(1)qa->expn < qb->expnqa所指节点应为结果多项式中的结点,qa后移:qa=qa->next; qb不动。
C语言程序设计课程设计报告

C语言程序设计课程设计实验报告一、设计名称:学生成绩治理查询系统实验项目性质:综合性所涉及课程:C语言程序设计打算学时:实验学时12二、设计目的:1.通过本课程设计,培育上机动手能力,使学生巩固《C语言程序设计》课程学习的内容,把握工程软件设计的大体方式,强化上机动手能力,闯过编程关;2.为后续各门运算机课程的学习打下坚实基础。
3.明白得程序设计的思路,把握结构化程序设计的方式,综合利用C语言进行程序编写,巩固常常利用的C语言概念,如数组、指针、结构体、链表、文件操作等,注意良好的程序设计风格的培育。
提高编写程序解决实际问题的能力、调试程序的技术。
三、设计环境(软件、硬件及条件)1.硬件:PC机2.软件:Turbo C++四、设计说明:程序系统的结构:用一系列图表列出本程序系统内的每一个程序(包括每一个模块和子程序)的名称、标识符和它们之间的层次结构关系。
主程序:新建:输入记录(遇#号时停止输入)。
插入:在指定位置插入记录。
显示:列出所有记录。
查询:一、按学号查询;二、按名字排序。
删除:一、按学号删除;二、按名字删除;3、删除所有记录。
排序:一、按语文成绩排序;二、按英语成绩排序;3、按数学成绩排序。
保留:保留为任意名字,系统自动加后缀名为.txt。
读取:读取程序目录下的后缀名为.txt的文件。
退出:退出程序。
五、各功能模块的具体实现,用图表表示。
输入记录显示开始:输入学号输入的学号是否为#Y N 结束,返回主菜单输入记录循环输入结束开始p=hp!=NULL输出学生信息;p=p->next结束按学号(姓名)查询信息Y N读取文件六、各模块(函数)的功能介绍,数据结构设计描述,参数说明等。
STUDENT *init(); /*初始化链表*/STUDENT *create(); /*新建链表*/STUDENT *del_no(STUDENT *h);/*按学号删除信息*/STUDENT *del_name(STUDENT *h); /*按姓名删除信息*/void print(STUDENT *h); /*显示信息函数*/void search_no(STUDENT *h); /*按学号搜索*/void search_name(STUDENT *h); /*按姓名搜索*/STUDENT *insert(STUDENT *h); /*插入信息函数*/void sort(STUDENT *h);/* 排序函数*/void save(STUDENT *h);/*保留数据到文件*/void load(STUDENT *h); /*从文件读取数据*/int menu_main(); /*菜单函数*/void inputs(char *prompt,char *s,int count);/*输出信息*/七、程序代码:Enter records\n");printf(" 2. Add records\n");printf(" 3. List records\n");printf(" 4. Search records\n");printf(" 5. Delete records\n");printf(" 6. Sort records\n");printf(" 9. Quit\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~9):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>9); /*选择项不在1~9之间重输*/return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Search records on number\n");printf(" 2. Search records on name\n");printf(" 3. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~3):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>3);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Chinese\n");printf(" 2. English\n");printf(" 3. Math\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Delete records on number\n");printf(" 2. Delete records on name\n");printf(" 3. Delete all records\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}.");/*提示*/getch(); /*读入任意字符*/}.\n");getch(); /*读入任意字符*/if(p==h)h=p->next;elseq->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s); }printf("\nPress any key to continue..."); getch(); /*读入任意字符*/return h;}.\n");getch();if(p==h)h=p->next;else q->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s);}printf("\nPress any key to continue...");getch(); /*读入任意字符*/return h;}.");getch(); /*读入任意字符*/}.");getch(); /*读入任意字符*/}xt"};STUDENT *p;FILE *fp; /*指向文件的指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"wb"))==NULL) /*打开文件,并判定打开是不是正常*/ {printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;while(p!=NULL){if(fwrite(p,sizeof(STUDENT)-sizeof(p->next),1,fp)!=1){printf("Error!\n");exit(1);} /*写入*/p=p->next;}fclose(fp); /*关闭文件*/printf("\n------OK------\n");printf("Press any key to continue...");getch(); /*读入任意字符*/}xt"};STUDENT *p,*a1=NULL,*a2=NULL;FILE *fp;/*概念文件指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"rb"))==NULL)/*打开文件*/{printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;a1=a2=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp); while(!feof(fp)){n++;if(n==1)h=a1;else a2->next=a1;a1=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp);}a2->next=NULL;printf("\n------OK------\n");printf("Press any key to continue...");getch(p); /*读入任意字符*/}///////////////////////////////////////////void sort(STUDENT *h) /*排序函数*/{int i=0,j;STUDENT *p,*q,*t,*h1,*z;clrscr(); /*清屏*/printf("Enter you choice :\n");scanf("%d",&j);z=h;h1=h->next;h->next=NULL;while(h1!=NULL){t=h1;h1=h1->next;q=h;while(t->score[--j]<p->score[--j]&&p!=NULL){q=p;p=p->next;}if(p==q){t->next=p;h=t;}else{t->next=p;q->next=t;}}p=h;while(p!=NULL){i++;p=p->next;}h=z;printf("------OK------\n");}//////////////////////////////////////////////////九、体会、总结本课程设计完成了设计一个学生成绩治理系统,学生的学习成绩进行治理,具有查询和检索功能,而且能够对指定文件操作。
c语言课程设计+报告+源代码

西安郵電大學C语言课程设计报告题目: 职工工资管理系统院系名称: 计算机学院专业名称: 软件工程班级:学生姓名:学号(8位):指导教师:设计起止时间: 2013年06月03日~2013年06月12日一.设计目的1.通过本课程设计, 强化上机动手能力, 使学生在理论和实践的基础上进一步巩固《c语言程序设计》课程学习的内容, 掌握工程软件设计的基本方法.2.学会将知识应用于实际的方法, 提高分析和解决问题的能力, 增加综合能力.3.为后续各门计算机课程的学习打下坚实基础; 为毕业设计和以后工作打下必要基础。
二.设计内容本设计主要包括了用户登录和主菜单,其中用户登录包括了一下几个功能1.新用户的注.2.用户登.3。
用户密码的修改。
而主菜单包括: 1.职工信息的录.2.职工信息的修.3.选择性排.4.统计人数和工.5. 输出现有的信.6.自定义查询信息。
三. 概要设计1. 功能模块图;1.2. 各个模块详细的功能描述。
2.修改密码的时候, 需要输入原密码, 并且输入两次新的密码必须相同才能完成密码的修改。
3.用户登录: 需要输入用户名和密码, 如果用户名不存在或密码错误会给出相应的提醒, 当输入正确的时候会进入主菜单。
4.新用户注册:需要输入注册的用户和密码, 如果用户明已被注册过会给出相应的提醒。
5.职工信息的输入:是从无开始输入职工的信息, 同样也会给出输入内容的提醒, 当输入最后一次职工的信息为零时结束输入, 同是会将输入的信息写入到文件里。
6.修改职工信息其中包括a.添加职工信息和输入职工信息相同在添加完会提醒是否继续添加。
b.修改员工信息: 此时会出现选择性修改职工的哪项信息,先进行选择再进行修改。
C.删除员工信息: 需要输入所要删除员工的姓名或id进行删除!如果删除不成功或者删除者不存在会给出相应的提醒。
7.统计信息: 会自动的统计现有员工的总人数和现有员工的总工资。
8.输出现有职工的信息: 会显示现在记录的职工的各项信息。
c语言实训报告

C课程设计一、课程设计目旳《C语言课程设计》是信息类专业旳主要实践性课程。
目旳在于学习完《C语言程序设计》课程后进行旳一次全方面旳综合练习。
经过课程设计, 一方面能够结合课程旳教学内容循序渐进地进行设计方面旳实践训练, 另一方面, 在参加一系列子项目旳实践过程中, 还能提升怎样综合利用所学知识处理实际问题旳能力, 以及取得有关项目管理和团队合作等众多方面旳详细经验。
为后续课程: 面对对象程序设计、Visual C++, 数据构造, 软件工程, 软件技术基础等奠定必要旳实践基础。
设计目旳如下:1、进一步培养学生构造化程序设计旳思想, 加深对高级语言基本语言要素和控制构造旳了解。
2、针对C语言中旳要点和难点内容进行训练, 独立完毕有一定工作量旳程序设计任务, 同步强调好旳程序设计风格。
3.掌握C语言旳编程技巧和上机调试程序旳措施。
4.掌握程序设计中旳常用算法。
二、课程设计题目及要求1.基础训练题目1.1基础1.1.1写出下面程序旳输出成果。
1)#include <stdio.h>main( ){int x;x=-3+4*5-6;printf(“%d\n”,x);x=3+4%5-6; printf(“%d\n”,x);x=-3*4%4-6/5; printf(“%d\n”,x);x=(7+6)%5/2; printf(“%d\n”,x);}2) # include<stdio.h>main(){int x=5;int y=6;int z=7;printf(" %d\n %d\n %d\n %d\n %d\n %d\n %d\n",x>y,y>x,x!=y,x==z-2,x=x-2,x>=z,x<=z); }3 ) #include <stdio.h>main(){int x=0,y=-1,z=1;printf("%d,%d,%d,%d,%d,%d",x&&y,x||y,y&&z,y||z,x&y,x|y);}1.2顺序构造1)已知三角形旳底和高, 求三角形旳面积法一、#include <stdio.h>main(){float a,b;scanf("a=%f,b=%f",&a,&b);printf("MJ=%.2f",(a*b)/2.0);}法二、#include <stdio.h>main(){float a,b,s;scanf("a=%f,b=%f",&a,&b);s=a*b/2;printf("s=%.1f",s);}2)若已知某银行一年定时旳存款年利率, 输入存款额, 计算三年后本利之和并输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机程序设计(C语言) 课程设计报告题目:电子动画时钟学院:机电工程学院专业:班级:090109班学号::指导教师:设计日期:一、概述选题背景:随着社会的进步和科技的发展,电子钟表逐渐成为了人们生活中不可缺少的一部分。
设计思路:(一)功能模块设计,1.电子时钟执行主流程2.电子时钟界面显示3.电子时钟按键控制模块4.时钟动画处理模块(二)数据结构设计 1.time结构体 2.全局变量(三)函数功能描述1.keyhandle()2.timeupchange()3.timedownchange()4.digitclock()5.drawcursor()6. clearcursor()7.void clockhandle()8.main()(四)程序实现(五)运行结果。
二、概要设计2.1、数据结构此程序中,使用了C语言的time结构体和几个全局变量,1.time结构体struct time{unsigned char ti_min; /*分钟*/unsigned char ti_hour; /*小时*/unsigned char ti_hund; /*百分之一秒*/unsigned char ti_sec; /*秒*/};time结构体定义在dos.h文件中,可用来保存系统的当前时间,其中各字段的值的含义如下。
1.unsigned char ti_min:保存分钟值。
2.unsigned char ti_hour:保存小时。
3.unsigned char ti_hund:保存百分之一秒,例如,ti_hund=500,表示1/500秒。
4.unsigned char ti_sec:保存秒数。
2.2、全局变量下面对程序用到的全局变量及数组进行说明.1. double h,m,s: 此3个全局变量分别用来保存小时,分钟,秒数。
2. double x,x1,x2,y,y1,y2:保存数字时钟中小时,分,秒在屏幕中显示的坐标值。
3.struct time t[1]:定义一个time结构类型的数组,此数组只有t[0]一个元素。
2.3 模块列表1.时钟动画处理模块时钟动画处理模块主要由clockhandle()函数来实现,程序中旧时钟指针的擦除是借助setwritemode(mode)函数设置画线的方式来实现。
如果mode=1,则表示画线时用现在特性的线所画之处原有的线性异或(XOR)操作,实际上画出的线是原有线与现在规定的线进行异或后的结果。
因此,当线的特性不变时,进行两次画线操作相当于没有画线,即在当前位置处清除了原来的画线。
2.时钟按键控制模块在电子时钟中,按键控制模块最主要的工作就是必须能读取用户按键,对按键值进行判断,并调用相应函数来执行相关操作。
3.数字时钟处理模块(1)调用digitclock(int x,int y,int clock)函数。
在数字时钟r指定位置显示时,分,秒,其中digithour(double h),int digitour(double h)和digitsec(doubles)用于完成数值的double型向int型转换。
(2)调用drawcursor(int count),clearcursor(int count)函数来完成旧光标的擦除和新光标的绘制。
2.4、程序结构图(也就是模块之间的关系)三、详细设计3.1程序预处理模块。
包括加载头文件,定义常量,变量,结构体数组和函数原型声明。
3.2主控模块main().main()函数主要实现了对电子时钟的初始化工作,及clockhandle()函数的调用。
3.3时钟动画处理模块。
3.4时针按键控制模块。
在电子时钟中,按键控制模块最主要的工作就是必须能读取用户按键,对按键值进行判断,并调用相应函数来执行相关操作。
流程图如下。
3.5数字时针处理模块。
在数字时钟处理模块中,主要实现数字时钟的显示和数字的时钟修改。
其中,在数字时钟的修改中,用户可以按Tab键定位需要修改的内容的位置,然后通过按光标上移或下移键来修改时间。
四、调试程序错误1:错误现象:Declaration syntan error错误原因:声明错误,缺分号。
修改方法:在声明语句后添加分号。
错误2:错误现象:Two few parameters in call to ‘setlinestyle’ in function main 错误原因:语句缺少参数。
修改方法:在main()函数中找到缺少参数的语句添加相应的参数。
错误3:错误原因:Function call missing)in function clockhandle错误原因:在clockhandle函数调用的是后函数表达式缺少一个)。
修改方法:找到错误语句添加缺少的表达式符号。
五、心得总结程序优点:本程序旨在训练学生的基本编程能力,本程序中涉及时间结构体,数组,绘图等方面的知识,通过本程序的训练使学生能对C语言有一个更深刻的了解。
掌握利用C语言相关函数开发电子时钟的基本原理,为进一步开发出高质量的程序打下坚实的基础。
程序缺点:程序各个模块之间的控制连接比较繁琐,容易出现错误。
六.附程序清单#include<graphics.h>#include<stdio.h>#include<math.h>#include<dos.h>#define PI 3.1415926#define UP 0x4800#define DOWN 0x5000#define Esc 0x11b#define TAB 0xf09int keyhandle (int,int);int timeupchange (int);int timedownchange (int);int digithour (double);int digitmin (double);int digitsec (double);void digitclock (int,int,int);void drawcursor (int) ;void clearcursor (int) ;void clockhandle () ;double h,m,s ;double x,x1,x2,y,y1,y2;struct time t[1] ;main(){int driver,mode=0,i,j;driver =DETECT;initgraph (&driver, &mode,"c:\\tc");setlinestyle (0,0,3);setbkcolor(0);line(82,430,558,430);line(70,62,70,418);line(82,50,558,50);line(570,62,570,418);line(70,62,570,62);line(76,56,297,56);line(340,56,564,56);/*arc(int x, int y, int. stangle, int endangle, int radius)*/ arc(82,62,90,180,12);arc(558,62,0,90,12);setlinestyle (0,0,3);arc(82,418,180,279,12);setlinestyle (0,0,3);arc(558,418,270,360,12);setcolor(15);outtextxy(300,53,"CLOCK");setcolor(7);rectangle(342,72,560,360); setwritemode(0);setcolor(15);outtextxy(433,75,"CLOCK");setcolor(7);line(392,310,510,310);line(392,330,510,330);arc(392,320,90,270,10);arc(510,320,270,90,10);setcolor(5);for(i=431;i<=470;i+=39)for(j=317;j<=324;j+=7) {setlinestyle(0,0,3);circle(i,j,1);}setcolor(15) ;line(424,315,424,325);for(i=0,m=0,h=0;i<=11;i++,h++) {x=100*sin( (h*60+m)/360*PI)+451 ;y=200-100*cos( (h*60+m)/360*PI) ; setlinestyle(0,0,3) ;circle(x,y,1) ;}for(i=0,m=0 ;i<=59;m++,i++) {x=100*sin (m/30*PI)+451;y=200-100*cos(m/30*PI ) ; setlinestyle(0,0,1 ) ;circle(x,y,1) ;}setcolor(4) ;outtextxy(182,125, "HELP" ) ;setcolor(5) ;outtextxy(140,185, "TAB :Cursor move ") ;outtextxy(140,225, "UP : Time ++") ;outtextxy(140,265, "DOWN : Time--") ;outtextxy(140,305, "Esc : Quit system! " ) ;outtextxy(140,345, "Version : 2.0") ;setcolor(12);outtextxy(150,400, "Nothing is more important than time !" ) ; clockhandle() ;closegraph() ;return(0);}void clockhandle(){int k=0,count ;setcolor(15) ;gettime(t) ;h=t[0].ti_hour ;m=t[0].ti_min ;x=50*sin((h*60+m)/360*PI)+451 ;y=200-50*cos((h*60+m) /360*PI) ;line(451,200,x,y);x1=80*sin(m/30*PI) +451 ;y1=200-80*cos(m/30*PI) ;line(451,200,x1,y1) ;digitclock(408,318,digithour(h));digitclock(446,318,digitmin(m));setwritemode(1) ;for(count=2;k!=Esc;) {setcolor(12) ;sound(500);delay(700);sound(200);delay(300);nosound() ;s=t[0].ti_sec ;m=t[0].ti_min ;h=t[0].ti_hour ;x2=98*sin(s/30*PI)+451 ;y2=200-98*cos(s/30*PI) ;line(451,200,x2,y2 ) ;while(t[0].ti_sec==s&&t[0].ti_min==m&&t[0].ti_hour==h) { gettime(t);if(bioskey(1)!=0) {k=bioskey(0);count=keyhandle(k,count) ;if(count==5) count=1 ;}}setcolor(15) ;digitclock (485,318,digitsec(s)+1) ;setcolor(12) ;x2=98*sin(s/30*PI)+451 ;y2=200-98*cos(s/30*PI ) ;line(451,200,x2,y2) ;if(t[0].ti_min!=m ) {setcolor(15) ;x1=80*sin(m/30*PI)+451 ;y1=200-80*cos(m/30*PI ) ;line(451,200,x1,y1 ) ;m=t[0].ti_min ;digitclock(446,318,digitmin(m) ) ;x1=80*sin(m/30*PI)+451 ;y1=200-80*cos(m/30*PI) ;line(451,200,x1,y1 ) ;}if((t[0].ti_hour*60+t[0].ti_min)!=(h*60+m)) {setcolor(15) ;x=50*sin((h*60+m)/360*PI)+451 ;y=200-50*cos((h*60+m)/360*PI);line(450,200,x,y );h=t[0].ti_hour ;digitclock(408,318,digithour (h) ) ;x=50*sin((h*60+m)/360*PI) ;line(451,200,x,y ) ;}}}int keyhandle(int key ,int count ){ switch(key){ case UP: timeupchange(count-1); break ;case DOWN :timedownchange (count-1) ; break ;case TAB :setcolor (15) ;clearcursor(count) ;drawcursor(count) ;count++ ;break;}return count ;}int timeupchange(int count ){if(count==1) {t[0].ti_hour++;if(t[0].ti_hour==24) t[0].ti_hour=0;settime(t) ;}if (count==2) {t[0].ti_min++;if(t[0].ti_min==60) t[0].ti_min=0 ;settime(t) ;}if(count==3) {t[0].ti_sec++;if(t[0].ti_sec==60) t[0].ti_sec=0 ;settime(t) ;}}int timedownchange(int count ){if(count==1) {t[0].ti_hour-- ;if(t[0].ti_hour==0) t[0].ti_hour=23 ;settime(t) ;}if(count==2) {t[0].ti_min--;if(t[0].ti_min==0) t[0].ti_min=59 ;settime(t) ;}if(count==3) {t[0].ti_sec-- ;if(t[0].ti_sec==0) t[0].ti_sec=59;settime (t) ;}}void digitclock(int x, int y, int clock) {char buffer1[10];setfillstyle(0,2) ;bar (x,y,x+15,328) ;if (clock==60) clock=0 ;sprintf(buffer1,"%d",clock) ; outtextxy(x,y,buffer1) ;}int digithour(double h){ int i;for(i=0;i<=23;i++){ if(h==i) return i ;}}int digitmin(double m){ int i ;for(i=0;i<=59 ;i++){ if(m==i) return i;}}int digitsec(double s){ int i;for(i=0; i<=59;i++){if(s==i) return i ;}}void drawcursor (int count){switch(count){case 1:line (424,315,424,325);break ; case 2:line(465,315,465,325) ; break;case 3:line(505,315,505,325) ; break ; }}void clearcursor (int count){ switch(count){case 2: line (424,315,424,325) ; break ; case 3:line (465,315,465,325) ; break ; case 1: line (505,315,505,325) ; break ; }}。