⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.c

📁 即时计算加法
💻 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 + -