老師布置的一個項目,我打算用單鏈表去實現它,有相似的同學在這里可以提供一個思路,技術不精,還望海涵。
項目名稱:影視作品收錄系統(tǒng)
要求:
1.設計一個結構體用來表示作品信息,有影視作品名稱,導演,編輯,主演,類型,制片國家/地區(qū),語言,上映日期,片長,簡介,評價星級等信息。
2.制作菜單可供用戶選擇使用,分為管理員賬戶與普通賬戶。
管理員賬戶可以添加作品、下架作品,修改作品,按名稱查詢,按類型查詢以及顯示所有作品;普通賬戶只能按名稱查詢,按類型查詢和顯示所有作品信息。
3.管理員賬戶可以根據影視作品的名稱、類型修改作品信息。
4.初始默認狀態(tài)有10部作品。
typedef struct movie //一部電影的信息
{char *Name; //名稱
char *Director; //導演
char *Edit; //編輯
char *Actor; //主演
char *Type; //類型
char *Prodct; //制品國家/區(qū)域
char *Language; //語言
char *Release; //上映
char *Length; //片長
char *Introduction; //簡介
float Star; //評價星級
struct movie *Next; //指向下一部電影存放的位置
}FILM;
2.給節(jié)點開辟空間FILM *Space(FILM *p)
{p = (FILM *)malloc(sizeof(FILM));
p->Name=(char *)malloc(50); //電影名稱
p->Director=(char *)malloc(50); //電影導演
p->Edit=(char *)malloc(100); //電影編劇
p->Actor=(char *)malloc(100); //電影主演
p->Type=(char *)malloc(100); //電影類型
p->Prodct=(char *)malloc(20); //制作國家/地區(qū)
p->Language=(char *)malloc(30); //語言
p->Release=(char *)malloc(100); //上映時間
p->Length=(char *)malloc(60); //電影時長
p->Introduction=(char *)malloc(2000); //電影簡介
p->Next=NULL;
return p;
}
3.初始化鏈表用txt文檔的內容作初始化
int check(const char *f)//檢查存放作品的文檔在不在 參數是argv[1].
{FILE *f1;
f1=fopen(f,"r+");//文檔必須存在
if(f1==NULL)
return 0;
else
return 1;
}
FILM *Init(const char *p,int a)//參數:argv[1]和check函數返回值
{if(a==0)
{printf("影視信息庫不存在!\n");
return NULL;
}
else
{char *aName=(char *)malloc(50);
char *aDirector=(char *)malloc(50);
char *aEdit=(char *)malloc(100);
char *aActor=(char *)malloc(100);
char *aType=(char *)malloc(100);
char *aProdct=(char *)malloc(10);
char *aLanguage=(char *)malloc(100);
char *aRelease=(char *)malloc(100);
char *aLength=(char *)malloc(100);
char *aIntroduction=(char *)malloc(2000);
float aStar;
FILE *f1;
FILM *head;
FILM *tail;
FILM *new;
head=Space(head);
tail=head;
f1=fopen(p,"r");
if(f1==NULL)
{ printf("影視信息庫打開失敗\n");
return NULL;
}
else
{ while(fscanf(f1,"%s%s%s%s%s%s%s%s%s%s%f\n",
aName,aDirector,aEdit,aActor,aType,aProdct,aLanguage,
aRelease,aLength,aIntroduction,&aStar)!=EOF)
{ new=Space(new);
strcpy(new->Name,aName);
strcpy(new->Director,aDirector);
strcpy(new->Edit,aEdit);
strcpy(new->Actor,aActor);
strcpy(new->Type,aType);
strcpy(new->Prodct,aProdct);
strcpy(new->Language,aLanguage);
strcpy(new->Release,aRelease);
strcpy(new->Length,aLength);
strcpy(new->Introduction,aIntroduction);
new->Star=aStar;
tail->Next=new;
tail=new;
}
}
fclose(f1);
return head;
}
}
4.按名字查找作品FILM *Nsearch(FILM *p,char *n)//參數:鏈表首元節(jié)點(也就是第一個空的那個)
{ //還有就是要查找的作品名稱
FILM *m2=p->Next;
while(m2!=NULL&&strcmp(m2->Name,n))
m2=m2->Next;
if (m2==NULL)
{printf("Sorry,信息庫并沒有這部電影\n");
return NULL;
}
else
return m2;
}
5.按類型查找作品FILM *Tsearch(FILM *p,char *t)//參數:鏈表首元節(jié)點和要查找的作品類型
{FILM *m2=p->Next;
FILM *head;
FILM *tail;
FILM *new;
head=Space(head);
tail=head;
while(m2!=NULL)
{if(strstr(m2->Type,t)==NULL)
m2=m2->Next;
else
{ new=Space(new);
strcpy(new->Name,m2->Name);
strcpy(new->Director,m2->Director);
strcpy(new->Edit,m2->Edit);
strcpy(new->Actor,m2->Actor);
strcpy(new->Type,m2->Type);
strcpy(new->Prodct,m2->Prodct);
strcpy(new->Language,m2->Language);
strcpy(new->Release,m2->Release);
strcpy(new->Length,m2->Length);
strcpy(new->Introduction,m2->Introduction);
new->Star=m2->Star;
tail->Next=new;
tail=new;
m2=m2->Next;
}
}
if(head==NULL)
{printf("信息庫并沒有這個類型的電影\n");
return head;
}
else
return head;
}
6.添加作品FILM *Addflim(FILM *p)//參數是鏈表首元節(jié)點
{int n; //添加電影數量
int flag=1;
FILM *tial=p->Next;
FILM *new; //新添加的電影
printf("需要添加幾部電影:");
scanf("%d",&n);
while(tial->Next!=NULL)
tial=tial->Next;
for (int i = 0; i< n; ++i)
{new=Space(new);
printf("請輸入新電影的名字: \n");
scanf("%s",new->Name);
printf("請輸入新電影的導演: \n");
scanf("%s",new->Director);
printf("請輸入新電影的編輯: \n");
scanf("%s",new->Edit);
printf("請輸入新電影的主演: \n");
scanf("%s",new->Actor);
printf("請輸入新電影的類型: \n");
scanf("%s",new->Type);
printf("請輸入新電影的制作國家/地區(qū): \n");
scanf("%s",new->Prodct);
printf("請輸入新電影的語言: \n");
scanf("%s",new->Language);
printf("請輸入新電影的上映時間: \n");
scanf("%s",new->Release);
printf("請輸入新電影的時長: \n");
scanf("%s",new->Length);
printf("請輸入新電影的簡介: \n");
scanf("%s",new->Introduction);
printf("請輸入新電影的評價星級: \n");
scanf("%f",&new->Star);
tial->Next=new;
tial=new;
}
return p;
}
7.修改作品FILM *Modify(FILM *p)//參數鏈表首元節(jié)點
{int flag=1;
int n;
char *n1=(char *)malloc(50);
char *t1=(char *)malloc(50);
FILM *m1=p;
FILM *m2;
FILM *m3;
FILM *m4;
while(flag)
{printf("1-按名字查找并修改 2-按類型查找并修改 3-退出修改\n");
scanf("%d",&n);
switch(n)
{ case 1:
printf("請輸入要修改的電影名稱: ");
scanf("%s",n1);
m2=Nsearch(m1,n1);
//Display1(m2);break;//測試
if(m2==NULL)
break;
else
{printf("修改電影名稱: \n");
scanf("%s",m2->Name);
printf("修改電影的導演: \n");
scanf("%s",m2->Director);
printf("修改電影的編輯: \n");
scanf("%s",m2->Edit);
printf("修改電影的主演: \n");
scanf("%s",m2->Actor);
printf("修改電影的類型: \n");
scanf("%s",m2->Type);
printf("修改電影的制作國家/地區(qū): \n");
scanf("%s",m2->Prodct);
printf("修改電影的語言: \n");
scanf("%s",m2->Language);
printf("修改電影的上映時間: \n");
scanf("%s",m2->Release);
printf("修改電影的時長: \n");
scanf("%s",m2->Length);
printf("修改電影的簡介: \n");
scanf("%s",m2->Introduction);
printf("修改電影的評價星級: \n");
scanf("%f",&m2->Star);
break;
}
case 2:
printf("請輸入要修改的電影類型: ");
scanf("%s",t1);
m2=Tsearch(m1,t1);
if(m2==NULL)
break;
else
{printf("符合該類型的電影如下:\n");
Displayall(m2);
m2=m2->Next;
while(m2!=NULL)
{m3=Nsearch(m1,m2->Name);
printf("請修改%s\n", m2->Name);
printf("\n");
printf("修改電影名稱: \n");
scanf("%s",m3->Name);
printf("修改電影的導演: \n");
scanf("%s",m3->Director);
printf("修改電影的編輯: \n");
scanf("%s",m3->Edit);
printf("修改電影的主演: \n");
scanf("%s",m3->Actor);
printf("修改電影的類型: \n");
scanf("%s",m3->Type);
printf("修改電影的制作國家/地區(qū): \n");
scanf("%s",m3->Prodct);
printf("修改電影的語言: \n");
scanf("%s",m3->Language);
printf("修改電影的上映時間: \n");
scanf("%s",m3->Release);
printf("修改電影的時長: \n");
scanf("%s",m3->Length);
printf("修改電影的簡介: \n");
scanf("%s",m3->Introduction);
printf("修改電影的評價星級: \n");
scanf("%f",&m3->Star);
m2=m2->Next;
}
}break;
case 3:flag=0;break;
default:printf("輸入錯誤,請重新選擇\n");getchar();break;
}
}
return p;
}
8.下架作品FILM *Delete(FILM *p)//參數:鏈表首元節(jié)點
{char *n1=(char *)malloc(50);
FILM *m1=p;
FILM *m2;
printf("請輸入要刪除的電影名稱: ");
scanf("%s",n1);
while(m1->Next!=NULL)
{if(strcmp(m1->Next->Name,n1))
m1=m1->Next;
else
{ m1->Next=m1->Next->Next;
return p;
}
}
printf("信息庫沒有這部電影,無法刪除\n");
return NULL;
}
9.顯示所有作品void Displayall(FILM *p)//參數:鏈表首元節(jié)點
{FILM *m1=p->Next;
while(m1!=NULL)
{printf("\n電影名稱:%s\n", m1->Name);
printf("電影導演:%s\n", m1->Director);
printf("電影編劇:%s\n", m1->Edit);
printf("電影主演:%s\n", m1->Actor);
printf("電影類型:%s\n", m1->Type);
printf("制作國家/地區(qū):%s\n", m1->Prodct);
printf("語言:%s\n", m1->Language);
printf("上映時間:%s\n", m1->Release);
printf("電影時長:%s\n", m1->Length);
printf("電影簡介:%s\n", m1->Introduction);
printf("評價星級:%.1f\n", m1->Star);
printf("\n");
m1=m1->Next;
}
}
10.只顯示一部作品void Display1(FILM *p)//參數:按名稱找到的節(jié)點位置
{FILM *m1=p;
printf("\n電影名稱:%s\n", m1->Name);
printf("電影導演:%s\n", m1->Director);
printf("電影編劇:%s\n", m1->Edit);
printf("電影主演:%s\n", m1->Actor);
printf("電影類型:%s\n", m1->Type);
printf("制作國家/地區(qū):%s\n", m1->Prodct);
printf("語言:%s\n", m1->Language);
printf("上映時間:%s\n", m1->Release);
printf("電影時長:%s\n", m1->Length);
printf("電影簡介:%s\n", m1->Introduction);
printf("評價星級:%.1f\n", m1->Star);
printf("\n");
}
11.普通賬戶菜單void Ordinary(FILM *p)
{int n;
int flag=1;
char *n1;
char *t1;
FILM *m1; //找按名稱的電影
FILM *m2=p; //傳參
FILM *m3; //找按類型的電影
n1=(char *)malloc(50);
t1=(char *)malloc(50);
while(flag)
{printf("1-查詢所有電影信息 2-按名稱查詢電影信息 3-按類型查詢電影信息 4-退出用戶模式\n");
scanf("%d",&n);
switch(n)
{ case 1:Displayall(p);break;
case 2:
printf("請輸入想看的電影名稱: ");
scanf("%s",n1);
m1=Nsearch(m2,n1);
if(m1==NULL)
break;
else
{Display1(m1);
break;
}
case 3:
printf("請輸入想看的電影類型: ");
scanf("%s",t1);
m3=Tsearch(m2,t1);
if(m3==NULL)
break;
else
{Displayall(m3);
break;
}
case 4:flag=0;break;
default:printf("輸入錯誤,請重新輸入\n");getchar();break;
}
}
}
12.管理員賬戶菜單void Admini(FILM *p)
{char *password="123456";
char *n1=(char *)malloc(50);
char *t1=(char *)malloc(50);
char *mima=(char *)malloc(10);
int flag=1; //退出管理員模式標志
int n; //管理員功能選擇
FILM *m1; //按名稱查找電影
FILM *m2=p; //函數傳參
FILM *m3; //按類型查找電影
FILM *m4=p; //改變電影庫前
FILM *m5; //改變電影庫后
printf("請輸入管理員密碼: ");
scanf("%s",mima);
while(strcmp(mima,password))
{printf("密碼錯誤,請重新輸入: ");
scanf("%s",mima);
}
while(flag)
{if (!strcmp(mima,password))
{ printf("<----------------------1-添加電影 2-修改電影 3-下架電影---------------------->\n");
printf("4-查詢所有電影信息 5-按名稱查找電影信息 6-按類型查找電影信息 7-退出管理員模式\n");
scanf("%d",&n);
switch(n)
{ case 1:
m5=Addflim(m4);
printf("增加后的電影列表如下\n");
Displayall(m5);
break;
case 2:
m5=Modify(m4);
printf("修改后的電影列表如下\n");
Displayall(m5);
break;
case 3:
m5=Delete(m4);
if(m5==NULL)
break;
else
{printf("下架后的電影列表如下\n");
Displayall(m5);
break;
}
case 4:Displayall(p);break;
case 5:
printf("請輸入查找的電影名稱: ");
scanf("%s",n1);
m1=Nsearch(m2,n1);
if(m1==NULL)
break;
else
{Display1(m1);
break;
}
case 6:
printf("請輸入查找的電影類型: ");
scanf("%s",t1);
m3=Tsearch(m2,t1);
if(m3==NULL)
break;
else
{Displayall(m3);
break;
}
case 7:flag=0;break;
default:printf("輸入錯誤,請重新選擇\n");getchar();break;
}
}
}
}
先用文件操作對單鏈表初始化,單鏈表儲存數據,每次傳參時都傳遞鏈表的首元節(jié)點,便于理解和操作。
缺陷:退出系統(tǒng)后全部恢復默認狀態(tài),無法更新數據庫。(c語言fprintf函數不支持中文等多字節(jié)數據,漢字的文本操作還不會)
由于是初學者,一些地方可能寫的不好,希望大家多多包涵,也祝愿大家共同進步。
#include#include#includetypedef struct movie //一部電影的信息
{char *Name; //名稱
char *Director; //導演
char *Edit; //編輯
char *Actor; //主演
char *Type; //類型
char *Prodct; //制品國家/區(qū)域
char *Language; //語言
char *Release; //上映
char *Length; //片長
char *Introduction; //簡介
float Star; //評價星級
struct movie *Next; //指向下一部電影存放的位置
}FILM;
FILM *Init(const char *p,int a); //使用文件操作對進行鏈表初始化
FILM *Space(FILM *p); //為鏈表的節(jié)點申請空間
int check(const char *f); //檢查庫文件
void Displayall(FILM *p); //顯示所有電影
void Display1(FILM *p); //顯示一部電影
void Ordinary(FILM *p); //普通用戶使用
void Admini(FILM *p); //管理員使用
FILM *Nsearch(FILM *p,char *n); //按名字查找電影
FILM *Tsearch(FILM *p,char *t); //按類型查找電影
FILM *Addflim(FILM *p); //添加電影
FILM *Modify(FILM *p); //修改電影
FILM *Delete(FILM *p); //刪除電影
int main(int argc, char const *argv[])
{int n; //選擇:普通用戶/管理員
int flag=1; //結束收錄系統(tǒng)標志
FILM *m1; //指向鏈表頭的指針
m1 = Init(argv[1],check(argv[1])); //給鏈表初始化
while(flag)
{printf("1-普通用戶 2-管理員 3-退出\n");
scanf("%d",&n);
switch(n)
{ case 1:Ordinary(m1);break;
case 2:Admini(m1);break;
case 3:printf("感謝你的使用,歡迎下次再來\n");flag=0;break;
default:printf("您的輸入存在錯誤,請重新輸入\n");break;
}
}
return 0;
}
int check(const char *f)
{FILE *f1;
f1=fopen(f,"r+"); //庫文件必須存在
if(f1==NULL)
return 0;
else
return 1;
}
FILM *Init(const char *p,int a)
{if(a==0)
{printf("影視信息庫不存在!\n");
return NULL;
}
else
{char *aName=(char *)malloc(50);
char *aDirector=(char *)malloc(50);
char *aEdit=(char *)malloc(100);
char *aActor=(char *)malloc(100);
char *aType=(char *)malloc(100);
char *aProdct=(char *)malloc(10);
char *aLanguage=(char *)malloc(100);
char *aRelease=(char *)malloc(100);
char *aLength=(char *)malloc(100);
char *aIntroduction=(char *)malloc(2000);
float aStar;
FILE *f1;
FILM *head;
FILM *tail;
FILM *new;
head=Space(head);
tail=head;
f1=fopen(p,"r");
if(f1==NULL)
{ printf("影視信息庫打開失敗\n");
return NULL;
}
else
{ while(fscanf(f1,"%s%s%s%s%s%s%s%s%s%s%f\n",
aName,aDirector,aEdit,aActor,aType,aProdct,aLanguage,
aRelease,aLength,aIntroduction,&aStar)!=EOF)
{ new=Space(new);
strcpy(new->Name,aName);
strcpy(new->Director,aDirector);
strcpy(new->Edit,aEdit);
strcpy(new->Actor,aActor);
strcpy(new->Type,aType);
strcpy(new->Prodct,aProdct);
strcpy(new->Language,aLanguage);
strcpy(new->Release,aRelease);
strcpy(new->Length,aLength);
strcpy(new->Introduction,aIntroduction);
new->Star=aStar;
tail->Next=new;
tail=new;
}
}
fclose(f1);
return head;
}
}
FILM *Space(FILM *p)
{p = (FILM *)malloc(sizeof(FILM));
p->Name=(char *)malloc(50); //電影名稱
p->Director=(char *)malloc(50); //電影導演
p->Edit=(char *)malloc(100); //電影編劇
p->Actor=(char *)malloc(100); //電影主演
p->Type=(char *)malloc(100); //電影類型
p->Prodct=(char *)malloc(20); //制作國家/地區(qū)
p->Language=(char *)malloc(30); //語言
p->Release=(char *)malloc(100); //上映時間
p->Length=(char *)malloc(60); //電影時長
p->Introduction=(char *)malloc(2000); //電影簡介
p->Next=NULL;
return p;
}
void Displayall(FILM *p)
{FILM *m1=p->Next;
while(m1!=NULL)
{printf("\n電影名稱:%s\n", m1->Name);
printf("電影導演:%s\n", m1->Director);
printf("電影編劇:%s\n", m1->Edit);
printf("電影主演:%s\n", m1->Actor);
printf("電影類型:%s\n", m1->Type);
printf("制作國家/地區(qū):%s\n", m1->Prodct);
printf("語言:%s\n", m1->Language);
printf("上映時間:%s\n", m1->Release);
printf("電影時長:%s\n", m1->Length);
printf("電影簡介:%s\n", m1->Introduction);
printf("評價星級:%.1f\n", m1->Star);
printf("\n");
m1=m1->Next;
}
}
void Display1(FILM *p)
{FILM *m1=p;
printf("\n電影名稱:%s\n", m1->Name);
printf("電影導演:%s\n", m1->Director);
printf("電影編劇:%s\n", m1->Edit);
printf("電影主演:%s\n", m1->Actor);
printf("電影類型:%s\n", m1->Type);
printf("制作國家/地區(qū):%s\n", m1->Prodct);
printf("語言:%s\n", m1->Language);
printf("上映時間:%s\n", m1->Release);
printf("電影時長:%s\n", m1->Length);
printf("電影簡介:%s\n", m1->Introduction);
printf("評價星級:%.1f\n", m1->Star);
printf("\n");
}
void Ordinary(FILM *p)
{int n;
int flag=1;
char *n1;
char *t1;
FILM *m1; //找按名稱的電影
FILM *m2=p; //傳參
FILM *m3; //找按類型的電影
n1=(char *)malloc(50);
t1=(char *)malloc(50);
while(flag)
{printf("1-查詢所有電影信息 2-按名稱查詢電影信息 3-按類型查詢電影信息 4-退出用戶模式\n");
scanf("%d",&n);
switch(n)
{ case 1:Displayall(p);break;
case 2:
printf("請輸入想看的電影名稱: ");
scanf("%s",n1);
m1=Nsearch(m2,n1);
if(m1==NULL)
break;
else
{Display1(m1);
break;
}
case 3:
printf("請輸入想看的電影類型: ");
scanf("%s",t1);
m3=Tsearch(m2,t1);
if(m3==NULL)
break;
else
{Displayall(m3);
break;
}
case 4:flag=0;break;
default:printf("輸入錯誤,請重新輸入\n");getchar();break;
}
}
}
void Admini(FILM *p)
{char *password="123456";
char *n1=(char *)malloc(50);
char *t1=(char *)malloc(50);
char *mima=(char *)malloc(10);
int flag=1; //退出管理員模式標志
int n; //管理員功能選擇
FILM *m1; //按名稱查找電影
FILM *m2=p; //函數傳參
FILM *m3; //按類型查找電影
FILM *m4=p; //改變電影庫前
FILM *m5; //改變電影庫后
printf("請輸入管理員密碼: ");
scanf("%s",mima);
while(strcmp(mima,password))
{printf("密碼錯誤,請重新輸入: ");
scanf("%s",mima);
}
while(flag)
{if (!strcmp(mima,password))
{ printf("<----------------------1-添加電影 2-修改電影 3-下架電影---------------------->\n");
printf("4-查詢所有電影信息 5-按名稱查找電影信息 6-按類型查找電影信息 7-退出管理員模式\n");
scanf("%d",&n);
switch(n)
{ case 1:
m5=Addflim(m4);
printf("增加后的電影列表如下\n");
Displayall(m5);
break;
case 2:
m5=Modify(m4);
printf("修改后的電影列表如下\n");
Displayall(m5);
break;
case 3:
m5=Delete(m4);
if(m5==NULL)
break;
else
{printf("下架后的電影列表如下\n");
Displayall(m5);
break;
}
case 4:Displayall(p);break;
case 5:
printf("請輸入查找的電影名稱: ");
scanf("%s",n1);
m1=Nsearch(m2,n1);
if(m1==NULL)
break;
else
{Display1(m1);
break;
}
case 6:
printf("請輸入想看的電影類型: ");
scanf("%s",t1);
m3=Tsearch(m2,t1);
if(m3==NULL)
break;
else
{Displayall(m3);
break;
}
case 7:flag=0;break;
default:printf("輸入錯誤,請重新選擇\n");getchar();break;
}
}
}
}
FILM *Nsearch(FILM *p,char *n)
{ FILM *m2=p->Next;
while(m2!=NULL&&strcmp(m2->Name,n))
m2=m2->Next;
if (m2==NULL)
{printf("Sorry,信息庫并沒有這部電影\n");
return NULL;
}
else
return m2;
}
FILM *Tsearch(FILM *p,char *t)
{int flag=1;
FILM *m2=p->Next;
FILM *head;
FILM *tail;
FILM *new;
head=Space(head);
tail=head;
while(m2!=NULL)
{if(strstr(m2->Type,t)==NULL)
m2=m2->Next;
else
{ new=Space(new);
strcpy(new->Name,m2->Name);
strcpy(new->Director,m2->Director);
strcpy(new->Edit,m2->Edit);
strcpy(new->Actor,m2->Actor);
strcpy(new->Type,m2->Type);
strcpy(new->Prodct,m2->Prodct);
strcpy(new->Language,m2->Language);
strcpy(new->Release,m2->Release);
strcpy(new->Length,m2->Length);
strcpy(new->Introduction,m2->Introduction);
new->Star=m2->Star;
tail->Next=new;
tail=new;
m2=m2->Next;
}
}
if(head==NULL)
{printf("信息庫并沒有這個類型的電影\n");
return head;
}
else
return head;
}
FILM *Addflim(FILM *p)
{int n; //添加電影數量
int flag=1;
FILM *tial=p->Next;
FILM *new; //新添加的電影
printf("需要添加幾部電影:");
scanf("%d",&n);
while(tial->Next!=NULL)
tial=tial->Next;
for (int i = 0; i< n; ++i)
{new=Space(new);
printf("請輸入新電影的名字: \n");
scanf("%s",new->Name);
printf("請輸入新電影的導演: \n");
scanf("%s",new->Director);
printf("請輸入新電影的編輯: \n");
scanf("%s",new->Edit);
printf("請輸入新電影的主演: \n");
scanf("%s",new->Actor);
printf("請輸入新電影的類型: \n");
scanf("%s",new->Type);
printf("請輸入新電影的制作國家/地區(qū): \n");
scanf("%s",new->Prodct);
printf("請輸入新電影的語言: \n");
scanf("%s",new->Language);
printf("請輸入新電影的上映時間: \n");
scanf("%s",new->Release);
printf("請輸入新電影的時長: \n");
scanf("%s",new->Length);
printf("請輸入新電影的簡介: \n");
scanf("%s",new->Introduction);
printf("請輸入新電影的評價星級: \n");
scanf("%f",&new->Star);
tial->Next=new;
tial=new;
}
return p;
}
FILM *Modify(FILM *p)
{int flag=1;
int n;
char *n1=(char *)malloc(50);
char *t1=(char *)malloc(50);
FILM *m1=p;
FILM *m2;
FILM *m3;
FILM *m4;
while(flag)
{printf("1-按名字查找并修改 2-按類型查找并修改 3-退出修改\n");
scanf("%d",&n);
switch(n)
{ case 1:
printf("請輸入要修改的電影名稱: ");
scanf("%s",n1);
m2=Nsearch(m1,n1);
//Display1(m2);break;//測試
if(m2==NULL)
break;
else
{printf("修改電影名稱: \n");
scanf("%s",m2->Name);
printf("修改電影的導演: \n");
scanf("%s",m2->Director);
printf("修改電影的編輯: \n");
scanf("%s",m2->Edit);
printf("修改電影的主演: \n");
scanf("%s",m2->Actor);
printf("修改電影的類型: \n");
scanf("%s",m2->Type);
printf("修改電影的制作國家/地區(qū): \n");
scanf("%s",m2->Prodct);
printf("修改電影的語言: \n");
scanf("%s",m2->Language);
printf("修改電影的上映時間: \n");
scanf("%s",m2->Release);
printf("修改電影的時長: \n");
scanf("%s",m2->Length);
printf("修改電影的簡介: \n");
scanf("%s",m2->Introduction);
printf("修改電影的評價星級: \n");
scanf("%f",&m2->Star);
break;
}
case 2:
printf("請輸入要修改的電影類型: ");
scanf("%s",t1);
m2=Tsearch(m1,t1);
if(m2==NULL)
break;
else
{printf("符合該類型的電影如下:\n");
Displayall(m2);
m2=m2->Next;
while(m2!=NULL)
{m3=Nsearch(m1,m2->Name);
printf("請修改%s\n", m2->Name);
printf("\n");
printf("修改電影名稱: \n");
scanf("%s",m3->Name);
printf("修改電影的導演: \n");
scanf("%s",m3->Director);
printf("修改電影的編輯: \n");
scanf("%s",m3->Edit);
printf("修改電影的主演: \n");
scanf("%s",m3->Actor);
printf("修改電影的類型: \n");
scanf("%s",m3->Type);
printf("修改電影的制作國家/地區(qū): \n");
scanf("%s",m3->Prodct);
printf("修改電影的語言: \n");
scanf("%s",m3->Language);
printf("修改電影的上映時間: \n");
scanf("%s",m3->Release);
printf("修改電影的時長: \n");
scanf("%s",m3->Length);
printf("修改電影的簡介: \n");
scanf("%s",m3->Introduction);
printf("修改電影的評價星級: \n");
scanf("%f",&m3->Star);
m2=m2->Next;
}
}break;
case 3:flag=0;break;
default:printf("輸入錯誤,請重新選擇\n");getchar();break;
}
}
return p;
}
FILM *Delete(FILM *p)
{char *n1=(char *)malloc(50);
FILM *m1=p;
FILM *m2;
printf("請輸入要刪除的電影名稱: ");
scanf("%s",n1);
while(m1->Next!=NULL)
{if(strcmp(m1->Next->Name,n1))
m1=m1->Next;
else
{ m1->Next=m1->Next->Next;
return p;
}
}
printf("信息庫沒有這部電影,無法刪除\n");
return NULL;
}
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
本文標題:c語言單鏈表實現一個簡單收錄系統(tǒng)-創(chuàng)新互聯
網站地址:http://jinyejixie.com/article2/dpohoc.html
成都網站建設公司_創(chuàng)新互聯,為您提供品牌網站設計、App設計、品牌網站建設、軟件開發(fā)、網站改版、企業(yè)建站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯