高级语言课程设计报告
- 格式:doc
- 大小:198.21 KB
- 文档页数:15
高级语言程序设计实验报告高级语言程序设计实验报告引言高级语言程序设计是计算机科学与技术专业中的一门重要课程,通过学习高级语言的基本概念和编程技巧,可以培养学生的程序设计能力和逻辑思维能力。
本实验报告将介绍我在高级语言程序设计实验中所完成的任务和所获得的收获。
实验目的本次实验的主要目的是通过使用高级语言编写程序,实现一个简单的计算器功能。
通过这个实验,我们可以进一步熟悉高级语言的语法和使用方法,加深对程序设计的理解,并培养我们的编程能力。
实验过程在实验过程中,我首先选择了一种高级语言,这里我选择了Python作为我的编程语言。
Python是一种简单易学且功能强大的高级语言,非常适合初学者。
然后,我开始设计计算器的功能和界面。
首先,我定义了一个函数来处理用户输入的表达式,并进行相应的计算。
这个函数使用了Python的内置函数eval()来实现表达式的计算功能。
在这个函数中,我还添加了一些错误处理的机制,以防止用户输入错误的表达式。
接下来,我设计了一个简单的用户界面,使用了Python的tkinter库来实现。
在这个界面中,我添加了一些按钮和文本框,用于用户输入和显示计算结果。
通过点击按钮,用户可以输入数字和运算符,并实时显示在文本框中。
当用户点击“计算”按钮时,程序会调用之前定义的函数来计算表达式,并将结果显示在文本框中。
在实验过程中,我遇到了一些问题和挑战。
例如,如何处理用户输入错误的表达式,如何设计一个简洁而美观的用户界面等等。
为了解决这些问题,我不断学习和尝试,查阅相关的教程和资料,并与同学们进行交流和讨论。
最终,我成功地完成了这个实验,并得到了一个功能完善且易于使用的计算器程序。
实验结果通过这个实验,我成功地实现了一个简单的计算器功能,并完成了实验报告所要求的任务。
这个计算器程序可以进行基本的四则运算,并能够处理用户输入的错误表达式。
用户界面简洁明了,操作简单方便。
我还通过一系列的测试用例验证了程序的正确性和稳定性。
高级语言课程设计指导一、课程设计报告模板:一、问题描述二、功能分析三、程序设计1.程序总体结构2.界面设计3.重要数据的数据结构设计4.函数设计5.源代码四、程序设计难点及其解决方法五、不足之处六、人员分工说明实例:俄罗斯方块一、问题描述:要求支持键盘操作和7种不同类型方块的旋转变换,并且界面上显示下一个方块的提示以及当前的玩家得分二、功能分析:俄罗斯方块游戏需要解决的问题包括:(1)整个游戏界面的图形显示;(2)各种方块形状的表示;(3)如何控制方块的移动、旋转和下落速度;(4)如何判断方块是否到底;(5)如何判断一行是否填满以及如何消去填满的行;(6)如何判断游戏的结束及如何终止游戏;(7)游戏难度的设计和得分规则重点:•游戏面板的数据结构:二维数组•7种形状方块的数据结构:结构体保存每种形状方块的坐标、颜色三、程序设计:1.程序总体结构:首先初始化进入图形模式,然后设置新的时钟中断。
开始游戏后,进入该程序最核心部分——处理和实现进行过程中的各种事件和函数。
在处理过程中判断游戏是否结束,如没有结束,则重新开始游戏,否则结束游戏。
主函数为:void main(){InitializeGraph();SetTimer(newtimer); /*设置新的时钟中断*/while(1) {StartGame();ProcessInGame();if(bOver) break;}KillTimer();closegraph();}2.界面设计分为左右两个部分:•左边为游戏面板•右边有三个框:下一形状提示框、速度框和记分框3.重要数据的数据结构设计1)定义方块形状:定义如下的结构体来表示每一个形状:struct block{int arrXY[8];int nColor;int nNext;};可用4*4的格子显示7种形状,并用4个数对来表示: arrXY [0]、arrXY [1]表示第一个数对,arrXY [2]、arrXY [3]表示第二个数对…。
python课程设计报告Python课程设计报告。
一、引言。
Python作为一种高级编程语言,具有简单易学、功能强大的特点,在计算机科学教育中得到了广泛的应用。
本课程设计报告旨在介绍我们设计的Python课程内容和教学方法,以及学生的学习情况和成果展示。
二、课程设计内容。
1. 课程目标。
本课程旨在帮助学生掌握Python编程语言的基本语法和应用,培养学生的计算思维和问题解决能力。
通过本课程的学习,学生将能够独立完成简单的Python 程序设计,并能够运用Python解决实际问题。
2. 课程大纲。
(1)Python基础知识。
Python的基本概念和特点。
Python的基本语法和数据类型。
Python的流程控制和函数定义。
(2)Python应用实践。
Python在数据处理和分析中的应用。
Python在网络编程和Web开发中的应用。
Python在人工智能和机器学习中的应用。
3. 教学方法。
本课程采用理论教学与实践相结合的教学方法。
教师将通过讲解、案例分析和实例演示等方式,帮助学生掌握Python编程语言的基本知识和应用技能。
同时,学生将通过课程作业和项目实践,巩固所学知识并提升实际应用能力。
三、学习情况和成果展示。
1. 学生学习情况。
经过一学期的学习,学生对Python编程语言有了较为全面的了解,能够熟练运用Python进行简单的程序设计和实际问题解决。
学生在课程作业和项目实践中,展现出了较强的动手能力和创新意识。
2. 学生作品展示。
学生在课程学习过程中完成了多个项目实践,涉及数据处理、网络编程、Web开发和机器学习等领域。
其中,部分学生作品在校内外比赛中获得了优异的成绩,得到了专家和同行的一致好评。
四、结语。
通过本课程的学习,学生不仅掌握了Python编程语言的基本知识和应用技能,还培养了计算思维和问题解决能力。
同时,学生在实际项目中的表现也证明了他们的学习成果。
希望本课程对学生未来的学习和职业发展有所帮助,也希望学生能够继续保持对计算机科学的热爱和探索精神。
目录1总体设计与算法分析 (1)1.1课题需求分析 (1)1.2 数据结构设计 (1)1.3 关键算法分析与设计 (2)2程序流程图与程序说明 (6)2.1程序流程图 (6)2.2 函数说明 (9)3测试数据与测试过程记录 (11)4遇到的问题及解决方法 (15)5课程设计小结 (16)参考文献 (17)1总体设计与算法分析“C语言程序设计”是高等学校的一门基本的计算机课程。
C语言功能丰富,表达能力丰富,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,既适于编写系统软件,又能方便的用来编写应用软件。
C语言更适合于解决某些小程序的编程。
C语言作为传统的面向过程的程序设计语言,在编写底层的设备驱动程序和内嵌应用程序时,往往是最好的选择。
1.1课题需求分析题目要求设计一个学生成绩排名系统,成绩记录要求包含的信息有:班级,学号,姓名,四门成绩;其中要实现的功能如下:a.具备对成绩的管理功能,比如添加学生成绩,删除学生成绩,对学生的成绩进行排序等;b.具备对成绩的统计功能,比如得出学生成绩中的最高分,总分以及平均分等;c.具备对成绩的查询功能,比如按照学号,姓名,或功课名进行成绩的查询。
1.2 数据结构设计对学生成绩的输入——运用结构体,struct student_type stu[].并且通过fopen函数打开数据文件,用二进制的方式向文件读写数据。
建立主菜单函数(menu()),在此函数中调用对成绩管理的函数,对成绩统计的函数,对成绩查询的函数。
对成绩的管理功能——自定义manage()函数,manage()中包括对成绩的添加函数(add()),删除函数(delete()),排序函数(paixu())的调用。
对成绩的统计功能——自定义tongji()函数,tongji()中包括对成绩的排序,求学生的最高分,平均分,总分的计算。
主菜单成绩管理成绩统计成绩查询删除添加排序最高分按学号按姓名按课程名平均分总分对成绩的查询功能——自定义find()函数,find()中包括按照学号,姓名,功课名进行的成绩查询。
高级语言程序设计课程设计报告题目:图书信息管理系统学号:071007109姓名:李荘荘指导教师:郑小东计算机科学与应用系一、选题分析图书信息管理系统:1.能够实现图书信息的录入、保存、查询、修改、删除、输出;2.制作菜单;3.为各操作设计函数;二、算法设计1.建立文本“Tushu.txt”,打开添加新书信息;2.添加成功后返回主菜单;3.选择相应数字进入系统;4.退出系统。
三、数据结构StartBook(void);/*初始化文件函数*/ Menu(void);/*菜单函数*/ Load(void);/*读文件*/ Input(void);/*输入函数*/ Find(void);/*查找函数*/ Mend(void);/*修改函数*/ Delete(void);/*删除函数*/ ShowAll(void);/*输出函数*/ Save(void);/*保存文件*/ 四、程序源码#include <stdio.h>#include <string.h>#include <stdlib.h>#define LEN sizeof(struct Book)#define MAX 100void StartBook(void);/*初始化文件函数*/void Menu(void);/*菜单函数*/void Load(void);/*读文件*/void Input(void);/*输入函数*/void Find(void);/*查找函数*/void Mend(void);/*修改函数*/void Delete(void);/*删除函数*/void ShowAll(void);/*输出函数*/void Save(void);/*保存文件*/struct Book/*书的结构体*/{int record;char num[20];/*图书编号*/char name[20];/*书名*/char author[20];/*书的作者*/int price;/*书的价格*/int yes;/*判断书是否存在或者已经借出,1存在,0借出*/struct BookList *link;};FILE *fp;struct Book *p,*p1,*head,*s,*t;main(){int flag;int choice;if((fp = fopen("TuShu.txt","rb"))==NULL){clrscr();printf("\n\n\t\t\tNo File!\n");if((fp = fopen("TuShu.txt","wb"))==NULL){printf("Can't Open The File !\n");getch();exit(0);}}if(fgetc(fp)==-1){printf("\n\t\tNo Book,Input New Book Information!\n");StartBook();printf("\n\t\t\tInput Book Succeedful!\n");getch();}rewind(fp); /* 重建文件指针 */Load();fclose(fp);flag = 1;while(flag){Menu();printf("\n\n\n\t\t\t Input your choice(0-5):");scanf("%d",&choice);getchar();if(choice>=0&&choice<6){switch(choice){case 1:Input();break;case 2:Find();break;case 3:ShowAll();break;case 4:Delete();break;case 5:Mend();break;case 0:flag = 0;clrscr();printf("\n\n\n\t\t\tThaks Use This Program!!!");printf("\n\n\t\tIf You Have Advices,Please Contact :");printf("\n\n\t\t\E-mail : lizhuang1987@\n\n\t\tQQ : 89735044");getch();break;}}elseprintf("Input error,Please Input!\n");}fp = fopen("TuShu.txt","wb");Save();fclose(fp); clrscr();printf("\n\n\n\t\tPress Any Key To Enter The Menu......!\n");getch();return 0;}void StartBook(void)/*初始化文件函数*/{p->record = 1;printf("\n\t\tInput Num:");gets(p->num);printf("\n\t\tInput Name:");gets(p->name);printf("\n\t\tInput Price:");gets(p->price);p->link = NULL;head = p;fwrite(p,LEN,1,fp);fclose(fp);}void Menu(void)/*菜单*/{ clrscr();printf("\n\t\t+---------------------------------------------+\n"); printf("\t\t|Welcome To The Book Information Manage System|");printf("\n\t\t+---------------------------------------------+\n"); printf("\n\t\t\t Author : Li Zhuang 071007109\n\n");printf("\t\t\t +-------------------------+");printf("\t\t\t\t\t\t\t | 1 Input Book |\n");printf("\t\t\t | 2 Search Book |\n");printf("\t\t\t | 3 Print All Book |\n");printf("\t\t\t | 4 Del Book |\n");printf("\t\t\t | 5 Edit Book |\n");printf("\t\t\t | 0 Exit And Save |\n");printf("\t\t\t +-------------------------+\n");}void Load(void)/*读文件*/{fread(head,LEN,1,fp);p = head;while(p->link!=NULL){p1 = (struct Book*)malloc(LEN);p1 = p->link;fread(p1,LEN,1,fp);p = p->link;}}void Input(void)/*输入函数*/{p1 = (struct Book*)malloc(LEN);p1->record = p->record + 1; clrscr();printf("\n\n\t\t\t-------------------------------------------\n");printf("\t\t\t\t\tPlease Message!\n");printf("\t\t\t-------------------------------------------\n");printf("\n\t\t\tThis %d Member",p->record+1);printf("\n\t\t\tInput Num:");gets(p1->num);printf("\n\t\t\tInput Name:");gets(p1->name);printf("\n\t\t\tInput Price:");gets(p1->price);p1->link = NULL;p->link = p1;p = p1;}void ShowAll(void)/*显示所有函数*/{s = head;clrscr();printf("\n\n************************************************************** ******************\n");printf(" \t\t Num Num Name Price \n");printf("\n**************************************************************** ****************\n");do{printf("\t\t\t%-6d%-12s%-7s%-6s\n",s->record,s->num,s->name,s->price);s = s->link;}while(s!=NULL);printf("\n\n\n\t\t\tPress Any Key To Enter The Menu......!");getch();return;}void Find(void)/*查找函数*/{char c;struct Book who;s = head;clrscr();printf("\n\t\tInput Serch Book Name:");gets();while((s->link!=NULL)&&(strcmp(s->name,))){s = s->link;}if((s->link==NULL)&&(strcmp(s->name,))){printf("\"%s\" No This Book !\n",);printf("Input Again Name to Search.\n");getch();return;}clrscr();printf("\n\t\t\t\The Search Message:\n");printf("\n\n************************************************************** ******************\n");printf(" \t\t Num Num Name Price \n");printf("\n**************************************************************** ****************\n");printf("\t\t\t%-6d%-12s%-7s%-6s\n",s->record,s->num,s->name,s->price); printf("\n\n\t\t\tDel(d)\t\Edit(m)\t\Menu(s)\t\n");printf("\n\n\t\t\tInput your choice(d/m/s):");scanf("%c",&c);switch(c){case 'D':case 'd':Delete();break;case 'M':case 'm':Mend();break;}}void Mend(void)/*编辑函数*/{clrscr();printf("\n\n\n\t\t\tEdit Book Information\n\n\t\t\t");getchar();printf("\n\t\tInput New Num:");gets(s->num);printf("\n\t\tInput New Name:");gets(s->name);printf("\n\t\tInput New Price:");gets(s->price);printf("\n\t\tEdit Succeed !\n");getch();}void Delete(void)/*删除函数*/{int find_prev;int find_record;char del;char del_member_name[15];struct Book *p_del_prev;strcpy(del_member_name,s->name);getchar();printf("Del(Y/N)?",del_member_name);scanf("%c",&del);if(del=='n'||del=='N'){return;}find_prev = s->record - 1;find_record = 1;p_del_prev = head;while((p_del_prev->link!=NULL)&&(find_record<find_prev)) {p_del_prev = p_del_prev->link;find_record++;} /* 如果删除第一本书 */if(s->record==1){if(s->link!=NULL){head = head->link;s = head;while(s!=NULL){s->record = s->record - 1;s = s->link;}printf("%d,%s",p->record,p->name);}else if(s->link==NULL)/* 如果第一本书是最后一本 */ {p= NULL;head = p;if(remove("TuShu.txt")==0){printf("DEL Succeed !TuShuMuLu Yi Qing Kong!\n");printf("So You Must Input New TuShuMuLu !\n");printf("Exit,After Open Progem Build a New TuShuMuLu !\n"); }printf("\n\n\t\tPress Any Key To Enter The Menu.......\n");getch();exit(0);}}/* 如果删除最后一本书 */else if(s->record==p->record){p_del_prev->link = NULL;s->link = NULL;p = p_del_prev;}else{p_del_prev->link = s->link;s->link = NULL;while(p_del_prev->link!=NULL){p_del_prev = p_del_prev->link;p_del_prev->record = p_del_prev->record -1;}printf("%d\n%d\n",p->record,p->link);}printf("Name \"%s\" Del Succeed.\n ",del_member_name);getch();}void Save(void)/*保存文件*/{s = head;do{fwrite(s,LEN,1,fp);s = s->link;}while(s!=NULL);}五、运行结果开始程序:退出程序:六、课程设计总结通过这次课程设计,学到了很多知识,也知道了自己在哪个的欠缺。
《高级语言程序设计》课程设计报告姓名:学号:班级:设计时间:审阅教师:目录一.封面 (1)二.目录页 (2)三.语言描述及截图…………………………………………3—— 5 四.源程序清单………………………………………………6——29(报告正文部分的格式):(要求:正文部分一律用五号字,宋体,单倍行距。
一级大标题靠左,四号,宋体,加粗。
二级大标题靠左,小四,宋体,不加粗。
)课程设计的内容如下:一. 课程设计的目的与要求(含设计指标)(参见课程设计要求)二. 方案实现与调试2.1分屏处理数据系统•2.1.1 题目内容的描述•2.1.2 应用程序功能的详细说明•2.1.3 输入数据类型、格式和内容限制;•2.1.4主要模块的算法描述每次主循环产生一屏10*10的数组,分别两两比较2个元素的大小,较大的赋给MAX,较小的赋给MIN,各个元素累加结果除以100输出平均数。
结尾清屏以达到翻页效果.2.1.5 调试过程及实验结果2.2掷骰子游戏•2.2.1 题目内容的描述•2.2.2 应用程序功能的详细说明•2.2.3 输入数据类型、格式和内容限制;•2.2.4主要模块的算法描述产生1到6的随机数赋给1个包含4个元素的数组,如果前后两个数字大小一样且都为6则选手得8分,若前后两个数字大小一样但不为6则选手得7分,若果前后数字不一样,则按较小数计分。
分别将2个选手的得分相加,比较总分,得到最后结果.2.2.5 调试过程及实验结果2.3射击游戏产生一个1到200的随机数,输出相应数量空格,然后紧接着输出笑脸。
利用循环逐行输出空格回车,在笑脸下方底部输出星号,利用空循环延时,以达到星号上移的效果.若用户输入数字与产生的随机数相同,星号击中笑脸,玩家获胜,游戏结束。
若5次都错,玩家失败,游戏结束2.6猜数字游戏利用数组存放产生的随机数,创建一个TXT文本文档,将游戏过程中的所有数据写入其中.比较用户输入的数字和最开始随机产生的答案,输出猜对的个数和位置。
西安郵電大學高级语言课程设计报告题目:宿舍信息管理系统院系名称:电子工程学院专业名称:集成电路设计与集成系统班级:电路1202学生:张薇学号〔8位〕: 05126068〔33号〕指导教师:孟彩霞设计起止时间:2013年3月3日~2013年3月17日一.设计目的〔1〕通过此次课程设计让同学们可以熟练的掌握C语言的程序结构、语法规则和编程方法,同时为同学提供了一个既动手又动脑,自学,查资料,独立编写常规C语言应用程序的时机,同时为设计大型应用程序和系统打下坚实的基础。
〔2〕C语言的实践。
掌握C语言函数的定义方法,函数的声明及函数的调用过程。
掌握结构体类型变量的定义和使用,综合应用C语言的知识,实现一个完整的系统,提高编程能力,体会软件程序的开发过程。
二. 设计内容〔1〕运用结构体编辑一个简单的宿舍信息管理系统,使之能够完成宿舍信息的输入、显示、添加、修改、查询、删除、排序、退出操作。
〔2〕执行编译操作,并根据提示调试此程序,排除所有的错误和警告,直到编译成功为止。
〔3〕执行运行操作,逐一对每个模块进行调试,直到全部程序运行成功为止〔4〕请老师检查,向老师演练此程序,并能回答老师提出的相关问题。
三、需求分析〔对所开发系统功能的描述,想要实现的目标,测试数据等〕系统功能:〔1〕需要在系统外先创建文件,对文件进行数据的初始化。
〔2〕宿舍信息包括学号,,性别,年龄,出生年月日,班级,专业,床号。
〔3〕能根据学生的学号,进行排序〔4〕能查询,删除,修改,增加学生信息,浏览所有学生信息。
〔6〕可以保存到文件〔7〕可以从文件读入已有的文件〔8〕以菜单方式工作〔9〕界面简洁明了性能描述:各种功能都可以满足;程序相对较大,但运行很快,不存在响应不及时问题。
四.概要设计1.功能模块图;2.各个模块详细的功能描述。
程序包括包括了六个大模块,有输入信息,修改信息,删除信息,查找信息,统计信息,排序信息,保存信息内容。
模块功能说明:1.输入信息:从键盘上输入要保存的学生信息。
《高级语言课设报告》课程设计报告题目别踩白块儿游戏学院(部)信息学院专业通信工程班级201124040235学生姓名张玺、韩璐、张艺、王青元学号35、24、30、3711 月28 日至12 月12 日共2 周指导教师(签字)杨俊、马仑目录1.课程设计目的2.课程设计任务与要求2.1课程设计内容2.2课程设计要求2.3课程设计环境3.课程设计方案3.1方案论证3.2程序整体设计说明3.3设计思路3.4设计总体流程图3.5设计的具体实现4.程序测试4.1测试内容与结果4.2程序运行效果图5.课程设计总结附录源程序一、课程设计目的1、复习、巩固才C、C++的基础知识,进一步加深对VC技术的理解和掌握;2、课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力;3、培养学生在项目开发中团队合作精神、创新意识及能力;4、高级语言程序设计是一门综合性课程,既要求学生掌握扎实的理论基础,又要求学生具有很强的实践能力,要做到理论知识与上机实践操作相结合,以提高学生的编程思维能力、动手操作能力和解决实际应用问题的能力。
5、本门课程与其他课程的关系:高级语言程序设计是高等院校教育技术学专业本科生学科必修课程,其目的是培养学生的程序设计理念、掌握程序设计的基本方法,为后续课程(数据结构、面向对象程序设计、软件工程等)打下坚实的基础。
二、课程设计任务与要求1、课程设计内容别踩白块儿《别踩白块儿Don't Tap The White Tile》,这就是这个游戏唯一的一个规则,我们只需要不断踩着黑色方块前进即可,很简单吧?谁都可以会玩,但并不是谁都能玩得很好噢,你呢?快来挑战看看吧!选择这个题目一是为了将自己的所学知识加以运用,二是一直以来别踩白块儿这个游戏就深深地吸引着很多人,它的制作方法对于很多同学而言都是很神秘的。
所以我们希望通过这学期所学知识把它剖析开来,真真正正的了解它的本质和精髓。
计算机高级语言课程设计报告姓名: ***学号: ***********学院: ***********专业: *************班级: ******实习题目一【需求规格说明】1、有1、2、3、4、5、6六个数,能组成多少个互不相同且无重复数字的三位数?都是多少?问题描述及分析:此题为数学中的排序问题可以利用循环来解决。
【算法设计】(1)设计思想:利用for循环,将三位数的百位和十位确定,剩下的利用循环和if语句判断个位的数是否与前两位相同,而百位和十位同样需要利用for循环解决,最后输出显示可以将百位数乘以一百加上十位数乘以十加上个位数即可。
然后再利用MFC工程,将结果输出来【调试报告】开始不知道怎么用MFC在文本框中显示,就没有用MFC做,后来了解TextOut等函数就改用MFC。
【附录】重要代码:// 1_排序View.cpp : implementation of the CMy1_View class//#include "stdafx.h"#include "1_排序.h"#include "1_排序Doc.h"#include "1_排序View.h"/////////////////////////////////////////////////////////////////////////////////////////////////void CMy1_View::OnDraw(CDC* pDC){CMy1_Doc* pDoc = GetDocument();ASSERT_V ALID(pDoc);int i,j,k,m;int num=0;for(i=1;i<=6;i++){ //三位数无重复排序for(j=1;j<=6;j++){for(k=1;k<=6;k++){if(i!=j&&i!=k&&j!=k){m=100*i+10*j+k;CString str1;str1.Format(("%d"),m);pDC->TextOut((num%20)*32+50,(num/20)*32+50,str1);num++;CString str2;str2.Format(("%d"),num);//将结果在文本框里整齐的输出pDC->TextOut(100,30,str2);pDC->TextOut(50,30,"一共有");pDC->TextOut(130,30,"个数,分别是:");}}}}}/////////////////////////////////////////////////////////////////////////////运行结果:实习题目二【需求规格说明】5、文本文件中有一组整数,以空格分隔,要求排序后输出到另一个文件中。
《高级语言程序设计》课程设计报告(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.02.系统分析1.输入记录:将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
?该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
2.显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
3.修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
4•查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
5.删除记录:可删除数据文件中的任一记录。
6•恢复记录:能恢复被删除的任一记录。
通信与信息工程学院高级语言课程设计班级:电信1303姓名:学号:指导教师:黄健、刘晓佩、闫红梅、倪云峰设计时间:2014.7.7——2014.7.11成绩:评语:通信与信息工程学院二〇一四年一、课程设计要求1.题目:图书管理系统2.在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作;3.程序主菜单如下:✧"**************MENU*************", /*菜单的标题行*/✧图书信息录入/*输入数据*/✧显示图书信息/*显示所有记录*/✧图书信息查询/*要求采用书名、作者名进行查询*/✧图书信息的修改/*实现图书信息的修改和删除*/✧退出4.要求设计流程图5.功能框图6.编写代码二、程序的功能设计图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格。
图书信息管理系统提供以下功能:a.系统以菜单方式工作b.图书信息录入功能(图书信息用文件保存)--输入c.图书信息浏览功能--输出d.查询和排序功能:(至少一种查询方式)--算法e.按书名查询f.按作者名查询g.图书信息的删除与修改设计框图如下:三、 程序的数据结构结构体的定义: typedef struct {char number[10];//登录号 char name[20];//书名 char author[20];//作者 char classify[20];//分类号 char publish[50];//出版社 char time[20];//出版时间 float price; }mbook;typedef struct {int count;//书的本数mbook book[100];//最大可有100本书图书管理系统图书管理模块 查询操作模块录入图书信修改图书信删除图书信查询图书信浏览图书信退出}mlibrary;mlibrary library;数据输入输出形式:以文件的形式保存数据四、程序的函数设计1.函数的功能描述:void save()//保存图书信息void putin() /*定义录入函数*/void lookup() /*定义浏览函数*/void search() /*定义查询函数*/void del() /*定义删除函数*/void update()//修改图书信息void search_by_name() /*定义按书名查询*/void main()//主函数2.函数的调用关系void main(){…………switch(a){case 1:putin();break;case 2:lookup();break;case 3:search();break;case 4:del();break;case 5:update();break;case 0:printf("\n\n退出\n\n");break;default:printf("\n序号不对\n");}……………}五、源程序代码#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct {char number[10];//登录号char name[20];//书名char author[20];//作者char classify[20];//分类号char publish[50];//出版社char time[20];//出版时间float price;}mbook;typedef struct {int count;//书的本数mbook book[100];//最大可有100本书}mlibrary;mlibrary library;void save()//保存图书信息{FILE *fp;if((fp=fopen("library.doc","w"))==NULL){printf("\n不能保存图书信息\n");return;}fwrite(&library.count,sizeof(int),1,fp);fwrite(library.book,sizeof(library.book[0]),library.count,fp); }void putin() /*定义录入函数*/{int y=1;system("cls");while(y){printf("\t请输入您的书籍的登录号:");scanf("%s",library.book[library.count].number);printf("\t请输入书名:");scanf("%s",library.book[library.count].name);printf("\t请输入作者名:");scanf("%s",library.book[library.count].author);printf("\t请输入分类号:");scanf("%s",library.book[library.count].classify);printf("\t请输入出版社:");scanf("%s",library.book[library.count].publish);printf("\t请输入出版时间:");scanf("%s",library.book[library.count].time);printf("\t请输入该书的价格:");fflush(stdin);scanf("%f",&library.book[library.count].price);library.count++;printf("\n是否继续录入(1.继续;0,退出录入):");fflush(stdin);scanf("%d",&y);if (y!=1){y=0;break;}}save();}void lookup() /*定义浏览函数*/{system("cls");//清屏printf("登录号\t图书名\t作者名\t分类号\t出版社\t出版日期\t图书价格\n");for (int i=0;i<library.count;i++){printf("%s\t%s\t%s\t%s\t%s\t%s\t%12.2f\n",library.book[i].number ,library.book[i].name,library.book[i].author,library.book[i].classif y,library.book[i].publish,library.book[i].time,library.book[i].price );}fflush(stdin);getchar();}void search_by_name() /*定义按书名查询*/{char s2[20];int flag=1;printf("\n请输入要查询的书名: ");fflush(stdin);scanf("%s",s2);printf("登录号\t图书名\t作者名\t分类号\t出版社\t出版日期\t图书价格\n");for(int i=0;i<library.count;i++ )if(strcmp(s2,library.book[i].name)==0){flag=0;printf("%s\t%s\t%s\t%s\t%s\t%s\t%12.2f\n",library.book[i].number ,library.book[i].name,library.book[i].author,library.book[i].classif y,library.book[i].publish,library.book[i].time,library.book[i].price );}if (flag){printf("cannot found!");}fflush(stdin);getchar();}void search_by_author() /*定义按作者名查询*/{char s3[20];int flag=1;printf("请输入要查询的书的作者: ");fflush(stdin);scanf("%s",s3);printf("登录号\t图书名\t作者名\t分类号\t出版社\t出版日期\t图书价格\n");for(int i=0;i<library.count;i++ )if(strcmp(s3,library.book[i].author)==0){flag=0;printf("%s\t%s\t%s\t%s\t%s\t%s\t%12.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].classif y,library.book[i].publish,library.book[i].time,library.book[i].price );}if (flag){printf("cannot found!");}fflush(stdin);getchar();}void search_by_number() /*定义按登录号查询*/{char s4[20];int flag=1;printf("请输入要查询的书的登录号: ");fflush(stdin);scanf("%s",s4);printf("登录号\t图书名\t作者名\t分类号\t出版社\t出版日期\t图书价格\n");for(int i=0;i<library.count;i++ )if(strcmp(s4,library.book[i].number)==0){flag=0;printf("%s\t%s\t%s\t%s\t%s\t%s\t%12.2f\n",library.book[i].number ,library.book[i].name,library.book[i].author,library.book[i].classif y,library.book[i].publish,library.book[i].time,library.book[i].price );}if (flag){printf("cannot found!");}fflush(stdin);getchar();}void search() /*定义查询函数*/{int a;system("cls"); /*进行清屏*/printf("\t\t******************************\n");printf("开始查询\n");printf("\t\t\t1---------------search_by_name\n");printf("\t\t\t2---------------search_by_author\n");printf("\t\t\t3---------------search_by_number\n");printf("\t\t\t0---------------exit\n");printf("\t\t******************************\n") ;printf("\t\t请选择你想要的查询方式:");fflush(stdin);scanf("%d",&a);switch(a){case 1:search_by_name();break;case 2:search_by_author();break;case 3:search_by_number();break;case 0:return;}}void del() /*定义删除函数*/{char number[10];system("cls"); /*清屏*/printf("\n Please type in the number of the book you want to delete:");fflush(stdin);scanf("%s",number);int i;for (i=0;i<library.count;i++){if(strcmp(number,library.book[i].number)==0)break;}if (i!=library.count){for(;i<library.count-1;i++){strcpy(library.book[i].name,library.book[i+1].name);strcpy(library.book[i].number,library.book[i+1].number);strcpy(library.book[i].publish,library.book[i+1].publish);strcpy(library.book[i].author,library.book[i+1].author);strcpy(library.book[i].classify,library.book[i+1].classify);strcpy(library.book[i].time,library.book[i+1].time);library.book[i].price=library.book[i+1].price;}library.count--;}elseprintf("\n cannot found!\n");save();fflush(stdin);getchar();}void update()//修改图书信息{char number[10];system("cls"); /*清屏*/printf("\n Please type in the number of the book you want to modification:");fflush(stdin);scanf("%s",number);int i;for (i=0;i<library.count;i++){if(strcmp(number,library.book[i].number)==0){printf("登录号\t图书名\t作者名\t分类号\t出版社\t出版日期\t图书价格\n");printf("%s\t%s\t%s\t%s\t%s\t%s\t%12.2f\n",library.book[i].number,lib rary.book[i].name,library.book[i].author,library.book[i].classify,li brary.book[i].publish,library.book[i].time,library.book[i].price);break;}}if (i!=library.count){mbook book;printf("\n\t\t请输入修改后此图书的信息\n");printf("\t请输入登录号:");scanf("%s",book.number);printf("\t请输入图书名:");scanf("%s",);printf("\t请输入作者名:");scanf("%s",book.author);printf("\t请输入分类号:");scanf("%s",book.classify);printf("\t请输入出版社:");scanf("%s",book.publish);printf("\t请输入出版时间:");scanf("%s",book.time);printf("\t请输入该书的价格:");fflush(stdin);scanf("%f",&book.price);strcpy(library.book[i].name,);strcpy(library.book[i].number,book.number);strcpy(library.book[i].publish,book.publish);strcpy(library.book[i].author,book.author);strcpy(library.book[i].classify,book.classify);strcpy(library.book[i].time,book.time);library.book[i].price=book.price;save();}elseprintf("\n cannot found!\n");fflush(stdin);getchar();}void main(){FILE *fp;if((fp=fopen("library.doc","r"))==NULL){printf("\n不能打开图书信息库\n");fp=fopen("library.doc","w+");printf("\n初始化图书信息库,初始化之后要重启程序\n");library.count=0;fwrite(&library.count,sizeof(int),1,fp);fclose(fp);return;}fread(&library.count,sizeof(int),1,fp);fread(library.book,sizeof(library.book[0]),library.count,fp);fclose(fp);int a;do{system("cls");printf("\n\n\n\n\t\t\t\t\ 欢迎使用\ \t\t\t\t\n");printf("\n\n\n\t\t\t\t图书信息管理系统\t\t\t\t\n\n");printf("\t\t\t **********************************\n"); printf("\t\t\t│主菜单│\n");printf("\t\t\t│1 ------------------图书信息录入│\n");printf("\t\t\t│2 ------------------图书信息浏览│\n");printf("\t\t\t│3 ------------------图书信息查询│\n");printf("\t\t\t│4 ------------------图书信息删除│\n");printf("\t\t\t│5 ------------------图书信息修改│\n");printf("\t\t\t│0 ------------------退出│\n"); printf("\t\t\t││\n");printf("\t\t\t **********************************\n\n");printf("\t\tPlease Enter Choose: ");fflush(stdin);scanf("%d",&a);switch(a){case 1:putin();break;case 2:lookup();break;case 3:search();break;case 4:del();break;case 5:update();break;case 0:printf("\n\n退出\n\n");break;default:printf("\n序号不对\n");}}while(a!=0);save();}六、调试及总结1)调试截图图(1)为登陆界面图(1)图(2)为录入图书信息界面图(2)图(3)为查询图书信息界面图(3)图(4)为查询结果界面图(4)图(5)为退出系统界面图(5)2)总结:本次课程设计的目的是为了进一步加深、巩固我们第一学期所学专业课程(《C 语言》)的基本理论知识,理论联系实际,进一步培养我们综合分析问题和解决问题的能力。