现在是8:04,又开始了一天的工作。
刚才在路上,和组长激烈的讨论了关于工作的问题,其实,讨论一下,还是不错的,倒是感受到更多的东西。现在还是觉得,自己做好自己应该做的,少说话多做事吧。
昨天是演出计划持久化层,还有点问题,等会看能否解决。然后,今天就写个业务逻辑层,看看手头的模版。 既然这样,本来演出计划业务逻辑也是我写的,那好吧,还合适着。
所以,今天的计划是:解决昨晚遗留的持久化层问题;完成演出计划业务逻辑。
好吧,修改了几个小问题,然后又分析了下写的流程功能,那演出计划持久化层也就结束了:
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;
}
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(temp,sizeof(schedule_list_t),1,fp) && temp->data.id==temp->data.play_id )
{
List_init(list,schedule_list_t);
List_AddTail(list,temp);
l++;
}
}
fclose(fp);
return l;
}
修改了一下以上两个函数的几处,也不是大问题。
好的,开始,演出计划业务逻辑层。
现在是8:35。
inline int Schedule_Srv_Add(const schedule_t *data) {
int rtn;
rtn=Schedule_Perst_Insert(data);
if ( Ticket_Srv_AddBatch(data) )
return rtn;
return 2;
}
Add,不用说,就是添加模块,这个感觉业务逻辑层有的是简单, 有的是难啊。这个,直接调用Perst,成功返回值为1,rtn=1,如果票批量生成,返回rtn。但。。。。如果添加失败呢,rtn多少,是无返回值呢,还是一个随即的数。。。。。。。。。。。。。。。。。。。。懂了,那个,失败的返回值就是0。还是要上下结合层的思考。傻了。
inline int Schedule_Srv_Modify(const schedule_t *data) {
int rtn;
rtn=Schedule_Perst_Update(data);
if ( Ticket_Srv_DeleteBatch() && Tickes_Srv_Addbatch(data) )
return rtn;
return 0;
}
inline int Schedule_Srv_DeleteByID(int ID) {
int rtn;
rtn=Schedule_Perst_DeleteByID(ID);
if ( Ticket_Srv_DeleteBatch() )
return rtn;
return 0;
}
以上是两个函数,第一个是,修改新数据为data的演出计划服务,第二个是,删除主键id的演出计划服务,现在问题是,
Ticket_Srv_DeleteBatch(),Tickes_Srv_Addbatch(data) 是有返回值的是吧,那就是这样调用的吧?主要现在订票模块没有,现在也写了好几天,我觉得应该就是那样。
inline int Schedule_Srv_FetchByID(int ID, schedule_t *buf) {
return Schedule_Perst_SelectByID(ID,buf);
}
查询主键为ID的演出计划信息,并降其保存在buf所的内存单元中,后面这三个也容易了,就是需要调用持久化层的函数,只需返回值就对。
inline int Schedule_Srv_FetchAll(schedule_list_t list) {
return Schedule_Perst_SelectAll(list);
}
获取所有演出计划服务。
inline int Schedule_Srv_FetchByPlay(schedule_list_t list,int play_id) {
return Schedule_Perst_SelectByPlay(list,play_id);
查询主键为ID的演出计划信息,并将这些信息组织成头指针为list的链表。
其实,最后又莫名出现了一个
//根据演出ID,统计上座率及票房,返回票房数收入
int Schedule_Srv_StatRevByPlay(int play_id, int *soldCount, int *totalCount) {
// 请补充完整
return 1;
}
好吧 已有的模块里没有这个,估计是老师后来自己加的。
现在是10:11,和班长讨论着fread和fwrite,感觉真的一个人一个思路啊,我还是在查查看。
现在不能就这样结束,继续找任务了。
程序真是在不断的更改啊- -!地址符忘记。
现在是11:02,距放学还有俩小时:
inline int Play_Srv_Add(const play_t *data) {
return Play_Perst_Insert(data);
}
inline int Play_Srv_Modify(const play_t *data) {
return Play_Perst_Update(data);
}
inline int Play_Srv_DeleteByID(int ID) {
return Play_Perst_DeteleByID(ID);
}
inline int Play_Srv_FetchByID(int ID, play_t *buf) {
return Play_Perst_SelectByID(ID,buf);
}
inline int Play_Srv_FetchAll(play_list_t list) {
return Play_Perst_SelectAll(list);
}
以上是剧目管理业务逻辑,这一块还是相对简单的,所以,我现在想尝试下界面层,这几天还没有好好写过界面层,每个层都写写,这样就都体验。
Go go go。。。
是我的这个这个,管理剧目界面太难了吗?好些问题呢。。。。。。。
现在是12:04,为了缓解情绪,我还是我的主工作,业务逻辑里的主键文件好好看下。发现老师又是给写好了,到时直接用的。
然后,现在分析下,我们业务逻辑层还有哪些:
Account.c
SalesAnalysis.c
Seat.c
Ticket.c
现在就还剩下这4个任务。
俗话说人比人,气死人,所以,还是不要看别人怎么怎么,做的快,因为我是我,所以,继续工作吧,一早也没停下来
现在是20:25,从中午下机到现在,生活事情太多,课设也没有写,而且,就因为今天早上在机房转的看了下。其一,有人说,我们的任务就是复制代码。一开始听他那么一说,我嘴上也没说什么,心里想,是复制吗?也需要脑子的好吧?你做的好NB的样子。其二,我今天就早上后半段写那个剧目界面,一写才发现还有更多的问题,现在看看流程图,问题有:链表初始化,用for循环显示链表中剧目信息,函数如何调用。
组长催促着要,所以,我交我的,然后再继续自己写。
现在是22:54,不多说废话了,直接一个任务,演出计划界面层。
int Schedule_UI_Add(int play_id) {
schedule_t *new;
while (1)
{
printf("Input the new play infomation : \n");
scanf("%d%d%d%d%d%d",&new->id,&new->play_id,&new->studio_id,&new->date_tdate,&new->mytime_ttime,&new->seat_count);
EntKey_Srv_CompNewKey();
if ( Schedule_Srv_Add(new) )
{
printf("Add succeed!\n");
n++;
}
else
printf("Add faid!\n");
printf("Do you want to continue : \n ");
scanf("%c",&choice);
if ( strcmp(choice,'a')!=0 || strcmp(choice,'A')!=0 )
{
return n;
break;
}
}
}
三个问题,1 添加信息应该是链表插入2 主键函数调用那里 3 按流程执行完 最后判断后又再一次执行函数功能 必须在函数里。
哎,组长又让扫地。
看来今晚能完成一个函数都是好的了。
现在是23:46。
是解决问题,还是继续把流程框架写出来。
然而,一写一看界面层,才发现,这也关系到很多呀!我现在都哭了(┬_┬),关系到前两个层的返回值,或者说它到底是把什么传递过去的。打开三个终端看了半天,也进展不大,和业务逻辑与持久化不太一样,还是需要下个功夫学。以下是刚才写的四不像:
int Schedule_UI_Modify(int id){
schedule_t *temp;
if ( Schedule_Srv_FetchByID(id,temp) )
好吧,今天就到这里吧。
今天算是比较平静吧,回头看看今天的日志,明天开始,任务很明确,界面层。