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

📄 fina.cpp

📁 本作品为一简单的数据库引擎,用于简单的学生成绩管理,包括班级课程设置、学分设置、学生成绩入录、总成绩计算和综合测评成绩.可以实时添加删除班级、删除添加同学,也可实时更改信息,自动保存和刷新.
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		else if(PtInRect(&PrevRect,ptMouseOld)&&(!PtInRect(&PrevRect,ptMouseNew)))
		{
			ReleaseCapture();
			CurPosSetting(hPrevIcon,PrevRect);
		}

		if(PtInRect(&InfoRect,ptMouseNew)&&(!PtInRect(&InfoRect,ptMouseOld)))
		{
    		SetCursor(LoadCursor(hInst,MAKEINTRESOURCE(IDC_HAND)));
			SetCapture(hWnd);
			CurPosSetting(hInfoOnIcon,InfoRect);
		}
		else if(PtInRect(&InfoRect,ptMouseOld)&&(!PtInRect(&InfoRect,ptMouseNew)))
		{
			ReleaseCapture();
			CurPosSetting(hInfoIcon,InfoRect);
		}

		if(PtInRect(&NextRect,ptMouseNew)&&(!PtInRect(&NextRect,ptMouseOld)))
		{
    		SetCursor(LoadCursor(hInst,MAKEINTRESOURCE(IDC_HAND)));
			SetCapture(hWnd);
			CurPosSetting(hNextOnIcon,NextRect);
		}
		else if(PtInRect(&NextRect,ptMouseOld)&&(!PtInRect(&NextRect,ptMouseNew)))
		{
			ReleaseCapture();
			CurPosSetting(hNextIcon,NextRect);
		}

		if(PtInRect(&DelRect,ptMouseNew)&&(!PtInRect(&DelRect,ptMouseOld)))
		{
    		SetCursor(LoadCursor(hInst,MAKEINTRESOURCE(IDC_HAND)));
			SetCapture(hWnd);
			CurPosSetting(hDelOnIcon,DelRect);
		}
		else if(PtInRect(&DelRect,ptMouseOld)&&(!PtInRect(&DelRect,ptMouseNew)))
		{
			ReleaseCapture();
			CurPosSetting(hDelIcon,DelRect);
		}

		if(PtInRect(&HelpRect,ptMouseNew)&&(!PtInRect(&HelpRect,ptMouseOld)))
		{
    		SetCursor(LoadCursor(hInst,MAKEINTRESOURCE(IDC_HAND)));
			SetCapture(hWnd);
			CurPosSetting(hHelpOnIcon,HelpRect);
		}
		else if(PtInRect(&HelpRect,ptMouseOld)&&(!PtInRect(&HelpRect,ptMouseNew)))
		{
			ReleaseCapture();
			CurPosSetting(hHelpIcon,HelpRect);
		}

		if(PtInRect(&EmailRect,ptMouseNew)&&(!PtInRect(&EmailRect,ptMouseOld)))
		{
    		SetCursor(LoadCursor(hInst,MAKEINTRESOURCE(IDC_HAND)));
			SetCapture(hWnd);
		}
		else if(PtInRect(&EmailRect,ptMouseOld)&&(!PtInRect(&EmailRect,ptMouseNew)))
		{
			ReleaseCapture();
		}

		if(PtInRect(&HomePageRect,ptMouseNew)&&(!PtInRect(&HomePageRect,ptMouseOld)))
		{
    		SetCursor(LoadCursor(hInst,MAKEINTRESOURCE(IDC_HAND)));
			SetCapture(hWnd);
		}
		else if(PtInRect(&HomePageRect,ptMouseOld)&&(!PtInRect(&HomePageRect,ptMouseNew)))
		{
			ReleaseCapture();
		}

		return 0;		
	default:
		return DefWindowProc(hWnd,msg,wParam,lParam);
	}

	return 0;
}
/*
void MoveInfoWnd()
{
	SetWindowPos(hInfoShowWnd,HWND_TOP,0,iTmpY,100,40,SWP_NOSIZE|SWP_SHOWWINDOW);
	iTmpY++;

	if(iTmpY>=150)
	{
		KillTimer(hInfoShowWnd,26);
		InvalidateRect(hwnd,NULL,1);
		UpdateWindow(hwnd);
	}


}
*/
BOOL InitProgram(HINSTANCE hInstance)
{
	WNDCLASSEX wcex;
	HBITMAP hBackBitmap;
	HBRUSH hBackBrush;

	hBackBitmap=LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_BACK));
	hBackBrush=CreatePatternBrush(hBackBitmap);
	DeleteObject(hBackBitmap);

	memset(&wcex,0,sizeof(WNDCLASSEX));
	wcex.cbSize=(sizeof(WNDCLASSEX));
	wcex.lpszClassName="Fina";
	wcex.hInstance=hInstance;
	wcex.lpfnWndProc=(WNDPROC)MainProc;
	wcex.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_MAIN));
	wcex.hbrBackground=(HBRUSH)CreateSolidBrush(RGB(102,255,153));//hBackBrush;
	wcex.hCursor=LoadCursor(NULL,IDC_ARROW);
	wcex.lpszMenuName=NULL;//MAKEINTRESOURCE(IDM_MAIN);
	wcex.cbClsExtra=0;
	wcex.cbWndExtra=0;
	wcex.style=0;
	wcex.hIconSm=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_MAIN));

	if(!RegisterClassEx(&wcex))
		return FALSE;

	return TRUE;
}

HWND CALLBACK InitMainWnd(HINSTANCE hInstance)
{
	return (CreateWindowEx(0L,
		"Fina","Fina",
		WS_VISIBLE|WS_MINIMIZEBOX|WS_SYSMENU|CS_OWNDC|CS_HREDRAW|CS_VREDRAW,
		100,100,550,360,
		NULL,
		(HMENU)NULL,
		hInstance,
		NULL));
}

int _stdcall WinMain(HINSTANCE hInstance,
					 HINSTANCE hPreInstance,
					 LPSTR lpCmdLine,
					 int nCmdShow)
{
	MSG msg;

	hInst=hInstance;

	InitCommonControls();

	if(!InitProgram(hInstance))
		return 0;
	if((hwnd=InitMainWnd(hInstance))==(HWND)0)
	{
		MessageBeep(0xffffffff);
		return 0;
	}
	ShowWindow(hwnd,SW_SHOW);
	UpdateWindow(hwnd);

	while(GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return msg.wParam;
}

BOOL _stdcall InitTreeWnd(HWND hWnd)
{
	HIMAGELIST hImageList;

	hTree=CreateWindowEx(WS_EX_CLIENTEDGE,
		WC_TREEVIEW,
		NULL,
		WS_VISIBLE|WS_CHILD|TVS_HASLINES|TVS_LINESATROOT|TVS_SHOWSELALWAYS|TVS_HASBUTTONS,
		340,10,200,250,
		hWnd,
		(HMENU)NULL,
		hInst,
		NULL);

	hImageList=ImageList_Create(IMAGEWIDTH,IMAGEHEIGHT,0,IMAGENUM,0);
	
	hBitmap=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_INFO));
	idInfo=ImageList_Add(hImageList,hBitmap,NULL);
	hBitmap=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_CLASS));
	idClass=ImageList_Add(hImageList,hBitmap,NULL);
	hBitmap=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_FACEON));
	idFaceOn=ImageList_Add(hImageList,hBitmap,NULL);
	hBitmap=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_FACEADD));
	idFaceAdd=ImageList_Add(hImageList,hBitmap,NULL);
	hBitmap=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_ROOT));
	idRoot=ImageList_Add(hImageList,hBitmap,NULL);
	hBitmap=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_ME));
	idMe=ImageList_Add(hImageList,hBitmap,NULL);
	hBitmap=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_CLASSADD));
	idClassAdd=ImageList_Add(hImageList,hBitmap,NULL);


	if(ImageList_GetImageCount(hImageList)<IMAGENUM)
	{
		MessageBeep(0xffffffff);
		return 0;
	}

	if(TreeView_SetImageList(hTree,hImageList,idInfo)) MessageBeep(0xffffffff);

	LoadString(hInst,IDS_ROOT,cTmpBuff,sizeof(cTmpBuff));
	hRootItem=AddOneItem(hTree,TVI_ROOT,TVI_FIRST,cTmpBuff,idRoot);
	LoadString(hInst,IDS_INFO,cTmpBuff,sizeof(cTmpBuff));
	hInfoItem=AddOneItem(hTree,TVI_ROOT,TVI_LAST,cTmpBuff,idInfo);
	LoadString(hInst,IDS_ME,cTmpBuff,sizeof(cTmpBuff));
	hMeItem=AddOneItem(hTree,hInfoItem,TVI_LAST,cTmpBuff,idMe);
	LoadString(hInst,IDS_CLASSADD,cTmpBuff,sizeof(cTmpBuff));
	hClassAddItem=AddOneItem(hTree,hRootItem,TVI_LAST,cTmpBuff,idClassAdd);

	ReflashTreeWnd();

	return 1;
}


HTREEITEM AddOneItem(HWND hTreeWnd,HTREEITEM hParentItem,HTREEITEM hBrotherItem,LPSTR szText,int iImage)
{
	TV_ITEM tvItem;
	TV_INSERTSTRUCT tvInsertItem;
	HTREEITEM hTreeItem;

	tvItem.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_PARAM;
	tvItem.pszText=szText;
	tvItem.cchTextMax=lstrlen(szText);
	tvItem.iImage=iImage;
	tvItem.iSelectedImage=iImage;

	tvInsertItem.item=tvItem;
	tvInsertItem.hParent=hParentItem;
	tvInsertItem.hInsertAfter=hBrotherItem;

	hTreeItem=(HTREEITEM)SendMessage(hTreeWnd,TVM_INSERTITEM,0,(LPARAM)(LPTV_INSERTSTRUCT)&tvInsertItem);

	return(hTreeItem);
}

BOOL DelOneItem(HWND hTreeWnd,HTREEITEM hDelItem)
{
	TreeView_DeleteItem(hTree,hDelItem);

	return 1;
}

BOOL _stdcall InitOperateIcon(HWND hWnd,HDC hDc)
{
	if(!DrawIcon(hDc,23,276,hExitIcon))
		return 0;
	TextOut(hDc,26,274+34,"Exit",sizeof("Exit")-1);
	if(!DrawIcon(hDc,280,276,hHelpIcon))
		return 0;
	TextOut(hDc,282,274+34,"Help",sizeof("Help")-1);
	if(!DrawIcon(hDc,230,276,hDelIcon))
		return 0;
	TextOut(hDc,226,274+34,"Delete",sizeof("Delete")-1);
	if(!DrawIcon(hDc,180,276,hNextIcon))
		return 0;
	TextOut(hDc,182,274+34,"Next",sizeof("Next")-1);
	if(!DrawIcon(hDc,130,276,hInfoIcon))
		return 0;
	TextOut(hDc,134,274+34,"Info",sizeof("Info")-1);
	if(!DrawIcon(hDc,80,276,hPrevIcon))
		return 0;
	TextOut(hDc,82,274+34,"Prev",sizeof("Prev")-1);
	
	return 1;
}

BOOL _stdcall CurPosSetting(HICON hNewIcon,RECT Rect)
{
	HDC hDc;
	hDc=GetDC(hwnd);
	if(DrawIcon(hDc,Rect.left,Rect.top,hNewIcon))
	{
		ReleaseDC(hwnd,hDc);
		return 0;
	}
	ReleaseDC(hwnd,hDc);

	return 1;
}

BOOL CALLBACK CreateClassInfoWnd(HWND hParentWnd,HDC hParentDC)
{
	char str[6][8]={{"学科一"},{"学科一"},{"学科二"},{"学科四"},{"学科五"},{"学科六"}};
	int i;

	SetBkMode(hParentDC,TRANSPARENT);
	SetTextColor(hParentDC,RGB(0,0,0));

	TextOut(hParentDC,15,5,"班级名称",lstrlen("班级名称"));
	hgClassNameWnd=CreateWindowEx(0L,
		"edit",
		"班 名",
		WS_CHILD|WS_VISIBLE|ES_LEFT,
		90,5,170,15,
		hParentWnd,
		(HMENU)NULL,
		hInst,
		NULL);

	TextOut(hParentDC,100,35,"学科名称",lstrlen("学科名称"));
	TextOut(hParentDC,250,35,"学分",lstrlen("学分"));

	for(i=0;i<6;i++)
	{
		TextOut(hParentDC,5,35+(1+i)*25,str[i],lstrlen(str[i]));
		hgSubjectNameWnd[i]=CreateWindowEx(0L,
			"edit",
			"SubjectNameWnd",
			WS_VISIBLE|WS_CHILD|ES_LEFT,
			60,35+(i+1)*25,170,15,
			hParentWnd,
			(HMENU)NULL,
			hInst,
			NULL);

		hgSubjectScoreWnd[i]=CreateWindowEx(0L,
			"edit",
			"X",
			WS_VISIBLE|WS_CHILD|ES_LEFT,
			250,35+(i+1)*25,30,15,
			hParentWnd,
			(HMENU)NULL,
			hInst,
			NULL);
	}
//	SetWindowText(hgClassNameWnd,"elllfagjae");

	return 1;
}

BOOL CALLBACK SaveData(HTREEITEM hParentItem,HTREEITEM hChildItem)
{
	char cClassNameSaving[21];
	char cSubjectNameSaving[6][21];
	char cSubjectScoreSaving[6][3];
	float fSubjectScoreSaving[6];

	char cStudentNameSaving[11];
	char cStudentScoreSaving[6][5];
	char cStudentNumSaving[10];
	float fStudentScoreSaving[6];

	BOOL bIsFaceAddItem=0;
	int i,j,k;
	char str[21];

//the prev item not exist!
	if(hParentItem==hRootItem)
	{
    	hDataFile=_lopen("fina.hui",OF_WRITE);
    	if(hDataFile==HFILE_ERROR)
	    	return 0;

		Edit_GetText(hgClassNameWnd,cClassNameSaving,21);
		for(i=0;i<6;i++)
		{
			Edit_GetText(hgSubjectNameWnd[i],cSubjectNameSaving[i],21);
			Edit_GetText(hgSubjectScoreWnd[i],cSubjectScoreSaving[i],3);
		}
		
		for(i=0;i<6;i++)
		{
			fSubjectScoreSaving[i]=String2Float(cSubjectScoreSaving[i]);
/*?????*/	wsprintf(str,"%d",(int)fSubjectScoreSaving[i]);/*???????????????*/
//			MessageBox(NULL,str,"value",MB_OK);
		}
		
/*hClassAddItem*/
		if((lstrcmp(cClassNameSaving,"ClassNameWnd")!=0)&&hChildItem==hClassAddItem)
		{
			lstrcpy(classroom[iClassNumber].cClassName,cClassNameSaving);
	    	for(i=0;i<6;i++)
	    	{
		    	lstrcpy(classroom[iClassNumber].classsubject[i].cSubjectName,cSubjectNameSaving[i]);
    			classroom[iClassNumber].classsubject[i].fSubjectScore=fSubjectScoreSaving[i];
	    	}
    		if(_llseek(hDataFile,iClassNumber*sizeof(struct classinfo),0)==HFILE_ERROR)
	    	{
		    	MessageBox(NULL,"Error Seek","Information",MB_OK);
    		}

	    	if(_lwrite(hDataFile,(LPSTR)&classroom[iClassNumber],sizeof(struct classinfo))==HFILE_ERROR)
	    	{
		    	MessageBox(NULL,"Error Write","Information",MB_OK);
    		}

//			lstrcpy(cTmpBuff,cClassNameSaving);
//			hClassItem[iClassNumber]=AddOneItem(hTree,hRootItem,TVI_FIRST,cTmpBuff,idClass);
			_lclose(hDataFile);

			ReflashTreeWnd();//fine
		}
    	else if(hChildItem!=hClassAddItem)//class
		{
        	hDataFile=_lopen("fina.hui",OF_WRITE);
        	if(hDataFile==HFILE_ERROR)
			{
				MessageBox(hwnd,"Error Open Fina.hui","Warning...",MB_OK);
	        	return 0;
			}

			i=GetClassItemNum(hChildItem);

			lstrcpy(classroom[i].cClassName,cClassNameSaving);
	    	for(j=0;j<6;j++)
	    	{
		    	lstrcpy(classroom[i].classsubject[j].cSubjectName,cSubjectNameSaving[j]);
    			classroom[i].classsubject[j].fSubjectScore=fSubjectScoreSaving[j];
//				wsprintf(str,"%d",(int)fSubjectScoreSaving[j]);
//     			MessageBox(NULL,str,"value1",MB_OK);

	    	}
    		if(_llseek(hDataFile,i*sizeof(struct classinfo),0)==HFILE_ERROR)
	    	{
		    	MessageBox(hwnd,"Error Seek Changing Class","Warning...",MB_OK);
    		}

	    	if(_lwrite(hDataFile,(LPSTR)&classroom[i],sizeof(struct classinfo))==HFILE_ERROR)
	    	{
		    	MessageBox(NULL,"Error Write","Warning...",MB_OK);
    		}

			if(_lclose(hDataFile)==HFILE_ERROR)
			{
				MessageBox(hwnd,"Error Close Fina.hui","Warning...",MB_OK);
			}

//			ReflashTreeWnd();
//			UpdateInfoData();
		}
	}
	else//student
	{
		for(i=0;i<50;i++)
		{
			if(hChildItem==hFaceAddItem[i])
			{
				bIsFaceAddItem=1;
				break;
			}
		}

		Edit_GetText(hgStudentNameWnd,cStudentNameSaving,11);
		Edit_GetText(hgStudentNumWnd,cStudentNumSaving,10);
		for(i=0;i<6;i++)
		{
			Edit_GetText(hgStudentScoreWnd[i],cStudentScoreSaving[i],5);
		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -