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

📄 window.c

📁 这是我自己做的C学生管理系统
💻 C
📖 第 1 页 / 共 2 页
字号:
				{
	
					pNode=searchnode(pHead,No);

					if(	searchnode(pHead,No)==NULL)
							MessageBox(hDlgWnd,"该学号不存在,请重新输入!",Prompt,MB_OK | MB_ICONERROR);
					else
					{
						if(MessageBox(hDlgWnd,"是否删除该学生信息?",Prompt,MB_OKCANCEL | MB_ICONQUESTION)==IDOK)
							{					
								pHead=deletenode(pHead,pNode);         //删除结点
								SaveList(pHead,FileName);              //保存文件
								InvalidateRect(g_hWnd,NULL,TRUE);      //强制重绘
							}
					}
					}
				}
			}
				break;
			case IDCANCEL:
				EndDialog(hDlgWnd,IDOK);
				break;
			default:
				return DefWindowProc(hWnd, message, wParam, lParam);
			}
			break;

	case WM_CLOSE ://对话框关闭消息
		EndDialog(hDlgWnd,0);
		ShowWindow(hWnd,SW_SHOWMAXIMIZED);
		break;

	default:
		break;
	}
	return 0;
}


//修改
LRESULT CALLBACK DlgProc_Edit(HWND hDlgWnd,//对话框句柄
						 UINT message,//消息参数	 
						 WPARAM wParam,
						 LPARAM lParam)
{
	Student std;
	HWND hTopWnd;
	HWND  hStdIdWnd,hNameWnd,hAddressWnd,hSexWnd,hZipWnd,hPhoneWnd,hEditWnd;
	RECT rc,Drc;
	int wmID;
	Node * pNode=NULL;
	char No[20];

//得到句柄 
	hStdIdWnd = GetDlgItem(hDlgWnd, IDC_Del_Id);
	hNameWnd = GetDlgItem(hDlgWnd, IDC_Name);
	hAddressWnd = GetDlgItem(hDlgWnd, IDC_Address);
	hSexWnd = GetDlgItem(hDlgWnd, IDC_Sex);
	hZipWnd = GetDlgItem(hDlgWnd, IDC_Zip);
	hPhoneWnd = GetDlgItem(hDlgWnd, IDC_Phone);
	hEditWnd=GetDlgItem(hDlgWnd,IDC_QUERY);

	switch (message)
	{
	case WM_INITDIALOG://对话框初始消息
		hTopWnd = GetDesktopWindow();
		GetWindowRect(hTopWnd,&rc);
		GetWindowRect(hDlgWnd,&Drc);
		SetWindowPos(hDlgWnd,HWND_TOP,(rc.right - Drc.right + Drc.left)/2,(rc.bottom - Drc.bottom + Drc.top )/2,Drc.right -Drc.left,Drc.bottom - Drc.top,SWP_SHOWWINDOW);
		return 1;
		break;
	
	case WM_COMMAND:
			wmID=LOWORD(wParam);
			switch(wmID)
			{
			case IDC_QUERY:
				{				
				GetWindowText(hStdIdWnd,No,10);

				if(strlen(FileName)==0)
						MessageBox(hDlgWnd,"你还未新建或打开一个文件,请先进行此操作!",Prompt,MB_OK|MB_ICONERROR);
				else
				{
				if(strlen(No)==0)
						MessageBox(hDlgWnd,"学号不能为空,请重新输入所要删除的学号!",Prompt,MB_OK|MB_ICONERROR);
				else
				{
	
					pNode=searchnode(pHead,No);

					if(	searchnode(pHead,No)==NULL)
							MessageBox(hDlgWnd,"该学号不存在,请重新输入!",Prompt,MB_OK | MB_ICONERROR);
					else
					{
						//显示所要修改学生的信息(姓名、性别、地址、邮编、电话)
						SetWindowText(hNameWnd,pNode->m_stu.name );   
						SetWindowText(hSexWnd,pNode->m_stu.sex);
						SetWindowText(hAddressWnd,pNode->m_stu.address);
						SetWindowText(hZipWnd,pNode->m_stu.zip);
						SetWindowText(hPhoneWnd,pNode->m_stu.phone);
					}
					}
				}
				}
				break;
			
			case IDOK:
				{
					GetWindowText(hStdIdWnd,No,10);
				
					if(strlen(No)==0)
								MessageBox(hDlgWnd,"学号不能为空,请输入所要删除的学号!",Prompt,MB_OK|MB_ICONERROR);
					else
					{
						if(MessageBox(hDlgWnd,"是否修改该学生信息?",Prompt,MB_OKCANCEL | MB_ICONQUESTION)==IDOK)
						{
								
								GetWindowText(hStdIdWnd,std.no,sizeof(std.no));
								GetWindowText(hNameWnd,std.name,sizeof(std.name));
								GetWindowText(hSexWnd,std.sex,sizeof(std.sex));							
								GetWindowText(hAddressWnd,std.address,sizeof(std.address));
								GetWindowText(hZipWnd,std.zip,sizeof(std.zip));
				                GetWindowText(hPhoneWnd,std.phone,sizeof(std.phone));
								
								updatenode(pHead,std);               //修改结点
								SaveList(pHead,FileName);

					            InvalidateRect(g_hWnd,NULL,TRUE);    //强制重绘
								}
					}
				}
				break;
			case IDCANCEL:
				EndDialog(hDlgWnd,IDOK);
				break;
			default:
				return DefWindowProc(hWnd, message, wParam, lParam);
			}
			break;

	case WM_CLOSE :                                                //对话框关闭消息
		EndDialog(hDlgWnd,0);
		ShowWindow(hWnd,SW_SHOWMAXIMIZED);
		break;

	default:
		break;
	}
	return 0;
}


//关于我们
LRESULT CALLBACK DlgProc_About(HWND hDlgWnd,                     //对话框句柄
						 UINT message,                           //消息参数	 
						 WPARAM wParam,
						 LPARAM lParam)
{
	HWND hTopWnd;
	RECT rc,Drc;
	Node * pNode=NULL;

	switch (message)
	{
	case WM_INITDIALOG:                                         //对话框初始消息
		hTopWnd = GetDesktopWindow();
		GetWindowRect(hTopWnd,&rc);
		GetWindowRect(hDlgWnd,&Drc);
		SetWindowPos(hDlgWnd,HWND_TOP,(rc.right - Drc.right + Drc.left)/2,(rc.bottom - Drc.bottom + Drc.top )/2,Drc.right -Drc.left,Drc.bottom - Drc.top,SWP_SHOWWINDOW);
		return 1;
		break;	
	case WM_CLOSE :                                             //对话框关闭消息
		EndDialog(hDlgWnd,0);
		ShowWindow(hWnd,SW_SHOWMAXIMIZED);
		break;
	default:
		break;
	}
	return 0;
}


//主窗口回调函数
LRESULT CALLBACK WndProc(HWND hWnd,
						 UINT message,
						 WPARAM wParam,
						 LPARAM lParam)
{
	char d[100];
	int wmID;
	HDC hdc = NULL;
	Node *pTmp=NULL;                                          //链表上的临时节点

	PAINTSTRUCT ps;
	HPEN hPen,hNullPen,hOldPen;
	POINT pt;
	HBRUSH hBkBrush,hOldBrush;
	RECT rc;
	int i,j,val,hal,icol,irow;
	g_hWnd=hWnd;                                              //主窗口的全局句柄


	switch (message)
	{
	case WM_PAINT:
		hdc = BeginPaint(hWnd,&ps);
		//创建画笔
		hPen = CreatePen(PS_SOLID,1,RGB(255,255,255));
		hNullPen = GetStockObject(NULL_PEN);
		//创建画刷
		hBkBrush = CreateSolidBrush(RGB(153,204,0));
		//画背景
		hOldPen = SelectObject(hdc,hNullPen);
		hOldBrush = SelectObject(hdc,hBkBrush);

		//获取客户区大小
		GetClientRect(hWnd,&rc);

		val = (rc.right - rc.left) / COL;	
		hal = (rc.bottom - rc.top) / ROW;
		Rectangle(hdc,rc.left,rc.top,rc.right,rc.bottom);

		//画第一行
		SelectObject(hdc,hBkBrush);	          //第一行背景色

		for(i = 0;i <= COL;i++)
		{
			Rectangle(hdc,rc.left + i * (val),rc.top,rc.left+ (i+1) * val,rc.top + hal);
		}

		//文字背景色
		SetBkColor(hdc,RGB(153,204,0));
		//文字颜色
		SetTextColor(hdc,RGB(255,255,255));

		TextOut(hdc,rc.left + val + val/2-22,hal/2-7,"姓    名",8);
		TextOut(hdc,rc.left + val/2-22,hal/2-6,"学    号",8);
		TextOut(hdc,rc.left + val*3 + val/2-22,hal/2-7,"性    别",8);
		TextOut(hdc,rc.left + val*2 + val/2-30,hal/2-7,"家庭地址",8);
		TextOut(hdc,rc.left + val*4 + val/2-30,hal/2-7,"邮政编码",8);
		TextOut(hdc,rc.left + val*5 + val/2-30,hal/2-7,"电话号码",8);

		//画表格
		//将画笔选入设备环境
		SelectObject(hdc,hPen);
		//画列线
		for(i = 0;i <= COL +1;i++)
		{
			icol = rc.left + i * val;
			MoveToEx(hdc,icol,rc.top,&pt);
			LineTo(hdc,icol,rc.bottom-hal-9);
		}

		if(QueryFlat!=-1)
			pTmp=pNode1;
		else
			pTmp=pHead;

			
		//文字背景色
		SetBkColor(hdc,RGB(153,204,0));
		//文字颜色
		SetTextColor(hdc,RGB(0,0,0));
		
		//画行线
		for(j = 0,i=1;j <ROW;j++)
		{
			irow = rc.top + j * hal;
			MoveToEx(hdc,rc.left,irow,&pt);
			LineTo(hdc,rc.right,irow);
		
			//把学生信息写在窗体上
			for(;pTmp!=NULL;pTmp=pTmp->m_pNext)
				{
					TextOut(hdc,rc.left + val + val/2-22,irow+i * hal+hal/2-10,pTmp->m_stu.name,strlen(pTmp->m_stu.name));
					TextOut(hdc,rc.left + val/2-22,irow+i * hal+ hal/2-10,pTmp->m_stu.no,strlen(pTmp->m_stu.no));
					TextOut(hdc,rc.left + val*3 + val/2-8,irow+i * hal+hal/2-10,pTmp->m_stu.sex,strlen(pTmp->m_stu.sex));
					TextOut(hdc,rc.left + val*2 + val/2-50,irow+i * hal+hal/2-10,pTmp->m_stu.address,strlen(pTmp->m_stu.address));
					TextOut(hdc,rc.left + val*4 + val/2-25,irow+i * hal+hal/2-10,pTmp->m_stu.zip,strlen(pTmp->m_stu.zip));
					TextOut(hdc,rc.left + val*5 + val/2-40,irow+i * hal+hal/2-10,pTmp->m_stu.phone,strlen(pTmp->m_stu.phone));						
					i++;
				}
		}

	 	sprintf(d,"文件中共有%d条记录",i-1);
        TextOut(hdc,rc.top+650,rc.bottom-23,d,strlen(d));

		//还原画刷
		SelectObject(hdc,hOldBrush);

		//还原画笔
		SelectObject(hdc,hOldPen);
		//删除画笔
		DeleteObject(hPen);

		EndPaint(hWnd,&ps);
		break;
	
	case WM_COMMAND:
			wmID=LOWORD(wParam);
			switch(wmID)
			{
				case ID_NEW:
					DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG_NEW),hWnd,(DLGPROC)DlgProc_New);
					break;
				case ID_OPEN:
					DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG_OPEN),hWnd,(DLGPROC)DlgProc_Open);
					break;
				case ID_ADD:
					DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG_ADD),hWnd,(DLGPROC)DlgProc_Add);
					break;
				case ID_DEL:
					DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG_DEL),hWnd,(DLGPROC)DlgProc_Del);
					break;
				case ID_EDIT:
					DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG_EDIT),hWnd,(DLGPROC)DlgProc_Edit);
					break;
				case ID_FIND:  
	                DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG_FIND),hWnd,(DLGPROC)DlgProc_Find);
					break;
				case ID_ABOUT:  
	                DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG_ABOUT),hWnd,(DLGPROC)DlgProc_About);
					break;
				case ID_EXIT:
					if(MessageBox(hWnd,"确定退出本系统吗?",Prompt,MB_OKCANCEL| MB_ICONQUESTION)==IDOK)
						PostMessage(hWnd,WM_CLOSE,0,0);
					break;
				default:
					return DefWindowProc(hWnd, message, wParam, lParam);
			}
			break;
	case WM_DESTROY:                                               //销毁窗口消息	
				PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hWnd,message,wParam,lParam);          //默认窗口回调函数
	}
	return 0;                                                      //必须有返回值
}



int WINAPI WinMain( HINSTANCE hInstance,
					HINSTANCE hPrevInstance,
					char*     lpCmdLine,
					int       nCmdShow)
{
    HWND hWnd;
    MSG msg;
    HACCEL hAccelTable;

    // 1. 注册窗口类	
	WNDCLASSEX wcex;
	wcex.cbSize         = sizeof(WNDCLASSEX); // 此结构体的大小 
	wcex.style			= CS_OWNDC; 
	wcex.lpfnWndProc	= (WNDPROC)WndProc;
	wcex.cbClsExtra		= 0;
	wcex.cbWndExtra		= 0;
	wcex.hInstance		= hInstance;
	wcex.hIcon			= LoadIcon(hInstance,(char *)IDI_ICON1); 
	wcex.hCursor		= LoadCursor(NULL, IDC_ARROW);
	wcex.hbrBackground	= (HBRUSH)(COLOR_WINDOW);
	wcex.lpszMenuName	= NULL;
	wcex.lpszClassName	= "SDK";
	wcex.hIconSm		= LoadIcon(hInstance,(char *)IDI_ICON1); 
	wcex.lpszMenuName   = (char *)IDR_MENU;  //显示菜单  
	RegisterClassEx(&wcex);

    // 2. 创建窗口
    hWnd = CreateWindow( "SDK",
                         "   学 生 通 迅 管 理",
                         (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU),
                         0,0,
                         800,600, 
                         NULL, 
                         NULL, 
                         hInstance, 
                         NULL);

    // 3. 显示窗口
    ShowWindow(hWnd, SW_SHOW);

    // 4. 消息循环
	hAccelTable = LoadAccelerators(hInstance,MAKEINTRESOURCE(IDR_ACCELERATOR1)); //载入加速键表

   	while (GetMessage(&msg,NULL,0,0))
	{
		if(!TranslateAccelerator(hWnd,hAccelTable,&msg))
		{
		   TranslateMessage(&msg);
		    DispatchMessage(&msg);
		}
	}
	return 0;
}

⌨️ 快捷键说明

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