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

📄 main.cpp

📁 这是毕业设计的程序主要是图书管理功能,希望大家给给意见
💻 CPP
📖 第 1 页 / 共 3 页
字号:

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 + -