文档库 最新最全的文档下载
当前位置:文档库 › C++课程设计

C++课程设计

C++课程设计
C++课程设计

课程设计(论文)课程名称

程序设计实践

题目学生成绩管理系统设计与

实现

院(系)

理学院

专业班级

应数1401

姓名

张丹莉

学号

141003131

指导教师

鲁萍白燕

2017年 1 月 12 日

学生成绩管理系统的设计与实现

摘要

学生成绩管理系统是典型的信息管理系统,是学校教务管理的重要组成部分,其处理信息量很大。

本课程设计是用C++实现对学生的成绩管理作一个简单的模拟,实质是建立学生成绩单链表,每条记录由学号、姓名与成绩组成,即链表中每个结点由4个域组成,分别为:学号、姓名、成绩存放下一个结点地址的next域。用菜单选择操作方式完成6项功能分别写成六个函数,创建学生成绩对应建立学生单链表的功能,对全部学生成绩的排序,最后保存在文件中,另外四个功能分别对应单链表的显示、查询、修改与删除四大基本操作。该系统中的数据采用线性表中的链式存储结构即单链表来存储,用类类型定义每个学生记录并采用外部文件方式记录数据简便数据的读取与保存。

通过对学生成绩管理系统的制作,能够让使用者迅速地对学生的成绩做各项处理和显示,最终的到想要的信息,方便且易于操作。

关键词学生成绩管理系统, C++,链表,文件

目录

1 总体介绍课程设计内容 (1)

1.1 课设内容总体介绍 (1)

1.1.1设计内容 (1)

1.1.2课程设计的要求 (1)

1.2 个人完成部分 (2)

2 主要算法与原理 (3)

2.1 链表 (3)

2.1.1 链表的介绍 (3)

2.1.2 链表的创建与输出 (3)

2.1.3链表结点的访问 (4)

2.1.4链表结点的插入 (4)

2.1.5链表结点的删除 (4)

2.2 文件的使用 (4)

2.2.1.打开文件 (4)

2.2.2关闭文件 (5)

2.2.3文本文件的读写 (5)

3 学生成绩管理系统的设计与实现 (6)

3.1 学生类成员及函数 (6)

3.2 学生信息类成员及函数 (6)

3.3 主要函数说明 (7)

3.4 学生成绩管理系统的总结构图 (7)

3.5 模块的流程图 (7)

3.6 难点及难点的解决 (8)

4 结果分析及改进 (9)

5 小结和心得 (13)

6 参考文献 (14)

附录 (15)

1 总体介绍课程设计内容

1.1 课设内容总体介绍

1.1.1设计内容

制作学生成绩管理系统,实现数据录入、数据删除、数据浏览以及数据查询等功能。

1.1.2课程设计的要求

包括系统设计要求,开发环境要求,技术文档要求三部分。

(1)系统设计要求:

(a)学生成绩管理系统中不同使用单位(用户)的学生人数事先无法确定。

(b) 该学生成绩管理系统要求有学生成绩录入,查询,修改,删除,排序。

(c) 系统使用文字菜单,用户通过选择菜单项的编号,实现系统对子模块的调用。

(d) 每个班级每门课程的成绩可以从学生的成绩总表提取出子表并存储成一个文本文件。该文本文件名由班级号和课程名拼音字符串构成。输入班级号和课程名字符串后自动生成文件名。

(e) 每个学生学习的课程有数学,英语,C++。

(f) 学生的成绩总表结构约定为(学号,姓名,课程名,总评成绩).总评成绩等于各科成绩之和。

(g)学号是一个9位整数构成的字符串, 学号的编码规则:入学年份+在读年级+在读班级+班内编号;入学年份用4位整数构成字符串,如2014年入学则表示为:”2014”;在读年级用1位整数构成字符串,如正在1年级读书则表示为:”1”;在读班级用2位整数构成字符串,如正在1班读书则表示为:”01”;班内编号用2位整数构成字符串,如在班内编号为23号则表示为:”23”。

(2)开发环境要求

软件环境:windows XP/windows 7,Visual C++

硬件环境:计算机(Pen4 CPU, 512MRAM,60G以上硬盘,输入输出设备)

第1 页共28 页

(3)技术文档要求:

按软件工程技术文档要求。要求流程图绘制规范,模块功能描述清晰

1.2 个人完成部分

第一阶段:学习链表相关知识来动态分配存储空间,并作出链表的程序及学习文件在C++中的应用;

第二阶段:录入学生成绩、显示学生成绩、查询学生成绩并画出相关流程图,并与队友共同把所有的程序进行整理并调试成功;

第三阶段:独立完成论文的书写。

第2 页共28 页

第 3 页 共 28 页

2 主要算法与原理

2.1 链表

2.1.1 链表的介绍

数组式计算机根据事先定义好的数组类型与长度自动为其分配一连续的存储单元,相同数组的位置和距离都是固定的,也就是说,任何一个数组元素的地址都可一个简单的公式计算出来,因此这种结构可以有效的对数组元素进行随机访问。但若对数组元素进行插入和删除操作,则会引起大量数据的移动,从而使简单的数据处理变得非常复杂,低效。链表是一种动态数据结构,用一组任意的存储单元(可以是连续的,也可以是不连续的)存放数据元素。 链表中每一个元素成为“结点”,每一个结点都是由数据域和指针域组成的,每个结点中的指针域指向下一个结点。Head 是“头指针”,表示链表的开始,用来指向第一个结点,而最后一个指针的指针域为NULL(空地址),表示链表的结束。可以看出链表结构必须利用指针才能实现,即一个结点中必须包含一个指针变量,用来存放下一个结点的地址。实际上,链表中的每个结点可以用若干个数据和若干个指针。结点中只有一个指针的链表称为单链表,这是最简单的链表结构。 2.1.2 链表的创建与输出

图1 动态链表创建 图 2 链表输出

开辟一个新节点,并使p1,p2指向所建立的对象 读入一个学生的数据给p1所指的结点 head=NULL

当读入的p1_>num

n=n+1

head=p1(把p1所

指的结点

p2->next=p1(把p1所指的结点连接到 表尾

再开辟一个新结点,使p1指向它 读入一个学生数据给p1所指的结点 表尾结点的指针变量置NULL

P=head,使p 指向第一个结点

p 指向的不

是尾结点

输出p 所指向的结点 P 指向下一个结点 当p 指向的不是表尾

2.1.3链表结点的访问

由于链表中的各个结点是由指针链接在一起的,其存储单元文笔是连续的,因此,对其中任意结点的地址无法向数组一样,用一个简单的公式计算出来,进行随机访问。只能从链表的头指针(即head)开始,用一个指针p先指向第一个结点,然后根据结点p找到下一个结点。以此类推,直至找到所要访问的结点或到最后一个结点(指针为空)为止。

2.1.4链表结点的插入

如果要在链表中的结点a之前插入结点b,则需要考虑下面几点情况。(1)插入前链表是一个空表,这时插入新结点b后。(2)若a是链表的第一个结点,则插入后,结点b为第一个结点。(3)若链表中存在a,且不是第一个结点,则首先要找出a的上一个结点a_k,然后使a_k的指针域指向b,在令b的指针域指向a,即可完成插入。(4)如链表中不存在a,则插在最后。先找到链表的最后一个结点a_n,然后使a_n的指针域指向结点b,而b指针的指针为空。

2.1.5链表结点的删除

如果要在链表中删除结点a并释放被删除的结点所占的存储空间,则需要考虑下列几种情况。(1)若要删除的结点a是第一个结点,则把head指向a的下一个结点。(2)若要删除的结点a存在于链表中,但不是第一个结点,则应使a得上一个结点a_k-1的指针域指向的下一个结点a_k+1。(3)空表或要删除的结点a 不存在,则不做任何改变。

2.2 文件的使用

2.2.1.打开文件

在ofstream类中,成员函数open()实现打开文件的操作,从而将数据流和文件进行关联,通过ofstream,ifstream,fstream对象进行对文件的读写操作函数:open()

参数: filename 操作文件名

mode 打开文件的方式

prot 打开文件的属性

第4 页共28 页

2.2.2关闭文件

当文件读写操作完成之后,我们必须将文件关闭以使文件重新变为可访问的。成员函数close(),它负责将缓存中的数据排放出来并关闭文件。这个函数一旦被调用,原先的流对象就可以被用来打开其它的文件了,这个文件也就可以重新被其它的进程所访问了。为防止流对象被销毁时还联系着打开的文件,析构函数将会自动调用关闭函数close()。

2.2.3文本文件的读写

Read成员函数从一个文件读字节到一个指定的存储器区域,由长度参数确定要读的字节数。如果给出长度参数,当遇到文件结束或者在文本模式文件中遇到文件结束标记字符时结束。

第5 页共28 页

3 学生成绩管理系统的设计与实现

3.1 学生类成员及函数

表一学生类

成员(函数)类型含义

Name[20] char 姓名

ID[20] char 学号(九位)Subject[3] int 科目

sum int 总成绩

Input()void 输入函数

ReadFile(istream & in) void 读入文件函数

Show void 显示函数

3.2 学生信息类成员及函数

表二学生信息类

函数(成员)类型含义

* Head,* End; ; Student 用于链表的开始和结束

Studentmassage() 构造函数

~Studentmassage() 析构函数

ShowMenu() void 菜单函数

AddItem() void 创建信息函数

Sort() void 排序函数

Display() void 显示信息函数

RemoveItem() void 删除信息函数

ModifyItem() void 修改信息函数

ListCount() int 记录当前链表数目Swap(Student *,Student *) void 删除结点

save () void 保存函数

第6 页共28 页

第 7 页 共 28 页

3.3 主要函数说明

首先在创建菜单时,应包括创建学生成绩录入,显示,查询,修改,删除,排序这六个功能,然后通过调用创建信息函数完成学生成绩的录入,显示函数实现学生信息的全部显示,通过修改可以改变输入错的信息,针对有的学生如果转学什么的可以对其信息进行删除,利用姓名来调用查询函数能够得到所想要的学生信息;最后,通过调用排序函数后在,可以在所见的文件夹里打开所有录入的学生信息及最终排序结果。

3.4 学生成绩管理系统的总结构图

通过总结构图能够直观地看出所制作的成绩管理系统的各项功能,总结构图如下图3.

主菜单

成绩排序

查询学生成绩

显示学生成绩

删除学生成绩

创建学生成绩

修改学生成绩

图3 学生成绩管理系统的总结构

3.5 模块的流程图

根据系统提示,选择1创建学生信息,根据系统提示可以一次输入姓名,学号,成绩,如果要对成绩显示则继续选择2,可以对成绩显示,当创建的信息大于等于2时可以继续选择3,进行排序,最终的结果可以在当前所建的记事本里显示各项成绩及排序,要对信息查询选择4来查询你想要的信息,也可以对信息修改等,最终可以选择0安全退出系统。

进入系统根据系统提示来选择想要进行的操作,从而完成各项的功能,利用

第 8 页 共 28 页

信息查询也可以来判断所操作的删除是否删除成功的测试,查询流程如下,图4.

开始

选择4 查询成绩

判定该信息是否存在

在选择1,并输入学生

姓名

直接显示该学生的信息

显示无该学生

信息

结束

图4 信息查询流程图 3.6 难点及难点的解决

难点:通过构造两个类来实现各种功能,使用链表来对各项功能的实现及使用文件来保存所得到的成绩排序结果的连接中相对较难。

解决:通过自己认真学习课本所学过的链表及文件相关的知识,并通过上网查找类似的链表和文件在C++中的应用来完成。

第 9 页 共 28 页

4 结果分析及改进

首先进入系统界面后,会有时间,日期的显示,并提示密码的输入,如下图

5.

图5 首界面

根据界面提示进入菜单界面,可以对想要的操作进行选择,如图

6.

图6 菜单界面

选择1,创建学生信息,创建学生的姓名、学号,各科成绩,最后会显示添加

成功,结果如下图7.

第 10 页 共 28 页

图7 创建学生信息

根据刚才创建更多的学生信息后,选择3,可以显示创建的所有学生的信息,如图

8.

图8 显示学生信息

根据刚才创建的所有信息可以进行查询自己所想要的学生信息,如下图

9.

图9 查询学生信息

第 11 页 共 28 页

如果有的同学转学或其他什么的,该信息已经无意义,可以对该信息进行删除,如图9

.

图10 删除学生信息

如果第一次创建信息过程中出现错误或输入的姓名与学号不对应,则可以通

过修改学生的信息,如图

10.

图11 修改信息

最后完成所有输入的成绩排序,得到最终的结果显示,如图

11.

图12 排序结果

第 12 页 共 28 页

所有的操作完成后,选择0,可以安全退出系统。如下图

12.

图13 系统安全退出系统

5 小结和心得

对于我们所选的学生成绩管理系统的设计与实现,我是根据我们所做的ssrt 的项目有启发而做的,经过查阅资料发现利用文件和链表来实现,所以自己又把我们学过的链表和文件进行学习,查阅相关的实例练习链表的应用,但刚开始我们想的比较简单是依据C语言而实现的,到后来经老师的点拨,发现我们做的应该是基于C++ 的程序,虽然仅剩一天半左右的时间,我和队友能够更根据自己前期准备的基础上,进一步查阅资料并对自己原有的程序进行修改,最终的以完成。

通过这次C++的课程设计的学习,让我体会到我们所学的C++课程的实用性,以前我认为计算机方面的课程仅仅是我所要必修的,没有什么的实际价值,但是经过这次课程设计,看到同学们所做的小游戏后,我发现其实我们所学的都是非常有用的,只是在以前我们缺乏思考和锻炼,仅仅把游戏当作一种娱乐,并没有发现用我们所学的知识也是可以制作的,所以启发我们以后需要多思考,多进行实际操作。

利用这次训练,我发现自己能够掌握更多的知识,通过两个人的合作,能够相互取长补短,对我后期的学习也有很大的帮助,让我不再对计算机课程感到头疼,同时也增加了我对编程的兴趣与爱好,希望以后的学习、生活中,我能够和做这次课程设计一样,勤于动手,动脑,努力来弥补不足之处。

第13 页共28 页

6 参考文献

[1] 谭浩强.C++程序设计[M].北京.清华大学出版社,2004.6.

[2] 谭浩强.C++程序设计解题与上机指导[M].北京.清华大学出版社.2005.3.

[3] 钱新贤,杨猛,程兆炜,张少东.Visual C++编程疑难详解[M].北京.人民邮电出版社,2000.5

[4]https://www.wendangku.net/doc/4114298077.html,/link?url=H3Fwag-V9gQ5Xp2l7eH-pfvTUjUciMMvcY1 4V

[5]https://www.wendangku.net/doc/4114298077.html,/kevin_zhai/article/details/50494020

第14 页共28 页

附录

#include

#include

#include

#include

#include//用getch();

using namespace std;

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

class Student

{

public:

char name[20];

char Id[20];

int Cnum; //C++课程得分

int Mnum; //数学课程得分

int Enum; //英语课程得分

int sum; //总分

Student * Next;

void Input()

{

cout<<"\t\t请输入学生的姓名:";

cin>>name;

cout<<"\t\t请输入学生的学号(九位):";

cin>>Id;

cout<<"\t\t请输入C++课程的期末成绩:";

cin>>Cnum;

cout<<"\t\t请输入数学课程的期末成绩:";

cin>>Mnum;

cout<<"\t\t请输入英语课程的成绩:";

cin>>Enum;

sum=Cnum+Mnum+Enum;

}

void ReadFile(istream & in)

{

in>>name>>Id>>Cnum>>Mnum>>Enum>>sum;

}

void Show()

{

cout<<" 姓名" <<"学号"<<" C++ " <<" 数学" <<" 英语"<<" 总成绩"<

cout<< name<<" "<

第15 页共28 页

"<

}

};

//﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

class Studentmassage

{

public:

Studentmassage();

~Studentmassage();

void ShowMenu();

void Find();

void Save();

void ModifyItem();

void RemoveItem();

void Swap(Student *,Student *);

void Sort(); //void Unpass();

int ListCount(); //void Average();

void Display()

{

for(Student * p=Head->Next;p!=End;p=p->Next)

p->Show();

cout<<"输入任意字符!继续……";

getch();

}

void AddItem()

{

End->Input();

End->Next=new Student;

End=End->Next;

cout<<"添加成功!"<

cout<<"输入任意字符!继续……";

getch();

}

private:

Student * Head,* End;

ifstream in;

ofstream out;

Student *FindItem(char * name)

{

for(Student * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空

if(!strcmp(p->Next->name,name))return p;

return NULL;

第16 页共28 页

C语言课程设计报告-游戏2048

东华理工大学C语言课程设计报告 学院:国际教育学院学院专业:电子信息工程 班级:1420606 学号:201420060638 姓名:钟天运

一、课程设计题目:游戏2048 二、课程设计要求: a)使用C语言编写2048这款游戏 b)能够正常运行,拥有游戏界面。 c)能正常进行游戏从开始到结束。 d)用户操作方便 三、设计思路: a)游戏介绍: i.2048是一款简单的数字类游戏,界面是一个 4*4的方形格子。每个格子里可以为空或者有 一个2^n的数值。 ii.用户可以输入4种指令,分别是:上下左右,游戏会根据用户的指定的方向,将格子中 的数值向对应方向进行移动,直至移动到最边 上的格子或者有其他数值占用,如果碰到等大 数值,将会进行合并。此外,成功移动后,会 在一个空格子随机生成一个2或者4 iii.游戏目标是合成2048这个数值或者更大的数值。 b)实现思路: i.可以使用二维数组来保存4*4格子中的数值 ii.指令,可以通过输入字符函数,读取用户

在键盘上的方向键,进行判断执行对应的代 码。 iii.游戏界面,可以使用简单的特殊制表符,来实现,并通过清屏函数来进行反复同位置打 印界面。 iv.需要判断游戏结束的函数,以及记录游戏分数和步骤的变量 v.当游戏结束时,能够询问用户是否重新开始。 vi.随机生成一个新数,可以调用随机函数,使用时间做种子。 c)实现难点: i.打印游戏界面,要实现灵活能根据棋盘数组里 面的数据灵活打印。 ii.执行操作时,数值的移动和合并。

四、流程图

五、C语言源代码 // 游戏2048.c #include "windows.h" #include "time.h" #include "stdio.h" #include "conio.h" #include "string.h" //宏定义常量方向键值 //const int LEFT = 75, UP = 72, RIGHT = 77, DOWN = 80; #define LEFT 75 #define UP 72 #define RIGHT 77 #define DOWN 80 const char error_str[] = "您上次输入的指令无法识别,请重新输入。"; struct board { int place[4][4]; long int stepn; long int num; //存储游戏分数 long int time; int dtk; //direction key 记录方向键,及操作方向 int over; int zeronum; }; //该函数为游戏运行函数,当只是玩游戏的时候。进入该函数,游戏控制函数。int main() { //place数组为棋盘,其中为零代表空,-1代表不能合并的牌,其他2的倍数值为本身含义,初始化为全0。 struct board board1, board_backup; int newgame(struct board *, int), show(struct board *), operate(struct board *); char str[100] = "首次运行游戏"; //用于记录系统返回给用户的信息,例如:上一步执行向左合并,按键有误等 newgame(&board1, 0); //调用函数为新局初始化,第二个

C语言课程设计总结

C语言课程设计总结 一、设计题目: 猜数字和贪吃蛇小游戏。 专业:09电气工程及其自动化 组号:第十组 组员:马邢(组长)、王维、毛亮、汪小成、魏坤波、陈维康、高裴石、石峰、葛良志、冯鑫源 指导教师:黄莉莉 二、任务分配: 我们组分为两队,一对制作贪吃蛇游戏,另一对制作猜数字游戏。制作贪吃蛇的人员是马邢,葛良志,高裴石,石峰,陈维康。石峰和高裴石负责收集程序材料,马邢和葛良志负责整理和编写程序,陈维康辅助我们工作。制作猜数字的是魏坤波,王维,毛亮,汪小成,冯鑫源。魏坤波和王维负责编写程序,其他三人收集材料并帮助他们人编写和调试程序。 三、心得体会: 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。 回顾起此次课程设计,至今让我我们仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,几个星期的日子里,可以学

到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,也懂得集体团队的重要性。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在黄老师的辛勤指导下,终于游逆而解。同时,在黄老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢

智能计算导论课程设计

西安电子科技大学 智能计算导论课程实验报告SAR图像变化检测

SAR图像变化检测 1 引言 遥感变化检测是指通过对不同时期同一区域的遥感图像进行比较分析,根 据图像之间的差异得到我们所需要的地物或目标的变化信息。现代遥感技术的飞速发展为变化检测提供了一种便捷的途径,遥感数据成为变化检测的主要数据源。 与可见光和红外遥感相比,微波遥感具有无可比拟的优点:微波能穿透云雾、雨雪,具有全天候、全天时的工作能力。二,微波对地物有一定穿透能力。三,采用侧视方式成像,覆盖面积大。正是这些优点,使得SAR 图像日益成为变化 检测的重要数据源。 SAR 变化检测技术的需求日益广泛。目前,全球坏境变化加剧,城市急速发展,洪水、地震等自然灾害时有发生,这些都需要及时掌握相关动态信息,为相关决策部门提供支持,而SAR 的种种优点为快速响应提供了技术支持和应急保障。 2 定义 变化检测是指通过分析同一地区不同时间的图像,检测出该地区的地物随时间发生变化的信息 SAR图像的变化检测是指利用多时相获取的同一地表区域的SAR图像来确定和分析地表变化,能提供地物的空间展布及其变化的定性与定量信息 3 常用方法

本报告所用算法流程图 4 实验结果

5 程序 %initial clc clear all close all

Ia=imread('2002.5.bmp');%read image Ib=imread('2005.4.bmp'); Iag=Ia(:,:,1);%rgb2gray Ibg=Ib(:,:,1); %midfilt Iam=medfilt2(Iag); Ibm=medfilt2(Ibg); %find difference ia_double = double(Iam)+1; %uint8todouble ia1 = ia_double/255; %unit ib_double = double(Ibm)+1; ib1 = ib_double/255; di_image=di(ia1,ib1); %构造模糊差异 di_image1=uint8(di_image.*256); di_image1=double(di_image1); %FCM bilateral_di_image=bilateral(di_image1,36,6); %双边滤波 bilateral_di_image1=uint8(bilateral_di_image); bilateral_di_image=double(bilateral_di_image1); fcm_image=fcm(bilateral_di_image); %聚类 [T]=mis(Re,fcm_image,N,L); k=T; disp(sprintf('12óD%d??????£??ó2??????a%d',N*L,k)); p=k/(N*L)*100 disp(sprintf('?ó2??ê?a%2.4f',p)) %display figure(1); subplot(2,3,1),imshow(Ia); title('原图a'); subplot(2,3,2),imshow(Iam); title('图a中值滤波图'); subplot(2,3,3),imshow(Ib); title('原图b'); subplot(2,3,4),imshow(Ibm); title('图b中值滤波图'); subplot(2,3,5),imshow(di_image); title('模糊差异图'); subplot(2,3,6),imshow(bilateral_di_image1); title('双边滤波图'); figure(2); imshow(fcm_image); title('聚类图'); function [img1] = bilateral(img,winsize,sigma) winsize = round( (winsize-1)/2 )*2 + 1;

C语言程序设计课程设计题目

1一元稀疏多项式的运算 问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理。 实现要求: ⑴输入并建立多项式; ⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……c n,e n,其中n 是多项式的项数,c i,e i分别为第i项的系数和指数。序列按指数降序排列; ⑶多项式A和B相加,建立多项式A+B,输出相加的多项式; ⑷多项式A和B相减,建立多项式A-B,输出相减的多项式; ⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 测试数据: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3)(x+x2+x3)+0 (4)(x+x3)-(-x-x-3) 2成绩排序 假设某年级有4个班,每班有45名同学。本学期有5门课程考试,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求: ⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩; ⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中; ⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进

行班内排序; ⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序; ⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 3迷宫问题 问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: ⑴实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 ⑵编写递归形式的算法,求得迷宫中所有可能的通路; ⑶以方阵形式输出迷宫及其通路。 [测试数据] 迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。 1 2 3 4 5 6 7 8 实现提示:

仓库管理系统C课程设计报告

《高级语言程序设计》 课程设计报告 设计题目图书管理系统 专业计算机科学与技术 班级 姓名 学号 2007 年6 月5日 目录 1.设计目的 (3) 2.设计思想 (3) 3.类及对象设计 (4) 4.程序源代码 (5) 5.调试记录 (16) 6.总结 (18) 仓库管理系统 1.设计目的 通过实习进一步掌握所学的基本知识,学会解决实际问题的方法 2设计题目 1、问题描述(功能要求):某公司现有以下设备:普通电视机、DVD、带DVD 的电视机,带DVD的电视机的售价为普通电视机和DVD单价之和的80%,要求对所有的库存设备都能按照品名进行显示、查找、增加和删除、保存的功能。

2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和方法); (4)完成类中各个成员函数的定义; (5)完成系统的应用模块; (6)功能调试; (7)完成系统总结报告以及系统使用说明书。 2.设计思想 (1)设计classadmin管理库,实现对仓库信息的描叙;class shelf柜台类库实现建立电器资料;class ele电器类,实现对电器的描述,电器的编号,货架号,名称,数量,价格等;class mana函数类,实现对电器的入库,查找,出库等。 (3)设计菜单来实现功能设计 1、输入商品 2、商品查找 3、查询入库 4、商品出库 5、退出系统 3.设计类及对象 (1)本程序定义了四个类,定义如下: classadmin { public: admin(); private:

c语言课程设计报告

C语言程序设计B 课程设计报告 设计题目:学生成绩管理系统年级班级: 学号: 姓名: 指导教师: 2020 年 6 月 18 日

目录 一、设计目的 (3) 二、课程设计内容和要求 (4) 三、总体设计 (5) 四、主要步骤 (12) 五、功能实现 (13) 六、功能测试 (64) 七、评价程序 (83) 八、课程设计体会 (84)

一、设计目的 程序设计能力是当代理工类大学生的必备能力,当学生学习了C语言之后,编程能力远远不能达到开发实际应用程序的要求,特备是对其中的指针、结构体、链表和文件部分的理解和应用都比较弱。 程序设计的目的是通过对面向过程的学习,将C语言的主要知识点进行综合,针对提高学生C语言程序设计能力,强化编写较大的应用软件能力,熟练运用已掌握的知识解决实际需要解决的问题,以达到更加熟知指针、链表、结构体、文件读取、标准库的使用。 主要目的为以下几点: 1、熟练掌握面向过程(结构化)程序设计基本知识; 2、综合运用所学知识解决实际问题; 3、受到面向过程(结构化)程序设计的基本训练; 4、体会面向过程(结构化)开发程序的过程。

二、课程设计内容和要求 1.课程设计内容: 学生通过使用C语言进行编写算法,开发学生成绩管理系统,以实现对学生成绩的管理。 2.课程设计要求 1)具有菜单,可以在菜单上进行选择; 2)能实现学生数据录入、修改、删除、查询; 3)能实现数据排序; 4)有数据输出功能; 5)有数据读取与存储功能; 6)一个学生的数据(称为:每条记录)包含姓名、学号、语文、数 学、英语、总分、名次等信息; 7)以结构方式存储每条记录; 8)多条记录以链表方式存储到内存; 9)随时可将全部数据存储到磁盘文件中,方便下次从磁盘读取数据。

人工智能课程设计doc资料

人工智能课程设计

人工智能<五子棋> 技术报告 简介 本课程设计是基于alpha-beta剪枝算法的五子棋的博弈游戏,具有悔棋,可选择禁手,支持人机对战,人人对战等功能。整个设计基于Java语言开发,界面美观大方。 alpha-beta剪枝技术的基本思想或算法是,边生成博弈树边计算评估各节点的倒推值,并且根据评估出的倒推值范围,及时停止扩展那些已无必要再扩展的子节点,即相当于剪去了博弈树上的一些分枝,从而节约了机器开销,提高了搜索效率。具体的剪枝方法如下: (1) 对于一个与节点MIN,若能估计出其倒推值的上确界β,并且这个β值不大于 MIN的父节点(一定是或节点)的估计倒推值的下确界α,即α≥β,则就不必再扩展该 MIN节点的其余子节点了(因为这些节点的估值对MIN父节点的倒推值已无任何影响了)。这一过程称为α剪枝。 (2) 对于一个或节点MAX,若能估计出其倒推值的下确界α,并且这个α值不小于 MAX的父节点(一定是与节点)的估计倒推值的上确界β,即α≥β,则就不必再扩展该MAX节点的其余子节点了(因为这些节点的估值对MAX父节点的倒推值已无任何影响了)。这一过程称为β剪枝。 1、数据结构定义 本文定义15*15的五子棋棋盘,实现算法,在算法中采用的数据结构包括:int isChessOn[][]描述当前棋盘,0表示黑子,1表示白字,2表示无子;int pre[][]记录棋点的x,y坐标。 由于本课程设计是基于Java语言开发的,在Java中只能用类表示并实现所定义的数据结构。所以下面将用类来描述相应的数据结构及算法:public class ChessPanel{ private ImageIcon map; //棋盘背景位图 private ImageIcon blackchess; //黑子位图 private ImageIcon whitechess; //白子位图 public int isChessOn [][]; //棋局 protected boolean win = false; // 是否已经分出胜负 protected int win_bw; // 胜利棋色 protected int deep = 3, weight = 7; // 搜索的深度以及广度 public int drawn_num = 110; // 和棋步数 int chess_num = 0; // 总落子数目 public int[][] pre = new int[drawn_num + 1][2]; // 记录下棋点的x,y坐标最多 (drawn_num + 1) 个 public int sbw = 0; //玩家棋色黑色0,白色1 public int bw = 0; // 当前应该下的棋色 0:黑色(默认), 1:白色 protected int x_max = 15, x_min = 0; // 边界值,用于速度优化

C语言程序设计课程设计报告

C语言程序设计课程设 计报告 内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)

《C语言程序设计》课程设计报告 (2013— 2014学年第 3 学期) 题目: C语言课程设计 专业:软件工程 班级:软件工程技术2班 姓名学号: 1 林燕萍 指导教师:吴芸 成绩: 计算机科学与技术系 2014 年6月23日

目录 一、课程设计的目的与要求 (1) 二、方案实现与调试 (3) 2.1 掷骰子游戏 (5) 2.2 射击游戏 (7) 2.3 计算存款本息之和 (8) 2.4肇事逃逸 (10) 2.5 礼炮 (12) 2.6 汽车加油 (14) 2.7 大优惠 (16) 2.8 金币 (19) 三、课程设计分析与总结 (23) 附录程序清单 (25) 一、课程设计的目的与要求(含设计指标) C语言是一种编程灵活,特色鲜明的程序设计语言。C语言除了基知识,如概念,方法和语法规则之外更重要的是进行实训,以提高学习者的动手和编程能力,从应试课程转变为实践工具。这是学习语言的最终目的。结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C 语言程序设计任务书》,以在实训过程中给学生提供帮助。达到如下目的: 1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能;

2.让学生扎实掌握C程序设计语言的相关知识; 3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。 编写程序要求遵循如下基本要求: ①模块化程序设计 ②锯齿型书写格式 ③必须上机调试通过 二、方案实现与调试 2.1掷骰子游戏 2.1.1 题目内容的描述 1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。 2) 将每人每次的分值累加计分 3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上。最后显示双方分数并判定优胜者。 2.1.2输入数据类型、格式和内容限制和输出数据的说明 数据类型:整型;内容限制:随机数的产生;输入数据结果:胜利的一方 2.1.3主要模块的算法描述

c语言课程设计体会

体会 通过这次C语言的课程设计,我明白了很多也知道了很多,更收获了很多。在课程设计的过程中出现过困难, 三周的课程设计已经结束了。回想学习C语言的过程中,既有快乐又有烦恼, 回顾这次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论和知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考能力。在设计的过程中遇到的问题,这毕竟独立做的,难免会遇到各种各样的问题,同时在设计的过程中发现自己的不足之处,对以前所学的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识从新温故。这次课设终于顺利完成了,在设计中遇到了很多编程问题 做完这个课程设计,我们的自信一下子提高了,我们也会写程序了;尽管对于有些人这种程序会很简单,可对于我们C语言初学者来说,已经很不容易了。这次体验为以后的学习计算机的我们增强了信心。享受劳动成果的滋味实在美妙啊! 很感谢这次的课程设计,它使我更加地体会到多看专业书的重要性,只有掌握了一定量的专业知识才能得心应手地解决诸多问题;另外,在做任何事倒要有耐心,不要一遇到困难就退缩;在学习和工作中要时刻谨记“团结”二字,它好比通向成功的铺路石,不可或缺。 人生的道路是曲折的,但正是因为曲折人生才光彩夺目,在人生的道路上,总遇到重重困难,但正是因为困难我们才变得更坚强。今后的路还很长,面对困难,让我们用行动去俘虏它吧!

C语言程序设计课程设计

《C语言程序设计》课程设计 1课程设计目的 C语言课程设计是在“C语言程序设计”课程后集中安排的1周相关的实践技能训练环节。它的目的是通过实践环节的训练,培养学生查阅资料的能力、分析与解决问题的能力、应用C语言开发与设计程序的能力。 2课程设计选题 2.1 题目1 必做题目,其余题目任选一题完成 题目1:年历显示。 功能要求: (1)输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。 (2)输入年月,输出该月的日历。 (3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。 题目2:小学生测验 面向小学1-2年级学生,随机选择两个整数和加减法形成算式要求学生解答。 功能要求: (1)电脑随机出10道题,每题10分,程序结束时显示学生得分; (2)确保算式没有超出1-2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0-50的范围,负数更是不允许的; (3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案; (4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分; (5)总成绩90以上显示“SMART”,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN” 题目3:学生学籍管理系统(可以2人合作完成) 用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。 功能要求: (1)系统以菜单方式工作。 (2)登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;修改已知学号的学生信息; (3)删除已知学号的学生信息; (4)查找已知学号的学生信息; (5)按学号,专业输出学生籍贯表。 (6)查询学生学籍变化,比如入学,转专业,退学,降级,休学,毕业。 题目4:通讯录程序设计 设计一个实用的小型通讯录程序,具有添加,查询和删除功能。由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。电话号码可由字符和数字组成。实现功能:(1)系统以菜单方式工作 (2)信息录入功能 (3)信息浏览功能

C+课程设计报告代码

C++课程设计报告 专业: 学号: 姓名: 同组人: 提交日期: 【设计目的】 1、通过设计一个较为简单的《商场库存货物管理系统》,进一步熟悉C++中类的概念、类的封装、继承的实现方式。 2、了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。【设计内容】 1、设计某公司的库存管理系统。此程序是为了更好的处理货物的详细信息。包括货物的货物的入库、出库、查询、统计。并且能够很好的让使用者了解库存货物的有关信息。 2、系统要求能够按编号显示、查找、增加、删除、和保存各类货物的信息。输入和输出货物的有关信息并且对输入保存文件里确定程序至少具备以下功能:查询模块、增加模块、删除模块、货物的有关信息数据存盘等的基本模块。 3、系统具有“货物的有关信息数据存盘”的功能,所以货物的有关信息数据可以保存到磁盘文件,那么也就意味着今后可以从磁盘文件读出货物的有关信息,可以方便用户使用,避免数据重复录入,考虑到系统实现简洁,货物数据文件采用文本文件,货物数据文件名:date.dat。 4、作为一个完整的系统,除了具有增加货物,删除货物的信息模块,还应该具有修改货物相关信息的功能,所以本系统具备了“商品入库”、“商品出库”、“查询统计”、“商品报损”、“退出系统”,这5个基本功能,就可以以最简捷的方式实现对货物的管理,也就实现了系统的要求。 5、下图中黑体字部分程序块为我完成的代码块

【实验环境】 1.硬件环境: (1)电脑型号戴尔 Inspiron 5557 笔记本电脑 (扫描时间:2017年01月11日) (2)操作系统Windows 10 Enterprise 64位 ( DirectX 12 ) (3)处理器英特尔 Core i7-6500U @ 2.50GHz 双核 (4)主板戴尔 03XTY7 ( 英特尔 PCI 标准主机 CPU 桥 - 100 Series 芯片组Family/eSPI Controller - 9D48 ) (5)内存8 GB ( 镁光 DDR3L 1600MHz ) (6)主硬盘三星 SSD 850 EVO 500GB ( 500 GB / 固态硬盘 ) (7)显卡Nvidia GeForce 930M ( 4 GB ) (8)显示器友达 AUO38ED ( 15.3 英寸 ) 2.软件环境:Windows 10 Enterprise 64位 ( DirectX 12 )、Visual Studio 2015 【设计中使用函数说明】 (1)char manage::first_face()//首页:该函数是该系统的首页。 (2)void manage::in_cangku()//入库函数:该函数是将商品信息录入到文件中。 (3)void manage::out_cangku()// 出库函数:该函数将商品信息读取后找到用户想要出库的商品然后进行商品报损。 (4)void manage::find_property()//查询函数:该函数用于让用户选择自己想要的查询商品的方式:俺商品名称查询、按商品价格查询、按商品价格查询。

C语言课程设计题目汇总

目录 题目6:通讯录程序设计(限2人)........................................................................................................................................... 题目10:机房机位预定系统(限2人)..................................................................................................................................... 题目13:工资纳税系统............................................................................................................................................................. 题目41:条件编译.....................................................................................................................................................................

题目6:回文数的形成............................................................................................................................................................... 杨顺民题目 C语言程序课程设计题目 题目1:年历显示 功能要求: (1)输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。(2)输入年月,输出该月的日历。 (3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。 题目2:小学生测验 面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。 功能要求: (1)电脑随机出10道题,每题10分,程序结束时显示学生得分; (2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的; (3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案; (4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分; (5)总成绩90以上显示“SMART” ,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN”

智能仪器设计课程设计

智能仪器设计课程设计 8. 试设计智能仪表 实现智能数字显示仪表。要求8位数码管显示(4位显示测量值,4位显示设定值),4输入按钮(功能选择、数码管选择、数字增加、数字减少),可设定上下限报警(蜂鸣器报警)。适配Cu100热电阻,测温范围为0℃~150℃。采用位式(两位、三位,具有滞环)控制、并用晶闸管过零驱动1000W电加热器(电源电压为AC220V)。 《智能仪器设计基础课程设计》----40题目 教学说明: 如下设计题目应该在课程开始时布置,并在教学中安排时间,以产品设计案例教学方式讲授如何理解题目以及如何实现题目,并补充完成题目所需要的相关知识。 如下的智能仪表课程设计题目,都是小型智能仪表产品开发方面的题目。涉及智能仪表硬件与软件设计。智能仪器课程设计是智能仪器课程教学的重要环节,根据设计智能仪表产品的课程改革目的,特选择一些小型智能仪表产品作为课设题目,满足教学需求。课程题目小,学生容易学,上手快,可以在短时间走完智能仪表设计的全过程,学会产品设计步骤。 1.设计基本要求 (1)正确理解设计题目,经过查阅资料,给出正确设计方案,画出详细仪表原理框图(各个功能部分用方框表示,各块之间用实际信号线连接)。 在互连网上收集题目中所用到的器件资料,例如传感器(热偶分度表等)、信号调理电路、AD转换器、单片机、继电器、电源、显示器件等。 在互连网上收集相关单片机的显示、AD转换、显示、控制算法等程序。 在充分研究这些资料基础之上,给出设计方案(选择信号调理电路、单片机、显示、按键输入、继电器驱动、电源等,简要说明选择的理由) (2)用Protel99SE软件设计仪表详细原理图。 要求正确标记元件序号、元件数值、封装名。 (3)设计PCB图 在画PCB前应该购买元件,因为有了元件才知道封装尺寸,但也可以不购买元件,只到元件商店测量实际元件尺寸后,画封装图。 (4)熟悉单片机内部资源,学会ADC、SPI接口、定时器、中断、串口、I/O引脚等模块的编程。 (5)采用C语言开发所设计仪表的程序。 按照题目要求,确定仪表需要完成的任务(功能),然后分别编制各任务的程序。程序应该有说明,并有详细注释。 说明:若是不安装实验板或是最小系统板,就只能用Atmel公司的A VR Studio软件或是Keil软件(随意下载)仿真,则学习效果将大打折扣。 2.设计(考试)说明书 说明书内容: (1)封面内容: 《智能仪器设计基础》考试题 题目号:

C课程设计报告含代码

C课程设计报告含代码Newly compiled on November 23, 2020

专业: C++课程设计报告 学号: 姓名: 同组人: 提交日期: 【设计目的】 1、通过设计一个较为简单的《商场库存货物管理系统》,进一步熟悉C++中类的概念、类的封装、继承的实现方式。 2、了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。【设计内容】 1、设计某公司的库存管理系统。此程序是为了更好的处理货物的详细信息。包括货物的货物的入库、出库、查询、统计。并且能够很好的让使用者了解库存货物的有关信息。 2、系统要求能够按编号显示、查找、增加、删除、和保存各类货物的信息。输入和输出货物的有关信息并且对输入保存文件里确定程序至少具备以下功能:查询模块、增加模块、删除模块、货物的有关信息数据存盘等的基本模块。 3、系统具有“货物的有关信息数据存盘”的功能,所以货物的有关信息数据可以保存到磁盘文件,那么也就意味着今后可以从磁盘文件读出货物的有关信息,可以方便用户使用,避免数据重复录入,考虑到系统实现简洁,货物数据文件采用文本文件,货物数据文件名:。 4、作为一个完整的系统,除了具有增加货物,删除货物的信息模块,还应该具有修改货物相关信息的功能,所以本系统具备了“商品入库”、“商品出库”、“查询统计”、“商品报损”、“退出系统”,这5个基本功能,就可以以最简捷的方式实现对货物的管理,也就实现了系统的要求。 5、下图中黑体字部分程序块为我完成的代码块

c语言课程设计报告书

课程设计报告书 所属课程:c语言 项目:库函数模拟系统 指导老师:邹姝稚 班级:软件1401 姓名:江闯 学号:141403107 分数:

1.任务描述: 本系统开发的代码模拟了下列库函数的功能: (1).模拟gets和puts的功能:能接收一个字符串,将其写入ASCII文件,并且可以读出显示。 (2).在不使用字符串库函数的条件下,编程实现字符串的拷贝,连接,求长,倒置功能。 (3).字符串加密功能:将一段明文建立到一个ASCII文件中,按加密的算法加密后写入密文文件,最终实现将明文和密文文件都显示出来。 (4).编程实现字符串与对应数字的相互转换功能。 2.总体设计: 模块调用图: 图1

函数调用图: 图2 函数功能: (1)函数gp( ):模拟gets和puts的功能 (2)函数kaobei( ):实现字符串的拷贝 (3)函数lianjie( ):实现字符串的连接 (4)函数qiuchang( ):实现字符串的求长 (5)函数daozhi( ):实现字符串的倒置 (6)函数jiami( ):实现字符串的加密功能,最后将明文和密文文件都显示出来 (7)函数zhuanhuan1( ):将数字字符串转换为对应的数字 (8)函数zhuanhuan2( ):将数字转换为对应的数字字符串 3.详细设计: (1).模仿gets和puts功能: gets和puts功能与scanf和printf函数的功能相似,但是也不是完全相同,本系统模拟功能的程序总共运用了两次函数调用技术,模拟gets运用了一次,模拟puts运用了一次。 (2)..字符串的拷贝功能: 字符串的拷贝功能程序设计源于strcpy的功能,其中运用了字符串数组和指针的相关技术,还运用了一组while语句,实现语句的循环,从而将一个字符串拷贝到一个空数组中。

智能控制系统课程设计

目录 有害气体的检测、报警、抽排.................. . (2) 1 意义与要求 (2) 1.1 意义 (2) 1.2 设计要求 (2) 2 设计总体方案 (2) 2.1 设计思路 (2) 2.2 总体设计方框图 2.3 完整原理图 (4) 2.4 PCB制图 (5) 3设计原理分析 (6) 3.1 气敏传感器工作原理 (7) 3.2 声光报警控制电路 (7) 3.3 排气电路工作原理 (8) 3.4 整体工作原理说明 (9) 4 所用芯片及其他器件说明 (10) 4.1 IC555定时器构成多谐振荡电路图 (11) 5 附表一:有害气体的检测、报警、抽排电路所用元件 (12) 6.设计体会和小结 (13)

有害气体的检测、报警、抽排 1 意义与要求 1.1.1 意义 日常生活中经常发生煤气或者其他有毒气体泄漏的事故,给人们的生命财产安全带来了极大的危害。因此,及时检测出人们生活环境中存在的有害气体并将其排除是保障人们正常生活的关键。本人运用所学的电子技术知识,联系实际,设计出一套有毒气体的检测电路,可以在有毒气体超标时及时抽排出有害气体,使人们的生命健康有一个保障。 1.2 设计要求 当检测到有毒气体意外排时,发出警笛报警声和灯光间歇闪烁的光报警提示。当有毒气体浓度超标时能自行启动抽排系统,排出有毒气体,更换空气以保障人们的生命财产安全。抽排完毕后,系统自动回到实时检测状态。 2 设计总体方案 2.1 设计思路 利用QM—N5气敏传感器检测有毒气体,根据其工作原理构成一种气敏控制自动排气电路。电路由气体检测电路、电子开关电路、报警电路、和气体排放电路构成。当有害气体达到一定浓度时,QM—N5检测到有毒气体,元件两极电阻变的很小,继电器开关闭合,使得555芯片组成的多谐电路产生方波信号,驱动发光二极管间歇发光;同时LC179工作,驱使蜂鸣器间断发出声音;此时排气系统会开始抽排有毒气体。当气体被排出,浓度低于气敏传感器所能感应的范围时,电路回复到自动检测状态。

C语言程序课程设计猜数字游戏

C语言程序设计课程设计 : 自 动 化 级 : 名: 学号: 指导教师: 兰州交通大学自动化与电气工程学院 2015年07月21日

一.引言 设计目的 复习和巩固C语言基础知识,进一步加深对C语言的理解和掌握。提高同学将课本上的理论知识和实际结合的能力,锻炼同学的分析解决实际问题的能力,提高同学团队合作的能力。使同学们善于观察和思考,善于合作,具备实践编程的基础素质,和实际问题分析的思考方式。 设计要求 在设计时充分地分析和理解问题本身,综合考虑系统功能,怎样使系统结构清晰、合理、简单和易于调试。然后详细设计,确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系。最后认真完成课程设计说明书,并对设计方法,结果等进行总结。 充分地分析和理解问题本身,弄清要求做什么(What to do)。在确定解决方案框架过程中(How to do),综合考虑系统功能,考虑怎样使系统结构清晰、合理、简单和易于调试。最后确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系。 确定算法的主要流程,在此基础上进行代码设计(Coding),每个明确的功能模块程序一般不超过60行,否则要进一步划分。 上机前程序静态检查可有效提高调试效率,减少上机调试程序时的无谓错误。静态检查主要有两种途径:(1)用一组测试数据手工执行程序;(2)通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。 二.基础题 题目 用选择法对10个数进行排序。 有一个已排好序的数组。现输入一个数,要求按原来的规律插入到原数组中。解题思路 程序的主要功能是对数组元素用排序函数按从小到大的顺序进行排序。 先定义一个10个元素的一维数组a[10],然后从电脑输入10个数(也就是对数组赋值),然后使用一次fun()函数,对这10个数进行排序;然后再定义一个11个元素的一维数组b[11],同时再从电脑输入一个数同a[10]一起赋值给b[11],然后再使用fun()函数,重新排序的到最后的有顺序的一组数据。 流程图 子函数流程图如图1所示:

C语言课程设计报告-模板

C语言课程设计报告 班级:16 物联网 一、题目说明 (1)读取输入信息,能正确进行数字运算

(2)拥有记忆功能,可查询最近几次计算结果并继续进行数字运算。 二、基本功能实现 (1)能实现两个数之间的加减,乘,除,乘方,开方等运算。 (2)实现记忆功能,可保留近十位结果,可用#键查看。(3)*键作为清0键,清除当前屏幕上的值为0表示重新开三、设计流程(可以画流程图,可以直接写说明)

四、代码 #include #include #include #include double yunsuan(double a, char operate, double b); //处理数值之间的运算void PutRes(double array[], double res, int *i); //保存该次运算结果 int main() { char str[40]; double a = 0; double b = 0; double res = 0; double history[10] = {0,0,0}; char opt; int i = 0; printf("欢迎进入计算功能(eg: 1 \n+ 1 ; '#':查询历史结果; 'q':退出程序)·\n"); while(1){

fgets(str,40,stdin); //将从键盘的一整行标准输入保存在字符串str中 if(sscanf(str,"%lf", &a) == 1){ //将str以长浮点型的格式放入a中,如果返回值为1,说明输入的是数值, scanf("%c %lf", &opt, &b); //获取操作符的值和另外一个操作数的值 res = yunsuan(a,opt,b); //调用yunsuan()函数计算,并将结果给res printf("%lf %c %lf = %lf\n\n",a, opt, b, res); PutRes(history, res, &i); //调用函数PutRes()将本次结果保存到数组history中(i用引用传递) // printf("%d\n", i); }else if(sscanf(str,"%c",&opt) == 1){ //将str以字符型的格式放入opt中,如果返回值为1,说明输入的是字符 if(opt == '#'){ //如果opt为‘#’,则显示history 中的数值 int j = 0; for(j = 0; j < i; ++j){ //i为history中存放的数值个数 printf(" %lf ", history[j]); } printf("\n");

相关文档