C语言编闹钟程序

Python019

C语言编闹钟程序,第1张

程序员联合开发网上有:http://www.pudn.com/downloads59/sourcecode/windows/other/detail207633.html

非常漂亮。

///////////////////////

大兄弟你点那个文件名,就自动打开了,不要下载的。

给你我打开TransparentWnd.cpp,内容太多,贴子显示不了,就一部分;

////////////////////

www.pudn.com >ktclock.rar >TransparentWnd.cpp

//****************

//* TransparentWindow.CPP

//*

//* A transparent window class.

//*

//* Based on the idea of Jason Wylie ,Franz Polzer,Luo yun bin

//* [email protected]

//* (C) 2002 by 王鹏

//*

//* Write to me: [email protected]

//

#include "stdafx.h"

#include "TransparentWnd.h"

#include "Dib.h"

#include "resource.h"

#include

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__

#endif

#define WM_LIBEN WM_USER+994

CString GetCurPath()

{

TCHAR exeFullPath[MAX_PATH]

CString strPath

GetModuleFileName(NULL,exeFullPath,MAX_PATH)

strPath.Format("%s", exeFullPath)

strPath = strPath.Left(strPath.ReverseFind('\\'))

return strPath

//读写文件功能可使用freopen函数

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

struct STUDENT{

    float score[3]

    long id

    char names[20]

}

typedef struct STUDENT student//simplify the struct STUDENT

typedef struct STUDENT *Pstudent

    

void print()

void append()

void course_total()

void student_total()

void score_sort(int (*compare)(float a,float b))

void number_sort()

void name_sort(Pstudent names_[30])

void number_search()

void name_search()

void statistic(Pstudent scores_[30])

    

void show(int i)

    

int ascend(float a, float b){

    if(a>b) return 1

    else  return 0

}

int descend(float a, float b){

    if(a<b)  return 1

    else  return 0

}

int n//the number of students

    

int flg=1//true print the result

student *stuArray[30]//the global variable can simplify the compute

    

int again=1//whether to continue

int main(){

    int i

    printf("Input student number(n<30):")

    scanf("%d",&n)

    int choice

    while(again){

        print()

        scanf("%d",&choice)

        switch(choice){

            case 1:

                append()

                break

            case 2:

                course_total()//use flag to define whether to print

                break

            case 3:

                student_total()

                break

            case 4:

                score_sort(descend)

                if(flg){

                    printf("Sort in descending order by total score of every student:\n")

                    printf("NO\tName\tMT\tEN\tPH\tSUM\tAVER\n")

                    for(i=0i<ni++)

                        show(i)

                }

                break

            case 5:

                score_sort(descend)

                if(flg){

                    printf("Sort in ascending order by total score of every student:\n")

                    printf("NO\tName\tMT\tEN\tPH\tSUM\tAVER\n")

                    for(i=0i<ni++)

                        show(n-1-i)

                }

                break

            case 6:

                number_sort()

                break

            case 7:

                name_sort(stuArray)

                break

            case 8:

                number_search()

                break

            case 9:

                name_search()

                break

            case 10:

                statistic(stuArray)

                break

            case 0:

                again=0

                printf("End of program!\n")

                break

            default:

                printf("Input error!\n")

                break

        }

    

    }

return 0

}

    

void print(){

    printf("1.Append record\n")

    printf("2.Calculate total and average score of every course\n")

    printf("3.Calculate total and average score of every student\n")

    printf("4.Sort in descending order by total score of every student\n")

    printf("5.Sort in ascending order by total score of every student\n")

    printf("6.Sort in ascending order by number\n")

    printf("7.Sort in dictionary order by name\n")

    printf("8.Search by number\n")

    printf("9.Search by name\n")

    printf("10.Statistic analysis\n")

    printf("Please Input your choice:")

}

void append(){

    int i

    printf("Input student's ID,name and score:\n")

    for(i=0i<ni++){////the most significant part malloc the memory when appending record

        stuArray[i] = (student *)malloc(sizeof(student))

        scanf("%ld%s",&stuArray[i]->id,stuArray[i]->names)

        scanf("%f",&stuArray[i]->score[0])

        scanf("%f",&stuArray[i]->score[1])

        scanf("%f",&stuArray[i]->score[2])

    }

}

void course_total(){

    int i

    float sum0=0.0,sum1=0.0,sum2=0.0

    for(i=0i<ni++){

        sum0+=stuArray[i]->score[0]

        sum1+=stuArray[i]->score[1]

        sum2+=stuArray[i]->score[2]

    }

    if(flg){

        printf("course %d:sum=%.0f,aver=%.0f\n",1,sum0,sum0/n)

        printf("course %d:sum=%.0f,aver=%.0f\n",2,sum1,sum1/n)

        printf("course %d:sum=%.0f,aver=%.0f\n",3,sum2,sum2/n)

    }

}

void student_total(){

    float total[30]={0.0}

    int i

    for(i=0i<ni++){

        total[i]=stuArray[i]->score[0]+stuArray[i]->score[1]+stuArray[i]->score[2]

    }

    if(flg){

        for(i=0i<ni++)

            printf("student %d:sum=%.0f,aver=%.0f\n",i+1,total[i],total[i]/3)

    }

}

void score_sort(int (*compare)(float a,float b)){

    int i,j

    float total[30]={0.0}

    for(i=0i<ni++){

        total[i]=stuArray[i]->score[0]+stuArray[i]->score[1]+stuArray[i]->score[2]

    }

    for(i=0i<ni++){

        for(j=0j<=ij++)

            //if((*compare)(stuArray[i]->score[0]+stuArray[i]->score[1]+stuArray[i]->score[2],stuArray[j]->score[0]+stuArray[j]->score[1]+stuArray[j]->score[2])==0){

            if((*compare)(total[i],total[j])==0){//just swap the pointer it simplify the program

                  student *tmp=(student *)malloc(sizeof(student))

                  memcpy(tmp,stuArray[i],sizeof(student))

                  memcpy(stuArray[i],stuArray[j],sizeof(student))

                  memcpy(stuArray[j],tmp,sizeof(student))

        }//memcpy-> copy the hole the memory

    }

    

}

void number_sort(){//没必要传参

    int i,j

    for(i=0i<ni++){

        for(j=0j<ij++)

            if(stuArray[i]->id<stuArray[j]->id){

                  student *tmp=(student *)malloc(sizeof(student))

                  memcpy(tmp,stuArray[i],sizeof(student))

                  memcpy(stuArray[i],stuArray[j],sizeof(student))

                  memcpy(stuArray[j],tmp,sizeof(student))

            }

    }

    if(flg){

        printf("Sort in ascending order by number:\n")

        printf("NO\tName\tMT\tEN\tPH\tSUM\tAVER\n")

        for(i=0i<ni++)

            show(i)

    }

}

void name_sort(Pstudent names_[30]){

    int i,j

    for(i=0i<ni++){

        for(j=0j<=ij++)

            if(strcmp(names_[i]->names,names_[j]->names)<0){

                  student *tmp=(student *)malloc(sizeof(student))

                  memcpy(tmp,stuArray[i],sizeof(student))

                  memcpy(stuArray[i],stuArray[j],sizeof(student))

                  memcpy(stuArray[j],tmp,sizeof(student))

            }

    }

    if(flg){

        printf("Sort in dictionary order by name:\n")

        printf("NO\tName\tMT\tEN\tPH\tSUM\tAVER\n")

        for(i=0i<ni++)

            show(i)

    }

}

void number_search(){

    long query

    printf("Input the number you want to search:")

    scanf(" %ld",&query)

    int i

    score_sort(descend)//100 98 87

    for(i=0i<ni++){

        if(stuArray[i]->id==query)

            break

    }

    if(i!=n){

        printf("%d\t",i+1)

        show(i)

    }

    else

        printf("Not found!\n")

}

void name_search(){

    char query[20]

    score_sort(descend)

    printf("Input the name you want to search:")

    scanf("%s",query)

    int i

    for(i=0i<ni++){

        if(!strcmp(query,stuArray[i]->names)){

            break

        }

    }

    if(i!=n){

        printf("%d\t",i+1)

        show(i)

    }

    else

        printf("Not found!\n")

}

void statistic(Pstudent scores_[30]){//a pointer array stands for scores

    float MT[30],EN[30],PH[30]

    int i

    for(i=0i<ni++){

        MT[i]=scores_[i]->score[0]

        EN[i]=scores_[i]->score[1]

        PH[i]=scores_[i]->score[2]

    }

    int sta[6]={0}//means the statistic of every student (<60 or 60-70 ....)

    for(i=0i<ni++){

        if(MT[i]<60)

            sta[0]++

        if(MT[i]==100)

            sta[5]++

        if(MT[i]>=60&&MT[i]<=69)

            sta[1]++

        if(MT[i]>=70&&MT[i]<=79)

            sta[2]++

        if(MT[i]>=80&&MT[i]<=89)

            sta[3]++

        if(MT[i]>=90&&MT[i]<=100)

            sta[4]++

    }

    

    if(flg){

        printf("For course %d:\n",1)

        printf("<60\t%d\t%.2f%%\n",sta[0],sta[0]/(float)n*100)//change n to float

        printf("60-69\t%d\t%.2f%%\n",sta[1],sta[1]/(float)n*100)

        printf("70-79\t%d\t%.2f%%\n",sta[2],sta[2]/(float)n*100)

        printf("80-89\t%d\t%.2f%%\n",sta[3],sta[3]/(float)n*100)

        printf("90-100\t%d\t%.2f%%\n",sta[4],sta[4]/(float)n*100)

        printf("100\t%d\t%.2f%%\n",sta[5],sta[5]/(float)n*100)

    }

    memset(sta,0,6*sizeof(int))//initialize the sta array

    for(i=0i<ni++){

        if(EN[i]<60)

            sta[0]++

        if(EN[i]==100)

            sta[5]++

        if(EN[i]>=60&&EN[i]<=69)

            sta[1]++

        if(EN[i]>=70&&EN[i]<=79)

            sta[2]++

        if(EN[i]>=80&&EN[i]<=89)

            sta[3]++

        if(EN[i]>=90&&EN[i]<=100)

            sta[4]++

    }

    

    if(flg){

        printf("For course %d:\n",2)

        printf("<60\t%d\t%.2f%%\n",sta[0],sta[0]/(float)n*100)//change n to float

        printf("60-69\t%d\t%.2f%%\n",sta[1],sta[1]/(float)n*100)

        printf("70-79\t%d\t%.2f%%\n",sta[2],sta[2]/(float)n*100)

        printf("80-89\t%d\t%.2f%%\n",sta[3],sta[3]/(float)n*100)

        printf("90-100\t%d\t%.2f%%\n",sta[4],sta[4]/(float)n*100)

        printf("100\t%d\t%.2f%%\n",sta[5],sta[5]/(float)n*100)

    }

    memset(sta,0,6*sizeof(int))

    for(i=0i<ni++){

        if(PH[i]<60)

            sta[0]++

        if(PH[i]==100)

            sta[5]++

        if(PH[i]>=60&&PH[i]<=69)

            sta[1]++

        if(PH[i]>=70&&PH[i]<=79)

            sta[2]++

        if(PH[i]>=80&&PH[i]<=89)

            sta[3]++

        if(PH[i]>=90&&PH[i]<=100)

            sta[4]++

    }

    

    if(flg){

        printf("For course %d:\n",3)

        printf("<60\t%d\t%.2f%%\n",sta[0],sta[0]/(float)n*100)//change n to float

        printf("60-69\t%d\t%.2f%%\n",sta[1],sta[1]/(float)n*100)

        printf("70-79\t%d\t%.2f%%\n",sta[2],sta[2]/(float)n*100)

        printf("80-89\t%d\t%.2f%%\n",sta[3],sta[3]/(float)n*100)

        printf("90-100\t%d\t%.2f%%\n",sta[4],sta[4]/(float)n*100)

        printf("100\t%d\t%.2f%%\n",sta[5],sta[5]/(float)n*100)

    }

}

    

void show(int i){

    

    printf("%ld\t%s\t",stuArray[i]->id,stuArray[i]->names)//order is the id after sort

    printf("%.0f\t%.0f\t%.0f\t",stuArray[i]->score[0],stuArray[i]->score[1],stuArray[i]->score[2])

    float sum=stuArray[i]->score[0]+stuArray[i]->score[1]+stuArray[i]->score[2]

    printf("%.0f\t%.0f\n",sum,sum/3)

}