📄 init.c
字号:
/*
Name:init.c
Copyright:Starting Line
Author:
Date: 13-11-08 13:02
Description:init类中成员函数的定义
*/
/*
TO
这段可以看看,也可以不看,主要就是累代码,没啥新意
*/
#include "includes.h"
SET setREC [NUM_SET] ;//全局变量,用于放置配置文件的内容
extern FTYPE FUNList [ FUN_NUM ];
/*
Function Name:Init
Author:
Description:初始化函数的定义
*/
void Init ( initType INIcom )
{
int i;
switch ( INIcom )
{
case INI :
/*
INI包括读取配置文件,初始化显示的功能
读取菜单项将确定是否为第一次使用
若为首次使用,则输出欢迎屏幕,并且打开帮助文件
若非首次使用,则输出正常屏幕
*/
{
//初始化LineHis类,为表达式存储作准备
InitLineHis ();
comInit ();
LoadFUN ();
FILE * appset = NULL;//文件类型,用于读取配置文件
appset = fopen ( "APPSET.bin","rb" );//读取配置文件,配置文件的内容由你来生成
if ( appset == NULL )
{
Error ( E_FAIL_APPSET );//读取失败错误处理
}
else
{
//fscanf ( appset , "%d" , appset [i] );//读入配置项
//
//修改记录,提议
//
fread ( setREC , sizeof ( SET ) , NUM_SET , appset );//读入配置项
// printf ( "%d,%d",setREC[0],setREC[1] );
// getch();
/*
第0项:
1 第一次使用
0 非第一次
第1项:
0 弧度制
1 角度制
*/
fclose ( appset );//关闭配置文件
}
system ( "cls" );//清屏,为屏幕输出做好准备
switch ( setREC [0] )
{
case FIRST ://首次使用的处理
{
//在这里,应该加入一段代码,使APPSET.bin文件中关于首次使用的记录段置位为NOTFIRST
//
//
//
if((appset=fopen("APPSET.BIN","wb"))==NULL)
{
Error( E_FAIL_APPSET ); //创建配置文件失败,致命错误
}
else
{
setREC [0]=NOTFIRST;
fwrite(&setREC , sizeof(SET) , 2 ,appset);
}
//输出欢迎信息,内容待商榷
printf ( " Welcome to use!\n" );
printf ( " This is the first time you start this application\n");
printf ( " To see how to use this calculator, Press any key to continue...");
getch ();//一个间断
system ( "cls" );
system ( "Help.chm");//打开帮助文件
printf ( "File Edit Help" );//输出菜单项
printf ( "\n----------------------------\n" );//输出一个分隔行
printf ( " RAD \n" );//首次使用的时候,角制度域默认为弧度制,所以不需要判断
break;//跳出后等待用户输入
}
case NOTFIRST :
{
//非第一次使用,直接输出菜单项
system ( "cls" );
printf ( "File Edit Help" );
printf ( "\n----------------------------\n" );//输出一个分隔行
switch ( setREC [1] )//对角制度域进行判断
{
case RAD ://弧度制
{
printf ( " RAD \n" );//输出弧度制标志
break;
}
case DEG ://角度制
{
printf ( " DEG \n" );//输出弧度制标志
break;
}
default :
{
Error ( E_FAIL_LOAD_SET );//错误处理
}
}
break;//跳出后等待用户输入
}
default :
{
Error ( E_FAIL_LOAD_SET );//其他值表明setREC[0]域有错误
//这个检查只在非第一次使用,并且程序初始化的时候检查
}
}
break;
}
//以上为case INI
case FILE_ :
/*
用户输入指令file以后的处理
作为本程序的不足之处,在收到指令以后,为了显示下拉菜单,必须清除屏幕
*/
{
system ( "cls" );
printf ( "File Edit Help\n" );//打印菜单项
printf ( " New\n Open\n Save\n Save As\n Game\n Exit" );//打印二级菜单
/*
注意这里的每一菜单项都涉及到一条指令
可能需要一个或多个处理
*/
printf ( "\n----------------------------\n" );//输出一个分隔行
switch ( setREC [1] )//判断角制度
{
case RAD :
{
printf ( " RAD \n" );//输出弧度制标志
break;
}
case DEG :
{
printf ( " DEG \n" );//输出弧度制标志
break;
}
//此处不必检查setREC[1]的合法性
}
break;//跳出后等待用户输入
}
case EDIT :
{
system ( "cls" );
printf ( "File Edit Help\n" );
printf ( " Previous Line\n Next Line\n Deg Mode\n Rad Mode" );
printf ( "\n----------------------------\n" );//输出一个分隔行
switch ( setREC [1] )
{
case RAD :
{
printf ( " RAD \n" );//输出弧度制标志
break;
}
case DEG :
{
printf ( " DEG \n" );//输出弧度制标志
break;
}
//此处不必检查setREC[1]的合法性
}
break;//跳出后等待用户输入
}
case ABOUT :
{
system ( "cls" );
printf ( "File Edit Help\n" );
printf ( "----------------------------\n" );//输出一个分隔行
printf ( "----------------------------\n" );//以下输出版权标志
printf ( "| Power Calculator |\n" );
printf ( "| Copyright @ Starting Line|\n" );
printf ( "----------------------------\n" );
system ( "pause" );//得到一个中断
//当用户按下任意键以后,就立刻返回
Init ( CLS );//递归一次,调用清屏,重新输出屏幕
break;
}
case CLS :
{
//作用仅仅是重输出屏幕,不做任何其他措施
system ( "cls" );//清屏
printf ( "File Edit Help\n" );
printf ( "----------------------------\n" );//输出一个分隔行
switch ( setREC [1] )//输出角制度
{
case RAD :
{
printf ( " RAD \n" );//输出弧度制标志
break;
}
case DEG :
{
printf ( " DEG \n" );//输出弧度制标志
break;
}
//此处不必检查setREC[1]的合法性
}
break;//跳出后等待用户输入
}
case DEG_ :
{
//此处调整配置文件内容以及修改setREC[1]的内容
//
//
//
FILE * appset;
appset = NULL;
if(( appset = fopen ("APPSET.BIN","wb")) == NULL )
{
Error( E_FAIL_APPSET ); //创建配置文件失败,致命错误
}
else
{
setREC [1]=DEG;
fwrite(&setREC[0],sizeof(SET),1,appset);
fwrite(&setREC[1],sizeof(SET),1,appset);
fclose(appset);
}
Init ( CLS );//清除屏幕,重新打印
break;
}
case RAD_ :
{
//此处调整配置文件内容以及修改setREC[1]的内容
//
//
//
FILE * appset;
appset = NULL;
if((appset=fopen("APPSET.BIN","wb"))==NULL)
{
Error( E_FAIL_APPSET ); //创建配置文件失败,致命错误
}
else
{
setREC [1]=RAD;
fwrite(&setREC[0],sizeof(SET),1,appset);
fwrite(&setREC[1],sizeof(SET),1,appset);
fclose(appset);
}
Init ( CLS );//清除屏幕,重新打印
break;
}
case HELP ://打开帮助文件
{
Init ( CLS );//重绘屏幕
system ( "Help.chm" );//打开帮助文件
break;
}
case BYE ://显示退出信息
{
system ( "cls" );//清除屏幕
printf ( "Bye Bye !" );
}
}
}
/*
设计中尚未发现需要对Init的参数进行合法性检查的必要
所以暂时未写出合法性检查的语句
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -