欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實現(xiàn)影院管理系統(tǒng)程序設計

 更新時間:2022年08月12日 10:10:59   作者:D_W?  
這篇文章主要為大家詳細介紹了C語言實現(xiàn)影院管理系統(tǒng)程序設計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)影院管理系統(tǒng)程序的具體代碼,供大家參考,具體內(nèi)容如下

**影院管理系統(tǒng)基本運行圖**

下面是實現(xiàn)全部功能的函數(shù)與解析與思路

**結構體與預定義**

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<windows.h>
typedef struct accout
{
?? ?char pass[20];
?? ?char name[20];
?? ?struct accout* next;
}mm, * MM;
typedef struct movie
{
?? ?char number[20];//電影序號?
?? ?char name[20];//電影名稱?
?? ?int price;//電影價格?
?? ?int grade;//電影評分?
?? ?int time;//電影時長?
?? ?struct movie* next;
} Linklist;

下面基本分為三大部分

一.登錄與注冊

1.注冊函數(shù)

void Register(MM head)//注冊
{
?? ?system("cls");//清屏
?? ?char username[20] = "";
?? ?char password[13] = "";
?? ?char pass[13] = "";
?? ?char q;
?? ?int i;
?? ?FILE* fp;
?? ?printf("\n\n\n");
?? ?printf("\t\t\t\t賬號:");
?? ?scanf("%s", username);
?? ?getchar();
?? ?printf("\t\t\t\t密碼:");
?? ?i = 0;
?? ?while (1)
?? ?{
?? ??? ?q = getch();
?? ??? ?if (q == '\r')
?? ??? ?{
?? ??? ??? ?password[i] = '\0';
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?else if (q == '\b')
?? ??? ?{
?? ??? ??? ?printf("\b \b");
?? ??? ??? ?password[i++] = q;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?password[i++] = q;
?? ??? ??? ?printf("*");
?? ??? ?}
?? ?}
?? ?printf("\n");
?? ?printf("\t\t\t\t請確認密碼");
?? ?i = 0;
?? ?while (1)
?? ?{
?? ??? ?q = getch();
?? ??? ?if (q != 13)
?? ??? ?{
?? ??? ??? ?printf("*");
?? ??? ??? ?pass[i++] = q;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?pass[i] = '\0';
?? ??? ??? ?printf("\n");
?? ??? ??? ?break;
?? ??? ?}
?? ?}
?? ??? ?if (strcmp(pass, password) == 0)
?? ??? ?{
?? ??? ??? ?fp = fopen("d:\\課設\\accout.txt", "ab+");
?? ??? ??? ?fprintf(fp, "%s %s", username, password);//把內(nèi)存中的文件輸入到硬盤之中
?? ??? ??? ?fclose(fp);
?? ??? ??? ?system("cls");
?? ??? ??? ?printf("\n\n\n注冊成功\n\n");
?? ??? ??? ?system("pause");
?? ??? ?}
}

2.判斷函數(shù)

MM judge(mm * head)//判斷密碼是否輸入正確?
?? ?{
?? ??? ?char name1[20] = "", pass1[20] = "";
?? ??? ?char q;
?? ??? ?MM p1;
?? ??? ?int i = 0, j = 0;
?? ??? ?system("cls");
?? ??? ?printf("\n\n\n\n");
?? ??? ?while (1)
?? ??? ?{
?? ??? ??? ?j++;
?? ??? ??? ?p1 = head->next;
?? ??? ??? ?printf("\t\t\t\t賬號");
?? ??? ??? ?scanf("%s", name1);
?? ??? ??? ?getchar();
?? ??? ??? ?printf("\t\t\t\t密碼");
?? ??? ??? ?i = 0;
?? ??? ??? ?while (1)
?? ??? ??? ?{
?? ??? ??? ??? ?j++;
?? ??? ??? ??? ?q = getch();
?? ??? ??? ??? ?if (q == '\r')
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?pass1[i] = '\0';
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else if (q == '\b')
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?printf("\b \b");
?? ??? ??? ??? ??? ?pass1[i++] = q;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?pass1[i++] = q;
?? ??? ??? ??? ??? ?printf("*");
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?while (p1 != NULL)
?? ??? ??? ?{
?? ??? ??? ??? ?if (strcmp(name1, p1->name) == 0)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?if (strcmp(pass1, p1->pass) == 0)
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?printf("\n\n\t\t登錄成功");
?? ??? ??? ??? ??? ??? ?system("pause");
?? ??? ??? ??? ??? ??? ?return head;
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?else
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?printf("登陸失敗");
?? ??? ??? ??? ??? ??? ?system("pause");
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?p1 = p1->next;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?if (p1 == NULL)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("\n\n\n\n\t\t\t\t輸入有誤");
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return head;
?? ?}

3./打開讀取文件之前注冊的賬號和密碼

放到鏈表里面操作

MM AccountLibrary(MM head)//打開讀取注冊的賬號和密碼,放到鏈表里面?
?? ?{?? ?//用戶數(shù)據(jù)庫
?? ??? ?FILE* fp1 = fopen("d:\\課設\\accout.txt", "r");
?? ??? ?while (!feof(fp1))
?? ??? ?//feof()是檢測流上的文件結束符的函數(shù),如果文件結束,則返回非0值,否則返回0
?? ??? ?{
?? ??? ??? ?MM q = (MM)malloc(sizeof(mm));
?? ??? ??? ?fscanf(fp1, "\n%s%s\n", q->name, q->pass);
?? ??? ??? ?q->next = head;
?? ??? ??? ?head = q;
?? ??? ?}
?? ??? ?fclose(fp1);
?? ??? ?return head;
?? ?}

4.用戶或者管理員進行注冊或者登錄操作

以下代碼為具體部分操作函數(shù)

int E=judge(head);//將E作為判斷judge函數(shù)返回值的標志?? ??? ??? ??? ??? ??? ??? ?
if (!E)
guanliyuan();/user()

5.登錄主函數(shù)

void login()
{
?? ?system("cls");
?? ?int bk = 0;
?? ?int bb = 0;
?? ?MM head = 0, p1 = 0;
?? ?//?? ?char a[10]={0};
?? ?head = (mm*)malloc(sizeof(mm));
?? ?head->next = NULL;
?? ?while (1)
?? ?{
?? ??? ?//?? ?char a[200];
?? ??? ?//?? ?char b[200];
?? ??? ?int a, b;
?? ??? ?printf_d();
?? ??? ?printf("請輸入 ");
?? ??? ?scanf("%d", &a);
?? ??? ?switch (a)
?? ??? ?{
?? ??? ?case 1:
?? ??? ?{//登錄?
?? ??? ??? ?printf1();
?? ??? ??? ?printf("請輸入 ");
?? ??? ??? ?scanf("%d", &b);
?? ??? ??? ?switch (b)
?? ??? ??? ?{
?? ??? ??? ?case 1: {
?? ??? ??? ??? ?AccountLibrary(head);//在文件中查找注冊過的賬號和密碼?
?? ??? ??? ??? ?int E=judge(head);?? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ?if (!E)
?? ??? ??? ??? ?guanliyuan();
?? ??? ??? ?}
?? ??? ??? ?case 2: {
?? ??? ??? ??? ?//judge(head);//用戶登錄?
?? ??? ??? ??? ?AccountLibrary(head);
?? ??? ??? ??? ?int E=judge(head);
?? ??? ??? ??? ?if(!E)
?? ??? ??? ??? ?user();
?? ??? ??? ??? ?break;
?? ??? ??? ??? ??? ?}
?? ??? ??? ?case 0: {
?? ??? ??? ??? ?printf("再見");
?? ??? ??? ??? ?exit(0);
?? ??? ??? ??? ?break;
?? ??? ??? ??? ??? ?}
?? ??? ??? ?default:printf("輸入錯誤");
?? ??? ??? ?}
?? ??? ?case 2:
?? ??? ?{//注冊?
?? ??? ??? ?Register(head);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case 0:
?? ??? ?{//退出?
?? ??? ??? ?printf("再見");
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?}
?? ??? ?}
?? ?}
}

二.管理員系統(tǒng)操作

管理員系統(tǒng)登錄之后函數(shù)

void guanliyuan()//管理員系統(tǒng)
{
?? ?Linklist* head;
?? ?head = (Linklist*)malloc(sizeof(Linklist));
?? ?head->next = NULL;//創(chuàng)建頭結點
?? ?//錄入信息
?? ?int a = 0, b = 0;
?? ?while (1)
?? ?{
?? ??? ?system("cls");
?? ??? ?fflush(stdin);
?? ??? ?printf2();
?? ??? ?printf("請輸入指令");
?? ??? ?scanf("%d", &a);
?? ??? ?fflush(stdin);
?? ??? ?switch (a)
?? ??? ?{
?? ??? ?case 1://錄入信息?
?? ??? ?{
?? ??? ??? ?head = Input();
?? ??? ??? ?Foutput(head);
?? ??? ??? ?system("cls");
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case 2://修改?
?? ??? ?{
?? ??? ??? ?head = read();
?? ??? ??? ?change(head);
?? ??? ??? ?Foutput(head);
?? ??? ??? ?system("cls");
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case 3://刪除?
?? ??? ?{
?? ??? ??? ?head = read();
?? ??? ??? ?delete_1(head);
?? ??? ??? ?Foutput(head);
?? ??? ??? ?system("cls");
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case 4://排序?
?? ??? ?{
?? ??? ??? ?head = read();
?? ??? ??? ?sort(head);
?? ??? ??? ?output(head);
?? ??? ??? ?//Foutput(head);
?? ??? ??? ?system("cls");
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case 5://添加?
?? ??? ?{
?? ??? ??? ?head = read();
?? ??? ??? ?insert(head);
?? ??? ??? ?Foutput(head);
?? ??? ??? ?system("cls");
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case 6://查找?
?? ??? ?{
?? ??? ??? ?head = read();
?? ??? ??? ?fflush(stdin);
?? ??? ??? ?search(head);
?? ??? ??? ?system("cls");
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?case 7://預覽
?? ??? ??? ?preview();
?? ??? ??? ?break;
?? ??? ?/*case 8://修改密碼//砍掉的功能
?? ??? ?{
?? ??? ??? ?MM head;
?? ??? ??? ?head = NULL;
?? ??? ??? ?printf("\t\t\t歡迎修改密碼\n");
?? ??? ??? ?//head=duqu_cipher(head);
?? ??? ??? ?head = AccountLibrary(head);
?? ??? ??? ?change_cipher(head);
?? ??? ??? ?luru_cipher(head);
?? ??? ??? ?break;
?? ??? ?}*/
?? ??? ?case 0://退出系統(tǒng)?
?? ??? ?{
?? ??? ??? ?printf("感謝使用\n");
?? ??? ??? ?exit(1);
?? ??? ?}
?? ??? ?default: {
?? ??? ??? ?printf("輸入錯誤!請重新輸入");
?? ??? ??? ?system("pause");
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?}
?? ?}
?? ?free(head);
}

1.錄入信息

錄入信息分為兩部分

void Input_1(Linklist* pNew)//輸入結點的值?
{
?? ?int i = 0, j = 0, num = 0, sum = 0;
?? ?char ch = 0;
?? ?fflush(stdin);
?? ?//pNew = (Linklist*)malloc(sizeof(Linklist));
?? ?printf("請輸入電影序號\n");
?? ?scanf("%s", pNew->number);
?? ?fflush(stdin);//清除緩存區(qū)數(shù)據(jù)
?? ?if (pNew->number[0] == '#')
?? ??? ?return;
?? ?printf("請輸入電影名稱\n");
?? ?scanf("%s", pNew->name);
?? ?fflush(stdin);
?? ?printf("請輸入電影價格\n");
?? ?scanf("%d", &pNew->price);
?? ?fflush(stdin);
?? ?printf("請輸入電影評分\n");
?? ?scanf("%d", &pNew->grade);
?? ?fflush(stdin);
?? ?printf("請輸入電影時長\n");
?? ?scanf("%d", &pNew->time);
?? ?fflush(stdin);
?? ?printf("\n");
}
Linklist* Input()//手動輸入,錄入信息鏈表
{
?? ?Linklist* head = NULL, * pEnd, * pNew;
?? ?pEnd = head = (Linklist*)malloc(sizeof(Linklist));
?? ?printf("電影序號輸入#時停止輸入");
?? ?pNew = (Linklist*)malloc(sizeof(Linklist));
?? ?Input_1(pNew);
?? ?while (pNew->number[0] != '#')//尾插法?
?? ?{
?? ??? ?pEnd->next = pNew;
?? ??? ?pNew->next = NULL;
?? ??? ?pEnd = pNew;
?? ??? ?pNew = (Linklist*)malloc(sizeof(Linklist));
?? ??? ?Input_1(pNew);
?? ??? ?printf("\n");
?? ?}
?? ?Foutput(head);
?? ?free(pNew);//最后一個pNew是沒有數(shù)據(jù)所以釋放掉
?? ?return head;
}

2.修改

void change(Linklist* head)//修改?
{
?? ?read();
?? ?int n, j, k, l, y;
?? ?char m[20] = "";
?? ?char i = 0;
?? ?Linklist* p = head;
?? ?printf("1.名稱2.評分3.價格4.時長5.編號");
?? ?printf("請輸入要修改的項目");
?? ?scanf("%d", &n);
?? ?switch (n)
?? ?{
?? ?case 1:
?? ?{
?? ??? ?printf("請輸入要修改的電影名稱");
?? ??? ?scanf("%s", m);
?? ??? ?while (p != NULL)
?? ??? ?{
?? ??? ??? ?if (strcmp(p->number, m) == 0)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("輸入修改之后的名稱");
?? ??? ??? ??? ?scanf("%s", &p->name);
?? ??? ??? ??? ?//strcpy()
?? ??? ??? ??? ?printf("修改完成");
?? ??? ??? ?}
?? ??? ??? ?p = p->next;
?? ??? ?}
?? ?}
?? ?case 2:
?? ?{
?? ??? ?printf("請輸入要修改的的電影評分");
?? ??? ?scanf("%d", &j);
?? ??? ?while (p != NULL)
?? ??? ?{

?? ??? ??? ?if (p->grade == j)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("請輸入修改之后的評分");
?? ??? ??? ??? ?scanf("%d", &p->grade);
?? ??? ??? ??? ?printf("修改成功");
?? ??? ??? ?}
?? ??? ?}
?? ?}
?? ?case 3:
?? ?{
?? ??? ?printf("請輸入要修改的電影價格");
?? ??? ?scanf("%d", &l);
?? ??? ?while (p != NULL)
?? ??? ?{
?? ??? ??? ?if (p->price == l)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("請輸入修改之后的價格");
?? ??? ??? ??? ?scanf("%d", &p->price);
?? ??? ??? ??? ?printf("修改成功");
?? ??? ??? ?}
?? ??? ?}
?? ?}
?? ?case 4:
?? ?{
?? ??? ?printf("請輸入要修改電影時長");
?? ??? ?scanf("%d", &k);
?? ??? ?while (p != NULL)
?? ??? ?{
?? ??? ??? ?if (p->time == k)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("請輸入修改之后的電影時長");
?? ??? ??? ??? ?scanf("%d", &p->time);
?? ??? ??? ??? ?printf("修改成功");
?? ??? ??? ?}
?? ??? ?}
?? ?}
?? ?case 5:
?? ?{
?? ??? ?printf("請輸入要修改電影編號");
?? ??? ?scanf("%d", &y);
?? ??? ?while (p != NULL)
?? ??? ?{
?? ??? ??? ?if (p->time == y)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("請輸入修改之后的電影時長");
?? ??? ??? ??? ?scanf("%d", &p->time);
?? ??? ??? ??? ?printf("修改成功");
?? ??? ??? ?}
?? ??? ?}
?? ?}
?? ?}
}

3.刪除

void delete_1(Linklist* head)//刪除?
{
?? ?Linklist* p, * p1 = head;
?? ?p = p1->next;
?? ?int n, i;
?? ?char a[20];
?? ?printf("請輸入1確認刪除");
?? ?scanf("%d", &i);
?? ?switch (i)
?? ?{
?? ?case 1:
?? ?{
?? ??? ?printf("請輸入要刪除的電影編號\n");
?? ??? ?scanf("%s", a);
?? ??? ?while (p != NULL)
?? ??? ?{
?? ??? ??? ?if ((strcmp(p->number, a)) == 0)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("\t\t以下是要刪除的電影信息\n\n");
?? ??? ??? ??? ?printf("%s\t%s\t%d\t%d\t%d\n\n", p->number, p->name, p->price, p->grade, p->time);
?? ??? ??? ??? ?p1->next = p->next;
?? ??? ??? ??? ?free(p);
?? ??? ??? ??? ?printf("刪除完畢");
?? ??? ??? ?}
?? ??? ??? ?p1 = p;
?? ??? ??? ?p = p->next;
?? ??? ?}
?? ?}
?? ?default:
?? ?{
?? ??? ?printf("輸入錯誤.....");
?? ??? ?break;
?? ?}
?? ?}
}

4.排序

這里用得是鏈表冒泡排序
有點難理解,附圖

void sort(Linklist* head)//單鏈表冒泡排序?
{
?? ?int n;
?? ?Linklist* p, * q, * p1;
?? ?p1 = NULL;
?? ?printf("1.按票價從低到高排序2.按評分從低到高排序3.按時長從短到長排序\n");
?? ?printf("請選擇排序方式");
?? ?scanf("%d", &n);
?? ?switch (n)
?? ?{
?? ?case 1:
?? ?{
?? ??? ?while ((head->next->next) != p1)//相當于數(shù)組第一層循環(huán)?
?? ??? ?{
?? ??? ??? ?p = head;//一個數(shù)據(jù)?
?? ??? ??? ?q = head->next;//下一個數(shù)據(jù)
?? ??? ??? ?while (q->next != p1)
?? ??? ??? ?{
?? ??? ??? ??? ?if (q->price > q->next->price)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?p->next = q->next; //第一步?
?? ??? ??? ??? ??? ?q->next = q->next->next;//第二步?
?? ??? ??? ??? ??? ?p->next->next = q;//第三步?
?? ??? ??? ??? ??? ?q = p->next;//第四補3?? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ?}
?? ??? ??? ??? ?q = q->next;//接著往后走?
?? ??? ??? ??? ?p = p->next;
?? ??? ??? ?}
?? ??? ??? ?p1 = q;//相當于數(shù)組比較的下一個外層?? ?
?? ??? ?}
?? ??? ?printf("排序完成");
?? ??? ?output(head);
?? ??? ?system("pause");
?? ??? ?break;
?? ?}
?? ?case 2:
?? ?{
?? ??? ?while ((head->next->next) != p1)//相當于數(shù)組第一層循環(huán)?
?? ??? ?{
?? ??? ??? ?p = head;//一個數(shù)據(jù)?
?? ??? ??? ?q = head->next;//下一個數(shù)據(jù)
?? ??? ??? ?while (q->next != p1)
?? ??? ??? ?{
?? ??? ??? ??? ?if (q->grade > q->next->grade)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?p->next = q->next; //第一步?
?? ??? ??? ??? ??? ?q->next = q->next->next;//第二步?
?? ??? ??? ??? ??? ?p->next->next = q;//第三步?
?? ??? ??? ??? ??? ?q = p->next;//第四補3?? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ?}
?? ??? ??? ??? ?q = q->next;//接著往后走?
?? ??? ??? ??? ?p = p->next;
?? ??? ??? ?}
?? ??? ??? ?p1 = q;//相當于數(shù)組比較的下一個外層?? ?
?? ??? ?}
?? ??? ?printf("排序完成");
?? ??? ?output(head);
?? ??? ?break;
?? ?}
?? ?case 3:
?? ?{
?? ??? ?while ((head->next->next) != p1)//相當于數(shù)組第一層循環(huán)?
?? ??? ?{
?? ??? ??? ?p = head;//一個數(shù)據(jù)?
?? ??? ??? ?q = head->next;//下一個數(shù)據(jù)
?? ??? ??? ?while (q->next != p1)
?? ??? ??? ?{
?? ??? ??? ??? ?if (q->time > q->next->time)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?p->next = q->next; //第一步?
?? ??? ??? ??? ??? ?q->next = q->next->next;//第二步?
?? ??? ??? ??? ??? ?p->next->next = q;//第三步?
?? ??? ??? ??? ??? ?q = p->next;//第四補3?? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ?}
?? ??? ??? ??? ?q = q->next;//接著往后走?
?? ??? ??? ??? ?p = p->next;
?? ??? ??? ?}
?? ??? ??? ?p1 = q;//相當于數(shù)組比較的下一個外層?? ?
?? ??? ?}
?? ??? ?printf("排序完成");
?? ??? ?output(head);
?? ??? ?break;
?? ?}
?? ?}
}

5.添加

void insert(Linklist* head)//添加新的電影信息?
{
?? ?Linklist* p = head, * p1;
?? ?//p=p1->next;
?? ?int n, i;
?? ?printf("請輸入1進行添加信息操作");
?? ?scanf("%d", &n);
?? ?switch (n)
?? ?{
?? ?case 1:
?? ?{
?? ??? ?printf("請輸入要插入信息前面的電影編號");
?? ??? ?scanf("%d", &i);
?? ??? ?while (p != NULL)
?? ??? ?{

?? ??? ??? ?if (atoi(p->number) == i)
?? ??? ??? ?{
?? ??? ??? ??? ?p1 = (Linklist*)malloc(sizeof(Linklist));//開辟新的空間
?? ??? ??? ??? ?printf("請輸入電影編號");
?? ??? ??? ??? ?scanf("%s", p->number);
?? ??? ??? ??? ?printf("請輸入電影名稱");
?? ??? ??? ??? ?scanf("%s", p->name);
?? ??? ??? ??? ?printf("請輸入電影價格");
?? ??? ??? ??? ?scanf("%d", &p->price);
?? ??? ??? ??? ?printf("請輸入電影評分");
?? ??? ??? ??? ?scanf("%d", &p->grade);
?? ??? ??? ??? ?printf("請輸入電影時長");
?? ??? ??? ??? ?scanf("%d", &p->time);
?? ??? ??? ??? ?printf("電影信息添加完畢");
?? ??? ??? ??? ?p1->next = p->next;//?
?? ??? ??? ??? ?p->next = p;
?? ??? ??? ?}
?? ??? ??? ?p = p->next;//遍歷?? ??? ?
?? ??? ?}
?? ?}
?? ?default:
?? ?{
?? ??? ?printf("輸入錯誤。。。。");
?? ?}
?? ?}
?? ?Foutput(head);
}

*6.查找

void search(Linklist* head) //查詢?
{
?? ?Linklist* p = head;
?? ?//int n;
?? ?char a[20] = "";

?? ?printf("請輸入要查詢電影編號");
?? ?scanf("%s", a);
?? ?while (p != NULL)
?? ?{
?? ??? ?if ((strcmp(p->number, a)) == 0)
?? ??? ?{
?? ??? ??? ?printf("編號\t名稱\t價格\t評分\t時長\n");
?? ??? ??? ?printf("%s\t%s\t%d\t%d\t%d\t\t", p->number, p->name, p->price, p->grade, p->time);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?p = p->next;

?? ?}
?? ?system("pause");
}

三.用戶操作系統(tǒng)

用戶登錄主函數(shù)

void user()
{
?? ?fflush("stdin");
?? ?Linklist* head;
?? ?head = (Linklist*)malloc(sizeof(Linklist));
?? ?head->next = NULL;
?? ?int n;
?? ?printf3();
?? ?printf("請輸入要選擇的操作");
?? ?scanf("%d", &n);
?? ?system("pause");
?? ?char c[20] = "";
?? ?//?? ?printf("")
?? ?switch (n)
?? ?{
?? ?case 1:
?? ?{
?? ??? ?printf("\t\t\t歡迎預覽\n");
?? ??? ?preview();
?? ??? ?system("pause");
?? ??? ?break;
?? ?}
?? ?case 2:
?? ?{
?? ??? ?printf("\t\t歡迎來到查詢系統(tǒng)\n");
?? ??? ?head = read();
?? ??? ?fflush(stdin);
?? ??? ?search(head);
?? ??? ?system("cls");
?? ??? ?break;
?? ?}
?? ?case 3:
?? ?{
?? ??? ?printf("\t\t\t歡迎來到購票系統(tǒng)\n");
?? ??? ?head = read();
?? ??? ?fflush(stdin);
?? ??? ?Linklist* p = head;
?? ??? ?//p = (Linklist*)malloc(sizeof(Linklist));
?? ??? ?printf("\t\t\t請輸入要購買電影的編號\n");
?? ??? ?scanf("%s", c);
?? ??? ?//printf("ggdggd");
?? ??? ?while (p)
?? ??? ?{
?? ??? ??? ?if ((strcmp(p->number, c)) == 0)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("*****************************");
?? ??? ??? ??? ?printf("|--------電影名字%s----------|\n", p->name);
?? ??? ??? ??? ?printf("|--------電影價格%d----------|\n", p->price);
?? ??? ??? ??? ?printf("|--------電影時間%d----------|\n", p->time);
?? ??? ??? ??? ?printf("|--------恭喜購票成功--------|\n");
?? ??? ??? ??? ?printf("|----------------------------|\n");
?? ??? ??? ??? ?printf("*****************************");
?? ??? ??? ??? ?system("pause");
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?p = p->next;
?? ??? ?}
?? ??? ?break;
?? ?}
?? ?case 4:
?? ?{
?? ??? ?printf("感謝使用");
?? ??? ?exit(1);
?? ?}
?? ?}
}

預覽

void preview()
{
?? ?printf("\t\t***********************************************\n");
?? ?printf("\t\t| 電影名稱:Captain America ? ? ? 價格: 35 ? ? |\n");
?? ?printf("\t\t| 評分:9 ? ? ? ? ? ? ? ?時長: 135 ? ? ? ? ? ? |\n");
?? ?printf("\t\t***********************************************\n");

?? ?printf("\t\t***********************************************\n");
?? ?printf("\t\t| 電影名稱:The Shawshank Redemption ? 價格:36 |\n");
?? ?printf("\t\t| 評分:8 ? ? ? ? ? ? ? ?時長:126 ? ? ? ? ? ? ?|\n");
?? ?printf("\t\t***********************************************\n");

?? ?printf("\t\t***********************************************\n");
?? ?printf("\t\t| 電影名稱:Citizen Kane Redemption ? ?價格:34 ?\n");
?? ?printf("\t\t| 評分:10 ? ? ? ? ? ? ? ?時長:123 ? ? ? ? ? ? |\n");
?? ?printf("\t\t***********************************************\n");

?? ?printf("\t\t***********************************************\n");
?? ?printf("\t\t| 電影名稱:Casablanca ? ? ? ? ? ?價格:32 ? ? ?|\n");
?? ?printf("\t\t| 評分:6 ? ? ? ? ? ? ? ?時長:157 ? ? ? ? ? ? ?|\n");
?? ?printf("\t\t***********************************************\n");

?? ?printf("\t\t***********************************************\n");
?? ?printf("\t\t| 電影名稱:The Godfather Part II ? ?價格:31 ? |\n");
?? ?printf("\t\t| 評分:5 ? ? ? ? ? ? ? ?時長:134 ? ? ? ? ? ? ?|\n");
?? ?printf("\t\t***********************************************\n");
}

四.文件操作

void Foutput(Linklist* head)//電影信息錄入文件
{
?? ?Linklist* pt = head;
?? ?FILE* fp;
?? ?pt = pt->next;
?? ?fp = fopen("d:\\課設\\dgw.txt", "wt+");
?? ?if (fp == NULL)
?? ?{
?? ??? ?printf("文件打開失敗");
?? ??? ?exit(1);
?? ?}
?? ?while (pt)
?? ?{
?? ??? ?fprintf(fp, "%s %s %d %d %d", pt->number, pt->name, pt->price, pt->grade, pt->time);
?? ??? ?pt = pt->next;
?? ?}
?? ?fclose(fp);
}

五.打印函數(shù)實現(xiàn)

void printf2()
{
?? ?system("cls");
?? ?printf("\t\t\t|*******************************|\n");
?? ?printf("\t\t\t| ?歡迎來到影院管理系統(tǒng)(管理員) |\n");
?? ?printf("\t\t\t|*******************************|\n");
?? ?printf("\t\t\t| ? ? ? ? ?1.錄入信息 ? ? ? ? ? |\n");
?? ?printf("\t\t\t| ? ? ? ? ?2.修改 ? ? ? ? ? ? ? |\n");
?? ?printf("\t\t\t| ? ? ? ? ?3.刪除 ??? ? ? ? ? ? ?|\n");
?? ?printf("\t\t\t| ? ? ? ? ?4.排序 ? ? ? ? ? ? ? |\n");
?? ?printf("\t\t\t| ? ? ? ? ?5.添加 ? ? ? ? ? ? ? |\n");
?? ?printf("\t\t\t| ? ? ? ? ?6.查詢 ? ? ? ? ? ? ? |\n");
?? ?printf("\t\t\t| ? ? ? ? ?7.預覽 ? ? ? ? ? ? ? |\n");
?? ?printf("\t\t\t|-------------------------------|\n");
?? ?printf("\t\t\t|-------------------------------|\n");
?? ?printf("\t\t\t| ? ? ? ? ?0.退出程序 ? ? ? ? ? |\n");
?? ?printf("\t\t\t|===============================|\n");
?? ?printf("\t\t\t請選擇你需要的操作\t\t");
}//管理員系統(tǒng)菜單
void printf3()//用戶登錄界面
{
?? ?system("cls");
?? ?printf("\t\t\t|*******************************|\n");
?? ?printf("\t\t\t| ?歡迎來到影院管理系統(tǒng)(個人用戶)|\n");
?? ?printf("\t\t\t|*******************************|\n");
?? ?printf("\t\t\t| ? ? ? ? ?1.預覽 ? ? ? ? ? ? ? |\n");
?? ?printf("\t\t\t| ? ? ? ? ?2.查詢 ? ? ? ? ? ? ? |\n");
?? ?printf("\t\t\t| ? ? ? ? ?3.購票并打印報表?? ? ?|\n");
?? ?printf("\t\t\t| ? ? ? ? ?0.退出程序 ? ? ? ? ? |\n");
?? ?printf("\t\t\t|===============================|\n");
}
void printf_d()
{
?? ?system("cls");
?? ?printf("\n\n\n\n");
?? ?printf("\t\t\t★☆★☆★☆★☆★☆★☆★☆★☆\n");
?? ?printf("\t\t\t☆ ? ? ? ? ? ? ? ? ? ? ? ? ? ?★\n");
?? ?printf("\t\t\t☆ ? ? ? ? 1.登錄 ? ? ? ? ? ? ★\n");
?? ?printf("\t\t\t☆ ? ? ? ? 2.注冊 ? ? ? ? ? ? ★\n");
?? ?printf("\t\t\t★ ? ? ? ? 0.退出 ? ? ? ? ? ? ☆\n");
?? ?printf("\t\t\t☆ ? ? ? ? ? ? ? ? ? ? ? ? ? ?★\n");
?? ?printf("\t\t\t★☆★☆★☆★☆★☆★☆★☆★☆\n");
}//登錄
void printf1()//不同用戶登錄
{
?? ?system("cls");
?? ?printf("\n\n\n\n");
?? ?printf("\t\t\t********************************\n");
?? ?printf("\t\t\t|| ? ? ? ? ? ? ? ? ? ? ? ? ? ?||\n");
?? ?printf("\t\t\t|| ? ? ? ? 1.管理員登錄 ? ? ? ||\n");
?? ?printf("\t\t\t|| ? ? ? ? 2.用戶登錄 ? ? ? ? ||\n");
?? ?printf("\t\t\t|| ? ? ? ? 0.退出 ? ? ? ? ? ? ||\n");
?? ?printf("\t\t\t|| ? ? ? ? ? ? ? ? ? ? ? ? ? ?||\n");
?? ?printf("\t\t\t********************************\n");
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C語言字符串壓縮之ZSTD算法詳解

    C語言字符串壓縮之ZSTD算法詳解

    快速壓縮工具zstd(zstandard)是由facebook開源的快速無損壓縮算法,主要應用于zlib級別的實時壓縮場景,并且具有更好的壓縮比。本文將來講講ZSTD算法的使用,需要的可以參考一下
    2022-08-08
  • Unreal學習之簡單三角形的繪制詳解

    Unreal學習之簡單三角形的繪制詳解

    之所以寫這個繪制簡單三角形的實例其實是想知道如何在Unreal中通過代碼繪制自定義Mesh,如果你會繪制一個三角形,那么自然就會繪制復雜的Mesh了。所以這是很多圖形工作者的第一課,快跟隨小編一起學習起來吧
    2023-02-02
  • C++教程之a(chǎn)rray數(shù)組使用示例詳解

    C++教程之a(chǎn)rray數(shù)組使用示例詳解

    這篇文章主要為大家介紹了C++教程之a(chǎn)rray數(shù)組使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 用VC++6.0實現(xiàn)石頭剪刀布游戲的程序

    用VC++6.0實現(xiàn)石頭剪刀布游戲的程序

    最先看到這個游戲代碼是python版的,后來看到有小伙伴用VC++重寫了一遍,運行之后發(fā)現(xiàn)有些小bug,便嘗試這修復了一下,并增加了些小功能,這里分享給大家。
    2015-03-03
  • C++如何過濾出字符串的中文(GBK、UTF-8)

    C++如何過濾出字符串的中文(GBK、UTF-8)

    這篇文章主要給大家介紹了關于C++如何過濾出字符串的中文的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C++具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-07-07
  • C語言單鏈表實現(xiàn)圖書管理系統(tǒng)

    C語言單鏈表實現(xiàn)圖書管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言單鏈表實現(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • include包含頭文件的語句中,雙引號和尖括號的區(qū)別(詳解)

    include包含頭文件的語句中,雙引號和尖括號的區(qū)別(詳解)

    下面小編就為大家?guī)硪黄猧nclude包含頭文件的語句中,雙引號和尖括號的區(qū)別(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 數(shù)據(jù)結構串的操作實例詳解

    數(shù)據(jù)結構串的操作實例詳解

    這篇文章主要介紹了數(shù)據(jù)結構串的操作實例詳解的相關資料,需要的朋友可以參考下
    2017-07-07
  • C語言內(nèi)存操作函數(shù)使用示例梳理講解

    C語言內(nèi)存操作函數(shù)使用示例梳理講解

    這篇文章主要介紹了C語言庫函數(shù)中的內(nèi)存操作函數(shù)memcpy()、memmove()、memset()、memcmp()使用示例分析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-09-09
  • delete[] p->elems和free(p->elems)區(qū)別介紹

    delete[] p->elems和free(p->elems)區(qū)別介紹

    delete[]和free()都是釋放內(nèi)存的函數(shù),但它們具有不同的使用方法和適用情況,這篇文章主要介紹了delete[] p->elems和free(p->elems)有什么區(qū)別,需要的朋友可以參考下
    2023-04-04

最新評論