单链表的基本操作 C语言课程设计

单链表的基本操作 C语言课程设计
单链表的基本操作 C语言课程设计

课程设计(论文)

题目名称单链表的基本操作

课程名称C语言程序课程设计

学生姓名

学号

系、专业信息工程系、网络工程专业

指导教师成娅辉

2013年6月6 日

目录

1 前言 (3)

2 需求分析 (3)

2.1 课程设计目的 (3)

2.2 课程设计任务 (3)

2.3 设计环境 (3)

2.4 开发语言 (3)

3 分析和设计 (3)

3.1 模块设计 (3)

3.2 系统流程图 (4)

3.3 主要模块的流程图 (6)

4 具体代码实现 (9)

5 课程设计总结 (12)

5.1 程序运行结果 (12)

5.2 课程设计体会 (12)

参考文献 (13)

致谢 (13)

1 前言

我们这学期学习了开关语句,循环语句、链表、函数体、指针等的应用,我们在完成课程设计任务时就主要用到这些知识点,本课题是单链表的简单操作,定义四个子函数分别用来创建链表、输出链表、插入数据以及删除数据,主函数中主要用到开关语句来进行选择调用哪个子函数,下面就是课程设计的主要内容。

2 需求分析

2.1 课程设计目的

学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。

2.2 课程设计任务

输入一组正整数,以-1标志结束,用函数实现:(1)将这些正整数作为链表结点的data域建立一个非递减有序的单链表,并输出该单链表;(2)往该链表中插入一个正整数,使其仍保持非递减有序,输出插入操作后的单链表;(3)删除链表中第i个结点,输出删除操作后的单链表,i从键盘输入。

2.3 设计环境

(1)WINDOWS 7系统

(2)Visual C++

2.4 开发语言

C语言

3 分析和设计

3.1 模块设计

定义链表结点类型struct node表示结点中的信息,信息包括数据域data(用于存放结点中的有用数据)以及指针域next(用于存放下一个结点的地址),并将链表结点类型名改为NODE。如下所示:

typedef struct node

{int data;

struct node *next;

}NODE;

定义函数NODE *create_llist_sorted(),用来创建非递减有序带头结点的单链表,定义四个指针NODE*h,*p,*q,*s,头指针指向第一个结点,并且分配空间给头指针h,使头指针不为空,*p指向单链表中某一结点,*q指向*p的前驱,*s指向输入的数据,将数据逐个输入,将输入的数据通过循环语句不断进行比较,其中先使*q指向*h所指位置,*p指向*h的下一个位置,不断将输入的每一个数据与链表中的数据相比较,找到插入位置,然后移动*p,*q,直到*p为空指针且*s所指数据小于等于*p所指数据,从而使数据有序,最后返回头指针。详细程序见后文中的具体代码实现。

定义函数void output(),用来输出头指针h所指的单链表,因为此链表有头结点,所以定义一个指针NODE *p,*p指向h的下一个位置,不断地将*p所指数据输出并且移动*p,直到*p为空指针。详细程序见后文中的具体代码实现。

定义函数void insert(NODE *h, int x),使元素x插入到单链表h中之后链表中数据仍有序,定义三个指针NODE *p,*q,*m,*q指向头指针所指位置,*p指向*q的下一个位置,*m指向要插入的数据x,将数据插入链表中去后将数据不断进行比较,直至*p为空指针且*m所指数据小于等于*p所指数据,移动*p,*q,使数据仍然有序。详细程序见后文中的具体代码实现。

定义函数NODE *del(NODE *h, int i),用于删除单链表h中第i个结点,定义两个指针*p,*q,用指针p来从第一个结点开始查找需要删除的结点,指针q是指针p的前驱,查找过程中,不断移动指针p,q,直至找到需要删除的结点,如果*p为空指针,则表示链表中没有需要删除的结点,最后返回头指针。详细程序见后文中的具体代码实现。

主函数主要是采用开关分支语句对几个子函数进行调用。

3.2系统模块流程图

图3.1系统模块流程图

3.3主要模块的流程图

(1)输出函数流程图(如图3.2)

图3.2. 输出函数流程图(2)插入函数流程图(如图3.3)

图3.3插入函数流程图

(3)删除函数流程图(如图3.4)

图3.4删除函数流程图

(4)创建单链表函数流程图(如图3.5)

图3.5创建单链表函数流程图

4 具体代码实现

/*单链表的基本操作*/

#include"stdio.h"

#include"math.h"

#include"string.h"

#include"stdlib.h"

typedef struct node

{int data;

struct node *next;

}NODE;/*链表结点类型定义*/

/********函数声明********/

NODE *create_llist_sorted();

/*建立一个非递减有序的带头结点的单链表,返回其头指针*/

void output(NODE *h);/*输出头指针h所指单链表*/

void insert(NODE *h, int x);/*将元素x插入到单链表h中仍有序*/ NODE *del(NODE *h, int i);/*删除单链表h中第i个结点*/

/********主函数********/

void main()

{NODE *head;int x,i,n;

printf("********单链表的基本操作********\n"); /*输出菜单*/ printf(" 1. 建立\n");

printf(" 2. 输出\n");

printf(" 3. 插入\n");

printf(" 4. 删除\n");

printf(" 0. 退出\n");

while(1)

{printf("请选择:");

scanf("%d",&n);

switch(n)

{case 1:head=create_llist_sorted();break;

case 2:output(head);break;

case 3:printf("please input inserted data:");scanf("%d",&x);

insert(head,x);output(head);break;

case 4:printf("please input deleted location:");

scanf("%d",&i);del(head,i);output(head);break;

case 0:exit(0);

default:printf("输入错误,请重新选择!\n");

}

}

}

/********子函数********/

NODE *create_llist_sorted()

/*建立一个非递减有序的带头结点的单链表,返回其头指针*/

{int x;NODE *h,*p,*q,*s; /*p指向单链表中某一结点,q指向*p的前驱*/

h=(NODE *)malloc(sizeof(NODE));h->next=NULL;

scanf("%d",&x);

while(x!=-1)

{s=(NODE *)malloc(sizeof(NODE));

s->data=x; s->next=NULL;

for(q=h,p=h->next;p!=NULL&&s->data>p->data;p=p->next,q=q->next);

/*不断比较,找到插入位置。注意:循环条件p!=NULL必须先判断,即放在&&左边*/ q->next=s;s->next=p;

scanf("%d",&x);

}

return h;

}

void output(NODE *h)/*输出头指针h所指单链表*/

{

NODE *p;

p=h->next;

while(p!=NULL)

{

printf("%d ",p->data); p=p->next;

}

printf("\n");

}

NODE *del(NODE *h, int i)/*删除单链表h中第i个结点*/

{

NODE*p,*q;

p=h;

while(p!=NULL&&p->data!=i)

{q=p;p=p->next;}

if(p==h)

{

h=h->next;free(p);

}

else if(p==NULL)

printf("not been find\n");

else

{q->next=p->next;free(p);}

return(h);

}

void insert(NODE *h, int x)/*将元素x插入到单链表h中仍有序*/ {

NODE *p,*q,*m;

m=(NODE *)malloc(sizeof(NODE));

m->data=x; q=h;p=q->next;

while(p!=NULL&&m->data>p->data)

{q=q->next; p=p->next;}

m->next=p; q->next=m;

}

5 课程设计总结

5.1 程序运行结果

输入源程序后,先进行调试,经调试无错误后开始运行,屏幕上会显示菜单,会出现提示语“请选择”,选择1即建立了一个链表,然后键入一组正整数,以-1标志结束,按回车键;继续选择2即执行输出函数,按回车键后屏幕上会输出之前键入的数据,按回车键;继续选择3即执行插入函数,按回车键后键入一个需要插入的数据,按回车键屏幕上输出插入数据后的一组新数据,按回车键;继续选择4即执行删除函数,按回车键后键入一个需要删除的数的所在的节点,继续按回车键屏幕上会输出删除节点后的一组新数据,按回车键;继续选择0即退出程序,运行结果如下图所示

图5.1运行结果示意图

5.2 课程设计体会

总体来说,这个课程设计的优势在于条理较为清晰,内容比较充实,源程序也是比较清晰明了的,方便使用,不足之处在于流程图不够规范整洁,其他地方都还有待

提高。

我觉得课程设计中最核心的部分是编程,在编程的过程中,最关键的是要有扎实的知识功底,最重要的是需要细心和耐心。拥有扎实的知识功底,看到课题,我们便能灵活运用老师所教的知识,较为清晰地、快速地想出大概的程序框架,然后再正式地进行编程。在编程时,细心是必要的,因为一个小小的错误便会导致整个程序不能正常运行,便要进行一系列的复杂的调试工作,所以细心能避免一些不必要的麻烦。同时,耐心也是必不可少的,当我们在编程过程中可能会遇到一些困惑和难点以及错误,需要我们有一定的耐心坚持下去,不轻言放弃,不断地进行调试和运行,有不懂的地方和同学讨论,向老师请教,直到使程序正常运行。

通过这次的课程设计,我收获了许多,了解了如何正确规范地进行课程设计,为以后能快速高效进行课程设计打下一定的基础。

参考文献

[1]黄同成,周红波.程序设计基础教程(C语言)[M].湖南人民出版社,2011.

[2]黄同成,黄磊.程序设计实践教程(C语言)[M].湖南人民出版社,2011.

[3]谭浩强.C程序设计(第三版)[M].北京:清华大学出版社,2005.

致谢

首先,我想要感谢编写C语言相关书籍的各位老师以及我们的授课老师,让我们了解并掌握了有关C语言的大量的基础知识,让我们有足够的知识储备和扎实的知识功底来顺利地进行我们的课程设计。

然后,我要感谢那些在我编写程序时给予我许多帮助和指导的同学和老师,因为是他们让我在百思不得其解的时候豁然开朗,让我理清思路,然后经过不断试验,不断调试运行,才得以把这个程序很好地完成。在同学的帮助、老师的指导过程中,我也学到了许多自己所缺乏的知识,让我又多了几种编程的方法及思路。在这个过程中,我也学会了如何撰写课程设计论文,了解了撰写的格式以及方式。

同时,我也要感谢学校领导们给予我们在课程设计过程中的支持与帮助,正是因为他们给我们提供了良好的实验室以及实验器材,才能让我们能在良好舒适的环境内顺利地进行实验,进而顺利完成我们的编程以及课程设计。

C语言程序课程设计任务书

《C语言程序设计》课程设计任务书 对象:17楼宇智能化技术专业 一、课程设计目的 本课程设计主要是为了进一步提高学生掌握利用C语言语言开发程序的能力,熟悉程序开发的一般流程,及自主学习能力和团队协作能力。 1. 掌握C语言语言基本语法及数据类型; 2. 掌握C语言基本程序结构、数组、函数、指针、文件的使用; 3. 掌握结构化程序设计思想和C语言开发程序基本流程; 4. 具备C语言程序调试能力; 5. 能自主进行知识查阅及分析和解决问题; 6. 能具备良好的团队协作能力和沟通能力。 二、课程设计要求 (一)总体要求 学生必须仔细阅读课程设计书,认真主动完成课设的要求。有问题及时、主动通过各种方式与教师联系沟通。 学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时的向教师汇报。 本课程设计主要流程是: 分组->选题->进行课程设计->撰写课程设计报告->课程设计答辩->上交资料。 本课程设计成绩组成: 总成绩(100%)=源程序(60%)+课程设计报告(20%)+课程设计答辩(10%)+小组自评分(10%,包括组长评分和个人自评分)

(二)各部分具体要求 1. 分组要求 (1)小组成员1-2人组成,成员自由组合,小组组长由本小组推荐产生; (2)本课程设计实行小组组长负责制,每个成员具体分工由成员共同协商,组长最后决定; (3)课程设计结束后,组长根据每个成员所负责具体任务及是否积极参加等因素进行打分,每个成员分数不能一样; (4)课程设计小组自评表由组长填写,最后由各成员签名,除签名外表格其它内容可打印(A4纸); (5)本课程设计要体现团队合作精神,每个成员分工合理,要及时、定期沟通,组长充分发挥组织协调作用,每个成员要有合作和团队意识。 2. 选题要求 本课程设计选题必须在6月10日之前完成,每个小组可以从推荐设计项目中进行选题,也可以自己自拟设计题目,自拟设计题目要上报设计详细功能,在得到老师的许可后方可开始进行课程设计。 同一个班级每个小组选题不能重复,学习委员汇总全班各组选题,电子档E-mail给老师。 3. 设计内容要求 (1)每个课程设计项目至少包含5个功能模块; (2)设计界面友好,要有菜单界面,数据存放在文件中,数据使用数组、结构体都可以; (3)书写规范,变量及函数命名体现“见名知意”原则;采用锯齿型书写格式,便于阅读; (4)采取模化程序设计,在设计过程中,按功能定义多个不同的函数,通过函数调用实现各功能模块的作用; (5)要求利用结构化程序设计方法以及C的编程思想来完成系统的设计; (6)整个设计必须上机调试通过。 4. 课程设计报告要求 设计报告内容要体现整个课程设计过程,包括:需求分析、总体设计、详细设计、程序运行测试与分析、设计反思。

c语言课程设计机房机位预定系统绝对正确,附源代码

1 设计目的 机房机位预定系统 2 任务概述 20台机器,编号1到20,从早八点到晚八点。两小时一个时间段,每次可预定一个时间段。功能要求: (1)系统以菜单方式工作 (2)查询,根据输入时间,输出机位信息。 (3)机位预定,根据输入的时间查询是否有空机位,若有则预约,若无则提供最近的时间段,另:若用户在非空时间上机,则将用户信息列入等待列表。 (4)退出预定,根据输入的时间,机器号撤销该事件的预定! (5)查询是否有等待信息,若有则提供最优解决方案(等待时间尽量短),若无则显示提示信息。 ......... 3 模块划分 4 主要函数说明及其N-S图 1.主函数: int main() { Menu(); /*当前状态函数*/ } void Menu() /*主界面*/ { int n,w; do { puts("\t\t****************机房机位预约系统*******************\n"); puts("\t\t*************************菜单

***************************\n"); puts("\t\t\t 1.查询某时间段机位状态"); /*查询某时间段机位状态*/ puts("\t\t\t 2.预定空机位"); /*预定空机位*/ puts("\t\t\t 3.取消预订"); /*取消预订*/ puts("\t\t\t 4.查询等待信息"); /*查询等待信息*/ puts("\t\t\t 5.退出"); /*退出*/ puts("\t\t********************************************************\n"); printf("选择菜单号(1-5):"); scanf("%d",&n); if(n<1||n>5) {w=1;getchar();} else w=0; }while(w==1); switch(n) { case 1:Situation();break; case 2:Book();break; case 3:Cancel();break; case 4:SearchWaiting();break; case 5:exit(0);break; } getch(); } 2.机位查询: void Situation() { int time; printf("输在 (8-20)范围内的时间:"); scanf("%d",&time); if(time<8||time>20) {printf("\t时间输入错误!\n"); printf("输入在 (8-20)范围内的时间:"); scanf("%d",&time); } detail(time); /*函数调用*/ getchar(); Menu();} 3.机位预定:

C语言链表的建立、插入和删除

数组作为存放同类数据的集合,给我们在程序设计时带来很多的方便,增加了灵活性。但数组也同样存在一些弊病。如数组的大小在定义时要事先规定,不能在程序中进行调整,这样一来,在程序设计中针对不同问题有时需要3 0个大小的数组,有时需要5 0个数组的大小,难于统一。我们只能够根据可能的最大需求来定义数组,常常会造成一定存储空间的浪费。我们希望构造动态的数组,随时可以调整数组的大小,以满足不同问题的需要。链表就是我们需要的动态数组。它是在程序的执行过程中根据需要有数据存储就向系统要求申请存储空间,决不构成对存储区的浪费。 链表是一种复杂的数据结构,其数据之间的相互关系使链表分成三种:单链表、循环链表、双向链表,下面将逐一介绍。 7.4.1 单链表 图7 - 3是单链表的结构。 单链表有一个头节点h e a d,指向链表在内存的首地址。链表中的每一个节点的数据类型为结构体类型,节点有两个成员:整型成员(实际需要保存的数据)和指向下一个结构体类型节点的指针即下一个节点的地址(事实上,此单链表是用于存放整型数据的动态数组)。链表按此结构对各节点的访问需从链表的头找起,后续节点的地址由当前节点给出。无论在表中访问那一个节点,都需要从链表的头开始,顺序向后查找。链表的尾节点由于无后续节点,其指针域为空,写作为N U L L。 图7 - 3还给出这样一层含义,链表中的各节点在内存的存储地址不是连续的,其各节点的地址是在需要时向系统申请分配的,系统根据内存的当前情况,既可以连续分配地址,也可以跳跃式分配地址。 看一下链表节点的数据结构定义: struct node { int num; struct node *p; } ; 在链表节点的定义中,除一个整型的成员外,成员p是指向与节点类型完全相同的指针。在链表节点的数据结构中,非常特殊的一点就是结构体内的指针域的数据类型使用了未定义成功的数据类型。这是在C中唯一规定可以先使用后定义的数据结构。 ?单链表的创建过程有以下几步: 1 ) 定义链表的数据结构。 2 ) 创建一个空表。 3 ) 利用m a l l o c ( )函数向系统申请分配一个节点。 4 ) 将新节点的指针成员赋值为空。若是空表,将新节点连接到表头;若是非空表,将新 节点接到表尾。 5 ) 判断一下是否有后续节点要接入链表,若有转到3 ),否则结束。 ?单链表的输出过程有以下几步 1) 找到表头。

万年历+备忘录(C语言课程设计)

/* 湖南大学数学与应用数学 胡凡 C语言课程设计 万年历+备忘录命令提示行 完成于2011年 完整版 */ /*-------------------------------我是分割线-------------------------------*/ /*命令行功能选项*/ /*-d:显示当月日历和当日备忘*/ /*-i:显示当月日历和添加当日备忘*/ /*-m:显示当月日历和修改当日备忘*/ /*-g:删除当日备忘*/ /*-t:删除全部备忘*/ /*-------------------------------我是分割线-------------------------------*/ /*头文件*/ #include #include #include /*调用getopt函数*/ /*定义全局变量(各月所含天数)*/ int a[]={0,31,0,31,30,31,30,31,31,30,31,30,31}; /*定义结构体*/ struct date_message { int year; /*年*/ int month; /*月*/ int day; /*日*/ char memo[300]; /*备忘*/ }date={1,1,1,"\0"}; /*-------------------------------我是分割线-------------------------------*/ /*主函数*/ int main(int argc,char *argv[]) { /*函数声明*/ void checkDate(); /*检查日期合法性*/ void show_calender(); /*显示日历*/ void memo_written(); /*写入备忘*/ void memo_modify(); /*修改备忘*/ void memo_delete(); /*删除当日备忘*/ void memo_delete_all(); /*删除全部备忘*/ void memo_read(); /*读取备忘*/

C语言课程设计任务书(必备)

《C语言程序设计》课程设计任务书及指导书 计算机科学与信息工程学院 2012年

说明:以下题目每名同学可以选择一个作为设计题目,也可以自己自拟一个题目,但工作量要与此相关不大。 C语言课程设计任务书及指导书1 题目:学院教学信息管理系统 功能:学院教学信息管理系统,每一条记录包括教师的职工号、姓名、职称、性别、3门讲授课程的名称,教学效果综合评分。系统要求实现以下功能: 1、输入:输入每一位教师记录,将其信息写入文件中。 2、显示:显示每位教师记录。 3、排序:按职工号或教学效果综合评分进行排序,并显示。 4、查找:完成按姓名或课程查找教师的相关记录,并显示。 5、保存:将相关数据写入磁盘文件,便于存、取操作。 分步实施: 1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。 2、完成信息的录入和显示(即通过编程创建文件,输入教师信息并可将文件内容显示出来) 3、完成排序功能。 4、完成查找功能(可按职工号、姓名、讲授课程进行查找) 要求:1、用C语言实现程序设计; 2、利用结构体来实现教师信息的处理; 3、系统的各个功能要求用函数实现; 4、界面友好(良好的人机交互),程序必须有注释。 课程设计实验报告要求: 1、预习报告:仔细分析客户需求、进行模块划分、设计每个模块的算法和数据结构。 2、实验总结报告:按照模板的格式。 C语言课程设计任务书及指导书2 题目:酒店房间登记与计费管理系统 功能:1、屏幕上出现一个界面,让操作员能够方便的选择所需要进行的操作,包括登记入住、查询房间的入住情况、查询当前费用、结账退房等操作。 登记入住的信息主要有:客人姓名、房间号、入住时间、计费方式(按天或小时)、单价、押金房间信息:房间号、是否有人入住、房间标准、每天单价、小时单价 2、对不同标准的房间实施不同的收费标准,也可以按天收费或按小时收费,可根据顾客需要 在登记的入住的时候进行选择。 3、在结账退房时,根据入住的时间,计费方式和房间单价计算出总费用。 4、保存:将相关数据写入磁盘文件,便于存、取操作。 分步实施: 1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数; 2、完成最低要求:建立房间列表,完成登记入住、查询房间入住情况等功能。 3、进一步要求:完成计费和费用查询功能; 每次登录时读取保存在磁盘文件中的入住情况。要求:1、用C语言实现系统;

C语言链表专题复习

链表专题复习 数组作为存放同类数据的集合,给我们在程序设计时带来很多的方便,增加了灵活性。但数组也同样存在一些弊病。如数组的大小在定义时要事先规定,不能在程序中进行调整,这样一来,在程序设计中针对不同问题有时需要3 0个元素大小的数组,有时需要5 0个数组元素的大小,难于统一。我们只能够根据可能的最大需求来定义数组,常常会造成一定存储空间的浪费。 我们希望构造动态的数组,随时可以调整数组的大小,以满足不同问题的需要。链表就是我们需要的动态数组。它是在程序的执行过程中根据需要有数据存储就向系统要求申请存储空间,决不构成对存储区的浪费。 链表是一种复杂的数据结构,其数据之间的相互关系使链表分成三种:单链表、循环链表、双向链表,下面只介绍单向链表。 7.4.1 单链表 图7 - 3是单链表的结构。 单链表有一个头节点h e a d,指向链表在内存的首地址。链表中的每一个节点的数据类型为结构体类型,节点有两个成员:整型成员(实际需要保存的数据)和指向下一个结构体类型节点的指针即下一个节点的地址(事实上,此单链表是用于存放整型数据的动态数组)。链表按此结构对各节点的访问需从链表的头找起,后续节点的地址由当前节点给出。无论在表中访问那一个节点,都需要从链表的头开始,顺序向后查找。链表的尾节点由于无后续节点,其指针域为空,写作为N U L L。 图7 - 3还给出这样一层含义,链表中的各节点在内存的存储地址不是连续的,其各节点的地址是在需要时向系统申请分配的,系统根据内存的当前情况,既可以连续分配地址,也可以跳跃式分配地址。 看一下链表节点的数据结构定义: struct node { int num; struct node *p; } ; 在链表节点的定义中,除一个整型的成员外,成员p是指向与节点类型完全相同的指针。 在链表节点的数据结构中,非常特殊的一点就是结构体内的指针域的数据类型使用了未定义成功的数据类型。这是在C中唯一规定可以先使用后定义的数据结构。 ?单链表的创建过程有以下几步: 1 ) 定义链表的数据结构。 2 ) 创建一个空表。 3 ) 利用m a l l o c ( )函数向系统申请分配一个节点。

C语言课程设计万年历 完整版

目录 一引言 (2) 二系统功能和数据说明 (3) 一)功能简介 (3) 二)程序中的数据说明 (3) 三程序总体设计及流程图 (4) 一)应用到的c语言 (4) 二)程序的总框架 (5) 四功能模块设计及调试 (5) 一)算法说明 (5) 1.总天数的算法 (5) 2.计算输入日期是星期几 (6) 3.对输入信息的汇总 (8) 4..界面的控制 (10) 二)调试结果 (11) 五程序清单 (12) 六结束语 (17)

一引言 通过大一上学期对C语言的学习,了解到了很多C语言的相关知识。学习的过程有很多困惑但是当自己能够独立的看懂,能过独立的完成一个简单的程序时,心中就会收获无限的喜悦和成就感。我可以里哟哦那个它看懂一些简单的程序,编写一些简单的计算程序,更多的是学会了一种思想——编程,它让我在去思考很多日常生活中的事物是怎么样通过一个个小小的函数实现功能的,激发我对探究的兴趣。 C语言是近年在国内外得到迅速推广应用的一种语言。C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。因此,C语言特别适合于编写各种软件。 在这次的课程设计中我将把日常生活中最经常接触的——日期的查询利用C语言的程序编成一个简单的日历。通过这个小小的日历可以实现很多功能。在程序中你能看到很多熟悉的C语言关键字,同时也加入了很多自己课外了解到的一些关键字。在不断的调试中最终才获得最为完整的程序。接下来就是我的C 语言课程设计的具体内容来了

二系统功能和数据说明 (一)功能简介 在我们的日常生活中能接触到很多不同类型的日历,在日历上我们通常希望它能简介明了的给我们最想要的日期信息。在我的万年历当中,就是将日历,月历做的简单明了,很方便我们的使用。下面是它要实现的一些基本功能:用C语言编写万年历 1、输入年份,判断是否为闰年 2、输入年月日,判断改日为星期几 3、输入年份,打出12个月历,输入月份,打出该月的日历 4、要求用多个函数实现 [名称]万年历 [修改]1、对输入的日期进行容错处理 2、增加和修改为英文的月份和星期显示 3、采用指针形式的weeks和month数组 (二)程序中的数据说明 ①int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 这是定义的关于每个月天数的数组,根据大小月以及二月分的特殊情况将每个月的天数最为数组中的元素存入数组当中。其中days[1]=28,是将闰年二月的天数28天作为初始元素存入。在经过theWeek函数后就可以给days[1]中存入正确的月天数。 ②char *weeks[7] ={"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; char *months[12] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November",

教师信息管理系统(C语言课程设计)

课程设计任务书 计算机科学与技术专业年级班 一、设计题目 教师信息管理系统设计 二、主要容 教师信息包括教师号、、性别、年龄、学历、职称、工资、住址、等(教师号不重复)。试设计一教师信息管理系统,使之能提供以下功能: (1)系统以菜单方式工作 (2)教师信息录入功能--输入 (3)教师信息删除功能 (4)教师信息浏览功能--输出 (5)查询和排序功能:(至少一种查询方式) --算法 按教师号查询 按职称查询等 三、具体要求 围绕课程设计的目的和意义,基本要求如下: 1、认真阅读《C语言课程设计》指导书,明确课程设计的目的、意义和要求; 2、快速总结C程序设计语言的精髓,如:函数的概念、函数的设计和函数的调用;

3、快速熟悉Tuber C 或C++的上机环境。能熟练进行高级编辑操作(特别是字块操作);熟悉步进式、断点跟踪的程序调试方法,提高工作效率。 4、根据“课程设计题目”,采用结构化的程序设计思想,确定系统的总体设计方案、确"定时间进度。如果是多人共一题,则要首先完成小组的人员分工及安排,不允许重题现象。 5.学习并了解良好的程序设计风格。按质、按量、并按时间完成课程设计的任务。 6.提供可运行的课程设计系统,参加上机面试答辩。 本次课程设计的重点是:学会设计并编写函数,掌握好各函数之间的调用关系;利用文件操作函数,建立数据库并完成对数据库的各种操作;掌握几种典型算法的应用(如:冒泡法、选择排序法和折半查找法)。同时锻炼学生根据题目进行分析、设计、编码、调试程序和书写必要文档的综合处理能力,从实践中学习并体会程序设计的结构化思想和设计方法。 四、进度安排 依照教学计划,课程设计时间为3周。按照软件工程的思想,软件系统的分析设计至关重要,并要充分重视书写“文档”。避免甚至杜绝“拿到题目就编码”的现象。建议将时间分为三个阶段: 第一阶段,根据题目要求,拿出系统的总体设计方案:即构思各程序模块的算法,并画出相应的N-S图,同时编写相应的文档; 第二阶段,根据N-S图编写程序代码并单独调试,再将调试通过的各个子模块进行集成调试; 第三阶段,归纳文档资料,按要求填写在《课程设计说明书》上,并参加答辩。

C语言课程设计报告——贪吃蛇源程序

C 语言课程设计(小游戏贪吃蛇的程序设计报告) 设计人: 班级: 201 年月号

目录一:概述 1:研究背景及意义 2:设计的任务与需要知识点3:具体完成设计内容 二:需求分析 1:功能需求 2:操作方法 三:总体设计 1:模块划分 2:数据结构设计 四:详细设计 1:主空摸块设计 2:绘制游戏界面 3:游戏的具体过程 4:游戏的结束处理 5:显示排行榜信息模块 五:程序的调试与测试1:动画与音乐同步 2:蛇的运行 3:终止程序 六:结论 七::结束语 八:程序清单 九:参考文献

一. 概述 本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C语言技术为基础,使用Turbo C++3、0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统的实现与测试。 1、1 研究的背景及意义 随着社会的发展,人们生活的节奏日益加快,越来越多的人加入了全球化的世界。人们不再拘泥与一小块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成为了人们的需要。此次课程设计完成的贪吃蛇小游戏,正就是为了满足上述需求而设计出来的。贪吃蛇游戏虽小,却设计诸多的知识点。通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程的与那个发,技术与工具开发软件的过程,进一步掌握结构化,模块化的程序设计方法与步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构的使用方法,掌握图形,声音,随机数等多种库函数的使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习与将来实际软件开发打下坚实的基础。 1、2 设计的任务与需要的知识点 1、2、1 课程设计主要完成的任务 1)、通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计的思想,培养解决实际问题的能力。 2) 有同步播放动画,声音效果。 3) 设计好数组元素与蛇,食物的对应关系。 4) 随机产生食物。 5) 有分数统计,排行榜,分数存储等功能。 通过此次课程设计,希望使读者能更深入的理解与掌握课程教学中的基本概念,培养读者应用基本技术解决实际问题的能力,从而进一步提高分析问题与解决问题的能力。 1、2、2需要掌握与运用的知识点 1、2、3本次课程设计需要掌握与运用如下的知识点: 1) 数组的应用。 2) 全局变量的使用。 3) 按键处理。 4)结构体的应用。 5)图形,音乐与动画的有关知识。 6)随即函数的使用。 7)文件的基本出操作。 8) 结构化,模块化的设计方法。

c语言课程设计报告--万年历,最详细

C语言课程设计报告 -----万年历 设计人:贾伟涛 学号:12 班级:13电信应电班 指导老师:张伟 日期:2014年6月9日

内容提要 通过大一下学期对C语言的学习,了解到了很多C语言的相关知识。学习的过程虽然有很多困惑,但是当自己能够独立的看懂和独立的完成一个简单的程序时,心中就会收获无限的喜悦和成就感。我虽然可以看懂一些简单的程序,编写一些简单的计算程序,更多的是学会了一种思想——编程,它让我在去思考很多日常生活中的事物是怎么样通过一个个小小的函数实现功能的,激发我对c语言的兴趣。 C语言是近年在国内外得到迅速推广应用的一种机器语言。C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。因此,C语言特别适合于编写各种软件。 在这次的课程设计中我将把日常生活中最经常接触的——日历的查询,利用C 语言的程序编成一个简单的万年历查询系统。通过这个小小的系统可以实现很多功能。在程序中你能看到很多熟悉的C语言关键字,同时也加入了很多自己课外了解到的一些关键字。在不断的调试中最终才获得最为完整的程序。接下来就是我的C语言课程设计的具体内容来了,大家拭目以待吧!

目录 系统功能和数据说明----------------------- 问题分析--------------------------------- 程序总体设计及功能结构框图---------------程序流程图------------------------------- 源程序代码------------------------------- 六、使用说明--------------------------------- 七、个人心得--------------------------------- 八、参考文献---------------------------------

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; 总体设计:系统设计为信息输入模块、比赛结果录入模块和查询模块三个模块。总

万年历C语言课程设计(内附程序)

石家庄铁道大学课程设计 C语言课程设计 万年历 单位电气与电子工程学院(系) 班级 学号 学生姓名 指导教师 完成日期 2013 年7 月 8日

摘要 本课程设计报告介绍的是C语言实习中的万年历项目。该报告共分五章,第一章介绍选题意义,也就是我选择万年历作为课题项目的理由。第二章是系统的分析,包括系统概述,系统的构成,其中包括各个模块功能的分析介绍,该章节的最后介绍了各部分的功能,即组成程序的各个函数的功能介绍。第三章是系统的实现,即为各个功能的实现而服务的十个自定义函数的流程图,通过这十个流程图,您可以快速地明白程序功能的实现过程。第四章是总结,即本人在设计万年历程序过程中的心得,以及在整个程序设计过程中我的工作过程,也体现了我的设计思路。第五章是参考文献,在这里我主要查阅了《C程序设计(第三版)》中的C函数附表,另外有几处欠缺的知识,我借鉴了另一本书上的相关部分。第六章,也是最后一章,我把整个程序的源代码及其注释附上。由于本人水平所限,程序也不可能很完美,必定有一些漏洞和拖沓,还请谅解。好了,从这里开始,我将与你们分享我我在整个万年历程序设计中的所做所想。

目录 1.选题的意义 (4) 2.系统的分析 (5) 2.1系统概述 (5) 2.2系统的构成 (5) 2.3各模块的功能 (5) 2.4系统的运行环境 (5) 3.系统实现 (6) 4.总结 (11) 5.参考文献 (12) 6.附录(程序源代码) (13)

第一章 选题的意义 (1)通过万年历的设计,使我们掌握软件开发过程的问题分析、系统设计、程序编写、测试等基本方法和技能。 (2)通过万年历的设计,熟练掌握C语言中的分支、循环、数组、函数、文件操作等的综合运用。 (3)通过万年历的设计,可以培养独立思考、综合运用所学有关相应知识的能力,更好地巩固《C程序设计》课程中的所学内容。 (4)通过万年历的设计,可以强化自己的动手编程能力,更加深刻地感受C语言的优点。 (5)万年历与我们的生活联系密切,通过万年历的设计,我们可以感受知识与实践相结合的乐趣。

C语言课程设计任务书

信息科学与工程学院综合设计报告书课程名称:C语言课程设计 班级: 学号: 姓名: 指导教师:

目录 ( 一) 需求分析..................................... . 2-3 1.设计题目; 2.用户操作流程; 3.数据处理流程; (二)概要设计......................................4-5 1.系统总体设计框架; 2.系统功能模块图; (三)详细设计.....................................5-11 1.主要功能模块的算法设计思路; 2.工作流程图; (四)主要源程序代码...............................12-21 1.完整源程序清单及关键注释; (五)调试分析过程描述.............................21-24 1.测试数据、测试输出结果; 2.对程序调试过程中存在问题的思考; (六)课程设计小结.................................24-25 1.包括课程设计过程中的学习体会与收获; 2.对C语言和本课程设计的认识以及自己的建议等内容。

一、需求分析 1、设计题目: 编程实现以下功能: (1)分别输入一元多项式pn (x)和Q n (x)。 从键盘输入一元多项式中各项的系数和指数,并用单链表 加以表示。 (2)分别对一元多项式pn (x)和Q n (x)进行升幂排序。 将一元多项式中各子项按照指数从小到大的顺序排序。 (3)分别输出一元多项式pn (x)和Q n (x)。 将用单链表表示的一元多项式输出,即打印多项式的系数 和指数。 (4)任意输入一个实数x0,分别求出一元多项式pn (x0)和Q n (x0)的值。 (5)已知有两个一元多项式分别为Pn (x)和Qn (x),求出两个多项式的和 R n (x)和差T n (x),分别用单链表表示R n (x) 和T n (x), 并将二者输出, (R n (x)=P n (x)+Q n (x),T n (x)=P n (x)-Q n (x)) 2、用户操作流程: (1)进入欢迎及界面。

C语言课程设计俄罗斯方块源代码

1、新建“.h”头文件,将“头文件” 代码粘贴至其中, 2、新建“.c”源文件,将“源代码” 代码粘贴到其中。 3、新建空白工程,将头文件和源代码 添加进去,调试使用。 //头文件 //1.自定义枚举类型,定义7种形态的游戏方块 typedef enum tetris_shape { ZShape=0, SShape, LineShape, TShape, SquareShape, LShape, MirroredLShape }shape; //2.函数声明 //(1)操作方块函数 int maxX();//取得当前方块的最大x坐标 int minX();//取得当前方块的最小x坐标 void turn_left();//当前方块逆时针旋转90度 void turn_right(); int out_of_table(); void transform(); int leftable(); int rightable(); int downable(); void move_left(); void move_right(); //(2)操作游戏桌面的函数 int add_to_table();

void remove_full(); //(3)控制游戏函数 void new_game(); void run_game(); void next_shape(); int random(int seed); //(4)绘图函数 void paint(); void draw_table(); //(5)其他功能函数 void key_down(WPARAM wParam); void resize(); void initialize(); void finalize(); //(6)回调函数,用来处理Windows消息 LRESULT CALLBACK WndProc (HWND,UINT,WPARAM,LPARAM); //源代码 //1.文件包含 #include #include #include #include"tetris.h" //2.常量定义 #define APP_NAME "TETRIS" #define APP_TITLE "Tetris Game" #define GAMEOVER "GAME OVER" #define SHAPE_COUNT 7 #define BLOCK_COUNT 4 #define MAX_SPEED 5 #define COLUMS 10 #define ROWS 20 #define RED RGB(255,0,0)

C语言程序设计 万年历程序

#include"stdio.h" int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31}; int judge(int year,int month) { if(month==1||month==3||month==5||month==7||month==8||month==10||month ==12) return(1); else if(month==2) { if(year%4!=0||year%100==0&&year%400!=0) return(2); else return(3); } else return(4); } void show2() { int year,i,j,a,n,m,k; char ** p; char * week[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"}; char*month[]={"January","February","March","April","May","June","July","Augu st","September","October","November","December"}; printf("please inter the year:"); scanf("%d",&year); printf("\n"); printf("the calendar of the year%d.",year); printf("\n"); a=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7; for(i=0;i<12;i++) { n=judge(year,i+1); p=month+i; printf("%s\n",*p); printf("\n"); for(j=0;j<7;j++) {p=week+j; printf("%6s",*p);}

c语言课程设计报告学生成绩信息管理系统源代码

实验报告 一、问题陈述及其需求分析 (一)问题陈述 学生信息管理系统是对学生信息的基本管理,其中包括以下及模块: (1)增加一个学生的信息(需输入要增加学生的所有信息); (2)统计本班学生总人数及男女生人数。 (3)分别按照学号查找学生的信息;若找到则输出该学生全部信息,否则输出查找不到的提示信息。 (4)按学号对所有学生信息排序,并输出结果; (5)删除一个学生的信息(需指定要删除学生的学号);同时显示删除后的结果。( 二) 功能需求分析 学生信息管理系统设计 学生信息包括:学号,姓名,性别,出生年月,电话 使之提供以下功能: 1、系统以菜单方式工作 2、建立链表并显示 3、插入新的学生信息 4、删除某学号的学生信息 5、查找某学号的学生信息 6、对学生信息排序 7、统计学生人数 8、输出学生信息 二总体设计 (一)模块 依据程序的数据结构,描述该程序的层次结构,如下图:

1、建立链表并显示 void createlist(struct stucode **r); 2、插入新的学生信息 void insert(struct stucode **r); 3、删除某学号的学生信息 void del(struct stucode **r); 4、查找某学号的学生信息 void search1(struct stucode *r); 5、对学生信息排序 void sort(struct stucode **r); 6、统计学生人数 void search2(struct stucode *r); 7、输出学生信息 void out(struct stucode *r); 1 建立链表并显示 2 添加学生信息 3 删除学生信息 息 4 按学号查找学生信 5 对学生信息排序 6统计学生人数 7输出学员信息 8 学生信息写入文件 0退出 main() 菜单函数

数据结构(C语言)单链表的基本操作

实验名称:实验一单链表的基本操作 实验目的 熟练掌握线性表两类存储结构的描述方法。 实验内容 从键盘读入若干个整数,建一个整数单链表,并完成下列操作: (1)打印该链表; (2)在链表中插入一个结点,结点的数据域从键盘读入,打印该链表; (3)在链表中删除一个结点,被删结点的位置从键盘读入,打印该链表; (4)在链表中做查找:从键盘读入要查找的整数,将该整数在链表中的位置打印出来,若要查找的整数不在链表中,返回一个信息。 算法设计分析 (一)数据结构的定义 单链表存储结构定义为: struct Node; typedef struct Node * pnode; struct Node { int info; pnode link; }; typedef struct Node * LinkList; (二)总体设计 程序由主函数、创建单链表函数、链表长度函数、链表打印函数、插入正整数函数、删除函数、查询函数组成。其功能描述如下: (1)主函数:调用各个函数以实现相应功能 int main(void) //主函数 { printf("单链表的基本操作实验:\n"); struct list *pnode; pnode = creat(); //创建 print(pnode); //输出 insert(pnode); //插入 print(pnode); //输出 _delete(pnode); //删除 print(pnode); //输出 _located(pnode); //查找 print(pnode); //输出 return 0 ; } (三)各函数的详细设计: Function1: struct list *creat()//创建链表;

C语言课程设计任务书

C语言课程设计任务书1 题目:学院教学信息管理系统 功能:学院教学信息管理系统,每一条记录包括一位教师的职工号、姓名、职称、性别、3门课程,教学效果综合评分。系统要求实现以下功能: 1、输入:输入每一位教师记录,将其信息写入文件中。 2、显示:显示每位教师记录。 3、排序:按职工号或教学效果综合评分进行排序,并显示。 4、查找:完成按姓名或课程查找教师的相关记录,并显示。 分步实施: 1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。 2、建立一个文件,将每位教师的相关(教学)信息写入文件中并能显示于屏幕上。 3、完成排序(按职工号、姓名、职称等)、查找等功能。 要求:1、用C语言实现程序设计; 2、利用结构体数组实现教师信息的数据结构设计; 3、系统的各个功能模块要求用函数实现; 4、界面友好(良好的人机交互),程序加必要的注释。 课程设计实验报告要求: 1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。 2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、 小结等。 C语言课程设计任务书2 题目:酒店房间登记与计费管理系统 功能:1、屏幕上出现一个界面,让操作员能够方便的选择所需要进行的操作,包括登记入住、查询房间的入住情况、查询当前费用、结账退房等操作。 2、对不同标准的房间实施不同的收费标准,也可以按天收费或按小时收费,可根据顾客需要 在登记的入住的时候进行选择。 3、在结账退房时,根据入住的时间,计费方式和房间单价计算出总费用。 分步实施: 1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数; 2、完成最低要求:建立房间列表,完成登记入住、查询房间入住情况功能。 3、进一步要求:完成计费和费用查询功能。 要求:1、用C语言实现系统; 2、系统的各个功能模块要求用函数实现; 3、界面友好(良好的人机交互),程序加必要的注释。 课程设计实验报告要求: 1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。 2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、 小结等。

相关文档
最新文档