一個簡單的新聞管理系統(tǒng)

首先是主函數(shù)迄埃,其次是各個類函數(shù),有三個類:News、Channel畔规、ChannelManagment

=========================================================

主函數(shù):

#import "News.h"

#import "Channel.h"

#import "ChannelManagement.h"

int main(int argc, const char * argv[]) {

@autoreleasepool {

//新聞對象

News

*ne1 = [[News alloc]initWithTitle:@"kill" link:[NSURL

URLWithString:@"www.baidu.com"] description:@"a people killed another

one!"];

News *ne2 = [[News alloc]initWithTitle:@"number" link:[NSURL URLWithString:@"www.number.com"] description:@"this is a number!"];

News *ne3 = [[News alloc]initWithTitle:@"hello" link:[NSURL URLWithString:@"www.hello.com"] description:@"helloworld!"];

NSLog(@"%@",ne1);

//對新聞進(jìn)行輸出

NSLog(@"%@",ne2);

//頻道對象

Channel *ch1 = [[Channel alloc]initWithSubject:@"NEWS" link:[NSURL URLWithString:@"www.imau.edu.cn"]];

//添加新聞到頻道里

[ch1 addNews:ne1];

[ch1 addNews:ne2];

[ch1 addNews:ne3];

Channel *ch2 = [[Channel alloc]initWithSubject:@"READ" link:[NSURL URLWithString:@"www.read.cn"]];

[ch2 addNews:ne1];

[ch2 addNews:ne2];

Channel *ch3 = [[Channel alloc]initWithSubject:@"MUSIC" link:[NSURL URLWithString:@"www.music.cn"]];

[ch3 addNews:ne1];

[ch3 addNews:ne2];

//NSLog(@"%@",ch1);

//頻道管理

ChannelManagement * chma = [[ChannelManagement alloc]initWithFileName:@"News.txt"];

//添加函數(shù) 字典中添加新聞和頻道

[chma addNews:ne1 andChannel:ch1];

[chma addNews:ne2 andChannel:ch2];

[chma addNews:ne2 andChannel:ch3];

NSLog(@"%@",chma);

NSLog(@"channelCount : %lu",[chma channelCount]);

NSInteger i = 1;

//查找字典中指定元素

NSLog(@"channelAtIndex %ld : %@",i,[chma channelAtIndex:i]);

//移除字典中指定元素

[chma removeChannels:i];

NSLog(@"%@",chma);

//移除頻道下面的指定元素

[chma removeNews:i channel:ch2];

NSLog(@"%@",chma);

//查找頻道下面指定的元素

NSLog(@"newsAtIndex %ld in channel %@ is: %@",i,@"ch2",[chma newsAtIndex:i channel:ch2]);

//計(jì)算字典中頻道下指定的元素

NSLog(@"channel %@ count is : %ld",@"cha2",[chma newCountAtChannel:ch2]);

//保存函數(shù) 把字典中的成員寫入文件

[chma write];

//還原函數(shù) 把字典中的成員讀取出來

[chma read];

}

return 0;

}

=========================================================

News.h文件:

#import@interface News : NSObject<NSCopying,NSCoding>

{

NSString * title;? //新聞標(biāo)題

NSURL * link;? ? //新聞鏈接

NSString * description; //新聞內(nèi)容

}

@property(nonatomic,copy) NSString * title;

@property(nonatomic,retain) NSURL * link;

@property(nonatomic,copy)NSString * description;

-(id)copyWithZone:(NSZone *)zone;

//對數(shù)據(jù)成員進(jìn)行初始化

-(id)initWithTitle:(NSString *)_title link:(NSURL *)_link description:(NSString *)_description;

//打印函數(shù)伏穆,輸出新聞的頭拘泞、鏈接、內(nèi)容

-(NSString *)description;

@end

=========================================================

News.m 文件:

#import "News.h"

@implementation News

@synthesize title,link,description;

-(id)copyWithZone:(NSZone *)zone

{

News * n = [[[self class]allocWithZone:zone]init];

[n setTitle:title];

[n setLink:link];

[n setDescription:description];

return n;

}

//對數(shù)據(jù)成員進(jìn)行初始化

-(id)initWithTitle:(NSString *)_title link:(NSURL *)_link description:(NSString *)_description

{

if (self = [super init]) {

title = _title;

link = _link;

description = _description;

}

return self;

}

//歸檔

-(void)encodeWithCoder:(NSCoder *)aCoder

{

[aCoder encodeObject:title forKey:@"TITLE"];

[aCoder encodeObject:link forKey:@"LINK"];

[aCoder encodeObject:description forKey:@"DESCRIPTION"];

}

//解檔

-(id)initWithCoder:(NSCoder *)aDecoder

{

if (self = [super init]) {

title = [aDecoder decodeObjectForKey:@"TITLE"];

link = [aDecoder decodeObjectForKey:@"LINK"];

description = [aDecoder decodeObjectForKey:@"DESCRIPTION"];

}

return self;

}

//打印函數(shù)枕扫,輸出新聞的頭陪腌、鏈接、內(nèi)容

-(NSString *)description

{

NSString * str = [NSString stringWithFormat:@"News==> title:%@,link:%@,description:%@",title,link,description];

return str;

}

@end

=========================================================

Chann.h 文件:

#import#import "News.h"

@interface Channel : NSObject<NSCopying,NSCoding>

{

NSString? *subject;? ? ? ? //頻道標(biāo)題

NSURL *link;? ? ? ? ? ? ? ? //頻道鏈接

NSMutableArray * arraylist;? //頻道中新聞列表

}

@property(nonatomic,copy) NSString * subject;

@property(nonatomic,retain) NSURL * link;

@property(nonatomic,retain) NSMutableArray * arraylist;

-(id)copyWithZone:(NSZone *)zone;

//初始化數(shù)據(jù)成員

-(id)initWithSubject:(NSString *)_subject link:(NSURL *)_link;

//添加新聞

-(void)addNews:(News *)_news;

//移除指定的下標(biāo)元素

-(void)removeNews:(NSInteger)index;

//計(jì)算數(shù)組元素個數(shù)

-(NSInteger)newsCount;

//打印函數(shù) 輸出標(biāo)題烟瞧、鏈接诗鸭、數(shù)組

-(NSString *)description;

@end

=========================================================

Channel.m文件:

#import "Channel.h"

@implementation Channel

@synthesize subject,link,arraylist;

-(id)copyWithZone:(NSZone *)zone

{

Channel *ch = [[[self class]allocWithZone:zone]init];

[ch setSubject:subject];

[ch setLink:link];

[ch setArraylist:arraylist];

return ch;

}

//歸檔

-(void)encodeWithCoder:(NSCoder *)aCoder

{

[aCoder encodeObject:subject forKey:@"SUBJECT"];

[aCoder encodeObject:link forKey:@"LINK"];

[aCoder encodeObject:arraylist forKey:@"ARRAYLIST"];

}

//解檔

-(id)initWithCoder:(NSCoder *)aDecoder

{

if (self = [super init]) {

subject = [aDecoder decodeObjectForKey:@"SUBJECT"];

link = [aDecoder decodeObjectForKey:@"LINK"];

arraylist = [aDecoder decodeObjectForKey:@"ARRAYLIST"];

}

return self;

}

//初始化數(shù)據(jù)成員

-(id)initWithSubject:(NSString *)_subject link:(NSURL *) _link

{

if (self = [super init]) {

subject = _subject;

link = _link;

arraylist = [[NSMutableArray alloc] initWithCapacity:1];

}

return self;

}

//添加新聞

-(void)addNews:(News *)_news

{

BOOL flag = YES;

for (id objc in arraylist)

{

if (_news == objc)

{

NSLog(@"News exist!参滴!");

flag = NO;

}

}

if (flag)

{

[arraylist addObject:_news];

}

}

//移除指定的下標(biāo)元素

-(void)removeNews:(NSInteger)index

{

[arraylist removeObjectAtIndex:index];

}

//計(jì)算數(shù)組元素個數(shù)

-(NSInteger)newsCount

{

return [arraylist count];

}

//打印函數(shù) 輸出標(biāo)題强岸、鏈接、數(shù)組

-(NSString *)description

{

NSString *str = [NSString stringWithFormat:@"Subject:%@,Link:%@,Arraylist:%@",subject,link,arraylist];

return? str;

}

@end

=========================================================

ChannelManagement.h 文件:

#import#import "Channel.h"

@interface ChannelManagement : NSObject

{

NSMutableDictionary *channels; //頻道管理字典

NSString *filename;? ? ? ? ? ? //文件名

}

@property(nonatomic,retain) NSMutableDictionary *channels;

@property(nonatomic,retain) NSString *filename;

//始化數(shù)據(jù)成員

-(id)initWithFileName:(NSString *)_filename;

//添加一個字典對象

-(void)addChannels:(NSDictionary *)_channel;

//移除字典中指定下標(biāo)的元素

-(void)removeChannels:(NSInteger)index;

//查找字典中指定下標(biāo)的元素

-(Channel*)channelAtIndex:(NSInteger)index;

//計(jì)算字典里元素的個數(shù)

-(NSInteger)channelCount;

//添加函數(shù) 字典中添加新聞和頻道

-(void)addNews:(News *)_news andChannel:(Channel *)_channel;

//移除頻道下面的指定元素

-(void)removeNews:(NSInteger)index channel:(Channel *)_channel;

//查找頻道下面指定的元素

-(News*)newsAtIndex:(NSInteger)index channel:(Channel *)_channel;

//計(jì)算字典中頻道下指定的元素

-(NSInteger)newCountAtChannel: (Channel*)_channel;

//保存函數(shù) 把字典中的成員寫入文件

-(void) write;

//還原函數(shù) 把字典中的成員讀取出來

-(void) read;

//打印函數(shù) 輸出頻道砾赔、存放數(shù)據(jù)的文件名

-(NSString *)description;

@end

=========================================================

ChannelManagement.m 文件:

#import "ChannelManagement.h"

@implementation ChannelManagement

@synthesize channels,filename;

//初始化數(shù)據(jù)成員

-(id)initWithFileName:(NSString *)_filename

{

if(self = [super init])

{

filename = _filename;

channels = [[NSMutableDictionary alloc]initWithCapacity:2];

}

return self;

}

//添加一個字典對象

-(void)addChannels:(NSDictionary *)_channel

{

//? ? [channels setObject:_channel.subject forKey:@"channel.subject"];

//? ? [channels setObject:_channel.link forKey:@"channel.link"];

//? ? [channels setObject:_channel.arraylist forKey:@"channel.arraylist"];

[channels addEntriesFromDictionary:_channel];

}

//移除字典中指定下標(biāo)的元素

-(void)removeChannels:(NSInteger)index

{

NSArray *array = [channels allKeys];

NSString *str = [array objectAtIndex:index];

[channels removeObjectForKey:str];

}

//查找字典中指定下標(biāo)的元素

-(Channel*)channelAtIndex:(NSInteger)index

{

NSArray *array = [channels allKeys];

NSString *str = [array objectAtIndex:index];

Channel * ch = [channels objectForKey:str];

return ch;

}

//計(jì)算字典里元素的個數(shù)

-(NSInteger)channelCount

{

return [channels count];

}

//添加函數(shù) 字典中添加新聞和頻道

-(void)addNews:(News *)_news andChannel:(Channel *)_channel

{

//? ? for (id objc in _channel.arraylist)

//? ? {

//? ? ? ? if (_news == objc)

//? ? ? ? {

//? ? ? ? ? ? NSLog(@"%@ have exist this news",_channel.subject);

//? ? ? ? }

//? ? }

[_channel addNews:_news];

NSString *sub = _channel.subject;

[channels setObject:_channel forKey:sub];

}

//移除頻道下面的指定元素

-(void)removeNews:(NSInteger)index channel:(Channel *)_channel

{

[_channel.arraylist removeObjectAtIndex:index];

}

//查找頻道下面指定的元素

-(News*)newsAtIndex:(NSInteger)index channel:(Channel *)_channel

{

News *ne = [_channel.arraylist objectAtIndex:index];

return ne;

}

//計(jì)算字典中頻道下指定的元素

-(NSInteger)newCountAtChannel: (Channel*)_channel

{

NSInteger count = [_channel.arraylist count];

return count;

}

//保存函數(shù) 把字典中的成員寫入文件

-(void)write

{

BOOL result = [NSKeyedArchiver archiveRootObject:channels toFile:filename];

if (result)

{

NSLog(@"write success!");

}

else

{

NSLog(@"write fail!");

}

}

//還原函數(shù) 把字典中的成員讀取出來

-(void)read

{

NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithFile:filename];

NSString *str = [NSString stringWithFormat:@"%@",array];

//NSLog(@"Content of %@ is : %@",filename,array);

NSLog(@"%@",str);

}

//打印函數(shù) 輸出頻道蝌箍、存放數(shù)據(jù)的文件名

-(NSString *)description

{

NSLog(@"**************************頻道管理***************************");

NSString *str = [NSString stringWithFormat:@"filename:%@",filename];

NSLog(@"***********************************************************");

NSArray *array = [channels allKeys];

for (id element in array ) {

NSLog(@"CHANNEL:%@ = %@",element,[channels objectForKey:element]);

}

return str;

}

@end

======================================

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末青灼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子妓盲,更是在濱河造成了極大的恐慌杂拨,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悯衬,死亡現(xiàn)場離奇詭異弹沽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)筋粗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門策橘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人娜亿,你說我怎么就攤上這事役纹。” “怎么了暇唾?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵促脉,是天一觀的道長。 經(jīng)常有香客問我策州,道長瘸味,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任够挂,我火速辦了婚禮旁仿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘孽糖。我一直安慰自己枯冈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布办悟。 她就那樣靜靜地躺著尘奏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪病蛉。 梳的紋絲不亂的頭發(fā)上炫加,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機(jī)與錄音铺然,去河邊找鬼俗孝。 笑死,一個胖子當(dāng)著我的面吹牛魄健,可吹牛的內(nèi)容都是我干的赋铝。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼沽瘦,長吁一口氣:“原來是場噩夢啊……” “哼革骨!你這毒婦竟也來了农尖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤苛蒲,失蹤者是張志新(化名)和其女友劉穎卤橄,沒想到半個月后绿满,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體臂外,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年喇颁,在試婚紗的時候發(fā)現(xiàn)自己被綠了漏健。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡橘霎,死狀恐怖蔫浆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情姐叁,我是刑警寧澤瓦盛,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站外潜,受9級特大地震影響原环,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜处窥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一嘱吗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧滔驾,春花似錦谒麦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至摊阀,卻和暖如春迁匠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背驹溃。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工城丧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人豌鹤。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓亡哄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親布疙。 傳聞我的和親對象是個殘疾皇子蚊惯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理愿卸,服務(wù)發(fā)現(xiàn),斷路器截型,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • 在項(xiàng)目之前趴荸,最好下載該App或者GitHub源碼跑一下看一下效果,該項(xiàng)目旨在練習(xí)UI及網(wǎng)絡(luò)數(shù)據(jù)的處理宦焦,推薦初學(xué)者邊...
    si1ence閱讀 3,314評論 13 36
  • 這些天總是有一個畫面不停地在頭腦里播放发钝,像是自己手搖著電影放映機(jī)一遍遍的在回憶,沒有特別清晰的聲音卻能夠感...
    波王爺閱讀 494評論 0 0
  • 01. 小表弟是2007年秋天入伍的。 都說秋高氣爽精堕,天涼好個秋孵淘。可這完全不適用與廣州的秋歹篓。廣州的秋天更像是夏天瘫证,...
    C姑娘的糖果屋閱讀 394評論 1 3
  • 有人問想要剃毛重窟,但是不知道剃了會不會有什么感染载萌,或者是有人疑惑到底yin毛有什么用處等等的問題。似乎這樣的困擾讓女...
    冷喵閱讀 2,172評論 0 1