會員管理系統

不要笑話我,這是我凌晨一點寫完的代碼。儘量把白天學的知識用上了。昨天學的是NSNumber,NSString,CGRange,CGPiont,CGSize,CGRect。一些類的用法,結構的用法。掌握的不熟練,所以做作業的時候就儘量把學的用上。不多說,上代碼。

//
//  main.m
//  vip
//
//  Created by yuan on 14-12-12.
//  Copyright (c) 2014年 yuan. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "vip.h"
//寫了個塊,和類裏面的那個方法是一樣的作用,這兩部分可以寫到一起。
void (^block)(char *,char *)=^(char * a,char * b)
{
    while(*b)
    {
        *a++=*b++;
        
    }
    *a='\0';
};
int main(int argc, const char * argv[])
{

    @autoreleasepool {
        
        
        vip * user = [[vip alloc]init];
        
        struct brithday brithday2;
        
        
        
      //我這段代碼用了GOTO語句,感覺不太好,但是實現了功能,等着想個辦法不用GOTO語句了  
        NSLog(@"請輸入用戶名:");
        char str1[17];
    label1:
        scanf("%s",str1);
        
//用戶名傳進來,備份一個name3,因爲要求是字母數字組成,我先把name全部變成大寫,這樣少一部分判斷。但是後面還要賦值,所以留了一個備份。
        NSString * name2 =[NSString stringWithUTF8String:str1];
        NSString * name3 =[NSString stringWithUTF8String:str1];
//轉化成大寫字母
        name3 = [name2 uppercaseString];
//判斷符合條件的。只由數字字母組合的名字
        if(([name2 length]>=8&&[name2 length]<=16)&&(([name3 compare:@"A"]==1&&[name3 compare:@"Z"]==-1)||([name2 compare:@"0"]==1&&[name2 compare:@"9"]==-1)))
        {
            user.name=name2;
        }else
        {
            NSLog(@"請重新輸入用戶名:");
//名字不合法,就提示重新輸入,並跳到scanf那裏,繼續接收用戶名
            goto label1;
        }
        NSLog(@"請輸入密碼:");
        char str2[17];
    label2:
        scanf("%s",str2);
//密碼這裏和用戶名類似,我寫的不健壯,因爲製圖着完成功能了只
        NSString * pwd2 =[NSString stringWithUTF8String:str2];
//        pwd2 = [pwd2 uppercaseString];
        if([pwd2 length]>=8&&[pwd2 length]<=16)
        {
//            if(([pwd2 compare:@"A"]==1&&[pwd2 compare:@"Z"]==-1)||([pwd2 compare:@"0"]==1&&[pwd2 compare:@"9"]==-1))
//            {
//                
//            }
            user.pwd=pwd2;
        }else
        {
            NSLog(@"請重新輸入密碼:");
            goto label2;
        }
        NSLog(@"請輸入生日:");
        char y[5],m[5],d[5];
        scanf("%s %s %s",y,m,d);
//接收生日,並把生日轉化成<span style="font-family: Arial, Helvetica, sans-serif;">NSString,因爲後面要對生日格式的合法性做判斷,轉化成字符串對象以後,取值,然後比較。</span>

//        NSString * year2=[NSString stringWithUTF8String:y];
    label3:;
        NSString * month2=[NSString stringWithUTF8String:m];
    label4:;
        NSString * day2=[NSString stringWithUTF8String:d];
        
//        vip * u1=[user initWithThree:name2 :pwd2 :brithday2 ];
        user = [user initWithThree:name2 :pwd2 :brithday2 ];
        
        
        
        if([month2 intValue]<=0||[month2 intValue]>12)
        {
            NSLog(@"您輸入的月份不合法,請重新輸入:");
            scanf("%s",m);
            goto label3;
        }else if([day2 intValue]<=0||[day2 intValue]>31)
        {
            NSLog(@"您輸入的日期不合法,請重新輸入:");
            scanf("%s",d);
            goto label4;
        }else{}
//把接收了的生日賦值給生日
        block(brithday2.year,y);
        block(brithday2.month,m);
        block(brithday2.day,d);
        
        //構造會員
        user = [user initWithThree:name2 :pwd2 :brithday2];
//打印信息
        [user showMemberInfo];
        
        
        
        
                
    }
    return 0;
}
這是main函數,下面是類的。

//
//  vip.m
//  vip
//
//  Created by yuan on 14-12-12.
//  Copyright (c) 2014年 yuan. All rights reserved.
//

#import "vip.h"
#import <time.h>
@implementation vip
@synthesize name,pwd,number,sorce;
//因爲方法裏要用到給字符串賦值,就用了這個笨辦法,挨個賦值。
-(void)copyString:(char *)a :(char *)b
{
    while(*b)
    {
        *a++=*b++;
        
    }
    *a='\0';
}



//三參構造
-(vip *)initWithThree:(NSString *)name1 :(NSString *)pwd1 :(struct brithday)brithday1
{
    if (self=[super init]) {
        self.name=name1;
        self.pwd=pwd1;
        self.sorce=0;
//把傳進來的生日賦給對象的生日
        [self copyString:self->Brithday1.year :brithday1.year];
        [self copyString:self->Brithday1.month :brithday1.month];
        [self copyString:self->Brithday1.day :brithday1.day];
//把對象的生日轉化成NSString對象。
        NSString * year1=[NSString stringWithUTF8String:self->Brithday1.year];
        NSString * month1=[NSString stringWithUTF8String:self->Brithday1.month];
        NSString * day1=[NSString stringWithUTF8String:self->Brithday1.day];
//產生三位隨機數,用於組成編號
        srand((unsigned)time(NULL));
        NSNumber * num = [[NSNumber alloc]initWithInt:rand()%1000];
//編號前綴
        NSString * tmp = @"DS";
//“合成”編號。這裏的這個初始化沒成功,不知道爲什麼,沒細看,有空再看看。
        [self.number appendFormat:@"%@%@%@%@%@",tmp,year1,month1,day1,num];
//        self->Brithday.year=brithday1.year;
        return self;
    }else
    {
        return self;
    }
}
//無參構造
-(vip *)initWithAll
{
    if(self=[super init])
    {
        return self;
    }else
    {
        return self;
    }
}
-(void)showMemberInfo
{
//把對象生日轉化成<span style="font-family: Arial, Helvetica, sans-serif;">NSString,感覺這裏可以封裝一下,這段代碼用了不止一次。也可以想辦法不用轉化。突擊的時候,只想着完成功能了,沒細處理。</span>
    NSString * year1=[NSString stringWithUTF8String:self->Brithday1.year];
    NSString * month1=[NSString stringWithUTF8String:self->Brithday1.month];
    NSString * day1=[NSString stringWithUTF8String:self->Brithday1.day];
//    srand((unsigned)time(NULL));
//    NSNumber * num = [[NSNumber alloc]initWithInt:rand()%1000];
//    [self.number appendFormat:@"DS",year1,month1,day1,num];
//因爲初始化的時候,編號不知爲啥不能正確輸出,就在打印的時候再“合成”了一遍
    srand((unsigned)time(NULL));
    NSNumber * num = [[NSNumber alloc]initWithInt:(rand()%1000)];
    NSString * tmp = @"DS";
    [self.number appendFormat:@"%@%@%@%@%@",tmp,year1,month1,day1,num];
//打印全部信息
    NSLog(@"\n會員名:%@\n生日:%@年%@月%@日\n會員編號:%@%@%@%@%@\n會員積分:%i分",self.name,year1,month1,day1,@"DS",year1,month1,day1,num,self.sorce);
}



@end
下面是頭文件

//
//  vip.h
//  vip
//
//  Created by yuan on 14-12-12.
//  Copyright (c) 2014年 yuan. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface vip : NSObject
{
//題目要求生日用結構體
    struct brithday
    {
        char year[5];
        char month[5];
        char day[5];
    }Brithday1;
}
//屬性,會員賬戶,密碼,編號,積分
@property NSString * name;
@property NSString * pwd;
@property NSMutableString * number;
@property int sorce;




//三參構造函數。裏面把沒傳參的初始化了。
-(vip *)initWithThree:(NSString *)name1 :(NSString *)pwd1 :(struct brithday)Brithday;
//無參構造。我沒有做處理,直接用了super的init。
-(vip *)initWithAll;
//打印會員所有信息
-(void)showMemberInfo;




@end












發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章