您的位置:首页 > 其它

2015年6月29日 课设日志

2015-06-30 00:22 323 查看
一大早,带着不一样的心情进入机房,今天把电脑也带着,毕竟还是有用的。嗯,那今天的任务呢,大体分俩个,继续完成一个任务,和对已经完成的任务进行验证。老师现在还在查人。

然而,现在组长才布置任务,而且,应该是前几天的任务,是以层次模块,每个人开始写。

软件的分析设计,舒老师现在在讲的内容,课设的目的就是想提高大家的编程目的,早早积累项目经验。

和以往的不同,不要小看,按工程设计要求。老师说,我们这届在学校做项目是很难得的。

现在开始讲课设的流程。

老师说,现在自己做的东西,自己保留,自己分享。//老师有时说的听不懂啊,现在在说销售统计模块。

设计思路讲完了,现在开始讲三个层次了。

其实现在讲的,就是我这几天自己学到的,自己经历之后,再听到底是怎么回事,感觉不错。自己吃饭,和别人给你喂饭,感觉真的不一样耶。进步。

老师讲了半天的链表,感觉好厉害︿( ̄︶ ̄)︽( ̄︶ ̄)︿

最后讲分页了,要听的很认真的样子,突然觉得我还是很聪明的。

现在是10:46,老师在10多分钟前已经讲完了,那些老师准备好的文件需要都集中到一起,认真分析。

然后,此刻的工作任务,是:

现在是11:30,过去的这些时间,在组长的具体安排下,大家的任务终于分好了,组长负责界面层,副组长负责持久化层,我和其他四个人负责业务逻辑,我刚才小小充当了下领导的感觉,还不错。

然后,我的任务终于清楚了:

用户业务逻辑层

订单信息逻辑层

然后,因为现在,老师终于又领悟了,然后给大家发了各个模块,大家只需要往进写东西就好了,所以,go go go 一切都正式开始了。

现在是12:04,激动之后是淡定,是有模块了,但是没有流程,老师才发了座位的整体设计。我再看看,自己想。

还是学习学习再学习吧:

Get1:判断一个链表是否为空

由头结点的指针部分是否为空来判断,如果为空,则链表为空

下班,睡了个午觉,才起来,准备了一下,开始工作。然后呢,因为我要写的还没有计划说,就手头现在有的,我决定准备写一下:

演出计划的持久层

现在是,15:25,马上开工。

现在是16:35,实习报告出了点问题,修改了20多分钟,然后,以下是刚才的:

int Schedule_Perst_SelectByPlay(schedule_list_t list, int play_id){

int l=0;

FILE *fp;

schedule_list_t temp;

fp=fopen("SCHEDULE_DATA_FILE","rb");

if (fp==NULL)

{

printf("Open fail!\n");

return 0;

}

while ( !feof(fp) )

{

fread(temp,sizeof(schedule_list_t),1,fp)

if ( temp->data.play_id == play_id )

{

List_init(list,schedule_list_t);

List_AddTail(list,temp);

l++;

}

}

fclose(fp);

return l;

}

这是根据剧目ID从文件中载入所有演出计划,while里的东西搞了大半天,一开始不知道如何将读出的数据放入链表。。。。。。然后然后,幸好早上也听老师了些话,找了半天辅助资料,链表的函数就是直接用的,init初始化下,然后调用AddTail直接使用就好,把temp数据放入链表list。

嗯,这个就这样了,然后,演出计划还有5个持久化层,继续下一个。

现在是17:09,结果刚才到现在,都在帮舍友解决问题,关于链表的,

现在是19:49,以下是关于添加演出计划的:

int Schedule_Perst_Insert(const schedule_t *data)

{

FILE *fp;

int rtn=0;

fp=fopen("SCHEDULE_DATA_FILE","ab");

if (fp==NULL)

{

printf("Open fail!\n");

return 0;

}

rtn=fwrite(data,sizeof(schedule_t),1,fp);

fclose(fp);

return rtn;

}

有流程,自己动手编写还是方便多了,不知道这真的是以后工作的简单写照吗?说说代码:以ab方式打开SCHEDULE_DATA_FILE,失败提示现在是必不可少的。然后,用fwrite写入一条演出计划信息,返回值就是1,关闭文件。以上都是按流程图来的,真的是老师今天早上说的,只是锻炼我们的编程能力而已。

现在是22:58,反正一直都忙忙碌碌的到现在,开始,最后在来一个小时多,就收工了。

这个现在是演出计划更新函数:

int Schedule_Perst_Update(const schedule_t *data){

FILE *fp;

schedule_t buf;

int found=0;

fp=fopen("SCHEDULE_DATA_FILE","rb+");

if (fp==NULL)

{

printf("Open fail!\n");

return 0;

}

while ( !feof(fp) && fread(buf,sizeof(schedule_t),1,fp) && buf.id==data.id )

{

fseek(fp,-sizeof(schedule_t)L,SEEK_CUR);

printf("The infomation : \n");

scanf("%d%d%d%d%d%d",&data.id,&data.play_id,&data.studio_id,&data.data_tdata,&data.mytime_ttime,&data.seat_count);

fprintf(fp,"%d%d%d%d%d%d",data.id,data.play_id,data.studio_id,data.data_tdata,data.mytime_ttime,data.seat_count);

found=1;

}

fclose(fp);

return found;

}

其实吧,这个没有太搞明白。。。不过,回头看了看计划的业务逻辑层,貌似明白了怎么回事,也就是开始也想的,就是不管你是增添修改删除,各个完成之后之后,就调用这个函数进行更新一次,保证文件的及时性。但,又有,它流程里,说,向文件中写入要修改的剧目记录。明明是更新,为什么要修改?修改什么?好吧,这是今天,也是最近遇到的第一个问题。

继续。

这个现在是演出计划的删除:

int Schedule_Perst_DeleteByID(int ID){

FILE *fp;

FILE *tp;

Int found;

schedule_t buf;

if ( rename(SCHEDULE_DATA_FILE,SCHEDULE_DATA_TEMP_FILE)!=0 )

{

printf("Change name fail!\n");

return 0;

}

tp=fopen("SCHEDULE_DATA_TEMP_FILE","rb");

fp=fopen("SCHEDULE_DATA_FILE","wb");

if (fp==NULL && tp==NULL )

{

printf("FILE fail!\n");

return 0;

}

while ( !feof(tp) )

{

if ( fread(buf,sizeof(schedule),1,tp) && buf.id==ID )

found=1;

fwrite(buf,sizeof(schedule),1,fp);

}

fclose(tp);

fclose(fp);

if ( remove(STUDIO_DATA_TEMP_FILE)==1 )

return found;

}

其实,真的是深深体会到,大部分模块都是相同的,流程都是一样的,刚才还在傻傻的找昨天写的日志,比如找重命名rename,fread,fwrit都是一个想法,复制粘贴昨天的代码。说收获,文件中的删除,就是将文件中的数据调出来到临时文件中,然后和需要删除的比较,不一样的,再次放入文件就好。最后删的,怎么删?就是临时文件里剩的是需要删除的,所以最后才有一步删除临时文件remove()。

下面这个是今天的倒数第二个了!!

功能就是:按照ID从文件中查询演出计划数据,并将其保存到buf所指的内存单元中。

int Schedule_Perst_SelectByID(int ID, schedule_t *buf){

FILE *fp;

int found=0;

schedule_t data;

fp=fopen("SCHEDULE_DATA_FILE","rb");

if (fp==NULL)

{

printf("Open fail!\n");

return 0;

}

while (!feof(fp))

{

if ( fread(data,sizeof(schedule_t),1,fp)&& data.id==ID )

{

buf=data;

found=1;

}

}

fclose(fp);

return found;

}

主要还是用了一个fread,结构体数据赋值。感觉现在是明白了好多,最后一个函数了

功能是:从文件中获取所有的演出计划数据组织成头指针为list的链表。

int Schedule_Perst_SelectAll(schedule_list_t list){

FILE *fp;

int l=0;

schedule_list_t temp;

fp=fopen("SCHEDULE_DATA_FILE","rb")

if (fp==NULL)

{

printf("Open fail!\n");

return 0;

}

while ( !feof(fp) )

{

if ( fread(fp,sizeof(schedule_list_t),1,temp) && temp->data.id==play_id )

{

List_init(list,schedule_list_t);

List_AddTail(list,temp);

l++;

}

}

fclose(fp);

return l;

}

好吧,我承认最后这一个函数是勉强写完了,其实问题有两个:

1俩个结构体的使用有些搞混了,2 就是把新的数据读到新的链表list里还是有些混啊

O_O我要不要今天就这样呢

今天的收获还是不错,更加体会fread和fwrite的使用意义,还学到了fseek这选择文件的位置函数,回头再看看

算是一个人写了一个,演出计划持久化层模块。对持久化层的编写流程是更进一步了。

好吧 今天就到这了 明天再看吧 或许睡一觉起来 会发现更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: