C语言课程设计论文-图书信息管理系统设计

C语言课程设计论文-图书信息管理系统设计
C语言课程设计论文-图书信息管理系统设计

C语言课程设计综合实习报告

题目:图书信息管理系统

2008 年 7 月

目录

(1)作者简介 (3)

(2)报告摘要 (3)

(3)报告主体 (3)

3.1 报告要求 (3)

3.2 需求分析 (3)

3.3 总体设计 (4)

3.4 详细设计 (4)

3.4.1 主函数 (4)

3.4.2 各功能模块设计 (6)

3.4.3 公共函数 (12)

3.5 上机操作 (15)

3.5.1 数据源 (15)

3.5.2 编译、连接和运行 (15)

3.5.3 结果 (15)

(4)实习总结 (20)

(1)作者简介:

我叫王栋,是地球科学学院资源环境与城乡规划管理专业的二年级学生,有幸在大二上学期学习C程序设计这门课程.刚开始的时候对这门课没什么理解,觉得很难很复杂,而在后来慢慢深入的学习之后开始对其产生了兴趣。看到自己亲手编写的程序能够发挥出作用,觉得能够运用自己写出来的东西做出成果很高兴。同时也知道了做程序并不是想象之中的那么难的,只要我们能好好看懂课本上面的东西,并能在实践中加以练习就一定能够很好的掌握。

(2)报告摘要:

本论文设计了程序:《C语言课程设计指导书》第12题——图书信息管理系统。这个管理系统能对图书信息(包括登录号、书名、作者号、分类号、出版单位、出版时间、价格等)进行有效地信息录入、浏览、查询、插入、删除等操作,会给用户带来很大的便利,达到既节省时间又节省精力的目的。

(3)报告主体:

3.1 题目要求

图书信息包括登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:

(1)系统以菜单方式工作

(2)图书信息录入功能(图书信息用文件保存)

(3)图书信息浏览功能

(4)图书信息查询功能

(5)图书信息删除与修改功能(可选项)

[提示]

建立图书信息结构体,结构体成员包括登录号、书名、作者名、分类号、出版单位、出版时间、价格。

3.2 需求分析

根据题目要求,要求对图书信息进行输入、输出等操作;在程序中需要浏览图书的信息,应提供显示、查找、浏览、插入、修改等操作;另外还应提供键盘式选择菜单实现功能选择。

3.3总体设计

根据需求分析,可以对这个系统的设计分为以下几个模块:

图书信息管理系统

数据输入数据浏览数据查找数据插入退出

图1.3 系统功能模块图

3.4详细设计

3.4.1 主函数

主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。

[流程图]:

显示一系列功能选项

N

输入n ,判断n 是否是0-5

Y

根据n的值调用各功能模块函数

图1.4.1 主函数流程图

[程序]

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

main ()

menu();

}/*****************menu函数********************/

void menu()

{

int n,w;

do

{

puts("\t\t\t\t 1.enter");

puts("\t\t\t\t 2.browse");

puts("\t\t\t\t 3.search");

puts("\t\t\t\t 4.delete or modify");

puts("\t\t\t\t 5.add");

puts("\t\t\t\t 6.exit");

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

printf("Choice your number(1-5): [ ]\b\b");

scanf("%d",&n);

if(n<1||n>6)

{

w=1;

getchar();

}

else w=0;

}

while(w==1);

switch(n)

{

case 1:enter();break;

case 2:browse();break;

case 3:search();break;

case 4:deal();break;

case 5:add();break;

case 6:exit(0);

}

}

注:menu函数能提供菜单方式选择功能,可以根据用户需要进入到所想要的操作模块中,此外把menu函数独立出来,可以方便随时对它进行调用,容易返回到系统界面。

3.4.2各功能模块设计

(1)输入模块

在这里主要运用结构体的形式来输入保存图书的各种信息,包括图书的登录号、书名、作者名、分类号等等,因为图书的数目众多,因此采用结构体数组的形式。

用结构体来存放图书信息:

/********************结构体*******************/

#define N 100

#include

#include

struct book

{

char dlnum[10];

char name[50];

char writer[20];

char flnum[10];

char pressname[50];

char presstime[20];

char price[10];

} books[N]; books[N]中每个数组元素对应一本图书*/

其中可以根据宏定义# define N随时对N的值进行调整,扩大信息的储存量。[程序]:

/********************输入模块*******************/

void enter()

{

int i,n;

void menu();

void input(int k);

void save(int k);

printf("How many books(0-%d)?:",N-1);

scanf("%d",&n);

printf("\n Enter data now\n\n");

for(i=0;i

{

printf("\n Input %dth book record.\n",i+1);

input(i);

}

if(i!=0)save(n);

printf("Pass any key to back\n");

getchar();

menu();

}

(2)浏览模块

[需求分析] 该模块的功能是显示所有图书记录信息。

[流程图]

显示图书记录(10个一屏)

按任意键显示下一屏

图1 浏览模块流程图

[程序]:

/****************浏览(全部)模块***************/ void browse() {

int k;

void menu(); int load();

void printf_books(int n); k=load();

printf_books(k);

printf("Pass any key to back\n"); getchar(); menu(); }

(3)查找模块

/***************按书名查找模块***************/

[流程图]:

图2 按书名查找模块流程图

按任意键返回主菜单

按书名查找模块 用户作出选择,输入一整型数值 返回主菜单 修改 1,2,还是3 继续查找

struct book s; int n,i,k=0; int load();

void printf_one(int i); n=load();

printf("enter a book name: "); scanf("%s",&https://www.360docs.net/doc/d48179449.html,); for(i=0;i

if(strcmp(https://www.360docs.net/doc/d48179449.html,,books[i].name)==0) {

printf_one(i); k=1; }

if(k==0)printf("\nNot found the file!\n"); }

/***************按作者查找模块***************/

[流程图]

图3按图书名查找模块流程图

[程序]:

void search_by_writer() {

struct book s; int n,i,k=0; int load();

void printf_one(int i); n=load();

printf("enter a writer's name: "); scanf("%s",&s.writer); 按作者名称查找模用户作出选择,输入一整型数值 返回主菜单 修改 1,2,还是3 继续查找

if(strcmp(s.writer,books[i].writer)==0) {

printf_one(i); k=1; }

if(k==0)printf("\nNot found the file!\n"); }

/***************按出版社查找模块***************/

图4 按出版社查找模块流程图

void search_by_press() {

struct book s; int n,i,k=0; int load();

void printf_one(int i); n=load();

printf("enter a press: "); scanf("%s",&s.pressname); for(i=0;i

if(strcmp(s.pressname,books[i].pressname)==0) {

printf_one(i); k=1; }

if(k==0)printf("\nNot found the file!\n"); }

/***************按登录号查找模块***************/

按出版社查找模块 用户作出选择,输入一整型数值 返回主菜单

修改 1,2,还是3 继续查找 按登录号查找模块

图5 按登录号查找模块流程图

void search_by_dlnum() {

struct book s; int n,i,k=0; int load();

void printf_one(int i); n=load();

printf("enter a dlnum: "); scanf("%s",&s.dlnum); for(i=0;i

if(strcmp(s.dlnum,books[i].dlnum)==0) {

printf_one(i); k=1; }

if(k==0)printf("\nNot found the file!\n"); }

(4)插入模块

[需求分析] 该模块的功能是插入图书纪录信息并且不能覆盖原有图书信息。 [流程图]

插入模块 调用加载函数 让用户输入要插入的图书信息个数

调用整条信息输入函数

用户作出选择,输入一整型数值

返回主菜单

修改

1,2,还是3

继续查找

图6插入模块流程图

/*************************插入模块*********************/ add() {

int i,n,m,k; FILE*fp;

n=load();

printf("How many book are you want to add(0-%d)?:",N-1-n); scanf("%d",&m); k=m+n;

for(i=n;i

printf("\n Input %d the books record.\n",i-n+1 ); input(i); }

if((fp=fopen("book.txt","ab"))==NULL) {

printf("cannot open file\n"); }

for(i=n;i

if(fwrite(&book[i],sizeof(struct book),1,fp)!=1) printf("file write error\n"); fclose(fp); printf_back(); }

(5)修改功能

void modify(int m,int n) {

int c,w1; void menu(); do { puts("\nmodify by =>\n\n 1).dlnum 2).name 3).writer 用户作出选择,输入1or2

2返回主菜单

1还是2

1 浏览全部

printf("Which you need?:[ ]\b\b");

scanf("%d",&c);

if(c>8||c<1)

{

puts("\nChoice error! Please again!");

getchar();

}

}

while(c>8||c<1);

do

{

switch(c)

{

case 1:printf("dlnum: ");scanf("%s",books[m].dlnum);break;

case 2:printf("name: ");scanf("%s",books[m].name);break;

case 3:printf("writer: ");scanf("%s",books[m].writer);break;

case 4:printf("flnum: ");scanf("%s",books[m].flnum);break;

case 5:printf("pressname: ");scanf("%s",books[m].pressname);break;

case 6:printf("presstime: ");scanf("%s",books[m].presstime);break;

case 7:printf("price: ");scanf("%s",books[m].price);break;

case 8:printf("Enter a new information:\n");input(m);

}

printf_face();

printf_one(m);

printf("\nAre you sure?\n\n\t1).Sure 2).no and remodify 3).Back

without save in this time [ ]\b\b");

scanf("%d",&w1);

} while(w1==2);

if(w1==1)save(n);

}

3.4.3公共函数

(1)保存函数 save(int n)

void save(int n)

{

FILE *fp;

int i;

if((fp=fopen("book.txt","wb"))==NULL)

{

printf("\nCannot open file\n");

}

if(fwrite(&books[i],sizeof(struct book),1,fp)!=1)

printf("file write erro\n");

fclose(fp);

}

(2)加载函数 load()

int load()

{

FILE *fp;

int i;

if((fp=fopen("book.txt","rb"))==NULL)

{

printf("\nCannot open file\n");

return 0;

}

for(i=0;!feof(fp);i++)

fread(&books[i],sizeof(struct book),1,fp);

fclose(fp);

return(i-1);

}

(3)图书信息输入函数no_input(int i,int n)

void input(int i)

{

printf_face();

scanf("%s%s%s%s%s%s%s",books[i].dlnum,books[i].name,books[i].writer,books

[i].flnum,books[i].pressname,books[i].presstime,books[i].price);

}

(4)输入整一个记录函数input(int i)

[说明]:形参i表示第i个图书记录。

void input(int i)

{ no_input(i,i);

printf("book-name:");scanf("%s",book[i].name);

printf("writer-name:");scanf("%s",book[i].writer);

printf("classify-num:");scanf("%s",book[i].flnum);

printf("publish-unit:");scanf("%s",book[i].pressname);

printf("publish-time:");scanf("%s",book[i].presstime);

printf("price:");scanf("%s",book[i].price);

}

(5)显示一个记录的函数 printf_one(int i)

void printf_one(int i)

{

printf("%5s %5s %5s %5s %5s %5s %5s",books[i].dlnu m,books[i].name,books[i].writer,books[i].flnum,books[i].pressname,books[i].

printf("\n\n");

}

(6)一个任务结束时的选择浏览还是返回的函数printf_back()

void printf_back()

{

int w;

do

{

printf("What do you want to do?\n\n\t1).BACK TO MENU\t2)continue ...: [ ]\b\b");

scanf("%d",&w);

switch(w)

{

case 1: menu();break;

case 2: menu_search();break;

}

}while(w!=1&&w!=2);

}

(7)修改整条数据记录函数modify_data(int i,int n)

void modify(int m,int n)

{

int c,w1;

void menu();

do

{puts("\nmodify by =>\n\n 1).dlnum 2).name 3).writer 4).flnum\n5).pressname 6).presstime 7).price 8).modify all");

printf("Which you need?:[ ]\b\b");

scanf("%d",&c);

if(c>8||c<1)

{puts("\nChoice error! Please again!");

getchar();

}

}while(c>8||c<1);

do

{

switch(c)

{

case 1:printf("dlnum: ");scanf("%s",books[m].dlnum);break;

case 2:printf("name: ");scanf("%s",books[m].name);break;

case 3:printf("writer: ");scanf("%s",books[m].writer);break;

case 4:printf("flnum: ");scanf("%s",books[m].flnum);break;

case 5:printf("pressname: ");scanf("%s",books[m].pressname);break;

case 6:printf("presstime: ");scanf("%s",books[m].presstime);break;

case 8:printf("Enter a new information:\n");input(m);

}

printf_face();

printf_one(m);

printf("\nAre you sure?\n\n\t1).Sure 2).no and remodify 3).Back without save in this time [ ]\b\b");

scanf("%d",&w1);

}while(w1==2);

if(w1==1)save(n);

}

(8)显示数据结构项目函数

void printf_face()

{

printf("dlnum name writer flnum pressname presstime price\n");

}

3.5 上机操作

3.5.1数据源;

3.5.2编译、连接和运行;

3.5.3结果;

下面是各个模块的截面图:

(1)主菜单函数

主界面出现后输入1回车输入要输入的记录然后逐条增加,并进书名是否重复的检查,如重复则显示输入重复请重新输入:

如下图:

图8 输入模块截图

(3)浏览模块

图10、11 按作者名查询截图(5)修改模块

修改后浏览:

图12、13 修改后查询截图(5)增加图书记录

增加一本图书信息后按2浏览全部图书信息。

如下图:

增加后浏览

图14、15 增加模块截图

(4)实习总结:

通过此次C语言课程设计实习,我收获颇多。以前只是为了考试去学习,而这次实习是将所学知识运用到实际中。

此次实习中,我独立完成了这道题:建立图书信息管理系统。这道题看起来很烦琐,但理清思路后,就很简单了,指导书中有关文件的题目差不多都大同小异,只要一题会做,其他题目也就迎刃而解,只要将各功能模块融会贯通并加以适当调整即可,但前提还是必须对指导书里的例题熟练掌握。

两年的大学生活,让我对计算机理论知识有了一定的了解,但实践出真知,唯有把理论与实践相结合,才能更好地为社会服务.为期两周的上机实习,我还上网查阅了一些计算应用知识并对以后学习研究所需的资料进行了粗浅的了解,为接下来的学习做准备,提高了我的动手能力,同时也让我了解到了自己的不足,我会继续努力,完善自我,为社会主义现代化建设做贡献.对于学校的精心安排和指导老师的用心辅导非常感谢!!!

c语言课程设计论文

《C语言程序设计》 项目设计报告 项目名称:学生成绩信息管理系统 2016年 1月 13日

目录 1 项目分析 0 1.1 问题描述 0 1.2 功能需求分析 0 2 系统设计 (1) 2.1 数据结构设计 (1) 2.3部分功能设计 (2) 3 系统实现源程序 (2) 3.1 主函数设计 (2) 3.2 添加学生信息 (5) 3.3 姓名学号查询 (18) 3.4 成绩查询 (22) 3.5 删除学生成绩信息 (24) 3.6 修改学生成绩信息 (29) 4 功能测试 (33) 4.1 菜单测试 (33) 4.2 系统功能测试 (33)

5 系统设计遇到的问题及解决方法 (35) 6 项目设计总结 (37)

1 项目分析 1.1 问题描述 信息储存与查询是计算机处理数据的优势之一,目前,学生信息的管理系统已经完全走进了校园,其中成绩信息的储存是主要部分,本课题使用C语言实现学生成绩的储存,查询,修改,以及删除等操作。程序中涉及到数据块和文件指针的操作,包括结构体数据定义,使用及文件的读写,定位,修改等。 1.2 功能需求分析 学生成绩信息管理系统的主要功能如下: ①添加学生信息:录入学生的基本信息,如姓名,学号,成绩。 ②显示所有学生成绩信息:直接显示已经全部录入学生的成绩信息。 ③学号或姓名查询:可以根据学生的姓名和学号直接查询该名学生的成绩。 ④成绩查询:可以根据一个特定的分数来查询学生的信息。 ⑤删除学生成绩信息:可以直接根据学号确定是否删除对应学生的成绩信息。 ⑥修改学生成绩信息:直接根据学生学号来修改学生的姓名,学号,成绩。

汇编语言课程设计

沈阳大学

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语言课程设计心得体会

c语言课程设计心得体会 在这为期半个月的时间内,通过我们小组各成员之间的相互讨论和合作,我们完成了学生信息管理系统的程序设计,更值得高兴的是我们的程序得到了大家的喜爱,在每次的简报中都得到了较好的成绩。 虽然在上个学期中,我们已经学习了《c 语言程序设计》这门课,但是我所学的知识最多也就是在做作业的时候才会用到,平时没有什么练习的机会,这次的课程设计是我第一次通过自己构思,和同学讨论并且不断查阅资料来设计一项程序。这次设计,不仅巩固了我以前所学的知识,还让我对c语言有了更深一步的了解,掌握了更多的技巧和技能。 c语言是计算机程序设计的重要理论基础,在我们以后的学习和工作中都有着十分重要的地位。要学好这种语言,仅仅学习课本上的知识是不够的,还要经常自己动手,有较强的实践能力。只有多动手,经常编写程序,才能发现我们学习上的漏洞和自己的不足,并在实践中解决这些问题,不断提高自己转化知识的能力。 在我们小组有解决不了的问题时,我们会主动查阅相关的资料,或向其他同学询问,这不仅丰富了我们的知识,还增进了我们同学之间的友谊。为了增大信息的安全性,需要用文件来存储信息,由于我们在上课时不注重对文件的运用,所以在这方面有较大的困难。我先将书本认认真真地看了一遍,又做了一下课后习题来验证和增进自己

的理解,终于,经过我们的不懈努力,我们小组的程序有了突破,成功地实现了用文件来保存并查看学生的信息。 这次设计中,我的收获还有就是学会了用流程图来表达自己的想法,并根据流程图来逐步实现程序的功能。开始的时候,我画流程图很是困难,需要一个多小时才能清楚的根据自己的想法画出图来,后来画多了,就更加了解它的功能,十分得心应手,能够比较快而准确的画出来。 在这次课程设计中,我们首先对系统的整体功能进行了构思,然后用结构化分析方法进行分析,将整个系统清楚的划分为几个模块,再根据每个模块的功能编写代码。而且尽可能的将模块细分,最后在进行函数的调用。我们在函数的编写过程中,我们不仅用到了for循环、while循环和switch语句,还用到了函数之间的调用(包括递归调用)。由于我们是分工编写代码,最后需要将每个人的代码放到一起进行调试。因为我们每个人写的函数的思想不都一样,所以在调试的过程中也遇到了困难,但经过我们耐心的修改,终于功夫不负有心人,我们成功了! 当然,我们的程序还有一些不完善的地方,比如说,当输入的数据不符合我们定义的数据的格式的时候,程序会出现一些错误,有时会出现主菜单的死循环;在一次程序运行中,只能行使一种权限,要想再行使另一种权限,就只能退出程序,然后再运行程序。 三周的小学期即将结束,时间虽短,但是我收获了很多。最后,谢谢老师和同学们的指导,更要感谢我们小组成员之间的合作与交

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

《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主要模块的算法描述 本算法的思路过程:首先要随机产生随机数,然后进行算法输出数值,执行条件判断输入结果,最后比较结果,判断胜利的一方。 程序流程图 图1 掷骰子游戏 2.1.4调试过程及实验结果

汇编语言-课程设计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分,共20分) 1、D 2、D 3、A 4、C 5、D 6、A 7、A 8、A 9、C 10、B 二、读程序写结果(每题3分,共21分) 1、9,11,9,10 2、>=60<60error 3、9,3 4、45 5、*+++* +*+*+ ++*++ +*+*+ *+++* 6、7,14 7、hina ina na 三、程序填空(每空2分,共20分) 1、(1) N/2 (2) a[N-1-k] (3) knext=p; p->next=p2; 五、编程题(第1题9分,第2、3题各10分,共29分)

1、定义1分,输出3分,处理5分 main() { int i,i1,i2,i3; for(i=100;i<1000;i++) { i1=i/100; i2=i/10%10; i3=i%10; if(i==i1*i1*i1+i2*i2*i2+i3*i3*i3) printf("%5d",i); } } 2、定义1分,输入2分,输出3分,处理4分 main() { int a[5][6],b[5]={0},i,j; for(i=0;i<5;i++) for(j=0;j<6;j++) scanf("%d",&a[i][j]); for(i=0;i<5;i++) for(j=0;j<6;j++) b[i]=b[i]+a[i][j]; for(i=0;i<5;i++) { for(j=0;j<6;j++) printf("%5d",a[i][j]); printf("%10d\n",b[i]); } } 3、输入1分,输出1分,两个函数各3分,函数调用2分int prime(int m) { int i; for(i=2;ia[j]) { t=a[i]; a[i]=a[j]; a[j]=t;}

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

汇编课程设计

燕山大学 汇编语言课程设计说明书 题目:计算机钢琴程序 交通灯控制系统 学院(系):信息科学与工程学院 年级专业: 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语言学习心得 开课之前信息的收集:在高中的时候就听过程序员这个职业,当时也只知道这些人是写程序的,然而程序是什么具体我也不知道。终于上大学了,我看到自己的课表上有C程序设计,感到很兴奋,自己终于要开始学程序。于是我问大二的学长学姐C语言学习经验,他们只对我说,有点难学(可能是他们没认真学的原因)要好好学,在老乡会上刚刚找到工作的大四学长对我讲述他求职百度的时候的经历,百度面试官问他说你会什么编程语言,他说会C,C#,java。面试官接着问你最擅长哪个,他说C语言,紧着接面试官问了一系列关于C语言的问题,一个比一个深入,他答不出来,最后的结果就是直接被拒绝。临走的时候百度面试官对他说,只要你能掌握一门编程语言就能要你。学长告诫我,信管会学很多课但都是只知道一点,因此要学既然要学一门编程就要把它学精,哪怕其它的编程语言不擅长也没关系,我现在就后悔当时没好好学。知道这些情况后我决心学好C语言。 开课后学习的经历:第一节课上,老师说由于课程的安排,前四章的知识会讲的很快,对编程有用的就说,还有些理论课下自己看看,介绍了C语言的发展和编程格式输入和输出。紧接着的上机课我写了人生的第一个程序,觉得很有意思,从此就喜欢上了编程,喜欢这种逻辑的推理与设计,课前我会将书上的知识点掌握,然后上课认真听老师讲课,看看自己有没有漏掉什么知识点,书上没说的和老师给的程序要记下来,回来后自己来体验下这个程序。就这样到了期中考试,结果并不好,让我认识到自己不能只停留在programe上,要多做acm上的题目,并且课下要多读别人的代码来学习方法,就这样白天在图书馆里看书,晚上回来编程,两个月后发现有了很大进步,也发现C语言更有趣了。我也很积极报了来年三月份的计算机二级等级考试,虽然只学了一半,但是我想通过自己的学习和请教老师,拿到那个证书应该不是问题,就这样我开始了自学后半部分,发现真的很晕,果然后面不简单。但是我想到每件事开始的时候都是困难的,就这样我坚持了下来,在老师的帮助下我也成功的过了,并且还是优秀,而且由于自己事先学过了,所以下学期的学习并没有特别困难。 通过学习Funcode让我真正的看到了C语言的应用,课上学的只是C语言的理论,而最重要的是应用。经过实验每个函数的功能,掌握每种函数的接口,再根据自己的设计将这些函数通过一定的组合和排列,制作出一个属于自己的动画,这种感觉真的很棒。我都迫不及待地想给我爱看动画的小表弟展示我制作的动画和体验我设计的游戏,虽然这些动画和游戏还比较低级,但我想他看到后一定会很开心。 一年的学习经历不仅让我C语言入门,更教会了我许多许多。教会了我如何自主学习;教会了我只要你肯努力,就能学有所成;教会了我坚持自己所喜欢的,并为之汗水,结果也一定让人满意。感谢老师一年来一直以来对我的指导和教诲,课下牺牲自己休息的时间来为我解答问题,为我提前开放作业题。 结课之后的打算:希望能通过自己的努力进入学校的ACM团队,继续深入的学习C语言,毕竟自己也才入门而已,离精通还很远。同时大二的时候去蹭课学习算法和数据结构来进一步提升自己的编程能力。

C语言程序设计论文

C语言程序设计论文学校:天津电子信息职业技术学院 系别:电子技术系 专业:通信技术 班级:通信S13-26 学号:89757 姓名:王磊

C语言课程设计报告 一、设计题目:计算器 二、设计目标:进一步加深、巩固学生所学专业课程(《C语言》)的基本理论知识,理论 联系实际,进一步培养学生综合分析问题和解决问题的能力。掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能,充分发挥广大同学的潜力,使他们通过本次课程设计而得到全面的锻炼。 三、设计内容: 1.设计系统的功能框图、流程图; 2.编写计算器的源程序代码; 3.上机调试; 4.答辩; 5.书写实习报告。 四、课程设计所用设备:每人一台计算机。 五、课程设计系统组成及模块功能: (1)主函数模块 (2)设置系统进入图形模块 (3)初始化图形系统模块 (4)计算器计算函数模块 (5)窗口函数模块 (6)设计鼠标图形函数模块 (7)获取特殊键函数模块 六、软件环境:Visual c++6.0 七、课程设计要求:在计算机上操作,通过Visual c++6.0,设计出“计算器”程序。 八、应提交的材料:实习报告一份,内容包含“计算器”程序代码。 设计报告: 程序代码:#include #include #include #include #include #include #include

#include #include #define UP 0x48 #define DOWN 0x50 #define LEFT 0x4b #define RIGHT 0x4d #define ENTER 0x0d void *rar; struct palettetype palette; int GraphDriver; int GraphMode; int ErrorCode; int MaxColors; int MaxX, MaxY; double AspectRatio; void drawboder(void); void initialize(void); void computer(void); void changetextstyle(int font, int direction, int charsize); void mwindow(char *header); int specialkey(void) ; int arrow(); int main() { initialize(); computer(); closegraph(); return(0); }

汇编课程设计报告

汇编课程设计报告

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

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

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

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

计算机与信息工程学院《汇编语言》课程设计四则运算器的设计 专业:计算机科学与技术 班级:控制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)、按学号顺序选课题号,并在规定的时间内独自完成相关课题的汇编源程序编

相关文档
最新文档