课程实训报告。
题目:多功能菜单选择程序设计与实现。
设计者:专业班级:
学号:指导教师:
2023年 01 月 17 日。
计算机工程系。
1 题目与要求。
1.1 问题提出。
本人计划编写一个多功能菜单选择程序设计与实现,主要用来实现解一元二次方程、解决josephus问题、学生信息管理。
1.2 本系统涉及的知识点。
结构、数组、循环、函数、分支、指针、结构体,结构体数组、文件的操作等知识。
1.3 功能要求:
一、建立一元二次方程的运算:输入方程的系数a,b,c,求解该方程的根。
二、建立一个程序,解决josephus问题。
三、建立一个程序,实现通讯录管理。
1.输入学生的信息:包括姓名、**号码、类别、电子邮件等;
2 . 从键盘输入通讯录的信息。
3.从指定的文件中读入学生的信息;
4.按姓名查询通讯录的信息。;
5.按分类查询通讯录的信息;
6.删除指定姓名的通讯录的信息。
7将通讯录信息保存在指定的文件中。
2 功能设计(左对齐,宋体粗四号)
2.1 算法设计(左对齐,宋体粗小四号)
首先编写一个菜单驱动程序,输入1~4之间的任意一个数字,即可进入相应选择项。当选择相应选项时,其输出信息分别为:解一元二次方程、出圈游戏、功能3和退出程序。
1)实现循环和功能选择。
假设输入选择用变量cn存储,它作为menu_select()函数的返回值提供给switch语句。使用for循环实现重复选择,并在函数handle_menu()中实现。
菜单处理函数。
void handle_menu()for
实际使用时,只有选择4,程序才能结束运行,这就要使用循环控制。
这里使用for循环语句实现菜单的循环选择,为了结束程序的运行,使用“return”语句即可,也可以使用“exit(0);”语句。
2)得到cn的合理值。
如前所述,应该设计一个函数用来输出信息和处理输入,这个函数应该返回一个数值cn,以便供给switch语句使用。假设函数名为menu_select,设计的参考程序如下:
菜单选择函数。
int menu_select()
char s[2];
int cn;
printf("\t1. 解一元二次方程");
printf("\t2. 出圈游戏");
printf("\t3. 功能3");
printf("\t4. 退出程序 ")
printf("\t选择1-4: "
forreturn cn;
语句“cn=atoi(s);”是为了使输入的字符串转变为数字,以便使switch中的case语句对应数字1~4。对于不符合要求的输入,将被要求重新输入。
3)设计头文件。
将函数原型声明在头文件中,假设头文件为。
#if !defined(c_h)
#define c_h
#include <>
void handle_menu();
int menu_select();
#endif
4)设计主程序。
主程序非常简单,只有一条语句。假设使用文件其内容如下:
主程序文件。
#include ""
void main()
handle_menu();
编译运行,即可检查并验证菜单选择是否正确。
本系统需要实现的功能要求:
利用switch语句设计如图1所示的主菜单(图中的文字宋体5号):
请输入选项编号(1~6),
图1 多功能菜单选择程序系统主菜单。
所有的图统一编号,宋体5号,置于图下的中间,)
2、选择3后,调用排序函数,进入函数后利用switch语句实现一个如图2所示的菜单,该菜单中分为6个小模块:,
图2 排序子菜单。
3、根据所选菜单编写相应**:
1)输入函数input:利用循环输入的方式,将有关信息存入结构数组,结构数组根据实际的人数,采用动态方式建立。
2)求开根函数sqrt():利用数学公式x1.2=
图3 系统模块图2.2 部分模块流程图。
流程图的画法参阅第二章。
3 程序**设计(左对齐,宋体粗四号)
内容:分模块(函数)简述其功能;模块中使用的各变量的类型及作用,包括声明数据类型(如结构体);设计过程;并列出该模块(函数)的**。(宋体小四号)。
例如:输入模块(模块名宋体粗小四号,其余宋体小四号)
一.1)void menu_select();函数。
2)功能:显示子菜单;
二.1).input()函数;
2)功能:利用for循环语句和scanf、gets、getchar函数完成对结构数组的输入,存放n个学生的信息(学号、姓名、性别、4门成绩)。
3)变量及类型:
int a[5][4] :整型形参数组,接收main函数传过来的二维数组的首地址。
int i , j :循环控制变量。
int n :整型形参变量,接收main()传过来的数组人数。
struct student stu[ ]接收主函数传过来的数组首地址。
4)说明:执行完输入函数后,会在键盘缓冲区中保存回车键,后面再对字符型变量赋值时,会将缓冲区中的回车键当成数据存入变量中,所以要在某些输入语句后面加getchar()函数。(若不需说明部分可省略)
4 c程序设计总结(左对齐,宋体粗四号)
1. 在程序调试的过程中,有很多细节错误,比如:忘记了在语句后加分号,忘记加&,搞错变量的定义类型,内循环和外循环没有弄清,循环的次数控制不合理,函数的调用问题没有更深层次地去理解,调试出错但是不知道错在**,也不知道怎么去处理该错误等。
2. 经过这次实训,我学到了很多,程序的设计和**的输入都要非常细心和有耐心,很多问题都是在细节上出错。还有就是通过实训巩固了自己所学的知识,在实训中还懂的了一些以前不懂的知识,明白了只有在实训中才能提高能力!
(小四,宋体)
5 结束语(可省略)
这次实训有不小的收获,发现实践是学习必不可少的而且是非常重要的过程,同时也体会到软件的应用是一定要与实际问题相结合的,很感谢同学、老师帮助和指导。
小四,宋体)
6 程序如下:
#if !defined(c_h)
#define c_h
#include <>
void handle_menu();
int menu_select();
#include<>
void a();
void b();
void c();
#include<>
#endif
#include""
void main()
handle_menu();
#include""
void a()
float a,b,c;
double x1,x2;
printf("a*x*x+b*x+c=0");
printf("a,b,c=")
scanf("%d,%d,%d",&a,&b,&c);
printf("");
x1=(-b+sqrt(b*b-4*a*c))/2*a;
printf("x1=%d",x1);
x2=(-b-sqrt(b*b-4*a*c))/2*a;
printf("x2=%d",x2);
#include""
void b()
void a(int ar,int size);
int n,a[1000];
char b;
dowhile(b=='y');
return 0;
void a(int ar,int size)
int x,y=0,i,m;
printf("m=")
scanf("%d",&m);
x=1;for(i=0;i<=size-1;i++)
while(y!=size-1)
y=0;for(i=0;i<=size-1;i++)
if(ar[i]!=0)
ar[i]=x;
高级语言程序报告
石家庄经济学院。高级语言程序设计 课程实习报告。班级 4101090301 姓名 梁立建 学号 410109030121 日期 2012.5.7 目录。1 概述 3 2 系统的分析与设计 3 2.1 系统设计目标 3 2.2 系统的功能分析 3 2.3 系统的结构和工作原理 或流程 5 2.3.1 ...
高级语言程序设计
总分 100.00,做题时间 90分钟 一 单项选择题 总题数 15,分数 30.00 语言早期规定建立文件缓冲区采用的形式是 分数 2.00 a.缓冲文件系统。b.非缓冲文件系统。c.分页文件系统。解析 2.以下是对二维数组的正确说明的是 分数 2.00 a 3,4 a 1 4 a 3 4 解析 ...
复习,高级语言,c程序
所谓标识符,就是你起的一个名字。c c 中,是你用来标识变量名 符号常量名 函数名 数组名 文件名 类名 对象名等的。就好像你父母有了你以后给你起的名字 c c 有效标识符的构成规则如下 1 第一个字符必须是字母 不分大小写 或下划线 2 后跟字母 不分大小写 下划线 或数字组成 3 标识符中的大小...