当前位置:文档之家› C++语言课程设计报告

C++语言课程设计报告

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

南京航空航天大学

《C++语言程序设计》课程设计

实验报告

题目:简单通讯录管理

班级: 01***** 学号: 01******* 姓名: **

成绩:

指导教师: *** 日期: 2013 年 6 月 19 日

目录

一、基本信息: (2)

二、需求分析: (2)

三、软件的主要功能: (2)

四、相关思考 (2)

1、遇到的困难与解决方案:..................................................................

2、设计感想与心得 ................................................................................

3、新增功能...........................................................................................

五、主要模块分析 (3)

六、程序源代码 (4)

1、头文件 (4)

2、类 (4)

3、链表成员函数 (5)

4、其他函数 (11)

七、典型测试数据组 (17)

一、基本信息

1) 软件信息

软件名“简单通讯录管理”;

完成时间:3天。

2) 项目分工

独立完成。

二、需求分析

可以管理简单的通讯录;使用C++设计方便,操作简单;

三、程序功能

1、添加功能:

批量添加基本信息,包括个人的姓名、办公室号码、住宅号码、手机号码、email地址等信息。

2、删除功能:

按姓名对个人的信息进行删除

3、清除全部员工信息:

能够对于全部人员的信息进行删除

4、显示功能:

显示所有人员的主要信息,例如包括姓名、办公室号码、住宅号码、手机号码、email地址

5、查找功能:

根据你键入的姓名,显示其详细信息

6、修改功能:

对已输入的信息进行修改

7、排序功能:

可按姓名和办公室号码排序

8、导入导出功能:

可以导出文本或从文本导入

四、相关思考

(1)遇到的困难及解决方案

② 在做导入导出文件部分时经常出现乱码。解决方案:检查打开方式是否正确;检查读写操作是否正

确;

②涉及查找操作时如果输入错误,程序会自动退出,数据不会保存。解决方案:将输入操作从条件语句换成循环语句。

(2)设计感想与心得

该课程设计十分考验人的耐心,需要付出大量时间和精力。设计过程中遇到错误是在所难免的,关键要冷静下来去思考错误在哪里,仔细认真的调试,找出错误所在,才能从中收获,同时对C++编程运用更加熟练和得心应手;虽然我是个人设计的,但是我依然感受到团队合作的重要性。通过同学间的讨论,我们可以从中学到更多。

(3)新增功能

①支持同时输入多个记录,输入完成输#即可返回,无须多输入无用数据;通过循环语句实现;

②支持输入同名文件;

③支持进入时读取数据退出时保存数据(可自动创建二进制文件addrlist.dat);

④当查找、修改或删除记录时支持输入报错,可选择继续输入或输入#返回主菜单;

⑤支持一键删除记录。

五、主要模块分析

1. 添加模块

系统将提示用户输入新添加的记录的信息,插入在链表中,

2. 显示模块

显示模块将输出所有人的主要资料。

3. 修改模块

首先由用户输入要修改的员工的姓名,然后系统用修改函数查找,显示此人的资料,然后系统提示用户输入需要修改的项目和新的资料。

4. 查找模块

首先由用户输入要查找的员工姓名,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的人的资料。

5. 删除模块

首先由用户输入要删除的单个成员姓名,然后调用删除函数,删除该名成员的资料。

6. 清空模块

将记录清空,将链表清空

7、排序模块:

用户输入1或者2可按姓名或办公室号码排序

8、导入导出模块:

用户输入文件名可导出文本或从文本导入

9、退出模块:

用户输入0,退出前系统保存当前记录至二进制文件中

六.程序源代码

/*1、头文件*/

# include

# include

# include

# include

# include

/*2、类*/

class Node //结点类

{char Name[10];

int OfficePhone;

int HomePhone;

char MobilePhone[15];

char Email[20];

Node *Next;

public:

Node(char *name=" ",int op=0,int hp=0,char *mp=" ",char *email=" ",Node *next=NULL);

void Show() //显示结点内容{

cout<

<

}

void SetName(char *name) { strcpy(Name,name); } //重置姓名

void SetOfficePhone(int op) { OfficePhone=op; } //重置办公室号码

void SetHomePhone(int hp) { HomePhone=hp; } //重置家庭号码

void SetMobilePhone(char *mp) { strcpy(MobilePhone,mp); } //重置手机号码

void SetEMail(char *email) { strcpy(Email,email); } //重置email

friend class AddrList; //将类AddrList设为友元类friend void add(AddrList &); //将添加记录函数设为友元函数

};

Node::Node(char *name,int op,int hp,char *mp,char *email,Node *next)//构造函数

{

strcpy(Name,name);

OfficePhone=op;

HomePhone=hp;

strcpy(MobilePhone,mp);

strcpy(Email,email);

Next=NULL;

}

class AddrList //链表类

{

Node *HeadPtr;

Node *TailPtr;

int Tag; // 排序标志,当Tag=1,表示按姓名排序;默认按姓名排序。

// 当Tag=2,表示按办公室电话排序。

public:

AddrList(Node *headptr=NULL,Node *tailptr=NULL,int tag=1);

//构造函数,创建空链表,将Tag的值置为1

void AddTail(Node *p); //将p指向的结点加入到链表尾部

Node * LookUp(char *name); //按姓名查找结点,返回该结点指针

int Delete(char *name); //删除指定姓名的结点

void Sort(int tag); //按tag指定的关键字重新排序

void ShowAll(); //显示全部结点,每10个显示一屏

void SetTag(int t); //置Tag的值

int GetTag(); //取Tag的值

int Count(); //统计链表中结点个数

Node * GetHeadPtr(); //取首指针

~AddrList(); //释放链表空间

void CreateList(char *filename); //从二进制文件中读入数据,构造链表

void WriteToFile(char *filename); //将链表中数据写入指定的二制文件

void AddFromTxtFile(char *filename); //从文本文件中提取数据到链表

void WriteToTxtFile(char *filename); //将链表写到文本文件中

};

/*3、成员函数*/

AddrList::AddrList(Node *headptr,Node *tailptr,int tag)

{ //构造函数,创建空链表,将Tag的值置为1 HeadPtr=headptr;

TailPtr=tailptr;

Tag=tag;

}

void AddrList::AddTail(Node *p) //将p指向的结点加入到链表尾部

{

if(!HeadPtr) //向空链表中加入结点

{

HeadPtr=new Node;

strcpy(HeadPtr->Name,p->Name);

HeadPtr->OfficePhone=p->OfficePhone;

HeadPtr->HomePhone=p->HomePhone;

strcpy(HeadPtr->MobilePhone,p->MobilePhone);

strcpy(HeadPtr->Email,p->Email);

HeadPtr->Next=NULL;

TailPtr=HeadPtr;

}

else //向非空链表中加入结点{Node *p1=TailPtr;

TailPtr=new Node;

strcpy(TailPtr->Name,p->Name);

TailPtr->OfficePhone=p->OfficePhone;

TailPtr->HomePhone=p->HomePhone;

strcpy(TailPtr->MobilePhone,p->MobilePhone);

strcpy(TailPtr->Email,p->Email);

TailPtr->Next=NULL;

p1->Next=TailPtr;}

}

int AddrList::Delete(char *name) //删除指定姓名的结点

{

Node *p1,*p2;

p1=HeadPtr;

while(p1)

{

if(!strcmp(p1->Name,name))

{

if(HeadPtr==p1)HeadPtr=p1->Next;

else p2->Next=p1->Next;

delete p1;

return 1;

}

p2=p1;

p1=p1->Next;

}

cout<<"Not Found\n";

return 0;

}

Node * AddrList::LookUp(char *name) //按姓名查找结点,返回该结点指针

{

Node *p=HeadPtr;

while(p)

{

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

p=p->Next;

}

cout<<"Not Found!Input again!(press # to return)\n";

return 0;

}

void AddrList::Sort(int tag) //按tag指定的关键字重新排序{

Node *p1,*p2,*p,*pp;

p=HeadPtr;

switch(tag)

{

case 1: //按姓名排序while(p)

{

p1=HeadPtr;

pp=p;

p=pp->Next;

while(p&&!(p1==p)&&(strcmp(p->Name,p1->Name)>=0))

{

p2=p1;

p1=p1->Next;

}

if(p&&!(p1==p))

{

pp->Next=p->Next;

if(strcmp(p->Name,HeadPtr->Name)<0)HeadPtr=p;

else p2->Next=p;

p->Next=p1;

}

}

if(TailPtr)if(TailPtr->Next)TailPtr=TailPtr->Next;

break;

case 2: //按办公室号码排序while(p)

{

p1=HeadPtr;

pp=p;

p=pp->Next;

while(p&&!(p1==p)&&(p->OfficePhone)>=(p1->OfficePhone))

{

p2=p1;

p1=p1->Next;

}

if(p&&!(p1==p))

{

pp->Next=p->Next;

if((p->OfficePhone)<(HeadPtr->OfficePhone))HeadPtr=p;

else p2->Next=p;

p->Next=p1;

}

}

if(TailPtr)if(TailPtr->Next)TailPtr=TailPtr->Next;

}

}

void AddrList::ShowAll() //显示全部结点,每10个显示一屏{

int x=0;

Node *p=HeadPtr;

cout<

<

<

<

<

while(p)

{

if(x==10)

{x=0;system("pause");system("cls");

cout<

<

<

<

<

p->Show();

p=p->Next;

x++;

}

}

void AddrList::SetTag(int t) //置Tag的值

{ Tag=t; }

int AddrList::GetTag() //取Tag的值

{ return Tag; }

int AddrList::Count() //统计链表中结点个数

{

int count=0;

Node *p=HeadPtr;

while(p){count++;p=p->Next;} //每一个结点count加一

return count;

}

Node * AddrList::GetHeadPtr() //取首指针

{ return HeadPtr; }

AddrList::~AddrList() //释放链表空间

{

Node *p;

while(HeadPtr)

{

p=HeadPtr;

HeadPtr=HeadPtr->Next;

delete p;

}

}

void AddrList::CreateList(char *filename) //从二进制文件中读入数据,构造链表{

Node *p;

int a;

p=new Node;

fstream file(filename,ios::in|ios::binary);

if(!file)

{

cout<<"Cannot open input file:addrlist.dat"<

exit(1);

}file>>a;

while(file>>p->Name)

{file>>p->OfficePhone>>p->HomePhone>>p->MobilePhone>>p->Email;p->Next=0;AddTail(p);} delete p;

file.close();

}

void AddrList::WriteToFile(char *filename) //将链表中数据写入指定的二进制文件

{

Node *p=HeadPtr;

fstream file(filename,ios::out|ios::binary);

if(!file)

{

cout<<"Cannot open output file:addrlist.dat"<

exit(2);

}

if(Count())

{file<

while(p)

{file<Name<OfficePhone<HomePhone<MobilePhone<Email<

p=p->Next;}}

file.close();

}

void AddrList::WriteToTxtFile(char *filename) //将链表写到文本文件中

{

Node *p=HeadPtr;

fstream file(filename,ios::out);

file<

while(p)

{file<Name<OfficePhone<HomePhone <MobilePhone<Email<

p=p->Next; }

file.close();

}

void AddrList::AddFromTxtFile(char *filename) //从文本文件中提取数据到链表

{

Node *p;

int a;

p=new Node;

fstream file(filename,ios::in|ios::nocreate);

if(!file)

{cout<<"Cannot open input file:"<

system("pause");

exit(2); }

file>>a;

while(a--)

{file>>p->Name>>p->OfficePhone>>p->HomePhone>>p->MobilePhone>>p->Email;p->Next=0;AddTa il(p);}

delete p;

file.close();

}

/*4、其它函数*/

void DisplayMenu() //显示菜单

{

char *menu[]={ " ",

" ",

" ",

" ",

" ***********通讯录管理系统************* ",

" ",

" 1. Add Record ",

" 2. Delete Record",

" 3. Display All Record",

" 4. Query by Name",

" 5. Modify Record",

" 6. Add from a Text File",

" 7. Write to a Text File",

" 8. Sort",

" 9. Delete All",

" 0. Quit",

" 请选择(0--9) : ",

" ",

" ************************************** ",

NULL } ;

system("cls");

for (int i=0;menu[i];i++)

cout << menu[i]<

}

void ModifyMenu() //显示修改菜单

{

char *menu[]={ " ",

" ",

" ",

" ",

" **************选择修改项************* ",

" ",

" 1. Modify Name",

" 2. Modify OfficePhone",

" 3. Modify HomePhone",

" 4. Modify MobilePhone",

" 5. Modify EMail",

" ",

" ************************************** ",

NULL } ;

system("cls");

for (int i=0;menu[i];i++)

cout << menu[i]<

}

void add(AddrList &addrlist) //按当前Tag标志插入结点,插入结点后,链表仍然保持升序

{

system("cls");

Node *p;

p=new Node;

cout<<"请按Name、OfficePhone、HomePhone、MobilePhone、Email顺序输入数据\n以姓名为#时结束\n";

cin>>p->Name;

while(strcmp(p->Name,"#")) //需返回时仅需输入#

{

cin>>p->OfficePhone>>p->HomePhone>>p->MobilePhone>>p->Email;

p->Next=NULL;

addrlist.AddTail(p);

cin>>p->Name;

}

addrlist.Sort(addrlist.GetTag());

delete p;

}

void del(AddrList &addrlist) //删除一个结点

{

char a,name[10];

Node *p;

cout<<"输入删除姓名\n";

do{

cin>>name;

system("cls");

if(!strcmp(name,"#"))break;

p=addrlist.LookUp(name);

}while(!p);

if(strcmp(name,"#"))

{p->Show();

cout<<"确认删除(N/Y)\n";

cin>>a;

switch (a)

{

case 'y':

case 'Y':cout<<"删除成功"<

case 'N':

case 'n':cout<<"取消删除"<

}

system("pause");}

}

void showall(AddrList &addrlist) //显示所有结点

{

system("cls");

addrlist.ShowAll();

system("pause");

}

void query(AddrList &addrlist) //按姓名查找一个结点

{

Node *p;

char name[10];

cout<<"输入查找姓名\n";

do{

cin>>name;

system("cls");

if(!strcmp(name,"#"))break;

p=addrlist.LookUp(name);

}while(!p);

if(strcmp(name,"#"))

{p->Show();

system("pause");}

}

void modify(AddrList &addrlist) //修改一个结点{

int a=0;

Node *p;

char name[10];

cout<<"输入要修改的姓名\n";

do{

cin>>name;

system("cls");

if(!strcmp(name,"#"))break;

p=addrlist.LookUp(name);

}while(!p);

if(strcmp(name,"#"))

{

p->Show();

ModifyMenu();

cin>>a;

switch(a)

{

default:break;

case 1:

char name1[10];

cout<<"输入修改内容\n";

cin>>name1;p->SetName(name1);

cout<<"修改成功"<

case 2:

int op;

cout<<"输入修改内容\n";

cin>>op;p->SetOfficePhone(op);

cout<<"修改成功"<

case 3:

int hp;

cout<<"输入修改内容\n";

cin>>hp;p->SetHomePhone(hp);

cout<<"修改成功"<

case 4:

char mp[15];

cout<<"输入修改内容\n";

cin>>mp;p->SetMobilePhone(mp);

cout<<"修改成功"<

case 5:

char email[20];

cout<<"输入修改内容\n";

cin>>email;p->SetEMail(email);

cout<<"修改成功"<

}system("pause");

}

}

void addfromtxtfile(AddrList &addrlist) //从正文文件增加记录{

char *filename;

filename=new char[20];

cout<<"input the filename\n";

cin>>filename;

addrlist.AddFromTxtFile(filename);

addrlist.Sort(addrlist.GetTag());

delete filename;

cout<<"导入成功并排序"<

system("pause");

}

void writetotxtfile(AddrList &addrlist) //将链表写到正文文件中{

char *filename;

filename=new char[20];

cout<<"input the filename\n";

cin>>filename;

addrlist.WriteToTxtFile(filename);

delete filename;

cout<<"导出成功"<

system("pause");

}

void sort(AddrList &addrlist) // 按姓名或办公室电话排序

{

int a;

cout<<"按姓名(1)或办公室电话(2)排序\n";

cin>>a;

addrlist.SetTag(a);

addrlist.Sort(a);

cout<<"已按"<

system("pause");

}

void delall(AddrList &addrlist) //删除所有结点

{

addrlist.~AddrList(); //主动调析构函数删除结点,链表还原为空链表cout<<"删除成功"<

system("pause");

}

void quit(AddrList &addrlist) //退出前将链表写入二进制文件中

{

addrlist.WriteToFile("addrlist.dat");

exit(0);

}

void main()

{

int choice=-1,state;

AddrList addrlist;

addrlist.CreateList("addrlist.dat"); //从二进制文件中读入数据,构建链表

while (choice)

{

DisplayMenu(); //显示主菜单

cin>>choice;

state=cin.rdstate();

if (state) //处理非法输入,如输入一个字符是非法的{ char str[80]; cin.clear(); cin.getline(str,80); choice=10;}

switch (choice)

{ case 1: add(addrlist); break;

case 2: del(addrlist); break;

case 3: showall(addrlist);break;

case 4: query(addrlist); break;

case 5: modify(addrlist); break;

case 6: addfromtxtfile(addrlist); break;

case 7: writetotxtfile(addrlist); break;

case 8: sort(addrlist); break;

case 9: delall(addrlist); break;

case 0: quit(addrlist);

default: ; }

}

}

七、典型测试数据组

(执行程序,显示主菜单)

***********通讯录管理系统*************

1. Add Record ",

2. Delete Record",

3. Display All Record",

4. Query by Name",

5. Modify Record",

6. Add from a Text File",

7. Write to a Text File",

8. Sort",

9. Delete All",

0. Quit",

请选择(0--9) : ",

**************************************

输入:1

1

请按Name、OfficePhone、HomePhone、MobilePhone、Email顺序输入数据以姓名为#时结束

输入:#

(显示主菜单)

输入:6

6

input the filename

输入:addrlist.txt

(若文件不存在,输出:Cannot find input file:addrlist.txt

请按任意键继续....)

addrlist.txt

导入成功并排序

请按任意键继续....

输入:

(显示主菜单)

输入:7

input the filename

输入:file.txt

file.txt

导出成功

请按任意键继续....

输入:

(显示主菜单)

输入:8

按姓名(1)或办公室电话(2)排序

输入:2

已按2方案排序

请按任意键继续....

输入:

(显示主菜单)

输入:2

2

输入删除姓名

若:输入:#

(显示主菜单)

若:输入:吴一

(显示吴一数据)

确认删除(N/Y)

输入:Y

Y

删除成功

请按任意键继续....

输入:

(显示主菜单)

输入:3

(显示全部记录)

请按任意键继续....

输入:

(显示主菜单)

输入:9

9

删除成功

请按任意键继续....

输入:

(显示主菜单)

输入:0

(保存数据至addrlist.dat中并退出)

汇编语言课程设计

沈阳大学

2.3 MASM的介绍 MASM是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32Asm是Windows下开发汇编的利器。它与windows平台的磨合程度非常好,但是在其他平台上就有所限制,使用MASM的开发人员必须在windows下进行开发,历经二三十年的发展,目前MASM的版本已升至6.15,支持MMX Pentium、Pentium II、Pentium III及Pentium 4等指令系统。 2.4总体设计功能 本次课程设计的内容是采用汇编语言设计一个运行于计算机的“霓虹灯”的模拟显示 程序,由$及*字符相间,从两侧向中间螺旋汇聚直至形成一个矩形,这就要求该霓虹灯能够动态地进行变化;霓虹灯模拟显示程序主要是进行程序循环调用,可以通过CMP、JMP、JZ、RET等命令进行跳转。由于是霓虹灯的模拟显示,因此在进行程序循环调用前需要进行数据段定义,以使子程序在进行调用时能够根据数据段的定义来执行,最后显示结果。 定时器中断处理程序:计数器中断的次数记录在计数单元count中,由于定时中断的引发速率是每秒18.2次,即计数一次为55ms,当count计数值为18时,sec计数单元加一(为1秒)。 视频显示程序设计:一般由DOS 或BIOS调用来完成。有关显示输出的DOS功能调用不多,而BIOS调用的功能很强,主要包括设置显示方式、光标大小和位置、设置调色板号、显示字符、显示图形等。用INT 10H中断即可建立某种显示方式。用DOS功能调用显示技术,把系统功能调用号送至AH,把程序段规定的入口参数,送至指定的寄存器,然后由中断指令INT 21H来实现调用。 键盘扫描程序设计:利用DOS系统功能调用的01号功能,接受从键盘输入的字符到AL寄存器,以及检测键盘状态,有无输入,并检测输入各值。 2.5详细功能设计 2.5.1主程序功能 主程序通过调用各个子程序来实现清屏,改变图形等功能,具体调用过程如图1所示。 沈阳大学

汇编语言程序设计实验报告

微机原理实验报告 实验名称汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH, 97H,64H,BBH,7FH,0FH,D8H。编程并显示结果:如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H 的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD 码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再 将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 第1页

99223344H = xxxxxxxxH 四、实验代码及结果 实验代码见代码附录 1.1程序运行结果 图1 无符号最大值结果截图 1.1 程序运行结果

图2 有符号最大值截图2.0 程序运行结果

图3 BCD码显示3.0 程序运行结果

图4 ASCII码显示4.0 程序运行结果

图5 移动次数显示5.0 程序运行结果

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); //调用函数为新局初始化,第二个

高级语言程序设计课程设计报告

高级语言程序设计课程 设计报告 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

2013-2014学年第二学期 《高级语言程序设计》 课程设计报告 题目:班级档案管理系统 专业:网络工程 班级:二 姓名:朱和芳 指导教 师:孙妍姑 成绩: 计算机与信息工程系 2014年5月11日 班级档案管理系统 设计总说明 一、设计目的 运用计算机语言设计班级档案管理,通过此次课程设计,加深对此课程基本知识的理解,提高综合运用知识的能力;掌握本课程的主要内容、课程设计或撰

写小论文的步骤和方法;以提高独立分析问题、解决问题的能力,逐步增强实际工程训练。 二、设计内容 对一个有N个学生的班级,通过该系统实现对该班级学生基本信息进行录入、显示、修改、删除、保存等操作的管理。 三、设计方法 结合C语言的有关知识,查阅资料,对班级档案管理系统的内容进行构思和设计,在MicrosoftVisualC++平台上完成设计,并进行调试。

目录 第一章绪论 (5) 第二章需求分析 问题描述 (6) 功能要求 (6) 算法提示 (6) 项目开发的目的 (7) 第三章概要设计 程序模块的组成 (8) 班级档案管理系统 (8) 各个程序的功能介绍 (9) 系统结构图 (9) 第四章模块设计分析 程序的模块组成 (10) 各个函数的主要功能 (10) 系统的功能模块的划分 (10) 总流程图 (12) 功能流程图 (13) 第五章测试 存在的问题 (14) 测试方案 (14) 第六章使用说明书 (15)

第七章总结 (17) 附录 A参考文献 (18) B源程代码 (20)

《C语言课程设计》实验报告

《C语言课程设计》报告 学院:信息工程学院 专业:信息管理与信息系统设计题目:通讯录程序设计班级:2016级一班 学号:201601510138 姓名:张进步 指导教师:杨菲菲 时间:12.24

学生通讯管理系统 1.1 设计目的 学习如何实现一个复杂的信息管理系统——学生通讯管理系统,能够实现老师对学生基本信息的记录、查询、修改。 通过本次学习,读者能够掌握: (1)如何设计主菜单和子菜单,以及各级菜单的响应与返回操作; (2)如何合理设计不同的结构体对系统中多个实体进行封装; (3)如何合理设计多个结构体数组管理不同实体对应的数据; (4)如何对复杂的函数过程进行拆分,用多个子函数进行封装; (5)进一步熟悉文件读取的相关操作。 1.2需求分析 本章的学生信息管理系统的主要功能面向老师,能够实现对学生信息进行录入、修改、查询。 学生信息方面的功能需求如下。 (1)新增学生信息,包括姓名、籍贯、电话号码(2)、电子邮箱。 (2)修改学生信息,可以选择对某个学生的某个属性值进行修改。 (3)查找学生信息,即输入要查找的学生学号,实现学生信息查询。 (4)显示所有学生信息,并以列表的形式清晰呈现。 1.3总体设计 系统功能结构图如图所示;学生信息管理系统 学生信息管理模块:包括4个子模块,分别是学生信息的录入,学生信息的修改,学生信息的查询,学生信息的浏览。

1.4详细设计与实现 1.4.1 预处理及数据结构 1.头文件 本项目涉及4个头文件,其中#include使用字符串的函数的时候需要添加此头文件,#include #include /*system使用的函数*/ #include /*getchar、getch函数使用的头文件*/ #include /*strcmp比较2个字符串是否一样*/ 2.宏定义 LEN sizeof(struct student)表示struct student的长度。DATA是按格式输出结构体的各项数据,能够方便输出操作,减少代码量。 #define_CRT_SECURE_NO_W ARNINGS #include #include #include #include #define LEN sizeof(struct student) #define FORMAT "%-8d%-15s%-15s%-15d%-15d%-15s\n" #define DATA stu[i].numb,stu[i].name,stu[i].nat,stu[i].num1,stu[i].num2,stu[i].mail 3.结构体 利用一个结构体struct student struct student/*定义学生信息结构体*/ { int numb;/*学号*/ char name[15];/*姓名*/ char nat[16];/*籍贯*/ int num1;/*电话号码1*/ int num2;/*电话号码2*/ char mail[40];/*邮箱*/ }; 4.全局变量 分别利用全局变量结构体数组struct student stu[50];来记录所有学生的基本信息,避免程序运行过程中多次初始化,方便各个式子函数调用。 struct student stu[50];

汇编语言-课程设计1

) 汇编语言课程实验报告 实验名称 课程设计1 实验环境 硬件平台:Intel Core i5-3210M 操作系统:DOSBox in Windows 软件工具:Turbo C , Debug, MASM 实验内容 《 将实验7中的Power idea公司的数据按照下图所示的格式在屏幕上显示出来。 实验步骤 1.要完成这个实验,首先我们需要编写三个子程序。第一个子程序是可以显示字符串到屏 幕的程序,其汇编代码如下: ;名称:show_str

;功能:在屏幕的指定位置,用指定颜色,显示一个用0结尾的字符串 ;参数:(dh)=行号,(dl)=列号(取值范围0~80),(cl)=颜色,ds:si:该字符串的首地址 ;返回:显示在屏幕上 ¥ show_str: push ax push cx push dx push es push si push di mov ax,0b800h - mov es,ax mov al,160 mul dh add dl,dl mov dh,0 add ax,dx mov di,ax mov ah,cl . show_str_x: mov cl,ds:[si] mov ch,0 jcxz show_str_f mov al,cl mov es:[di],ax inc si inc di 【 inc di jmp show_str_x show_str_f: pop di pop si pop es pop dx pop cx } pop ax ret 2.第二个程序是将word型数据转换为字符串,这样我们才能调用第一个程序将其打印出

微机原理与汇编语言课程设计报告

西北师范大学 计算机科学与工程学院 微机原理与汇编语言 课程设计报告 设计题目:中断控制点阵显示与音乐模块姓名: 学号: 专业班级: 系所中心: 指导老师: 起讫时间: 设计地点: 2016年8月20日

摘要 使用8086汇编语言,在唐都TD-PITE实验箱上进行硬件连线,在计算机上采用与该实验箱配套的软件进行输入,观察实验结果。设计思路是利用在实验箱上i386内集成的两片8259芯片分别进行中断,通过实验箱上的两个脉冲开关发送信号到总线上开放的两个中断口,送入CPU内部的8259中。此时按下脉冲开关kk1+,第一个中断发生,在16*16点阵上循环滚动显示“西北师大汇编设计李泓毅”,若按下kk2+则第二个中断发生,执行音乐模块子程序,利用8254芯片开始响应预先编排好的音乐。 【关键词】级联中断;8259芯片;16*16点阵;8254芯片;SPK音乐模块;脉冲信号

目录 摘要 (2) 第一章课程设计 (2) 1.1 目的和任务 (2) 1.2 设计环境、设备与器材 (2) 第二章设计内容和方案 (3) 2.1 设计内容 (3) 2.2 设计方案 (3) 第三章课程设计相关原理简述 (3) 第四章设计实现 (4) 4.1 系统设计框架结构 (4) 4.2 系统硬件设计 (4) 4.3 系统软件设计 (6) 4.4 程序流程图 (6) 4.5 核心数据结构 (8) 4.6 关键代码片段分析 (10) 第五章设计验证 (10) 5.1 验证步骤及结果 (10) 5.2 数据分析 (10) 5.3 遇到的问题及解决 (11) 5.4 需要讨论的其它问题 (11) 5.5 结论 (11) 第六章设计总结 (12) 第七章本课程教学建议 (13) 第八章参考文献 (13) 第九章附录:源代码 (13) 第一章课程设计 1.1 目的和任务 使用8259芯片进行中断程序设计,在第一个中断中响应字模显示模块,在第二个中断中响应音乐发声模块。

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

汇编课程设计

燕山大学 汇编语言课程设计说明书 题目:计算机钢琴程序 交通灯控制系统 学院(系):信息科学与工程学院 年级专业: 10级计算机科学2班 学号: 100104010113 学生姓名:马强 学号: 100104010116 学生姓名:夏洋 指导教师:何海涛、邹晓红 完成日期: 2013年7月3日

目录 1.课程设计的目的和意义........................................................................................................... - 2 - 1.1课程设计目的................................................................................................................ - 2 - 1.2课程设计的意义............................................................................................................ - 2 - 2.题目一:计算机钢琴程序....................................................................................................... - 2 - 2.1系统的主要功能............................................................................................................ - 2 - 2.2总体设计方案................................................................................................................ - 2 - 2.2.1扬声器驱动方式................................................................................................. - 2 - 2.2.2延时原理............................................................................................................. - 3 - 2.2.3键盘控制发声程序............................................................................................. - 4 - 2.2.4设计总结............................................................................................................. - 5 - 2.3作品使用说明................................................................................................................ - 6 - 3.题目二:交通灯控制系统....................................................................................................... - 6 - 3.1系统的主要功能............................................................................................................ - 6 - 3.2 系统工作原理............................................................................................................... - 6 - 3.2.1 8259的工作原理................................................................................................ - 6 - 3.2.2 8255A的工作原理:...................................................................................... - 7 - 3.2.3 8253的工作原理:............................................................................................ - 7 - 3.3总体设计方案................................................................................................................ - 7 - 3.3.1程序流程图......................................................................................................... - 8 - 3.3.2接口电路图....................................................................................................... - 11 - 3.4交通灯的设计总结...................................................................................................... - 11 - 4.课程设计心得体会................................................................................................................. - 12 - 5.参考文献................................................................................................................................. - 12 - 6.附录:程序代码..................................................................................................................... - 12 - 6.1计算机钢琴程序代码.................................................................................................. - 12 - 6.2交通灯控制系统代码.................................................................................................. - 14 -

汇编语言课程设计报告——实现加减乘除四则运算的计算器

汇编语言课程设计报告 ( 2011 -- 2012 年度第 2 学期) 实现加减乘除四则运算的计算器 专业 计算机科学与技术 学生姓名 班级 学 号 指导教师 完成日期

目录 目录 (2) 1概述 (1) 1.1 设计目的 (1) 1.2 设计内容 (1) 2系统需求分析 (1) 2.1 系统目标 (1) 2.2 主体功能 (1) 2.3 开发环境 (1) 3 系统概要设计 (2) 3.1 系统的功能模块划分 (2) 3.2 系统流程图 (3) 4系统详细设计 (3) 5测试 (4) 5.1 测试方案 (4) 5.2 测试结果 (4) 6小结 (5) 参考文献 (6) 附录 (7) 附录源程序清单 (7)

实现加减乘除四则运算的计算器 1 概述 1.1 设计目的 本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。 1.2 设计内容 能实现加、减、乘、除的计算;该程序接受的是16进制数;执行时,需要在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下: c:\tasm>js 3+2 5 2 系统需求分析 2.1 系统目标 本次汇编语言课程设计的最终目的是要实现一个简单加减乘除四则运算的计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。比如,十进制数的加减乘除四则运算。我们曾经学习过两个具体数字进行加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。 2.2 主体功能 系统分析主要包括设计的功能分析和系统的流程,功能分析放在首位,每一个软件都要能满足一定的功能才有使用价值。根据功能需求来创建应用程序。 本设计的功能如下: 1、输入2个数,先判断是加减运算还是乘除运算,再进行计算 2、判断符号是否为运算符 3、回车为换行符 4、用十进制或十六进制输出运算结果 2.3 开发环境 TASM5.0集成环境

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

《高级语言程序设计》课程设计报告及示例

《高级语言程序设计》课程设计报告(2014――2015年度第二学期) 题目通讯录管理 专业计算机科学与技术 班级2014级B班 小组成员李丽丽2009022899 班级2009级计本四班

《高级语言程序设计》课程设计 成绩评定 指导教师:

摘要:通过本课程设计,对程序控制结构、数组、结构体、函数、文件等的应用进行综合训练,并初步接触软件设计的基本步骤。本设计实现关键词:控制结构,数组,结构体,函数,文件 一、课程设计的目的与要求 通过实践训练,进一步掌握C语言程序控制结构、数组、结构体、函数、文件的使用方法,提高程序编写调试的实际能力,培养初步的工程设计能力和综合分析、解决问题的能力。 具体如下: 1.学习和实践在分析和设计计算机应用系统所需要的知识,包括功能分析和模块划分、函数设计、 数据的结构分析、设计和存取操作; 2.熟悉Visual C++的代码编制和调试过程; 3.初步培养文档的编写能力; 4.培养协作能力和团队精神。 二、设计正文 1.概述 1.1课题题目:通讯录管理 1.2系统的主要目标: 本系统目标是实现通讯录管理的功能,对姓名、群组、住宅电话、手机、Email、地址和备注信息进行输入、删除、查找和修改,数据存储于二进制文件。 1.3系统的开发环境及运行环境: 操作系统:Win dows XP Pro SP2 开发工具:Visual C++ 6.0 2.系统分析 1.输入记录:将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据 作为一个记录。?该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。 2.显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。 3.修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。 4?查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。 5.删除记录:可删除数据文件中的任一记录。 6?恢复记录:能恢复被删除的任一记录。 7.统计:(A)计算各项工资平均工资及总工资,(B)?统计符合指定条件(如职工工资前三项之和在2000元以上、2000~1500元、1500~1000元)以内的工资职工人数及占总职工人数的百分比。(C)按字符表格形式打印全部职工工资信息表及平均工资(?包括各项总的平均工资)。 8 保存数据文件功能。 9.打开数据文件功能。 3.系统设计

汇编课程设计报告

汇编课程设计报告

学 号: 课程设计 题目打印水仙花数 学院计算机科学与技术 专业计算机科学与技术 班级 姓名 指导教师

武汉理工大学《汇编语言程序设计》课程设计 2012 年 6 月28 日 课程设计任务书 学生姓名:专业班级: 指导教师:工作单位:计算机科学与技术学院 题目: 打印水仙花数 初始条件: 理论:完成了《汇编语言程序设计》课程, 对微机系统结构和80系列指令系 统有了较深入的理解,已掌握了汇 编语言程序设计的基本方法和技 巧。 实践:完成了《汇编语言程序设计》的4 个实验,熟悉了汇编语言程序的设 计环境并掌握了汇编语言程序的 调试方法。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 进一步理解和掌握较复杂程序的设计方 法,掌握子程序结构的设计和友好用户界 3

2.1简要分析 2.1.1原理说明 可以用标签来接收三位数,标签的好处在于可以限制输入的位数,并且通过实际输入位数可以直接进行一部分的异常处理。 将数存到标签后,因为是以ASCII码的形式存的,所以需要进行转换,将其变成十六进制数,转换后将数字存到申请的内存字中。在转换成十六进制数的过程中,可以对输入的数进行异常处理,判断是否输入有误。 在输出水仙花数时,设置一个计数器,从100开始循环判断,直到等于用户输入的数为止,依次判断是否为水仙花数,决定是否输出该数。 在输出时,分别取出水仙花数的个、十、百位数,转换成ASCII码再输出。 系统提示是否继续后,程序对用户输入的信息进行判断,若为y或Y则系统回到初始状态,若为n或N则退出系统,若为其他则提示输入错误并重新输入。 2.1.2程序流程图

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

高级语言课程设计报告格式朱立刚

西安郵電學院 高级语言课程设计报告书 系部名称通信工程学院 学生姓名朱立刚 专业名称电子信息科学与技术班级电科0901班 学号04092013 指导教师夏虹 2010年11月22日至 时间 2010年12月03日

实验题目电话簿管理系统 一、实验目的 1.利用静态数组实现电话簿管理,数组中每一个元素是结构体类型; 2.通过这个例子了解数据管理的基本功能; 3.通过实验掌握数组元素为结构体的应用,数组作函数参数,文件读写等知识。 二、实验内容 1.用c语言编写一个简单、但操作齐全的电话簿管理系统; 2.编程时采用结构体、数组(链表)、文件等数据结构存储组织数据。实现: 数据的录入、数据读写和数据存储;数据的添加、修改、删除、查询操作; 数据的统计、排序及报表打印。 三、需求分析 要实现对电话簿进行操作,必须先定义主函数。对于一个合格的电话簿系统,首先必须考虑信息安全问题,我先写了一个密码保护函数,运行前先进行密码输入,有三次出错机会;正确,进入菜单选项,否则,跳出。 对于电话簿,必须能进行信息录入,于是设计了信息录入选项;信息录入后还必须进行显示,又设计了显示记录选项;对于通讯录的一个基本功能——查找,我设计了按姓名查找和按序号查找选项。 对于电话簿的添加、修改、删除问题,还必须有添加修改选项、删除选项。 为方便查找,我设计了按姓名字母字典顺序的排序方法;并进行了文件的保存与备份。对于一个刚打开的新程序,只有进行了文件读入才能对信息进行操作,否则就必须进行信息输入,为避免这种有违设计理念的问题,我加入了读取信息选项。 四、概要设计 1、方案设计 基本功能模块结构图

(新)汇编语言课程设计四则运算

计算机与信息工程学院《汇编语言》课程设计四则运算器的设计 专业:计算机科学与技术 班级:控制11-2班 姓名: 倪天天 学号:2011025745 指导教师:郝维来 2013年6月28日

摘要 计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。想要用汇编语言实现简单的计算器,就必须通过对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识进行运用,以实现一个基本功能完善,界面友好,操作简便易行的计算器。用汇编语言实现简单计算器还涉及到输入输出模块的设计,加减乘除运算的判断以及退出程序的判断的设计。通过对各种指令的合理使用,设计各个功能模块。当实现各个程序模块后,通过程序的调用最终实现一个简单的计算器。 关键词:计算器,汇编语言,四则运算,功能模块

Abstract Calculator is the easiest calculation tools, a simple calculator with addition, subtraction, multiplication, division four arithmetic functions. Want to use assembly language to achieve a simple calculator, you must pass on the data storage, register usage, addition, subtraction, and related instructions such as assembly language module calls the use of knowledge in order to achieve a basic functional, user-friendly, easy to operate easy calculator. Using assembly language to achieve a simple calculator also involves the design of input and output modules, the judgment of arithmetic operations and exit the program to judge design. Through the rational use of various commands, design various functional modules. When implementing various program modules, through a call to the ultimate realization of the program a simple calculator. Keyword:Calculator, assembly language, four arithmetic, functional modules

汇编语言课程设计报告

课程设计报告 课程名称课题名称 汇编语言程序设计 1.显示彩色菱形 2.显示系统当前时间 专业 班级 学号 姓名 指导教师 年月日

课程设计任务书 课程名称汇编语言程序设计 课题 1.显示彩色菱形 2.显示系统当前时间专业班级 学生姓名 学号 指导老师 审批 任务书下达日期年月日 任务完成日期年月日

一、设计内容与设计要求 1.设计内容:通过本周的课程设计,学生能够巩固所学的基础知识,并能 够使学生更加熟练运用汇编程序设计语言来掌握综合汇编程序设计的方法和过程,以及为设计其它应用软件提供帮助,进而提高学生的软件设计能力。 (1)、编制一计算比赛成绩的程序,要求完成以下功能: a、9 名评委,每个评委给分范围为 0~100(整数); b、9名评委给分中,去掉一个最高分和一个最低分,剩余7 名评委的平均分即为参赛者的得分(精确到小数点二位); c、将得分在光标位置处显示出来。 (2) 、编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于30 字的 grade 数组中,各数据的格式为: 学号,成绩 1,成绩 2,?,成绩 5 然后根据 grade 中的学生成绩,把学生名次填入rank 数据组中,并显示出来,格式为:学号,名次 (3)、利用 INT 1CH(大约每秒中断 18.2 次)编写一个中断驻留程序,要求在屏幕的右 上角显示计算机中当前系统时间,显示格式为 时:分: 秒:1/100 秒 (4)、输入一个菱形的两条对角线长,在屏幕上用‘ * ’号画出一个彩色的菱形。 (5)、设置图形方式并显示彩条,要求: 选择背景色为蓝色,调色板为0,然后每行显示一种颜色,每四行重复一次, 一直到整个屏幕都显示出彩条 2.设计要求: 掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一 些实际的问题,为将来编写软件积累一些典型的案例处理经验。 (1)、设计正确,方案合理。 (2)、界面友好,使用方便。 (3)、程序精炼,结构清晰。 (4)、设计报告 5000 字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。 (5)、上机演示。 (6)、按学号顺序选课题号,并在规定的时间内独自完成相关课题的汇编源程序编

相关主题
文本预览
相关文档 最新文档