文档库 最新最全的文档下载
当前位置:文档库 › C语言程序设计课程设计报告及示例

C语言程序设计课程设计报告及示例

C语言程序设计课程设计报告及示例
C语言程序设计课程设计报告及示例

以下以“手机通讯录管理”为例,给出课程设计报告主要内容撰写格式。

摘要:(略)

关键字:(略)

一、课程设计的目的与要求

(略)

二、设计正文

1 概述

1.1课题题目:手机通讯录管理

1.2主要目标:

手机通讯录的管理是模手机中对通讯录可以执行的相关操作而进行的一个程序设计,该管理系统可以实现对通讯录的查看、备份、更新等功能,其中更新部

分又分为添加、删除和修改等操作。

1.3 开发环境及运行环境:

VC++6.0

2 需求分析

手机通讯录管理是手机中的一个重要功能,系统应为用户提供多联系人信息的存储、查阅、更新等操作。

该系统的主要功能如下:

○1能方便查看联系人的信息;

○2能更新联系人的信息,包括新增、删除、编辑

○3能备份通讯录;

○4其他要求,如数据的一致性、可靠性、易操作性等

主要菜单界面如图1所示

图1 主要菜单界面

3总体设计

○1功能模块设计

根据上面的分析,将系统按照功能分为以下几个模块(如图2所示)。

图2 “通信录管理”系统功能图

主程序模块tel.cpp:调用各模块中的函数实现对通信录的管理;

头文件模块tel.h:定义相关结构,定义常量及全局变量,声明所有模块中的函数;

菜单模块menu.cpp:显示主菜单、子菜单。使菜单界面独立于其它程序代码;

查看模块brows.cpp:显示一个或全部联系人;

更新模块edit.cpp:对联系人数据的更新,包括新增、删除、修改;

排序模块sort.cpp:对通信录排序;

文件操作模块file.cpp:完成程序中与文件相关的操作,包括:从磁盘读取通信录,

保存通信录,备份通信录。

②模块接口设计

各模块的函数接口如下所示:

a. 主程序模块tel.cpp仅包含main()函数,提供对系统的主要控制。在用户未选择退出程序时,通过一个循环不断显示菜单。当用户选中某个操作后,根据返回的菜单代码select 调用各函数完成相应的操作。

下文中采用结构图(Structure Chart)描述模块结构及模块间的联系,其中,模块用长方形表示,从A函数指向B函数的箭头表示A函数调用B函数,带圈的小箭头表示一个函数传递给另一个函数的数据,涂黑的带圈小箭头表示一个函数传递给另一个函数的控制信息。

主程序模块与其它模块之间的关系如图3所示:

browse.cpp

图3 主程序模块与其它模块之间的关系结构图

b. 菜单模块menu.cpp。本模块将菜单显示部分用单独的函数实现,使菜单界面独立于其它程序代码,便于修改和维护。Menu函数仅显示主菜单,SubMenu2函数仅显示更新联系人子菜单,这样各个菜单便于单独显示、清屏。用户选择操作后,函数返回对应的菜单代码。

int Menu(void); 主菜单,显示第一级菜单:查看通信录、更新通信录、备份通信录、退出。

int SubMenu2(void); “更新通信录”子菜单,显示:新增联系人、编辑联系人、删除联系人、返回主菜单。

menu.cpp模块各函数之间的关系如图4所示:

图4 menu.cpp模块各函数间的关系结构图

c. 查看模块brows.cpp。以列表或单条记录的方式输出通信录。

void List(T el tel[], Index pAlphabet);按pAlphabet中指针数组的排序方式,调用PrintOne函数显示tel中所有的联系人,并显示排序后的序号i,便于用户选择联系人。

void PrintHead(void); 输出表头。

void PrintBottom(void); 输出表尾。

void PrintOne(T el r, int i); 仅输出一个联系人r的信息,并显示序号i,便于用户选择联系人。

void Print(Tel r); 调用PrintOne函数输出表头及一个联系人的信息,不显示序号。

browse.cpp模块各函数之间的关系如图5所示:

browse.cpp

图5 browse.cpp模块各函数间的关系结构图

d. 更新模块edit.cpp。完成对联系人的新增、删除、修改操作。

void New(Tel tel[], Index *pAlphabet); 新增联系人。添加到tel数组中第一个空着的位置。之后需要对pAlphabet重新排序。

void Edit(Tel tel[], Index *pAlphabet); 编辑联系人。编辑之后需要对pAlphabet重新排序。

void Delete(Tel tel[], Index *pAlphabet); 删除联系人。此处做逻辑删除,仅将姓名赋空串。删除之后需要对pAlphabet重新排序。

void Input(Tel *r, Tel tel[], int menu); 输入联系人信息。新增或编辑联系人时,调用该函数来输入一个联系人的信息。如果是新增(此时菜单代码menu=21),当用户选择只输入姓名时,需要为除姓名以外的信息设置缺省值;否则,除姓名以外的信息缺省保持不变。

int Duplicate(char *name, Tel tel[], char *original); 姓名查重。在新增或编辑联系人前,调用该函数来检查是否有重名的情况。新增联系人时,如果新输入的串name与tel数组中已存在的姓名一样则返回1;否则,返回0。编辑时可以输入与联系人原来的姓名original 一样的串。

int Select( ); 选择联系人序号。删除或修改用户选择的联系人时,调用该函数来限制序

号在有效范围内。返回对应的数组下标。

edit.cpp 模块各函数之间的关系如图6所示(注:若对一个函数有多次调用,图中仅画出了一次调用的一组要传递的数据)。

e. 排序模块 sort.cpp 。利用指针数组对通信录运用选择法排序。

void SortByAlphabet(Tel tel[], Index *pAlphabet); 调用SelectSort 函

数,利用pAlphabet 中的指针数组,对tel 数组按音序排序。

void SelectSort(Index *p); 用选择法对指针数组p 排序。 sort.cpp 模块各函数之间的关系如图7所示:

f. 文件操作模块 file.cpp 。完成系统与文件有关的操作。

int Load(Tel tel[], Index *pAlphabet); 读取。将通信录文件fName 读入内存tel ,并对pAlphabet 排序。返回读取的记录数。

int Save(Tel tel[]); 保存。将通信录tel 以fName (全局变量)为名保存到磁盘。此时做物理删除:姓名为空串的联系人表示已删除,不存入通信录文件。返回写入文件的记录数。 int Copy(void); 备份通信录。复制通信录文件。操作成功时返回1;否则返回0。

file.cpp 模块各函数之间的关系如图8所示:

图6 edit.cpp 模块各函数间的关系结构图

edit.cpp sort.cpp 图7 sort.cpp 模块各函数间的关系结构图

sort.cpp

图8 file.cpp 模块各函数间的关系结构图

sort.cpp

file.cpp

③系统流程描述

图9 系统流程图

④数据结构设计

通信录中每个联系人应包括以下信息,如表1所示:

表1 联系人信息结构表

4 详细设计

①数据的类型结构设计

a. 主要结构设计

系统的主要功能是管理联系人的信息,大部分模块中都用到联系人的信息。联系人的数据类型结构定义如下:

typedef struct Telephone

{

char name[20]; //姓名

int group;//群组:1.朋友 2.同事3.家人 4.其他

char home[15];//住宅电话

char mobile[15];//手机

char email[20];//Email

char add[20];//地址

char memo[20];//备注

}Tel;

sort.cpp模块中利用指针数组对通信录排序,排序用的索引类型结构的定义如下:typedef struct index

{

int len; //数组长度

Tel *tel[MaxLen]; //指针数组,

}Index;

b. 用户选择菜单后menu.cpp模块返回菜单代码,main函数根据不同的菜单代码调用

不同的函数实现系统规定的功能。系统中使用的菜单代码定义如下:

c. 联系人分组方式代码

表3 联系人分组方式代码表

d. 全局变量

const int MaxLen=500; 最多可存放500个联系人信息

char fName[20]="tel.dat"; 磁盘文件:通信录文件名

int Len; 全局变量,通信录中当前联系人总数

②人机对话(输入/输出格式)设计

a. 菜单操作

考虑使用键盘方式,用户输入菜单项前的0,1,2等数字字符来选择对应的菜单项,由menu.cpp模块转换成相应的菜单代码。

用户选择菜单项并完成相应的操作后刷新菜单。

b. 显示与选择联系人

对通信录有更新时系统自动按音序排序。显示整个通信录时在每个联系人前显示排序后的序号,用户按序号选择联系人进行操作。对于操作结果为单个联系人的情况不显示序号。

c. 输入联系人信息

通过新增或更新输入联系人信息时,可以选择只输入姓名还是输入联系人的完整信息。当用户选择只输入联系人姓名时,其余部分系统自动设成空值。

系统只提供了“1.朋友 2.同事3.家人 4.其他”四种联系人分组方式。用户输入[1..4]来指定联系人的分组。当用户未指定时,系统自动设为4,代表“其他”分组。

输入联系人姓名时系统自动检查有无重名的情况。更新输入时可以输入原来的姓名。

③控制结构设计

a. 主程序模块:

主函数int main():

图10 main()函数主要功能的PAD图描述

b. 更新模块

新增void New(T el tel[], Index *pAlphabet):

图11 New()函数主要功能的PAD图描述

修改void Edit(Tel tel[], Index *pAlphabet):

图12 Edit()函数主要功能的PAD图描述

删除void Delete(T el tel[], Index *pAlphabet):

图13 Delete()函数主要功能的PAD图描述

c. 排序模块void SortByAlphabet(Tel tel[], Index *pAlphabet):

图14 SortByAlphate()函数主要功能的PAD图描述d. 文件操作模块

从磁盘读取通信录int Load(Tel tel[], Index *pAlphabet):

图15 Load()函数主要功能的PAD图描述

保存通信录int Save(Tel tel[]):

备份通信录int Copy(void):

5 编码实现

编码阶段根据系统的用途选择合适的开发工具,对各函数逐步求精并编码实现,对各模块分块上机调试,最后组合成完整的系统。此处选用Visual C++6.0作为开发工具:控制部分通过函数代码实现,数据部分采用数据文件实现永久存储,采用数组存储系统运行过程中的数据。

应用C 语言开发通信录管理系统时,一开始先在头文件tel.h 中定义结构和全局变量。接下来先调试主函数模块tel.cpp 和菜单模块menu.cpp 。之后每次加入新模块时用#include "模块名.cpp" 将模块文件包含进主程序模块,将模块中相应函数的声明加入头文件tel.h ,并修改主程序中对应的代码以调用函数。

接下来可以调试查看模块 brows.cpp ,此时可以用初始化的方式为tel 赋值。 之后调试排序模块Sort.cpp 、编辑模块Edit.cpp 、文件操作模块File.cpp 。

【程序】

/********************头文件模块tel.h ******************************/ const int MaxLen=500; //最多可存放500个联系人信息

char fName[20]="tel.dat";//磁盘文件:通信录文件名

图16 Save()函数主要功能的PAD 图描述

图17 Copy()函数主要功能的PAD 图描述

int Len; //全局变量,通信录中当前联系人总数

typedef struct Telephone//联系人数据结构

{

char name[20]; //姓名

int group;//群组:1.朋友 2.同事3.家人 4.其他

char home[15];//住宅电话

char mobile[15];//手机

char email[20];//Email

char add[20];//地址

char memo[20];//备注

}Tel;

typedef struct index //指针数组结构,排序时用

{

int len; //数组长度

Tel *tel[MaxLen]; //指针数组,

}Index;

//浏览模块brows.cpp函数声明

void List(Tel tel[],Index pAlphabet); /*按pAlphabet中指针数组的排序方式显示所有联系人。*/

void PrintHead(void); //打印表头

void PrintBottom(void);//打印表尾

void PrintOne(Tel r,int i); //仅打印一个联系人r的信息,序号为i

void Print(Tel r); //打印表头及一个联系人的信息

//更新通信录模块edit.cpp函数声明

void New(Tel tel[],Index *pAlphabet); /*新增联系人。加到数组中第一个空着的位置。之后需要重新排序*/

void Edit(Tel tel[],Index *pAlphabet); //编辑联系人。需要重新排序

void Delete(Tel tel[],Index *pAlphabet); /*删除联系人。逻辑删除,仅将姓名赋空串。删除后需要重新排序*/

void Input(Tel *r,Tel tel[],int menu); /*输入一个联系人的信息,由menu识别:是新增(menu=21)还是修改(menu=23)*/

int Duplicate(char *name,T el tel[],char *orignal);/*查重。在新增联或编辑系人前,检查是否有重名的情况。*/

int Select(); //选择联系人序号,避免出错

//文件操作模块file.cpp函数声明

int Load(Tel tel[],Index *pAlphabet); /*读取。将通信录文件fName读入内存。排序*/ int Save(Tel tel[]); /*保存。将通信录以fName(全局变量)为名保存到磁盘。此时做物理删除:姓名为空串的联系人表示已删除,不存入通信录文件。*/

int Copy(void); //备份通信录。复制通信录文件。

//排序模块sort.cpp函数声明

void SortByAlphabet(T el tel[],Index *pAlphabet); //按音序排序。

void SelectSort(Index *p); //对指针数组选择排序

//菜单模块menu.cpp 函数声明。

/*主菜单,显示第一级菜单:查看通信录(1)、更新通信录(2)、备份通信录(3)、退出(0)。*/

int Menu(void);

/*更新通信录子菜单,显示:新增联系人(21)、编辑联系人(22)、删除联系人(23)、返回主菜单(20)。*/

int SubMenu2(void);

/**********************主程序模块tel.cpp***************************/

/*

主要功能:1.查找信息;2.联系人信息的更新:新增、编辑、删除; 3. 备份通信录。编制时间:2007-10-11

2007-10-16 修改:

1.排序时用指针数组: Index pAlphabet;

2.表述要简单,易理解;

3.删除:逻辑删除:仅将联系人姓名置空; 4;增、删、改后都重新排序

2007-10-27 修改:调整模块结构

*/

#include

#include

#include

#include

#include

#include"tel.h" //头文件:相关结构定义,常量及全局变量定义,函数声明

#include"brows.cpp" //查看模块:显示一个或全部联系人

#include"edit.cpp" //更新模块:新增、修改、删除

#include"file.cpp" //文件操作模块:从磁盘读取通信录,保存通信录,备份通信录

#include"sort.cpp" //排序模块:选择排序(用指针数组)

#include"menu.cpp" //菜单模块:显示主菜单、子菜单

int main( )

{

int select=0;

/*

int select; 用户所选的菜单项代码:

主菜单:1查看通信录2更新通信录3备份通信录0退出程序

更新通信录子菜单:21新增联系人22编辑联系人23删除联系人20返回主菜单*/

Tel tel[MaxLen]; //最多存放500个联系人

Index pAlphabet;//按音序排序的指针数组

memset(tel, 0, sizeof(tel)); //将tel初始化为空,memory.h

Load(tel, &pAlphabet); //从通信录文件读取信息

//循环显示菜单,供用户选择

do{

if(select<10 || select==20)

select=Menu( );//是主菜单项<10或由子菜单返回20,接着显示主菜单else if(select>20 && select<30)

select=SubMenu2( );//是子菜单2的项,继续显示子菜单2

switch(select)

{

case 1://按音序查看通信录

List(tel,pAlphabet);

printf("\n\n\t按任意键继续... ...");

getch(); //等待用户看清屏幕,conio.h

break;

case 21: //新增联系人

New(tel,&pAlphabet);

break;

case 22: //编辑联系人

Edit(tel,&pAlphabet);

break;

case 23: //删除联系人

Delete(tel,&pAlphabet);

break;

case 20: //返回主菜单

break;

case 3: //备份通信录

system("cls"); //没有子菜单,先清除上一级菜单,stdlib.h

Save(tel); //用户可能更新过,先保存当前tel到通信录文件

Copy();

break;

case 0: //退出程序

break;

}

}while(select!=0);

Save(tel); //退出系统前,将内存数据存入通信录文件

return 0;

}

/*********************** menu.cpp 菜单模块***************************/

//与程序其他模块独立。通过返回的菜单代码与操作对应

//主菜单,显示第一级菜单:查看(1)、更新(2)、备份(3)、退出(0)

int Menu(void)

{

char menu;

do{

system("cls"); //清屏,stdlib.h

puts("\n\t======主菜单======\n"); // 列出菜单

puts("\t 1. 查看通信录");

puts("\t 2. 更新通信录");

puts("\t 3. 备份通信录");

puts("\t 0. 退出程序");

puts("\n\t==================");

printf("\t请选择:"); // 提示选择

menu = getche(); //输入一个字符,回显,不需要敲入回车,conio.h

switch( menu ) //将用户输入的选项menu转换成系统定义的菜单代码

{

case '0':

puts("\n\n\t退出程序!");

menu=menu-'0';

break;

case '1':

case '3':

menu=menu-'0';

break;

case '2':

menu=SubMenu2();

break;

default:

puts("\n\n\t选择错误!");

menu='9'; //输入了无效的菜单代码,需要重新输入

}

}while(menu=='9');// '0'、'1'、20,21,22,23、'3'都是有效的菜单代码

return menu;

}

//更新通信录子菜单,显示:新增(21)、编辑(22)、删除(23)、返回(20)

int SubMenu2()

{

char menu;

do{

system("cls"); //清屏,stdlib.h

puts("\n\t====更新通信录====\n"); // 列出菜单

puts("\t 1. 新增联系人");

puts("\t 2. 编辑联系人");

puts("\t 3. 删除联系人");

puts("\t 0. 返回主菜单");

puts("\n\t==================");

printf("\t请选择:"); // 提示选择

menu = getche(); //输入一个字符,回显,不需要敲入回车,conio.h

switch( menu )

{

case '0':

puts("\n\n\t返回主菜单!");

break;

case '1':

case '2':

case '3':

break;

default:

puts("\n\n\t选择错误!");

menu='9';

}

}while(menu=='9'); // '0'、'1'、'2'、'3'都是有效值菜单代码

return 20+menu-'0'; //将用户输入的选项menu转换成系统定义的菜单代码}

/**********************浏览模块brows.cpp ***************************/

void List(Tel tel[],Index pAlphabet) //按pAlphabet的排序方式显示所有结点{

int i; //i:数组下标

if(Len==0) //数组实际长度为0

{

printf("\n\t没有联系人");

return ;

}

PrintHead(); //打印表头

for(i=0; i

PrintOne( *(pAlphabet.tel[i]), i+1);

PrintBottom(); //打印表尾

}

void PrintHead(void) //打印表头

{

printf("\n\n\t通信录* 联系人");

printf("\n\t-------------------------------------------------------");

printf("\n\t%-10s%-6s%-10s%-10s", "姓名", "群组", "住宅电话", "手机");

printf("%-10s%-10s%-10s", "Email", "地址", "备注");

printf("\n\t-------------------------------------------------------");

}

void PrintBottom(void)//打印表尾

{

printf("\n\t------------------------------------------------------\n");

}

void PrintOne(Tel r,int i) //仅打印一个联系人r的信息,序号为i

{

if(i!=0)

printf("\n%6d\t%-10s",i,https://www.wendangku.net/doc/f112465578.html,); //联系人前加序号

else printf("\n\t%-10s",https://www.wendangku.net/doc/f112465578.html,); //联系人前不加序号

switch(r.group) //群组:1.朋友 2.同事3.家人 4.其他

{

case 1:

printf("%-6s","朋友");

break;

case 2:

printf("%-6s","同事");

break;

case 3:

printf("%-6s","家人");

break;

default:

printf("%-6s","其他");

}

printf("%-10s%-10s%-10s", r.home , r.mobile , r.email);

printf("%-10s%-10s",r.add , r.memo );

}

void Print(Tel r) //打印表头及一个联系人的信息

{

PrintHead();

PrintOne(r,0);//只打印一人,不输出序号(第二个参数为0)PrintBottom();

}

/************************排序模块sort.cpp **************************/ void SortByAlphabet(T el tel[],Index *pAlphabet) //按音序排序。{

int i,j; //i:数组下标j: 除姓名为空串以外的实际人数

if( Len==0 ) return ;

//初始化排序指针数组

pAlphabet->len=0;

for(i=0,j=0; j

{

//找到一个有效的联系人,排出逻辑删除者(姓名为空串)

while( strcmp(tel[i].name, "") == 0 )

i++;

pAlphabet->tel[j]=&tel[i];

j++;

i++;

pAlphabet->len++;

}

SelectSort( pAlphabet ); //选择排序

}

void SelectSort(Index *p) //对指针数组选择排序

{

int i,j,n=p->len;

int min;

Tel *temp;

if( n==0 ) return ;//没有联系人,不需要排序

//选择排序

for(i=0; i

{

//找最小元素

min=i;

for(j=i+1; j

{

if(strcmp( p->tel[j]->name , p->tel[min]->name )<0)

min=j;

}

//交换:最小元素min,当前无序序列第一个元素i

if(min!=i)

{

temp=p->tel[i];

p->tel[i]=p->tel[min];

p->tel[min]=temp;

}

}//end of for i

}

/***********************更新联系人模块edit.cpp **********************/ //新增联系人。加到数组中第一个空着的位置。之后需要重新排序void New(T el tel[],Index *pAlphabet)

{

int t=0; //找到tel中第一个空的位置,存放新输入的联系人

if(Len>=MaxLen)

{

printf("\n\n\t通信录已满!");

return ;

}

while( strcmp(tel[t].name,"")!=0 ) //找到tel中第一个空的位置t t++;

Input(&tel[t],tel,21);//新增联系人(21),输入联系人信息

Len++; //联系人增1

SortByAlphabet(tel, pAlphabet);//重新排序

}

void Edit(Tel tel[],Index *pAlphabet) //编辑联系人。需要重新排序

{

int i;

List(tel,*pAlphabet);//按音序排序的顺序修改

if(Len==0) return ;

i=Select();

Print( *(pAlphabet->tel[i]) ); //显示用户选中的联系人i

Input( pAlphabet->tel[i] , tel, 23); //编辑(23)时输入联系人信息

SortByAlphabet(tel, pAlphabet); //重新排序

}

// 删除联系人。逻辑删除,仅将姓名赋空串。删除后需要重新排序void Delete(T el tel[],Index *pAlphabet)

{

int i;

char select; //用户选择:是否继续输入除姓名以外的信息

List(tel, *pAlphabet);//按音序排序的顺序删除

if(Len==0) return ;

i=Select();

Print( *(pAlphabet->tel[i]) );//显示用户选中的联系人i

printf("\n\t确定要删除此人?(y/n)");

select=getche();

if(select=='Y' || select=='y')

{

//删除联系人信息(逻辑删除):将姓名赋空串,表示无人

strcpy(pAlphabet->tel[i]->name,"");

Len--; //联系人减1

SortByAlphabet(tel,pAlphabet);//重新排序

}

}

//输入一个联系人的信息,由menu识别:是新增(21)还是修改(23)void Input(Tel *r,Tel tel[],int menu)

{

int select;

char name[20],orignal[20];

if(menu==21)

strcpy(orignal,""); //新增,原来没名字

else strcpy(orignal,r->name ); //编辑,原来有名字

课程设计报告模板)

课程设计报告模板()

————————————————————————————————作者: ————————————————————————————————日期: ?

课程设计(论文)任务书 软件学院软件+电商专业09级(2)班 一、课程设计(论文)题目基本模型机设计与实现 二、课程设计(论文)工作自2011年6月 20 日起至2011年 6月 24日止。 三、课程设计(论文) 地点:计算机组成原理实验室(5#301) 四、课程设计(论文)内容要求: 1.课程设计的目的 通过课程设计的综合训练,在掌握部件单元电路实验的基础上,进一步掌握整机 概念。培养学生实际分析问题、解决问题和动手能力,最终目标是想通过课程设计的形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。 2.课程设计的任务及要求 1)基本要求? (1)课程设计前必须根据课程设计题目认真查阅资料; (2)实验前准备好实验程序及调试时所需的输入数据; (3)实验独立认真完成; (4)对实验结果认真记录,并进行总结和讨论。 2)课程设计论文编写要求 (1)按照书稿的规格撰写打印课设论文 (2)论文包括目录、绪论、正文、小结、参考文献、附录等 (3)正文中要有问题描述、实验原理、设计思路、实验步骤、调试过程与遇到问题的解决方法、总结和讨论等 (4)课设论文装订按学校的统一要求完成 3)课设考核 从以下几方面来考查:

(1)出勤情况和课设态度; (2)设计思路; (3)代码实现; (4)动手调试能力; (5)论文的层次性、条理性、格式的规范性。 4)参考文献 [1]王爱英.计算机组成与结构[M]. 北京:清华大学出版社, 2007. [2] 王爱英. 计算机组成与结构习题详解与实验指导[M]. 北京:清华大学出版社, 2007. 5)课程设计进度安排 内容天数地点 构思及收集资料1图书馆 实验与调试 3 实验室 撰写论文 1 图书馆 6)任务及具体要求 设计实现一个简单的模型机,该模型机包含若干条简单的计算机指令,其中至少包括输入、输出指令,存储器读写指令,寄存器访问指令,运算指令,程序控制指令。学生须根据要求自行设计出这些机器指令对应的微指令代码,并将其存放于控制存储器,并利用机器指令设计一段简单机器指令程序。将实验设备通过串口连接计算机,通过联机软件将机器指令程序和编写的微指令程序存入主存中,并运行此段程序,通过联机软件显示和观察该段程序的运行,验证编写的指令和微指令的执行情况是否符 合设计要求,并对程序运行结果的正、误分析其原因。 学生签名: 亲笔签名 2011年6月20 日 课程设计(论文)评审意见 (1)设计思路:优( )、良()、中( )、一般()、差( ); (2)代码实现:优()、良()、中()、一般()、差();

c语言课程设计报告·图书管理系统

第一章 §题目描述 图书管理系统设计: 【要求】图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。试设计一图书管理系统,使之能提供以下功能: (1)新图书基本信息的输入; (2)图书基本信息的查询; (3)对撤销图书信息的删除; (4)办理借书手续; (5)办理还书手续; 【提示】建立图书馆里信息结构体,结构体成员包括图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号。存在状态设为整型,可用不同数字代表借还状态。借书和还书手续要注意修改结构体的成员变量存在状态的值。 §算法设计 1.设计思想: 在整个系统编写的过程中,涉及了较多C语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。由此进一步加深、巩固了所学的课程的基本理论知识,培养了综合分析问题、解决问题的能力。在设计程序时,参考了学校图书馆的图书管理系统,实现了程序的模块化、结构化。在主函数中调用各种函数,操作界面简单,易操作,人机互动性较强。 2.实现注释: 这个实用的小型图书管理系统程序以结构体数组指针操作完成,并实现文件信息的录入、修改和保存等功能,所有信息以磁盘文件方式保存,方便用户使用。本图书管理系统分为管理员和学生两个部分,其基本功能包括了对图书信息的存储、查询、添加、删除和借书、还书手续办理等。查询时可按书名、编号等方式查询,找到后输出这本书的所有信息。可查询图书的在库状态,方便用户进行借书、还书操作。在借书还书成功后图书的在库状态自动改变,并更新信息到数据库。系统中主要的数据结构就是图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。在处理过程中各项可以作为一本图书的不同属性来进行处理。 3.结构体系设计 图:主函数结构;图:新书信息录入流程;图:图书信息查询(管理员)流程;图:图书信息查询(学生)流程;图:图书信息删除流程;图:办理借书手续流程;图:办理还书手续流程; §程序设计及代码分析 1.程序设计: 下面,我大致介绍一下我的系统的主要功能和注意事项: 当运行此程序时,首先进入系统主界面,然后可以选择[1].管理员登陆(密码:123),[2].学生登陆,[0].退出系统; 选择[1]后进入管理员系统,验证密码成功后显示管理员功能菜单,按数字键选择所需服务。管理员功能菜单中,[1].新书信息录入,[2].图书信息查询,[3].图书信息删除,[4].返回主菜单,[0].退出系统;当出现“请选择”时,输入选项前的数字,输完之后按回车(下同)。首次运行系统需要先选择[1]录入库存书籍信息,图书各信息项须用空格键隔开,输入完毕后信息自动储存并更新至数据库,然后再选择其他操作。当选择[3]时会进入图书信息删除,在这里可以选择删除图书信息等操

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 语言程序设计报告 课题:学生成绩管理 时间:

一、需求分析 任务要求: 自学C语言中有关链表及外部文件的内容,设计出学生成绩管理。具体要求如下: 1.主要功能: (1)能按学期、按班级完成对学生成绩的录入、修改 (2)能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序 (3)能查询学生成绩,不及格科目及学生名单 (4)能按班级输出学生的成绩单 系统功能需求分析: 1、定义一个结构体类型,成员包括学期、班级、各科成绩、建立链表,定义该结构体类型的指针,用于指向各结点; 2、分别建立具有添输入、修改、查询、总分及平均分、排序等功能的子函数,完成相应功能,对程序实现模块化。 二、概要设计 系统总体设计框架: 对程序进行模块化,建立输入、修改、查询、查找和显示功能的子函数,各子函数中运用链表存储数据。 系统功能模块图:

三、详细设计 主要功能模块的算法设计思路如下: 1、输入信息函数 (1)定义指向结构体变量的指针; (2)移动指针,找到插入结点; (3)在要插入的结点输入信息; (4)返回头指针。 2、修改信息 (1)定义指向结构体变量的指针; (2)用指针检验链表中是否有记录,若没记录,出现报错,然后要求重新输入; (3)根据要修改的编号查找对应结点; (4)修改信息;

(5)修改成功。 3、排序函数 (1)定义所要排序的班级和链表的头指针为形参; (2)调用排序函数,把班级和链表的头指针赋给形参; (3)在子函数中进行排序; (4)输出排序结果。 4、显示学生成绩信息(void Disp(Link l)) (1)选择想要查询的项目(学生各科成绩、不及格科目、班级成员);(2)用指针检验是否有记录; (3)若无记录,输出提示信息,返回主函数; 若有记录,移动指针,依次输出记录; 5、查询班级成绩信息(void Find(Link l)) (1)选择所要查询的班级; (2)输入班级: (3)在链表中寻找相应结点; (4)输出结点信息。 以上各个函数的流程图如下:

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() 菜单函数

51CTO下载电子商务网站课程设计报告范例

1.正文 (1)引言 ①.程序设计的背景 21世纪的重要特征是数字化、网络化和信息化。自从上个世界90年代以后,以因特网为代表的计算机网络得到了飞速的发展,已从最初的教育科研网络发展成为商业网络,并已成为仅次于全球网的世界第二大网络。很多人认为现在已经是互联网的时代,这是因为互联网正在并继续改变着我们的工作和生活的各个方面,加速了全球信息革命的进程。现在人们的生活、工作、学习和交往都已经离不开因特网,互联网成为全球通信与贸易的重要工具。网上购物系统正在成为人们日益信赖的购物平台,其以优越的方便快捷性、实用性、可获得性等特性获得越来越多人的青睐,网上购物逐渐成为很多人购物的主要途径。另外,随着计算机身份认证技术、数字签名、数据库安全、数字水印、信息隐藏、入侵检测、防火墙等网络安全技术的发展使得网上购物的环境越来越安全,大型的合理构建,政府机构完备的法律制度都极大的保证了网上购物的安全性,提高了顾客的信任度,使得网络购物更加普及。作为当代的大学生,网络更是贯穿于我们的生活,加上年轻人乐于尝试新生事物的心理趋向也让我们对于网上购物有了更多了解并参与其中。基于对网络购物环境的理解,结合自己的网络购物的体会,本小组成员进行了此次课程设计,基本上实现了简单的基于Java平台的JSP电子商务设计(电脑购物B2C模式的电子商务)。 ②.程序设计的需求分析 本电子商务总体基于Java,利用服务器端动态网页开发的JSP技术,辅以客户端动态网页开发的Javascript技术,主要设计实现以下功能: 1.前台销售,包括以下内容: 1)用户注册: 显示注册界面,通过Javascript技术判断用户填写的注册信息是否规X,用户名是否已经存在、填写的密码是否一致、Email是否为正确格式等等。用户确认所填注册信息并通过验证后,将注册信息添加到数据库中的userInfo表中。 2)用户登录 用户输入用户名和密码后,检验所输入的用户名和密码是否与数据库中的用户名和密码一

课程设计报告【模板】

模拟电子技术课程设计报告设计题目:直流稳压电源设计 专业电子信息科学与技术 班级电信092 学号 200916022230 学生姓名夏惜 指导教师王瑞 设计时间2010-2011学年上学期 教师评分 2010年月日

昆明理工大学津桥学院模拟电子技术课程设计 目录 1.概述 (2) 1.1直流稳压电源设计目的 (2) 1.2课程设计的组成部分 (2) 2.直流稳压电源设计的内容 (4) 2.1变压电路设计 (4) 2.2整流电路设计 (4) 2.3滤波电路设计 (8) 2.4稳压电路设计 (9) 2.5总电路设计 (10) 3.总结 (12) 3.1所遇到的问题,你是怎样解决这些问题的12 3.3体会收获及建议 (12) 3.4参考资料(书、论文、网络资料) (13) 4.教师评语 (13) 5.成绩 (13)

昆明理工大学津桥学院模拟电子技术课程设计 1.概述 电源是各种电子、电器设备工作的动力,是自动化不可或缺的组成部分,直流稳压电源是应用极为广泛的一种电源。直流稳压电源是常用的电子设备,它能保证在电网电压波动或负载发生变化时,输出稳定的电压。一个低纹波、高精度的稳压源在仪器仪表、工业控制及测量领域中有着重要的实际应用价值。 直流稳压电源通常由变压器、整流电路、滤波电路、稳压控制电路所组成,具有体积小,重量轻,性能稳定可等优点,电压从零起连续可调,可串联或关联使用,直流输出纹波小,稳定度高,稳压稳流自动转换、限流式过短路保护和自动恢复功能,是大专院校、工业企业、科研单位及电子维修人员理想的直流稳压电源。适用于电子仪器设备、电器维修、实验室、电解电镀、测试、测量设备、工厂电器设备配套使用。几乎所有的电子设备都需要有稳压的电压供给,才能使其处于良好的工作状态。家用电器中的电视机、音响、电脑尤其是这样。电网电压时高时低,电子设备本身耗供电造成不稳定因家。解决这个不稳定因素的办法是在电子设备的前端进行稳压。 直流稳压电源广泛应用于国防、科研、大专院校、实验室、工矿企业、电解、电镀、充电设备等的直流供电。 1.1直流稳压电源设计目的 (1)、学习直流稳压电源的设计方法; (2)、研究直流稳压电源的设计方案; (3)、掌握直流稳压电源的稳压系数和内阻测试方法。 1.2课程设计的组成部分 1.2.1 设计原理

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语句,实现语句的循环,从而将一个字符串拷贝到一个空数组中。

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)随时可将全部数据存储到磁盘文件中,方便下次从磁盘读取数据。

机器人课程设计报告范例

机器人课程设计报告范例

**学校 机器人课程设计名称 院系电子信息工程系 班级10电气3 姓名谢士强 学号107301336 指导教师宋佳

目录 第一章绪论 (2) 1.1课程设计任务背景 (2) 1.2课程设计的要求 (2) 第二章硬件设计 (3) 2.1 结构设计 (3) 2.2电机驱动 (4) 2.3 传感器 (5) 2.3.1光强传感器 (5) 2.3.2光强传感器原理 (6) 2.4硬件搭建 (7) 第三章软件设计 (8) 3.1 步态设计 (8) 3.1.1步态分析: (8) 3.1.2程序逻辑图: (9) 3.2 用NorthStar设计的程序 (10) 第四章总结 (12) 第五章参考文献 (13)

第一章绪论 1.1课程设计任务背景 机器人由机械部分、传感部分、控制部分三大部分组成.这三大部分可分成驱动系统、机械结构系统、感受系统、机器人一环境交互系统、人机交互系统、控制系统六个子系统现在机器人普遍用于工业自动化领域,如汽车制造,医疗领域,如远程协助机器人,微纳米机器人,军事领域,如单兵机器人,拆弹机器人,小型侦查机器人(也属于无人机吧),美国大狗这样的多用途负重机器人,科研勘探领域,如水下勘探机器人,地震废墟等的用于搜查的机器人,煤矿利用的机器人。如今机器人发展的特点可概括为:横向上,应用面越来越宽。由95%的工业应用扩展到更多领域的非工业应用。像做手术、采摘水果、剪枝、巷道掘进、侦查、排雷,还有空间机器人、潜海机器人。机器人应用无限制,只要能想到的,就可以去创造实现;纵向上,机器人的种类会越来越多,像进入人体的微型机器人,已成为一个新方向,可以小到像一个米粒般大小;机器人智能化得到加强,机器人会更加聪明 1.2课程设计的要求 设计一个机器人系统,该机器人可以是轮式、足式、车型、人型,也可 以是仿其他生物的,但该机器人应具备的基本功能为:能够灵活行进,能感知光源、转向光源并跟踪光源;另外还应具备一项其他功能,该功能可自选(如亮灯、按钮启动、红外接近停止等)。 具体要求如下: 1、根据功能要求进行机械构型设计,并用实训套件搭建实物。 2、基于实训套件选定满足功能要求的传感器; 3、设计追光策略及运动步态; 4、用NorthStar设计完整的机器人追光程序;

课程设计报告(模板)

《地震勘探课程设计》 报告 院系 班级 学生 学号 指导教师 完成日期2014年3月12日 长江大学工程技术学院

目录 一、课程设计目的 (3) 二、课程设计的容 (3) 三、课程设计原理 (3) 四、工区数据 (4) 五、课程设计步骤 (5) 1、建立工区 (5) 2、资料加载 (8) 3、层位标定和层位追踪 (10) 4、断层解释 (13) 5、构造图绘制 (14) 六、心得体会 (15)

一、课程设计目的 地震勘探解释课程设计是我们勘查技术与工程专业和资源勘查工程专业教学中的一个重要的实践性训练环节,通过上机实际操作,训练我们对地震资料进行常规构造解释的实际能力,最终使我们达到:学会利用地震解释软件来进行地震数据的加载,地震层位的标定,地震层位的追踪对比,在地震资料上分析和解释各种断层,以及地震构造图的编制方法。同时,还要学会综合地震地质资料对构造解释结果进行分析,进而对含油气有利地带进行评价和预测,最终编制成果报告。 二、课程设计的容 本次课程设计是理论联系实际的具体表现,是培养学生分析问题、解决问题能力的一个必不可少的环节,主要分为两部分:一、通过对地震资料解释软件Discovery的使用,追踪解释层位数据;二、通过surfer软件学习成图。使学生对地震常用的解释软件有一个初步的认识,能为毕业后从事地震勘探工作奠定良好的基础。地震解释课程设计是勘查技术与工程专业教学中的一个重要的实践性训练环节。通过实验主要训练学生对地震资料进行常规构造解释的实际能力,具体要使学生达到: 1.了解人机联作的基本知识; 2.初步学会地震解释软件的操作流程(工区建立、资料加载、合成记录制作、层位标定、层位追踪、断层解释、断点组合); 3. 进一步巩固和掌握地震资料解释的基本功; 4.初步学会地震成果的地质分析; 5.初步学会编写地震资料解释文字报告;

C语言课程设计图书管理系统课程设计报告

C语言课程设计 图书管理系统 Books Management System 学生姓名张朝柱 学院名称徐州工程学院学号140 班级13计转本 专业名称计算机科学与技术 指导教师李子龙 2016年5月10日

一、需求分析 为了满足图书管理的要求,通过计算机技术给图书管理人员和读者借、还书带来便利。使用c语言编写了图书管理系统。本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。实现了图书馆内管理的一般功能,包括查询、借书、还书、添加、删除、修改图书信息等。所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。图书信息包括编号、书名、作者、数量、在库状态等。图书信息的录入和显示要求有一定的规范格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、借阅、还书等基本操作。整个程序实现顺序表操作,对图书信息的操作逐个地进行,一个图书信息的更改不应影响其他的图书记录。 二、算法设计: 1.设计思想: 整个系统制造的而过程中,涉及了较多C语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。进一步加深、巩固了所学的专业的基本理论知识,培养了综合分析问题、解决问题的能力。在设计程序时,实现了程序的模块化、结构化。在主函数中调用各种子函数,操作界面简单,易操作。 2,设计表示: (1)、整个系统除了主函数外,另外还有各种功能子函数,利用无限次循环语句while()和选择语句swithch()实现各个子函数的调用,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。主要实现了图书的录入、存储、查询、借书、还书、显示库存等功能。 (2)、void Book_Entering(struct SqList &SL);这是一个录入图书信息的函数,它主要实现了顺序表的创建,并且在创建过程中从文件读取信息到顺序表中,以用于后面其他函数的操作。它引用了一个顺序表SL。其他函数调用时只需传入顺序表头即可。 (3)、int main(void);这五个函数时整个图书管理系统的全部菜单函数,Book_Entering();为系统主界面,进入时可选择进入程序和退出程序。menu1();为进入程序时显示的功能菜单,在此菜单可以选择录入、保存图书信息,也可选择进入其他子系统。Book_Inquire();此菜单为进入图书管理系统的菜单,在此可以选择添加、删除、修改图书等操作。cxmenu();为查询系统的菜单,在此可以选择按书名、编号、作者等方式进行查询图书。jhmenu();为借书还书的子菜单,在此可以选择借书还书操作。操作完成后按提示信息进行文件的保存操作。 (4)、void Book_Inquire(struct SqList &SL);这个函数为顺序表的输出函数,把顺序表的头传给函数后,可输出整个顺序表的所有信息。、

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");

数据结构课程设计报告范例

Guangxi University of Science and Technology 课程设计报告 课程名称:算法与编程综合实习 课题名称: 姓名: 学号: 院系:计算机学院 专业班级:通信121 指导教师: 完成日期:2012年12月15日

目录 第1部分课程设计报告 (3) 第1章课程设计目的 (3) 第2章课程设计内容和要求 (4) 2.1 问题描述 (4) 2.2 设计要求 (4) 第3章课程设计总体方案及分析 (4) 3.1 问题分析 (4) 3.2 概要设计 (7) 3.3 详细设计 (7) 3.4 调试分析 (10) 3.5 测试结果 (10) 3.6 参考文献 (12) 第2部分课程设计总结 (13) 附录(源代码) (14)

第1部分课程设计报告 第1章课程设计目的 仅仅认识到队列是一种特殊的线性表是远远不够的,本次实习的目的在于使学生深入了解队列的特征,以便在实际问题背景下灵活运用它,同时还将巩固这种数据结构的构造方………………………………………………………………………………………………………………………………………………………………………………………..(省略)

第2章课程设计内容和要求 2.1问题描述: 迷宫问题是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒子中设置了许多墙,对行进方向形成了多处阻挡。盒子仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。对同一只老鼠重复进行上述实验,一直到老鼠从入口走到出口,而不走错一步。老鼠经过多次试验最终学会走通迷宫的路线。设计一个计算机程序对任意设定的矩形迷宫如下图A所示,求出一条从入口到出口的通路,或得出没有通路的结论。 图A 2.2设计要求: 要求设计程序输出如下: (1) 建立一个大小为m×n的任意迷宫(迷宫数据可由用户输入或由程序自动生成),并在屏 幕上显示出来; (2)找出一条通路的二元组(i,j)数据序列,(i,j)表示通路上某一点的坐标。 (3)用一种标志(如数字8)在迷宫中标出该条通路; (4)在屏幕上输出迷宫和通路; (5)上述功能可用菜单选择。

课程设计报告模版

课程设计报告模版

《城市排水处理》 课程设计报告 系别:城市建设系 专业班级:给水排水0601班 学生姓名: 指导教师:段泽琪 (课程设计时间: 6月15日—— 6月19日) 华中科技大学武昌分校

目录 1.课程设计目的 (1) 2.课程设计题目描述和要求 (1) 3.课程设计报告内容 (3) 3.1污水处理工艺方案比较 (3) 3.2主要污水处理构筑物选型 (6) 3.3污水处理构筑物的主要设计参数 (7) 3.4污水处理辅助构筑物设计 (8) 3.5污水处理厂平面布置设计 (8) 3.6 污水处理厂高程布置设计 (9) 3.7 设计计算………………………………………………………………………

10 4.总结……………………………………………………………………………页码 参考文献…………………………………………………………………………页码 (要求:目录题头用三号黑体字居中书写,隔行书写目录内容。目录中各级题序及标题用小四号黑体)

1. 课程设计目的 (1) 经过污水处理厂课程设计,巩固学习成果,加深对《水污染控制》课程内容的学习与理解,使学生学习使用规范、手册与文献资料,进一步掌握设计原则、方法等步骤,达到巩固、消化课程的主要内容; (2) 锻炼独立工作能力,对污水处理厂的主体构筑物、辅助设施、计量设备及污水厂总体规划、管道系统做到一般的技术设计深度,培养和提高计算能力、设计和绘图水平; (3) 在教师指导下,基本能独立完成一个中、小型污水处理厂工艺设计,锻炼和提高学生分析及解决工程问题的能力。 2.课程设计题目描述和要求 2.1 设计题目描述 (1) 设计题目 某城市污水处理厂工艺初步设计。 (2) 设计内容 根据任务书所给定的资料,综合运用所学的基础、专业基础和专业知识,设计一个中小型污水处理厂。 ①确定污水处理方法和工艺流程; ②选择各种处理构筑物形式,并进行工艺设计计算(计算书中要附计算草图); ③估算各辅助构筑物的平面尺寸; ④进行污水厂平面布置和高程布置。

c语言语言课程设计报告

上海应用技术学院 课程设计 2011~ 2012学年第二学期 设计题目成绩记录簿 院(系)计算机科学与信息工程学院 专业计算机应用技术 班级 11104114 学号 1110411414 学生姓名蒋佳琴 设计时间 2012.06.25 -2012.07.06 指导教师马智娴 提交日期 2012.07.06

上海应用技术学院课程设计任务书 指导教师(签名):马智娴教研室主任(签名):马智娴2012年6 月25日2012年6月25日

目录 1 设计目的 (5) 2 功能描述 (5) 2.1模块功能 (5) 2.2流程图 (6) 3 总体设计 (13) 3.1 功能模块设计 (13) 3.2 数据结构设计 (13) 3.3 函数功能描述 (13) 4 程序实现 (14) 4.2 运行结果 (25) 5课程设计总结 (28)

成绩记录簿 1. 设计要求: 基本功能 a) 添加成绩 b) 删除成绩 c) 查询学生成绩 d) 查询班级成绩 e) 退出 拓展功能 a) 写入文件 b) 读取文件 创新(自拟)功能: 程序实现的其它功能由个人自拟。 2. 设计要求具体说明 基本功能: 成绩记录簿中记录以下数据: 学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分; 输入信息时要检查数据项学号、课程编号、成绩、学分的合法性,学号:8位数字;课程编号:5位数字;成绩:0 ~ 100 之间的整数,学分: 1~ 5之间的实型数。 添加成绩:需要输入学生的学号或姓名、课程编号及成绩,如已有该门课程成绩给出提示; 查询(班级或个人)成绩: a) 查询个人成绩:以学号或姓名作为关键字,可查询一个学生的所有成绩,和已完成 的总学分。 b) 查询班级成绩:以课程编号为关键字,成绩表后面要统计平均分、及格率及全班同 学不同课程在不同分数段分布的人数及百分比。 拓展功能: a) 程序启动时先从文件读入数据,如果文件中没有数据则给出提示; b) 每次修改的数据写入文件。 3. 提示 定义合适的结构体类型,使用链表或数组的方式组织数据。

单片机课程设计报告模板

单片机系统课程设计报告 专业:自动化 学生姓名: 学号: 指导教师: 完成日期:2011 年 3 月17 日

目录 1 设计任务和性能指标 (3) 1.1设计任务............................................................................ 错误!未定义书签。 2 设计方案 (4) 2.1任务分析 (4) 2.2方案设计 (4) 3 系统硬件设计 (5) 3.1时钟的电路设计 (5) 3.2复位电路设计 (5) 3.3灯控电路设计 (5) 3.4倒计时电路设计 (6) 3.5按键控制电路设计 (7) 4 系统软件设计 (8) 4.11秒定时 (8) 4.2定时程序流程 (8) 4.3交通灯的设计流程图 (9) 4.4定时器0与中断响应 (10) 5 仿真及性能分析 (10) 5.1仿真结果图 (11) 5.2仿真结果与分析 (12) 6 心得体会 (13) 参考文献 (14) 附录1 系统原理图 (15) 附录2 系统PCB图 .................................................................. 错误!未定义书签。附录3 程序清单 (17)

1.1设计任务 利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯。如图5.1所示。设东西向为主干道,南北为支干道。 图5.1 交通灯示意图 1. 基本要求 (1) 主干道处于常允许通行的状态,支干道有车来时才允许通行。主干 道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。 (2) 主、支干道均有车时,两者交替允许通行,主干道每次放行30秒, 支干道每次放行20秒,设立30秒、20秒计时、显示电路。 (3) 在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡。 黄灯亮时,原红灯按1Hz 的频率闪烁。 (4) 要求主支干道通行时间及黄灯亮的时间均可在0~99秒内任意设置。 2. 选做 (1) 可设置紧急按钮,在出现紧急情况时可由交警手动实现全路口车辆 禁行而行人通行状态,即主干道和支干道均为红灯亮。 (2) 实现绿波带。所谓‘绿波带’,是指在一定路段,只要按照规定时速, 就能一路绿灯畅行无阻。“绿波带”将根据道路车辆行驶的速度和路口间的距离,自动设置信号灯的点亮时间差,以保证车辆从遇到第一个绿灯开始,只要按照规定速度行驶,之后遇到的信号灯将全是绿灯。 南 北 东 西

C语言课程设计报告烟花绽放

课程设计报告书设计题目烟花绽放 系别计算机工程系 专业计算机科学与技术 班级 姓名 指导教师 设计任务下达日期2011年 12 月 24 日 设计时间2011年12月26日至 2010年12月30日 课程设计任务书

一、目的和意义 本课程设计是《C语言程序设计》课程的后继教学环节, 通过研究C语言中图形编程技术或者声音控制等其它方面的多媒体编程技术,一方面拓展学生在这些领域的C语言知识,另一方面使学生在运用所学理论知识进行实践开发,更好的培养学生综合学习能力和实践能力。本次课程设计学生可以根据喜好,可以利用复杂的数据类型实现成绩管理系统等小型的综合应用程序。 二、题目(可从下面题目中任选一个) 1、C语言的图形编程应用 设计实现如菜单、图形的显示,再如动画和小游戏。 2、简易电子琴模拟程序的实现 为实现在键盘模拟电子琴设计的程序。由学生自行设计并且实现。 3、成绩管理程序 学生本人设计具体方案,然后改进和编码实现。 三、课程设计报告书应包括的主要内容 1、介绍概要的思路和设计方案,程序的总体功能和模块划分。 2、主要算法的介绍及流程图,主要功能的实现手段的说明文档。 3、对于有设想但最终未实现的功能的大致编程思路的阐述和设计过程中的启发。 四、进度要求 1、设计时间:2011年12月19日至2011年12月25日 2、编写课程设计报告书:2011年12月26日至2011年12月29日 3、提交报告及答辩时间:2011年12月30日 专科 四、进度要求 1、设计时间:2011年12月26日至2011年12月28日 2、编写课程设计报告书:2011年12月29日 3、提交报告及答辩时间:2011年12月30日 目录

课程设计报告模板

《软件工程》课程设计报告 课程设计题目: 电子科技大学中山学院计算机学院班级: 组长: 其他成员: 指导教师: 实验地点: 完成起止日期:1-16

目录 一、系统可行性研究报告....................................... 错误!未定义书签。 1.引言................................................... 错误!未定义书签。 2 现行系统调查............................................ 错误!未定义书签。 3 新系统概述.............................................. 错误!未定义书签。 4 可行性综合评述.......................................... 错误!未定义书签。 5.方案选择............................................... 错误!未定义书签。 6.项目进度计划(Software Project Schedule).............. 错误!未定义书签。 二、需求规格说明书............................................ 错误!未定义书签。 1、用例模型(用例图)..................................... 错误!未定义书签。 2、用例文档描述........................................... 错误!未定义书签。 3、用例实现(时序图+类图)................................ 错误!未定义书签。 三、设计规格说明书............................................ 错误!未定义书签。 四、测试设计.................................................. 错误!未定义书签。 1、测试范围............................................... 错误!未定义书签。 2、测试覆盖设计........................................... 错误!未定义书签。 3、测试用例............................................... 错误!未定义书签。 五、工作总结.................................................. 错误!未定义书签。 1、本人在项目实现中的分工................................. 错误!未定义书签。 2、个人遇到的困难与获得的主要成果......................... 错误!未定义书签。 3、课程设计完成结果分析与个人小结......................... 错误!未定义书签。 六、附录...................................................... 错误!未定义书签。 1、软件配置............................................... 错误!未定义书签。 2、个人完成的程序模块..................................... 错误!未定义书签。 3、文档清单............................................... 错误!未定义书签。

相关文档
相关文档 最新文档