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

📄 fina.cpp

📁 本作品为一简单的数据库引擎,用于简单的学生成绩管理,包括班级课程设置、学分设置、学生成绩入录、总成绩计算和综合测评成绩.可以实时添加删除班级、删除添加同学,也可实时更改信息,自动保存和刷新.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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",
		"ClassNameWnd",
		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;
	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();
		}
    	else if(hChildItem!=hClassAddItem)//class
		{
        	hDataFile=_lopen("fina.hui",OF_WRITE);
        	if(hDataFile==HFILE_ERROR)
	        	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(NULL,"Error Seek Where Change Class","Information",MB_OK);
    		}

	    	if(_lwrite(hDataFile,(LPSTR)&classroom[i],sizeof(struct classinfo))==HFILE_ERROR)
	    	{
		    	MessageBox(NULL,"Error Write","Information",MB_OK);
    		}
//			ReflashTreeWnd();
			UpdateInfoData();
		}
	}
	else//student
	{
		for(i=0;i<20;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);
		}

		for(i=0;i<6;i++)
		{
			fStudentScoreSaving[i]=String2Float(cStudentScoreSaving[i]);
		}

		if((lstrcmp(cStudentNameSaving,"StudentNameWnd")!=0)&&bIsFaceAddItem)
		{
			hDataFile=_lopen("fina.hui",OF_WRITE);
			if(hDataFile==HFILE_ERROR)
				return 0;

			i=GetClassItemNum(hParentItem);
			j=GetStudentItemNum(i,hChildItem);

			lstrcpy(classroom[i].student[j].cStudentName,cStudentNameSaving);
			for(k=0;k<6;k++)
			{
				classroom[i].student[j].fScore[k]==fStudentScoreSaving[k];
				lstrcpy(classroom[i].student[j].cStudentNum,cStudentNumSaving);
			}
			if(_llseek(hDataFile,i*sizeof(struct classinfo)+sizeof(struct subjectinfo)+sizeof(str[21])+j*sizeof(struct studentinfo),0)==HFILE_ERROR)
			{
				MessageBox(hwnd,"Error Seek","Student Add",MB_OK);
			}

			if(_lwrite(hDataFile,(LPSTR)&classroom[i].student[j],sizeof(struct studentinfo))==HFILE_ERROR)
			{
				MessageBox(hwnd,"Error Write","Student Add",MB_OK);
			}

			_lclose(hDataFile);

//			ReflashTreeWnd();
		}
		else
		{

		}

	}

	return 1;
}

void SetClassInfoWndContent(int iClassItemNum)
{
	int k;

	SetWindowText(hgClassNameWnd,classroom[iClassItemNum].cClassName);
	for(k=0;k<6;k++)
	{
		SetWindowText(hgSubjectNameWnd[k],classroom[iClassItemNum].classsubject[k].cSubjectName);
		wsprintf(cTmpBuff,"%d",(int)classroom[iClassItemNum].classsubject[k].fSubjectScore);
		SetWindowText(hgSubjectScoreWnd[k],cTmpBuff);
	}
}

int GetClassItemNum(HTREEITEM hChildItem)
{
	int i;
//	char str[10];
	for(i=0;i<20;i++)
	{
		if(hChildItem==hClassItem[i])
		{
			break;
		}
	}
//	wsprintf(str,"%d",i);
//	MessageBox(NULL,str,"getClassItemNum",MB_OK);

	return i;
}

int GetStudentItemNum(int iParentNum,HTREEITEM hChildItem)
{
	int i;
	
	for(i=0;i<20;i++)
	{
		if(hChildItem==hFaceOnItem[iParentNum][i])
		{
			break;
		}
	}

	return i;
}

float String2Float(char cString[21])
{
	char cDot='.';
	BOOL bIsDot=0;
	int iTmpNum=1;
	float fResult;
//	char str[20];
//	char *pStr;

	for(iTmpCount=0;iTmpCount<21;iTmpCount++)
	{
		if(cString[iTmpCount]=='\0')
			break;
	}
	
	for(iTmpCount1=0;iTmpCount1<iTmpCount-1;iTmpCount1++)
	{
		if(cString[iTmpCount1]==cDot)
		{
			bIsDot=1;
			break;
		}
	}

	if(!bIsDot)
		iTmpCount1++;

	for(iTmpCount2=0;iTmpCount2<iTmpCount1;iTmpCount2++)
	{
		for(iTmpCount3=0;iTmpCount3<iTmpCount1-iTmpCount2-1;iTmpCount3++)
		{
			iTmpNum=iTmpNum*10;
		}
		fResult=fResult+(cString[iTmpCount2]-'0')*iTmpNum;
		iTmpNum=1;

	}

	if(!bIsDot)
	{
		for(iTmpCount2=0;iTmpCount2<iTmpCount-iTmpCount1-1;iTmpCount2++)
		{
			for(iTmpCount3=0;iTmpCount3<iTmpCount2+1;iTmpCount3++)
			{
				iTmpNum=iTmpNum*10;
			}
			fResult=fResult+(cString[iTmpCount1+iTmpCount2]-'0')/iTmpNum;
			iTmpNum=1;
		}
	}

	bIsDot=0;


	/*	
	pPos=strchr(cString,cDot);*/
//	wsprintf(str,"%[precision]s",fResult);
//	pStr=Float2String(fResult);
//	str=Float2String(fResult);

//	MessageBox(hwnd,str,"info",MB_OK);
	
	return fResult;
}
/*
char * Float2String(float fFloat)
{
	char *pResult;
//	pResult[0]=fFloat+'0';
//	pResult[1]='\0';
	double dZs;
	double dZs;
	int iZs;



	xs=modf(fFloat,&zs);

	pResult="hello world";

	return pResult;
}*/

BOOL ReflashTreeWnd()
{
	int i,j;

	iClassNumber=0;

	for(i=0;i<20;i++)
	{
		iStudentNumber[i]=0;
	}

	hDataFile=_lopen("fina.hui",OF_READ);
	if(hDataFile==HFILE_ERROR)
		return 0;

	for(i=0;i<20;i++)
	{
		if(hClassItem[i])
			DelOneItem(hTree,hClassItem[i]);
	}

	for(i=0;i<20;i++)
	{
		_lread(hDataFile,&classroom[i],sizeof(struct classinfo));
		if(!lstrcmp(classroom[i].cClassName,""))
			break;
		iClassNumber++;
		lstrcpy(cTmpBuff,classroom[i].cClassName);
		hClassItem[i]=AddOneItem(hTree,hRootItem,TVI_FIRST,cTmpBuff,idClass);
		for(j=0;j<50;j++)
		{
			if(!lstrcmp(classroom[i].student[j].cStudentName,""))
				break;
			iStudentNumber[i]++;
			lstrcpy(cTmpBuff,classroom[i].student[j].cStudentName);
			hFaceOnItem[i][j]=AddOneItem(hTree,hClassItem[i],TVI_FIRST,cTmpBuff,idFaceOn);
		}
		LoadString(hInst,IDS_FACEADD,cTmpBuff,sizeof(cTmpBuff));
		hFaceAddItem[i]=AddOneItem(hTree,hClassItem[i],TVI_FIRST,cTmpBuff,idFaceAdd);
	}

	_lclose(hDataFile);

	return 1;
}

BOOL UpdateInfoData(void)
{
	int i,j;

	iClassNumber=0;

	hDataFile=_lopen("fina.hui",OF_READ);
	if(hDataFile==HFILE_ERROR)
		return 0;

	for(i=0;i<20;i++)
	{
		_lread(hDataFile,&classroom[i],sizeof(struct classinfo));
		if(!lstrcmp(classroom[i].cClassName,""))
			break;
		iClassNumber++;
//		lstrcpy(cTmpBuff,classroom[i].cClassName);
//		hClassItem[i]=AddOneItem(hTree,hRootItem,TVI_FIRST,cTmpBuff,idClass);
		for(j=0;j<50;j++)
		{
			if(!lstrcmp(classroom[i].student[j].cStudentName,""))
				break;
			iStudentNumber[j]++;
//			lstrcpy(cTmpBuff,classroom[i].student[j].cStudentName);
//			hFaceOnItem[i][j]=AddOneItem(hTree,hClassItem[i],TVI_FIRST,cTmpBuff,idFaceOn);
		}
//		LoadString(hInst,IDS_FACEADD,cTmpBuff,sizeof(cTmpBuff));
//		hFaceAddItem=AddOneItem(hTree,hClassItem[i],TVI_FIRST,cTmpBuff,idFaceAdd);
	}

	_lclose(hDataFile);
	
	return 1;
}

BOOL CALLBACK CreateStudentInfoWnd(HWND hParentWnd,HDC hParentDC)
{
	int i;

	SetBkMode(hParentDC,TRANSPARENT);
	SetTextColor(hParentDC,RGB(0,0,0));
	
	TextOut(hParentDC,3,5,"学生姓名",lstrlen("学生姓名"));
	hgStudentNameWnd=CreateWindowEx(0L,
		"edit",
		"StudentNameWnd",
		WS_CHILD|WS_VISIBLE|ES_LEFT,
		73,5,90,15,
		hParentWnd,
		(HMENU)NULL,
		hInst,
		NULL);

	TextOut(hParentDC,170,5,"学号",lstrlen("学号"));
	hgStudentNumWnd=CreateWindowEx(0L,
		"edit",
		"StudentNumWnd",
		WS_VISIBLE|WS_CHILD|ES_LEFT,
		205,5,80,15,
		hParentWnd,
		(HMENU)NULL,
		hInst,
		NULL);

	TextOut(hParentDC,65,35,"学科名称",lstrlen("学科名称"));
	TextOut(hParentDC,230,35,"成绩",lstrlen("成绩"));
	for(i=0;i<6;i++)
	{
		hgStudentSubjectWnd[i]=CreateWindowEx(0L,
			"edit",
			"StudentSubjectWnd",
			WS_VISIBLE|WS_CHILD|ES_RIGHT|ES_READONLY,
			15,35+(i+1)*25,170,15,
			hParentWnd,
			(HMENU)NULL,
			hInst,
			NULL);
		hgStudentScoreWnd[i]=CreateWindowEx(0L,
			"edit",
			"StudentScoreWnd",
			WS_CHILD|WS_VISIBLE|ES_CENTER,
			225,35+(i+1)*25,40,15,
			hParentWnd,
			(HMENU)NULL,
			hInst,
			NULL);
	}

	TextOut(hParentDC,15,210,"总分",lstrlen("总分"));
	hgStudentTotalScoreWnd=CreateWindowEx(0L,
		"edit",
		"StudentTotalScoreWnd",
		WS_VISIBLE|WS_CHILD|ES_CENTER|ES_READONLY,
		55,210,50,15,
		hParentWnd,
		(HMENU)NULL,
		hInst,
		NULL);

	TextOut(hParentDC,120,210,"综合测评成绩",lstrlen("综合测评成绩"));
	hgStudentFinaScoreWnd=CreateWindowEx(0L,
		"edit",
		"StudentFinaScore",
		WS_VISIBLE|WS_CHILD|ES_CENTER|ES_READONLY,
		225,210,40,15,
		hParentWnd,
		(HMENU)NULL,
		hInst,
		NULL);

	return 1;
}

⌨️ 快捷键说明

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