📄 main.cpp
字号:
void ShowPay(){
pStu p=(pStu)(GetList(StuList)->SelectTag);
if (!p) return;
UpdateStuLack(p);
strcpy(GetLabel(PayWindow.Label1)->Caption,"姓名: ");
strcat(GetLabel(PayWindow.Label1)->Caption,p->name);
strcpy(GetLabel(PayWindow.Label2)->Caption,"学号: ");
strcat(GetLabel(PayWindow.Label2)->Caption,p->num);
strcpy(GetLabel(PayWindow.Label3)->Caption,"专业班级: ");
strcat(GetLabel(PayWindow.Label3)->Caption,p->Class);
strcpy(GetLabel(PayWindow.Label4)->Caption,"入学年月: ");
strcat(GetLabel(PayWindow.Label4)->Caption,p->InYear);
strcpy(GetLabel(PayWindow.Label5)->Caption,"应缴金额: ");
strcat(GetLabel(PayWindow.Label5)->Caption,p->need);
strcpy(GetLabel(PayWindow.Label6)->Caption,"实缴金额: ");
strcat(GetLabel(PayWindow.Label6)->Caption,p->payed);
strcpy(GetLabel(PayWindow.Label7)->Caption,"欠缴金额: ");
strcat(GetLabel(PayWindow.Label7)->Caption,p->lack);
pList List=GetList(PayList);
List->count=0;
List->Selected=List->SelectTag=0;
ppay v=p->first;
pchar str[6];
while (v){
str[0]=v->value;
str[1]=v->payee;
str[2]=v->date;
ListAdd(PayList,str,(int)v);
v=v->next;
}
}
void ShowPayClick(){
if (!GetList(StuList)->SelectTag) return;
ShowPay();
ShowWindow(PayWindow.handle);
}
void OnAddPayClick(){
pchar value=GetEdit(PayWindow.Edit1)->Text;
pchar name=GetEdit(PayWindow.Edit2)->Text;
if (atof(value)<=0){
MessageBox("金额输入不正确!","提示");
return;
}
if (!name[0]){
MessageBox("请输入收款人信息!","提示");
return;
}
pStu p=(pStu)(GetList(StuList)->SelectTag);
ppay v=p->first;
ppay pre=NULL;
if (atof(value)>atof(p->lack)){
MessageBox("缴费金额不得大于欠费金额","提示");
return;
}
while (v){
pre=v;
v=v->next;
}
v=(ppay)malloc(sizeof *v);
sprintf(v->value,"%.2lf",atof(value));
strcpy(v->payee,name);
date s;
getdate(&s);
sprintf(v->date,"%d-%02d-%02d",s.da_year,s.da_mon,s.da_day);
v->next=NULL;
if (pre)
pre->next=v;
else
p->first=v;
v->pre=pre;
v->stu=p;
p->count++;
UpdateStuLack(p);
CloseWindow(PayWindow.handle);
SaveDat();
MessageBox("信息添加成功!","提示");
}
void OnDelClick(){
if (!GetList(PayList)->SelectTag) return;
if (!DlgBox("确认要删除吗?","询问")) return;
((ppay)GetList(PayList)->SelectTag)->stu->count--;
DelPay((ppay)GetList(PayList)->SelectTag);
ShowPay();
Changed=true;
DrawWindow(PayWindow.handle);
}
void HouseButtonClick(){
ShowAllHouse();
ShowWindow(HouseWindow);
}
void StuButtonClick(){
ShowAllStudent();
ShowWindow(StuWindow);
}
void OnSaveButtonClick(){
SaveDat();
MessageBox("保存完毕!","提示");
}
void ShowStatHouse(){
double h_count; /*统计房间营业总额*/
double count=0;
double temp;
int count1=0; /*统计可住人数*/
int count2=0; /*统计入住人数*/
int count3=0; /*统计剩余床位*/
int i;
pList List=GetList(StatHouseList);
List->count=0;
List->Show=List->Selected=List->SelectTag=0;
pchar str[8];
pHouse house;
pStu stu;
ppay pay;
date s;
getdate(&s);
for (house=head->next; house; house=house->next){
sprintf(house->students,"%d",house->count);
i=atoi(house->beds);
count1+=i;
temp=i;
if (i>=house->count) i-=house->count;
else i=0;
sprintf(house->spare,"%d",i);
count2+=house->count;
count3+=i;
temp=house->count/temp;
sprintf(house->rate,"%.2lf",temp*100);
h_count=0;
for (stu=house->first; stu; stu=stu->next)
for (pay=stu->first; pay; pay=pay->next){
int year,month,day;
sscanf(pay->date,"%d-%d-%d",&year,&month,&day);
if (year==s.da_year) /*只把今年的收入加进来*/
h_count+=atof(pay->value);
}
sprintf(house->earning,"%.2lf",h_count);
count+=h_count;
str[0]=house->name;
str[1]=house->beds;
str[2]=house->students;
str[3]=house->spare;
str[4]=house->rate;
str[5]=house->earning;
ListAdd(StatHouseList,str,0);
}
static char buf[5][10];
sprintf(buf[0],"%d",count1);
sprintf(buf[1],"%d",count2);
sprintf(buf[2],"%d",count3);
sprintf(buf[3],"%.2lf",count2/(count3/100.0));
sprintf(buf[4],"%.2lf",count);
str[0]="总计";
str[1]=buf[0];
str[2]=buf[1];
str[3]=buf[2];
str[4]=buf[3];
str[5]=buf[4];
ListAdd(StatHouseList,str,0);
}
void OnShowStatHouseClick(){
ShowStatHouse();
ShowWindow(StatHouseWindow);
}
void HelpButtonClick(){
ShowWindow(HelpWindow);
}
void AboutButtonClick(){
ShowWindow(AboutWindow);
}
bool OnExitPro(Hwnd handle){
if (!handle) return false;
if (Changed)
if (DlgBox("数据已改动,是否保存?","询问"))
SaveDat();
closegraph();
exit(0);
return true;
}
void MainInit(){
memset(&Head,0,sizeof Head);
}
int main()
{
DrawInit();
MouseInit();
WindowsInit();
LoginInit();
MainInit();
/*=================================*/
/* 窗体创建部分 */
/*=================================*/
pchar str[7];
AboutWindow=CreateWindow("关于本软件",180,100,640-180,380,AboutIco);
CreateLabel("学生宿舍管理系统 Ver 1.00.1",AboutWindow,30,60);
CreateLabel("作者:张元龙",AboutWindow,90,100);
CreateLabel("计算机学院信息安全0604班",AboutWindow,40,130);
CreateLabel("学号:012006015614",AboutWindow,60,160);
CreateLabel("版权所有 (c) 2007 张元龙",AboutWindow,35,200);
GetWindow(AboutWindow)->DefButton=CreateButton("确定",AboutWindow,&DefCloseButton,110,240,DEF_BUT_WIDTH,DEF_BUT_HEIGHT,OKIco);
GetWindow(AboutWindow)->Closed=OnAboutWindowClose;
LoginWindow=CreateWindow("管理员登陆",200,130,640-200,460-130,WndIco);
CreateLabel("请输入管理密码:",LoginWindow,40,50);
PassEdit=CreateEdit(NULL,LoginWindow,40,80);
GetEdit(PassEdit)->PasswordChar='*'; /*设置编辑筐显示内容为星号*/
GetWindow(LoginWindow)->focus=PassEdit;
GetWindow(LoginWindow)->DefButton=CreateButton("确定",LoginWindow,(MouseClick)OnLogin,40,130,DEF_BUT_WIDTH,DEF_BUT_HEIGHT,OKIco);
CreateButton("取消",LoginWindow,DefCloseButton,140,130,DEF_BUT_WIDTH,DEF_BUT_HEIGHT,NoIco);
MainWindow=CreateWindow("功能选择",140,120,640-140,460-120,WndIco);
CreateButton("学生信息管理",MainWindow,(MouseClick)StuButtonClick,20,40,150,40);
CreateButton("宿舍信息管理",MainWindow,(MouseClick)HouseButtonClick,190,40,150,40);
CreateButton("修改管理密码",MainWindow,(MouseClick)ChgPassButtonClick,20,100,150,40);
CreateButton("保存修改信息",MainWindow,(MouseClick)OnSaveButtonClick,190,100,150,40);
CreateButton("查看帮助信息",MainWindow,(MouseClick)HelpButtonClick,20,160,150,40);
CreateButton("关于本软件",MainWindow,(MouseClick)AboutButtonClick,190,160,150,40);
GetWindow(MainWindow)->OnClose=OnExitPro;
ChgPassWindow=CreateWindow("密码修改",200,80,640-200,460-80,WndIco);
CreateLabel("请输入原管理密码:",ChgPassWindow,40,55);
OrgPass=CreateEdit(NULL,ChgPassWindow,40,80);
CreateLabel("请输入您的新密码:",ChgPassWindow,40,115);
NewPass=CreateEdit(NULL,ChgPassWindow,40,140);
CreateLabel("请重复输入您的新密码:",ChgPassWindow,40,175);
RePass=CreateEdit(NULL,ChgPassWindow,40,200);
GetWindow(ChgPassWindow)->DefButton=CreateButton("确定",ChgPassWindow,(MouseClick)OnChgPass,40,250,DEF_BUT_WIDTH,DEF_BUT_HEIGHT,OKIco);
CreateButton("取消",ChgPassWindow,DefCloseButton,140,250,DEF_BUT_WIDTH,DEF_BUT_HEIGHT,NoIco);
GetEdit(OrgPass)->PasswordChar='*'; /*设置编辑筐显示内容为星号*/
GetEdit(NewPass)->PasswordChar='*';
GetEdit(RePass)->PasswordChar='*';
HouseWindow=CreateWindow("学生宿舍楼管理",50,50,640-50,460-50,WndIco);
str[0]="宿舍楼号";
str[1]="管理员";
str[2]="电话";
str[3]="年住宿费";
str[4]=NULL;
HouseList=CreateList(HouseWindow,15,30,510,200,str);
GetList(HouseList)->tag=CreateLabel(NULL,HouseWindow,15,240);
CreateButton("添加宿舍",HouseWindow,(MouseClick)AddHouseClick,15,260,120 ,30);
CreateButton("编辑宿舍",HouseWindow,(MouseClick)EditHouseClick,140,260,120 ,30);
CreateButton("删除宿舍",HouseWindow,(MouseClick)DelHouseClick,265,260,120 ,30);
CreateButton("统计宿舍信息",HouseWindow,(MouseClick)OnShowStatHouseClick,390,260,120 ,30);
CreateLabel("关键字:",HouseWindow,15,300);
FindHouseEdit=CreateEdit(NULL,HouseWindow,15,320,120);
GetWindow(HouseWindow)->DefButton=CreateButton("查 找",HouseWindow,(MouseClick)FindHouseButtonClick,140,315,120 ,30);
CreateButton("显示全部",HouseWindow,(MouseClick)ShowAllHouseClick,265,315,120 ,30);
EditHouse.handle=CreateWindow("学生宿舍楼编辑",150,50,640-150,460-50,WndIco);
CreateLabel("宿舍楼号:",EditHouse.handle,50,50);
CreateLabel("管理员姓名:",EditHouse.handle,50-16,80);
CreateLabel("值班室电话:",EditHouse.handle,50-16,110);
CreateLabel("房间数:",EditHouse.handle,50+16,140);
CreateLabel("床位数:",EditHouse.handle,50+16,170);
CreateLabel("每年住宿费:",EditHouse.handle,50-16,200);
EditHouse.Edit1=CreateEdit(NULL,EditHouse.handle,130,47);
AddItems(EditHouse.Edit1,"紫菘");
AddItems(EditHouse.Edit1,"沁苑");
AddItems(EditHouse.Edit1,"韵苑");
EditHouse.Edit2=CreateEdit(NULL,EditHouse.handle,130,77);
EditHouse.Edit3=CreateEdit(NULL,EditHouse.handle,130, 107);
EditHouse.Edit4=CreateEdit(NULL,EditHouse.handle,130,137);
EditHouse.Edit5=CreateEdit(NULL,EditHouse.handle,130,167);
EditHouse.Edit6=CreateEdit(NULL,EditHouse.handle,130,197);
GetWindow(EditHouse.handle)->DefButton=CreateButton("确定",EditHouse.handle,(MouseClick)OnEditHouseOK,80,250,DEF_BUT_WIDTH,DEF_BUT_HEIGHT,OKIco);
CreateButton("取消",EditHouse.handle,DefCloseButton,180,250,DEF_BUT_WIDTH,DEF_BUT_HEIGHT,NoIco);
StatHouseWindow=CreateWindow("宿舍信息统计",55,100,640-55,460-100,WndIco);
str[0]="宿舍楼号";
str[1]="可住人数";
str[2]="入住人数";
str[3]="剩余床位";
str[4]="入住率(%)";
str[5]="年度收入";
str[6]=NULL;
StatHouseList=CreateList(StatHouseWindow,8,30,515,220,str);
StuWindow=CreateWindow("学生信息管理",20,50,640-20,460-50,WndIco);
str[0]="姓名";
str[1]="学号";
str[2]="班级";
str[3]="宿舍";
str[4]="欠缴金额";
str[5]=NULL;
StuList=CreateList(StuWindow,15,30,570,200,str);
GetList(StuList)->tag=CreateLabel(NULL,StuWindow,15,240);
CreateButton("添加学生信息",StuWindow,(MouseClick)AddStuClick,15,260,120 ,30);
CreateButton("编辑学生信息",StuWindow,(MouseClick)EditStuClick,140,260,120 ,30);
CreateButton("删除学生信息",StuWindow,(MouseClick)DelStuClick,265,260,120 ,30);
CreateButton("学生缴费管理",StuWindow,(MouseClick)ShowPayClick,390,260,120 ,30);
CreateLabel("关键字:",StuWindow,15,300);
FindStuEdit=CreateEdit(NULL,StuWindow,15,320,120);
GetWindow(StuWindow)->DefButton=CreateButton("查 找",StuWindow,(MouseClick)FindStuButtonClick,140,315,120 ,30);
CreateButton("显示欠费学生",StuWindow,(MouseClick)ShowLackClick,265,315,120 ,30);
CreateButton("显示全部",StuWindow,(MouseClick)ShowAllStuClick,390,315,120 ,30);
EditStu.handle=CreateWindow("学生信息编辑",80,70,640-80,460-70,WndIco);
CreateLabel("姓名:",EditStu.handle,20+32,50);
CreateLabel("学号:",EditStu.handle,20+32,80);
CreateLabel("性别:",EditStu.handle,20+32,110);
CreateLabel("出生日期:",EditStu.handle,20,140);
CreateLabel("学生类别:",EditStu.handle,20,170);
CreateLabel("学制:",EditStu.handle,20+32,200);
CreateLabel("入学年份:",EditStu.handle,220+20,50);
CreateLabel("专业班级:",EditStu.handle,220+20,80);
CreateLabel("宿舍楼:",EditStu.handle,220+20+16,110);
CreateLabel("宿舍房间:",EditStu.handle,220+20,140);
CreateLabel("联系电话:",EditStu.handle,220+20,170);
CreateLabel("电子邮件:",EditStu.handle,220+20,200);
EditStu.Edit1=CreateEdit(NULL,EditStu.handle,100,47,120);
EditStu.Edit2=CreateEdit(NULL,EditStu.handle,100,77,120);
EditStu.Edit3=CreateEdit(NULL,EditStu.handle,100,107,120);
EditStu.Edit4=CreateEdit(NULL,EditStu.handle,100,137,120);
EditStu.Edit5=CreateEdit(NULL,EditStu.handle,100,167,120);
EditStu.Edit6=CreateEdit(NULL,EditStu.handle,100,197,120);
EditStu.Edit7=CreateEdit(NULL,EditStu.handle,320,47,120);
EditStu.Edit8=CreateEdit(NULL,EditStu.handle,320,77,120);
EditStu.Edit9=CreateEdit(NULL,EditStu.handle,320,107,120);
EditStu.Edit10=CreateEdit(NULL,EditStu.handle,320,137,120);
EditStu.Edit11=CreateEdit(NULL,EditStu.handle,320,167,120);
EditStu.Edit12=CreateEdit(NULL,EditStu.handle,320,197,120);
AddItems(EditStu.Edit3,"男");
AddItems(EditStu.Edit3,"女");
AddItems(EditStu.Edit4,"19XX-XX-XX");
AddItems(EditStu.Edit5,"本科生");
AddItems(EditStu.Edit5,"硕士生");
AddItems(EditStu.Edit5,"博士生");
AddItems(EditStu.Edit6,"四年");
AddItems(EditStu.Edit6,"五年");
AddItems(EditStu.Edit6,"六年");
AddItems(EditStu.Edit6,"七年");
AddItems(EditStu.Edit6,"八年");
AddItems(EditStu.Edit7,"2003-09");
AddItems(EditStu.Edit7,"2004-09");
AddItems(EditStu.Edit7,"2005-09");
AddItems(EditStu.Edit7,"2006-09");
AddItems(EditStu.Edit7,"2007-09");
AddItems(EditStu.Edit8,"信息安全");
AddItems(EditStu.Edit8,"计算机");
AddItems(EditStu.Edit9,"紫菘");
AddItems(EditStu.Edit9,"沁苑");
AddItems(EditStu.Edit9,"韵苑");
GetWindow(EditStu.handle)->DefButton=CreateButton("确定",EditStu.handle,(MouseClick)OnEditStuOK,150,250,DEF_BUT_WIDTH,DEF_BUT_HEIGHT,OKIco);
CreateButton("取消",EditStu.handle,DefCloseButton,270,250,DEF_BUT_WIDTH,DEF_BUT_HEIGHT,NoIco);
PayWindow.handle=CreateWindow("学生缴费管理",70,100,640-70,460-100,WndIco);
str[0]="缴费金额";
str[1]="收款人";
str[2]="收款日期";
str[3]=NULL;
PayList=CreateList(PayWindow.handle,220,30,270,180,str);
PayWindow.Label1=CreateLabel(NULL,PayWindow.handle,42,35);
PayWindow.Label2=CreateLabel(NULL,PayWindow.handle,42,55);
PayWindow.Label3=CreateLabel(NULL,PayWindow.handle,10,75);
PayWindow.Label4=CreateLabel(NULL,PayWindow.handle,10,95);
PayWindow.Label5=CreateLabel(NULL,PayWindow.handle,10,115);
PayWindow.Label6=CreateLabel(NULL,PayWindow.handle,10,135);
PayWindow.Label7=CreateLabel(NULL,PayWindow.handle,10,155);
CreateLabel("缴费金额:",PayWindow.handle,10,175);
CreateLabel("收款人:",PayWindow.handle,26,197);
PayWindow.Edit1=CreateEdit(NULL,PayWindow.handle,87,171,100);
PayWindow.Edit2=CreateEdit(NULL,PayWindow.handle,87,195,100);
GetWindow(PayWindow.handle)->DefButton=CreateButton("确定",PayWindow.handle,(MouseClick)OnAddPayClick,35,220,DEF_BUT_WIDTH+50,DEF_BUT_HEIGHT+5,OKIco);
CreateButton("取消",PayWindow.handle,DefCloseButton,195,220,DEF_BUT_WIDTH+50,DEF_BUT_HEIGHT+5,NoIco);
CreateButton("删除记录",PayWindow.handle,(MouseClick)OnDelClick,350,220,DEF_BUT_WIDTH+50,DEF_BUT_HEIGHT+5,CancelIco);
int BaseX=10;
int BaseY=60;
HelpWindow=CreateWindow("学生宿舍管理系统",140,30,640-140,460-30,AskIco);
CreateLabel("学生宿舍管理系统 Ver 1.00.1",HelpWindow,70,30);
CreateLabel("帮助:",HelpWindow,BaseX,BaseY);
CreateLabel("本软件是模拟Windows XP的机制来进行编写",HelpWindow,BaseX+32,BaseY+17);
CreateLabel("的,致力于打造最简单易用的软件.",HelpWindow,BaseX,BaseY+17*2);
CreateLabel("中文输入:",HelpWindow,BaseX,BaseY+17*4);
CreateLabel("按下Ctrl+Space键即可实现[英文]/[全拼]",HelpWindow,BaseX+32,BaseY+17*5);
CreateLabel("输入法的切换.同时密码也允许使用中文.",HelpWindow,BaseX,BaseY+17*6);
CreateLabel("输入焦点的切换:",HelpWindow,BaseX,BaseY+17*8);
CreateLabel("类似于Windows您只需要按下[TAB]即可切换",HelpWindow,BaseX+32,BaseY+17*9);
CreateLabel("输入焦点.",HelpWindow,BaseX,BaseY+17*10);
CreateLabel("如何对列表框信息排序:",HelpWindow,BaseX,BaseY+17*12);
CreateLabel("鼠标单击列表的头部即可,比如单击学号对",HelpWindow,BaseX+32,BaseY+17*13);
CreateLabel("学号进行升序排序,再单击一次即为降序排序.",HelpWindow,BaseX,BaseY+17*14);
CreateLabel("更多帮助请参见 \"用户手册.doc\"",HelpWindow,BaseX,BaseY+17*16);
GetWindow(HelpWindow)->DefButton=CreateButton("OK,我知道了",HelpWindow,DefCloseButton,105,BaseY+17*17+7,DEF_BUT_WIDTH+70,DEF_BUT_HEIGHT+5,OKIco);
ShowWindow(AboutWindow);
while (MakeMsg()); /*该循环负责消息发送*/
closegraph();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -