東北大學20級大作業—活力長者社區
- ==活力長者社區==
- ==一,系統使用展示(部分)==
- ==二,系統功能介紹==
- 1,系統功能介紹
- 2,系統main函式,while回圈在外,系統程式能夠持續運行,switch判斷陳述句進行功能選擇與函式切換,
- 3,全域共用結構體
- 4,頭檔案
- ==前言==
- ==二,選單==
- 1,選單展示
- 2,列印選單
- ==三,會員管理==
- 1,會員管理選單
- 2,新建會員
- 3,查詢會員
- 4,修改會員
- 5,洗掉會員
- ==四,房屋管理==
- 1,房屋選單
- 1,新建房屋
- 2,修改房屋資訊
- 3,洗掉房屋資訊
- 4,查詢房屋資訊
- == 五,入住管理==
- 1,入住管理選單
- 2,會員入住管理
- 3,入住資訊查詢
- ==六,娛樂設施管理==
- 1,娛樂設施管理選單
- 2,新建娛樂設施
- 3,搜尋娛樂設施資訊
- 4,修改娛樂設施資訊
- 5,洗掉設施資訊
- ==七,用戶管理==
- 1,用戶管理選單
- 2,新建用戶
- 3,查詢用戶
- 4,修改用戶
- 5, 洗掉用戶資料
- 6,設定服務物件
- 7,查詢服務物件
- ==八,檔案管理==
- 1,檔案管理選單
- 2,檔案資料保存
- 3,檔案資料查詢
- @1,檔案查詢選單
- @2,房屋檔案查詢
- @3,會員檔案查詢
- @4,設施檔案查詢
- @5,用戶檔案查詢
- @6,入住檔案查詢
- @7,服務物件檔案查詢
- 4,檔案資料清空
活力長者社區
東北大學20級大作業—活力長者社區
開發語言:C語言
開發者:20級軟體2009楊富超等
使用工具:vs2019
CSDN原始碼下載:東北大學20級大作業—活力長者社區
任何疑問歡迎留言
請尊重勞動成果,借用時評論一下“已借用”
一,系統使用展示(部分)

1,yufuchao.h

2,長者社區.cpp

3,檔案需要

二,系統功能介紹
1,系統功能介紹

1,會員管理(新建,查詢,修改,洗掉)
2,房屋管理(新建,查詢,修改,洗掉)
3,入住管理(會員入住處理,入住資訊查詢)
4,娛樂設施管理(新建,查詢,修改,洗掉)
5,用戶管理(新建,查詢,修改,洗掉)
6,檔案管理(保存資料到檔案,列印檔案資料,清空檔案)
0,退出系統
2,系統main函式,while回圈在外,系統程式能夠持續運行,switch判斷陳述句進行功能選擇與函式切換,
int main(void)//主函式
{
system("color 0E");//改變字體顏色
while (1)
{
Menu();//列印選單
char ch = getchar();
switch (ch)
{
case '1':
MemberManagement();//會員管理功能
break;
case '2':
HouseManagement();//房屋管理功能
break;
case '3':
PersonManagement();//會員入住管理功能
break;
case '4':
AmusementManagement();//娛樂設施管理功能
break;
case '5':
UserManagement();//用戶管功能
break;
case '6':
FileMenu();//檔案資料操作功能
break;
case '0':
return 0;//退出系統
break;
default:
printf("輸入有誤,沒有該功能\n\n");
system("pause");//暫停
system("cls");//清屏
break;
}
}
return 0;
}
3,全域共用結構體
偷懶了,為了減少代碼量,用了共用結構體
//全域結構體!!!
struct Entity {
char name[10] = { '\0' };//姓名,名稱
char name1[10] = { '\0' };
char work[10] = { '\0' };//職位
int message = 0;//入住
long long int number = 0;//電話號碼,可使用人數
struct Entity* next;
};
//全域頭節點,尾節點
struct Entity* head1, * end1;//房屋
struct Entity* head2, * end2;//會員
struct Entity* head3, * end3;//設施
struct Entity* head4, * end4;//用戶
4,頭檔案
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
#include <conio.h>
#include<windows.h>//頭檔案ok!
前言
肝這個系統很久了,(也因此寫出了我的第一篇CSDN)
這是我做的第一個較大的系統,U1S1,淚目
一個人肝了快1200多行,
共1490行,
共實作了33個函式功能,
包括鏈表新建,洗掉,檔案的保存,洗掉,清空,查找,修改等等
(初心:用最少的代碼干最多的事)
今天它終于成年了,
從嬰兒到青年,到少年,
挺不容易的,學到了很多C的知識,
也體會到,優化是無止境的,想法在老腦子里
但是,應該不會再優化它了,事太多了,挺舍不得的,做了這么久了,把他當兒子,自己像個老父親,雖然它經常出bug,熬夜禿頭多次,一次次優化,長大成人,很奇妙的感覺,成就感有,也有一絲絲傷感與解脫,不再為它熬夜了,還有考試,大創前端,陪你到這兒,不拖了!
作業要求

二,選單

1,選單展示
void Menu() {
printf("*************************************************\n");
printf("*\t歡迎使用活力長者社區系統\t\t*\n");
printf("*\t\t請選擇功能\t\t\t*\n");
printf("*************************************************\n");
printf("*\t\t1.會員管理\t\t\t*\n");//ok
printf("*\t\t2.房屋管理\t\t\t*\n");//ok
printf("*\t\t3.入住管理\t\t\t*\n");
printf("*\t\t4.娛樂設施管理\t\t\t*\n");
printf("*\t\t5.用戶管理\t\t\t*\n");
printf("*\t\t6.檔案管理\t\t\t*\n");//ok
printf("*\t\t0.退出系統\t\t\t*\n");//ok
printf("*************************************************\n");
}
2,列印選單
//列印選單
Menu();
//讀取一個字符 整數,字符在記憶體中映射為ASCII碼
char ch = getchar();
三,會員管理

1,會員管理選單
用printf列印,再用while回圈,switch選擇,break退出
void MemberManagement() {
system("cls");
while (1) {
system("cls");
printf("*************************************************\n");
printf("*\t歡迎使用會員管理功能\t\t\t*\n");
printf("*\t\t請選擇功能\t\t\t*\n");
printf("*************************************************\n");
printf("*\t\t1.新建會員\t\t\t*\n");//ok
printf("*\t\t2.查詢會員\t\t\t*\n");//ok
printf("*\t\t3.修改會員\t\t\t*\n");
printf("*\t\t4.洗掉會員\t\t\t*\n");
printf("*\t\t0.回傳 \t\t\t*\n");//ok
printf("*************************************************\n");
char b = _getch();
if (b == '0')//輸入0.退出回圈
break;
switch (b)
{
case '1':
MemberNew();//新建會員
break;
case '2':
MemberSeek();//查詢會員
break;
case '3':
MemberChange();//修改會員
break;
case '4':
MemberDelete();//洗掉會員
break;
default:
printf("輸入有誤,沒有該功能\n\n");
system("pause");
system("cls");
break;
}
}
system("cls");
}
2,新建會員
1, 運用了鏈表新建,使用while,使可以達到多次輸入,自己選擇退出的目標
2,注意head2為全域頭節點,方便后面使用,把鏈表保存在檔案中
3,創新思想:這里關于房屋選擇,我的辦法是我把房屋資訊列印出來,再由會員自己選擇房屋(手動輸入名稱)
4,會員資訊:姓名,手機號碼,所選房屋
void MemberNew() {
int flag = 2;
//判斷頭節點是否為空,并找到尾節點
while (head2 != NULL && end2->next != NULL)
{
end2 = end2->next;
}
//列印房屋檔案
Fangwufile();
while (flag != 1)//判斷是否退出回圈
{ //創建一個會員,在堆中分配記憶體
struct Entity* node = (struct Entity*)malloc(sizeof(struct Entity));
//判斷頭節點是否為空
if (head2 == NULL) {
head2 = node;
end2 = head2;
}
//錄入會員資訊
memset(node, 0, sizeof(struct Entity));//
printf("請輸入新建會員的名字\n");
memset(node->name, '0', sizeof(node->name));
scanf("%s", node->name);
printf("請輸入新建會員的手機號碼\n");
scanf_s("%lld", &node->number);//&指標得到值
printf("請輸入新建會員選擇的房型\n");
scanf("%s", node->work);
puts("恭喜房屋購買成功");
printf("是否需要繼續輸入?否(1),是(2)\n");
scanf("%d", &flag);
end2->next = node;
end2 = node;
node->next = NULL;
}
system("cls");
puts("請記得保存會員資訊!");
system("pause");
system("cls");
}
3,查詢會員
1,這里實作的是在檔案中查找資料( 并不是鏈表 ),并列印出來
2,使用的是fscanf,fscanf回傳值為得到的引數個數
3, 注意fscanf的使用是把資料保存在快取中
4,實作在檔案中查詢int(整型資料)
void MemberSeek()
{ //檔案指標
FILE* fp;
if ((fp = fopen(".\\會員資訊.txt", "r")) == NULL)
{
printf("打開會員資訊.txt檔案失敗\n");
return;
}
else
{ //查詢的會員號碼(11位),所以用long long
long long int m;
printf("輸入會員的電話號碼:");
scanf("%lld", &m);
//在堆中分配記憶體
struct Entity* q = (struct Entity*)malloc(sizeof(struct Entity));
while (1)
{
int nRead = fscanf(fp, "%s %lld %s", q->name, &q->number, q->work);//nRead等于要輸出引數的個數
//逐個比較尋找
if (3 == nRead && q->number == m)
{
puts("*購買人\t*電話號碼\t*所購買的房型\t*");
printf("*%s\t*%lld\t*%s\n", q->name, q->number, q->work);
free(q);
break;
}
//判斷是否到結尾也沒有找到
else if (nRead != 3)
{
puts("對不起查詢不到會員資訊");
break;
}
}
}
fclose(fp);//關閉檔案
system("pause");
system("cls");
}
4,修改會員
功能: 實作在檔案中修改已保存的資料
創新思想:創建一個臨時檔案,再把需要的資料輸入到臨時檔案中,再把源檔案移除
再把臨時檔案重命名,ok!
void MemberChange() {
FILE* fp;
FILE* fp1;
long long int c = 0;
fp = fopen(".\\會員資訊.txt", "r+");
fp1 = fopen(".\\linshi.txt", "w+");//新建一個臨時檔案
struct Entity* p = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* p1 = (struct Entity*)malloc(sizeof(struct Entity));
puts("請輸入你要修改會員的電話號碼");
scanf("%lld", &p->number);
while (fscanf(fp, "%s %lld %s", p1->name, &p1->number, p->work) != EOF)//從原檔案讀一個結點
{
if (p->number != p1->number)//不是要修改的內容
{
fprintf(fp1, "%s %lld %s\n", p1->name, p1->number, p->work);
}
else
{ //重新錄入會員資料
puts("請輸入會員的姓名");
scanf("%s", p1->name);
puts("請輸入會員的電話號碼");
scanf("%lld", &p1->number);
puts("請輸入會員所購買的房型");
scanf("%s", p1->work);
fprintf(fp1, "%s %lld %s\n", p1->name, p1->number, p->work);
}
}
free(p);
free(p1);
fclose(fp);
fclose(fp1);
remove(".\\會員資訊.txt");//移除原檔案
rename("linshi.txt", ".\\會員資訊.txt");//把linshi檔案重命名為原檔案名
}
5,洗掉會員
功能:實作在檔案中對會員資料進行查找并洗掉
創新思想:創建一個臨時檔案,再把需要的資料輸入到臨時檔案中,再把源檔案移除
再把臨時檔案重命名,ok!
void MemberDelete() {
FILE* fp;
FILE* fp1;
fp = fopen(".\\會員資訊.txt", "r+");
fp1 = fopen(".\\linshi.txt", "w+");//新建一個臨時檔案
struct Entity* p = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* p1 = (struct Entity*)malloc(sizeof(struct Entity));
puts("請輸入你要洗掉會員的電話號碼");
scanf("%lld", &p->number);
while (fscanf(fp, "%s %lld %s", p1->name, &p1->number, p->work) != EOF)//從原檔案讀一個結點
{
if (p->number != p1->number)//不是要洗掉的內容
{
fprintf(fp1, "%s %lld %s\n", p1->name, p1->number, p->work);
}
}
puts("恭喜您洗掉成功");
free(p);
free(p1);
fclose(fp);
fclose(fp1);
remove(".\\會員資訊.txt");
rename("linshi.txt", ".\\會員資訊.txt");
}
四,房屋管理
1,房屋選單

清屏,while,switch
void HouseManagement()
{
system("cls");
while (1) {
printf("*************************************************\n");
printf("*\t歡迎使用房屋管理功能\t\t\t*\n");
printf("*\t\t請選擇功能\t\t\t*\n");
printf("*************************************************\n");
printf("*\t\t1.新建房屋\t\t\t*\n");
printf("*\t\t2.修改房屋資訊\t\t\t*\n");
printf("*\t\t3.洗掉房屋資訊\t\t\t*\n");
printf("*\t\t4.查詢房屋購買資訊\t\t*\n");
printf("*\t\t0.回傳 \t\t\t*\n");
printf("*************************************************\n");
char b = _getch();
if (b == '0')
break;
switch (b)
{
case '1':
HouseNew();
break;
case '2':
HouseChange();
break;
case '3':
HouseDelete();
break;
case '4':
Huiyuanfile();
break;
default:
printf("輸入有誤,沒有該功能\n\n");
system("pause");
system("cls");
break;
}
}
system("cls");
}
1,新建房屋
通過鏈表來新建,新建完后需要保存資料!
房屋資訊:房屋型別,面積(m^2)
void HouseNew()
{
int flag = 2;
while (head1 != NULL && end1->next != NULL)
{
end1 = end1->next;
}
while (flag != 1)
{
struct Entity* node = (struct Entity*)malloc(sizeof(struct Entity));
if (head1 == NULL) {
head1 = node;
end1 = head1;
}
memset(node, 0, sizeof(struct Entity));
printf("請輸入新建房屋的型別(商品房等)\n");
scanf("%s", node->name);
printf("請輸入新建房屋的面積(m^2)\n");
scanf_s("%lld", &node->number);//&指標得到值
printf("是否需要繼續輸入?否(1),是(2)\n");
scanf("%d", &flag);
end1->next = node;
end1 = node;
node->next = NULL;
}
system("pause");
system("cls");
}
2,修改房屋資訊
實作在檔案中查找字串
關鍵函式:strcmp
創新思想:創建一個臨時檔案,再把需要的資料輸入到臨時檔案中,再把源檔案移除
再把臨時檔案重命名,ok!
void HouseChange(){
FILE* fp;
FILE* fp1;
fp = fopen(".\\房屋資訊.txt", "r+");
fp1 = fopen(".\\linshi.txt", "w+");//讀新建一個臨時檔案
struct Entity* p = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* p1 = (struct Entity*)malloc(sizeof(struct Entity));
puts("請輸入你要修改房屋的名稱");
scanf("%s", p->name);
while (fscanf(fp, "%s %lld", p1->name, &p1->number) != EOF)//從原檔案讀一個結點
{
int abc = strcmp(p->name, p1->name);
if (abc != 0)//不是要改變的內容
{
fprintf(fp1, "%s %lld\n", p1->name, p1->number);
}
else
{
puts("請輸入新修改房屋的名稱");
scanf("%s", p1->name);
puts("請輸入新修改的房屋的面積");
scanf("%lld", &p1->number);
fprintf(fp1, "%s %lld\n", p1->name, p1->number);
}
}
free(p);
free(p1);
fclose(fp);
fclose(fp1);
remove(".\\房屋資訊.txt");
rename("linshi.txt", ".\\房屋資訊.txt");
system("cls");
puts("恭喜您修改成功");
system("pause");
system("cls");
}
3,洗掉房屋資訊
實作在檔案中查找字串
關鍵函式:strcmp
創新思想:創建一個臨時檔案,再把需要的資料輸入到臨時檔案中,再把源檔案移除
再把臨時檔案重命名,ok!
void HouseDelete(){
FILE* fp;
FILE* fp1;
fp = fopen(".\\房屋資訊.txt", "r+");
fp1 = fopen(".\\linshi.txt", "w+");//讀新建一個臨時檔案
struct Entity* p = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* p1 = (struct Entity*)malloc(sizeof(struct Entity));
puts("請輸入你要洗掉房屋的名稱");
scanf("%s", p->name);
while (fscanf(fp, "%s %lld", p1->name, &p1->number) != EOF)//從原檔案讀一個結點
{
int abc = strcmp(p->name, p1->name);
if (abc != 0)//不是要改變的內容
{
fprintf(fp1, "%s %lld\n", p1->name, p1->number);
}
}
free(p);
free(p1);
fclose(fp);
fclose(fp1);
remove(".\\會員資訊.txt");
rename("linshi.txt", ".\\會員資訊.txt");
system("cls");
puts("恭喜您洗掉成功");
system("pause");
system("cls");
}
4,查詢房屋資訊
房屋資訊即會員購買資訊,那么我們這里就可以直接參考會員資訊列印函式
//會員資訊列印
void Huiyuanfile()
{
system("cls");
FILE* fp;
struct Entity* p = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* q = (struct Entity*)malloc(sizeof(struct Entity));
if ((fp = fopen(".\\會員資訊.txt", "r")) == NULL)
{
printf("打開會員資訊.txt檔案失敗\n");
return;
}
else
{
puts("**********************************");
puts("*購買人\t\t*電話號碼\t*所購買的房型\t*");
while (1)
{
int nRead = fscanf(fp, "%s %lld %s", q->name, &q->number, q->work);//nRead等于要輸出引數的個數
if (3 == nRead)
{
printf("*%-10s\t*%-lld\t*%-10s\n", q->name, q->number, q->work);
p->next = q;
p = q;
}
else
{
free(q);
break;
}
}
puts("**********************************");
}
p->next = NULL;
fclose(fp);
system("pause");
system("cls");
}
== 五,入住管理==
1,入住管理選單

while回圈,使用system(“cls”)清屏
//選單
void PersonManagement()
{
system("cls");
while (1)
{
system("cls");
puts("***********************************************");
puts("*\t歡迎使用入住管理功能\t *");
puts("*\t\t\t *");
puts("*\t1.會員入住處理 \t\t\t*");
puts("*\t2.入住資訊查詢 \t\t\t*");
puts("*\t0.回傳 \t\t\t\t*");
puts("***********************************************");
char b = _getche();
if (b == '0')
break;
switch (b)
{
case '1':
Person();
break;
case '2':
Personfile();
break;
default:
printf("輸入有誤,沒有該功能\n\n");
system("pause");
system("cls");
break;
}
}
system("cls");
}
2,會員入住管理
1,從會員資訊.txt中讀取資料,找到會員
2,把找到的會員資料輸入入住資訊,txt中,并加入一個數字(1or2or3),方便后面列印入住資訊時使用,也方便會員錄入
3,if判斷入住還是申請設施使用
4,Sleep(毫秒數)為Windo.h頭檔案包含
//會員入住處理
void Person()
{
system("cls");
FILE* fp;
FILE* fp1;
struct Entity* p = (struct Entity*)malloc(sizeof(struct Entity));
if ((fp1 = fopen(".\\入住資訊.txt", "a+")) == NULL)
{
printf("打開入住資訊.txt檔案失敗,請聯系管理人員處理\n");
system("pause");
return;
}
if ((fp = fopen(".\\會員資訊.txt", "r")) == NULL)
{
printf("打開會員資訊.txt檔案失敗\n");
system("pause");
return;
}
else
{
long long int m;
puts("********************************************************");
printf("輸入入住的會員的電話號碼:");
scanf("%lld", &m);
puts("*購買人 \t*電話號碼\t*所購買的房型*\t");
while (1)
{
struct Entity* q = (struct Entity*)malloc(sizeof(struct Entity));
int nRead = fscanf(fp, "%s %lld %s", q->name, &q->number, q->work);//nRead等于要輸出引數的個數
if (3 == nRead && q->number == m)
{
fprintf(fp1, "%s %11d %s", q->name, q->number, q->work);
printf("*%-10s\t*%-lld\t*%-10s\t\n", q->name, q->number, q->work);
puts("*入住輸入1,申請設施輸入2");//選擇功能
int b = 0;
scanf("%d", &b);
if (b == 1) //入住
puts("*請輸入:""1(入住)""or""2(出租)""or3(空置)""");
scanf_s("%d", &q->message);
fprintf(fp1, " %d\n", q->message);
if (q->message == 1)
{
system("cls");
puts("恭喜入住成功!");
}
else if (q->message == 2)
{
system("cls");
puts("恭喜出租成功");
}
else
{
system("cls");
puts("恭喜空置成功");
}
free(q);
break;
}
else//申請設施
{
system("cls");
Sheshifile();//列印已有的設施
AmusementSeek();//搜尋需要使用的設施
puts("設施使用完畢");
Sleep(4000);//螢屏暫停4s
free(q);
break;
}
}
else
{
if (!feof(fp))
{
p->next = q;
p = q;
}
else
{
puts("抱歉,該會員未購買房屋,我們這兒不允許白嫖");//手動狗頭
break;
}
}
}
p->next = NULL;
fclose(fp);
system("pause");
system("cls");
}
}
}
3,入住資訊查詢

while遍歷
創新點:用strcpy函式實作把之前的數字(1,2,3)變成(入住,出租,閑置)
//列印入住會員的資訊
void Personfile() {
system("cls");
FILE* fp;
struct Entity* p = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* q = (struct Entity*)malloc(sizeof(struct Entity));
if ((fp = fopen(".\\入住資訊.txt", "r")) == NULL)
{
printf("打開入住資訊.txt檔案失敗\n");
return;
}
else
{
puts("******************************************************");
printf("*購買人\t*電話號碼\t*所購買的房型\t");
printf("*入住資訊\t*\n");
while (1)
{
struct Entity* q = (struct Entity*)malloc(sizeof(struct Entity));//在堆中分配空間
int nRead = fscanf(fp, "%s %lld %s %d", q->name, &q->number, q->work, &q->message);//nRead等于要輸出引數的個數
if (4 == nRead)
{
char b[20] = "\0";
if (q->message == 1)
strcpy(b, "入住");
else if (q->message == 2)
strcpy(b, "出租");
else strcpy(b, "閑置");
printf("*%-10s\t*%-lld\t*%-10s\t*%-10s\n", q->name, q->number, q->work, b);
p->next = q;
p = q;
}
else
{
free(q);
break;
}
}
}
p->next = NULL;
fclose(fp);
system("pause");
system("cls");
}
六,娛樂設施管理

1,娛樂設施管理選單
while
創新點:用了_getch,好處不用按enter,直接就能繼續運行
void AmusementManagement()
{
system("cls");
while (1) {
printf("*************************************************\n");
printf("*\t歡迎使用設施管理功能\t\t\t*\n");
printf("*\t\t請選擇功能\t\t\t*\n");
printf("*************************************************\n");
printf("*\t\t1.新建設施資訊\t\t\t*\n");//ok
printf("*\t\t2.修改設施資訊\t\t\t*\n");//ok
printf("*\t\t3.洗掉設施資訊 \t\t*\n");//ok
printf("*\t\t0.回傳 \t\t\t*\n");//ok
printf("*************************************************\n");
char b = _getch();
if (b == '0') break;
switch (b)
{
case '1':
AmusementNew();
break;
case '2':
AmusementChange();
break;
case '3':
AmusementDelete();
default:
printf("輸入有誤,沒有該功能\n\n");
system("pause");
system("cls");
break;
}
}
system("pause");
system("cls");
}
2,新建娛樂設施
while循還,用一個判斷來決定是否輸入,更加人性化
設施資訊:名稱,可使用人數
void AmusementNew() {
system("cls");
int flag = 2;
while (head3 != NULL && end3->next != NULL)
{
end3 = end3->next;
}
puts("***************************************");
while (flag != 1)//判斷是否繼續,很常用的一個代碼思想
{
struct Entity* node = (struct Entity*)malloc(sizeof(struct Entity));
if (head3 == NULL) {//判斷是否頭節點為空
head3 = node;
end3 = head3;
}
memset(node, 0, sizeof(struct Entity));//清空結構體
//錄入資料
printf("*\t請輸入新建設施的名稱:\t\t*\n");
scanf("%s", node->name);
printf("*\t請輸入設施可以使用的人數: \t\n");
scanf_s("%lld", &node->number);//&指標得到值
printf("*\t是否需要繼續輸入?否(1),是(2)\t*\n");
scanf("%d", &flag);
end3->next = node;
end3 = node;
node->next = NULL;//最后尾節點指向空(NULL)
}
system("cls");
puts("請記得保存設施資訊!");
system("pause");
system("cls");
}
3,搜尋娛樂設施資訊

此函式作用:在申請娛樂設施時的選擇設施(也就是查找)
得不到資料,debug了很久,,,,解決后,獎勵一杯快樂水
//搜尋seek
void AmusementSeek()
{
FILE* fp;
struct Entity* p2 = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* q = (struct Entity*)malloc(sizeof(struct Entity));
if ((fp = fopen(".\\娛樂設施資訊.txt", "r")) == NULL)
{
printf("打開娛樂設施資訊.txt檔案失敗\n");
return;
}
else
{
printf("請輸入娛樂設施的名稱:");
scanf("%s", p2->name);
while (1)
{
int nRead = fscanf(fp, "%s %lld", q->name, &q->number);//nRead等于要輸出引數的個數
int abc = strcmp(p2->name, q->name)//相同回傳為0
printf("%d", abc);
if (2 == nRead && abc==0)
{
puts("*娛樂設施名稱\t*可使用人數\t*");
printf("*%-10s\t*%-lld\t\n", q->name, q->number);
free(q);//釋放空間
break;
}
else if (nRead != 2)
{
puts("對不起沒用此娛樂設施資訊");
break;
}
}
}
fclose(fp);
system("pause");
}
4,修改娛樂設施資訊
實作 :在檔案中找到資料,并進行資料修改,并不改變其他資料!
創新思想:創建一個臨時檔案,再把需要的資料輸入到臨時檔案中,再把源檔案移除
再把臨時檔案重命名,ok!
void AmusementChange()
{
FILE* fp2;
FILE* fp3;
long long int c = 0;
fp2 = fopen(".\\娛樂設施資訊.txt", "r+");
fp3 = fopen(".\\linshi2.txt", "w+");//新建一個臨時檔案
struct Entity* p2 = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* p3 = (struct Entity*)malloc(sizeof(struct Entity));
puts("請輸入你要修改設施的名稱");
scanf("%s", &p2->name);
while (fscanf(fp2, "%s %lld", p3->name, &p3->number) != EOF)//從原檔案讀一個結點
{
int abc = strcmp(p2->name, p3->name);
if (abc != 0)//不是要改變的內容
{
fprintf(fp3, "%s %lld\n", p3->name, p3->number);
}
else
{
puts("請輸入新修改的設施的名稱");
scanf("%s", p3->name);
puts("請輸入新修改的設施可以使用的人數");
scanf("%lld", &p3->number);
fprintf(fp3, "%s %lld \n", p3->name, p3->number);
}
}
free(p2);
free(p3);
fclose(fp2);
fclose(fp3);
remove(".\\娛樂設施資訊.txt");
rename("linshi2.txt", ".\\娛樂設施資訊.txt");
system("cls");
puts("恭喜您修改成功");
system("pause");
system("cls");
}
5,洗掉設施資訊
通過一個while循還遍歷,和if來判斷是否是需要洗掉的資料
創新思想:創建一個臨時檔案,再把需要的資料輸入到臨時檔案中,再把源檔案移除
再把臨時檔案重命名,ok!
void AmusementDelete() {
FILE* fp4;
FILE* fp5;
fp4 = fopen(".\\娛樂設施資訊.txt", "r+");
fp5 = fopen(".\\linshi.txt", "w+");//新建一個臨時檔案
struct Entity* p4 = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* p5 = (struct Entity*)malloc(sizeof(struct Entity));
puts("請輸入你要洗掉設施的名稱");
scanf("%s", &p4->name);
while (fscanf(fp4, "%s %lld", p5->name, &p5->number) != EOF)//從原檔案讀一個結點
{
int abc = strcmp(p4->name,p5->name);
if (abc != 0)//不是要洗掉的內容
{
fprintf(fp5, "%s %lld\n", p5->name, p5->number);
}
}
free(p4);
free(p5);
fclose(fp4);
fclose(fp5);
remove(".\\娛樂設施資訊.txt");
rename("linshi.txt", ".\\娛樂設施資訊.txt");
system("cls");
puts("恭喜您洗掉成功");
system("pause");
system("cls");
}
七,用戶管理
ps:這個功能函式的檔案保存存在延遲,有時需要退出系統后,檔案資料才會保存到檔案中
運行時,可能不會看到檔案的實時變化
1,用戶管理選單

清屏,while,_getche()
void UserManagement() {
system("cls");
while (1) {
printf("*************************************************\n");
printf("*\t歡迎使用用戶管理功能\t\t\t*\n");
printf("*\t \t\t\t*\n");
printf("*\t\t請選擇功能\t\t\t*\n");
printf("*************************************************\n");
printf("*\t\t1.新建用戶\t\t\t*\n");//ok
printf("*\t\t2.查詢用戶\t\t\t*\n");//ok
printf("*\t\t3.修改用戶\t\t\t*\n");
printf("*\t\t4.洗掉用戶\t\t\t*\n");
printf("*\t\t5.設定服務物件\t\t\t*\n");
printf("*\t\t6.查詢服務物件\t\t\t*\n");
printf("*\t\t0.回傳 \t\t\t*\n");//ok
printf("*************************************************\n");
char b = _getche();
if (b == '0')
break;
switch (b)
{
case '1':
UserNew();
break;
case '2':
UserSeek();
break;
case '3':
UserChange();
break;
case '4':
UserDelete();
break;
case '5':
UserPerson();
break;
case '6':
PersonUserfile();
break;
default:
printf("輸入有誤,沒有該功能\n\n");
system("pause");
system("cls");
break;
}
}
system("cls");
}
2,新建用戶
通過鏈表創建新的節點,記得保存到檔案中
用戶資訊:名字,職務,電話號碼
void UserNew() {
int flag = 2;
while (head4 != NULL && end4->next != NULL)
{
end4 = end4->next;
}
while (flag != 1)
{
struct Entity* node = (struct Entity*)malloc(sizeof(struct Entity));
if (head4 == NULL)
{
head4 = node;
end4 = head4;
}
memset(node, 0, sizeof(struct Entity));
printf("*\t請輸入服務人員的名字\t*\n");
memset(node->name, '0', sizeof(node->name));
scanf("%s", node->name);
printf("*\t請輸入其職務\t*\n");
scanf("%s", node->work);
printf("*\t請輸入其的手機號碼\t*\n");
scanf_s("%lld", &node->number);//&指標得到值
printf("是否需要繼續輸入?否(1),是(2)\n");
scanf("%d", &flag);
end4->next = node;
end4 = node;
node->next = NULL;
}
system("cls");
puts("請記得保存用戶資訊!");
system("pause");
system("cls");
}
3,查詢用戶
通過電話號碼查詢
void UserSeek() {
FILE* fp1;
long long int n;
struct Entity* p = (struct Entity*)malloc(sizeof(struct Entity));
if ((fp1 = fopen(".\\用戶資訊.txt", "r")) == NULL)
{
printf("打開用戶資訊.txt檔案失敗\n");
return;
}
puts("輸入服務人員電話號碼");
scanf("%lld", &n);
while (1)
{
struct Entity* q = (struct Entity*)malloc(sizeof(struct Entity));
int nRead = fscanf(fp1, "%s %lld %s ", q->name, &q->number, q->work);//nRead等于要輸出引數的個數
if (3 == nRead && q->number == n)
{
puts("********************************");
puts("*姓名\t\t*職務\t\t*電話號碼*");
printf("*%-10s\t*%-10s\t*%-lld\n", q->name, q->work, q->number);
puts("********************************");
free(q);
break;
}
else
{
p->next = q;
p = q;
}
}
p->next = NULL;
fclose(fp1);
system("pause");
system("cls");
}
4,修改用戶
通過電話號碼找到資料,再對其進行重新輸入
創新思想:創建一個臨時檔案,再把需要的資料輸入到臨時檔案中,再把源檔案移除
再把臨時檔案重命名,ok!
void UserChange()
{
FILE* fp;
FILE* fp1;
long long int c = 0;
fp = fopen(".\\用戶資訊.txt", "r+");
fp1 = fopen(".\\linshi.txt", "w+");//讀新建一個臨時檔案
struct Entity* p = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* p1 = (struct Entity*)malloc(sizeof(struct Entity));
puts("請輸入你要修改用戶的電話號碼");
scanf("%lld", &p->number);
while (fscanf(fp, "%s %lld %s", p1->name, &p1->number, p->work) != EOF)//從原檔案讀一個結點
{
if (p->number != p1->number)//不是要洗掉的內容
{
fprintf(fp1, "%s %lld %s\n", p1->name, p1->number, p->work);
}
else
{
puts("請輸入用戶的姓名");
scanf("%s", p1->name);
puts("請輸入用戶的電話號碼");
scanf("%lld", &p1->number);
puts("請輸入用戶的職務");
scanf("%s", p1->work);
fprintf(fp1, "%s %lld %s\n", p1->name, p1->number, p->work);
}
}
free(p);
free(p1);
fclose(fp);
fclose(fp1);
remove(".\\用戶資訊.txt");
rename("linshi.txt", ".\\用戶資訊.txt");
puts("恭喜您修改成功");
system("pause");
system("cls");
}
5, 洗掉用戶資料
創新思想:創建一個臨時檔案,再把需要的資料輸入到臨時檔案中,再把源檔案移除
再把臨時檔案重命名,ok!
void UserDelete()
{
FILE* fp;
FILE* fp1;
fp = fopen(".\\用戶資訊.txt", "r+");
fp1 = fopen(".\\linshi.txt", "w+");//讀新建一個臨時檔案
struct Entity* p = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* p1 = (struct Entity*)malloc(sizeof(struct Entity));
puts("請輸入你要洗掉用戶的電話號碼");
scanf("%lld", &p->number);
while (fscanf(fp, "%s %lld %s", p1->name, &p1->number, p->work) != EOF)//從原檔案讀一個結點
{
if (p->number != p1->number)//不是要洗掉的內容
{
fprintf(fp1, "%s %lld %s\n", p1->name, p1->number, p->work);
}
}
free(p);
free(p1);
fclose(fp);
fclose(fp1);
remove(".\\用戶資訊.txt");
rename("linshi.txt", ".\\用戶資訊.txt");
puts("恭喜您洗掉成功");
system("pause");
system("cls");
}
6,設定服務物件
2個檔案,一個用戶資訊.txt,一個服務物件資訊
void UserPerson(){
system("cls");
long long int n;
FILE* fp1;
FILE* fp2;
struct Entity* p = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* q = (struct Entity*)malloc(sizeof(struct Entity));
if ((fp1 = fopen(".\\用戶資訊.txt", "r")) == NULL)
{
printf("打開用戶資訊.txt檔案失敗\n");
return;
}
if ((fp2 = fopen(".\\服務物件資訊.txt", "a+")) == NULL)
{
printf("打開服務人員資訊.txt檔案失敗\n");
return;
}
puts(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
puts("*輸入服務人員電話號碼");//設定服務人員
scanf("%lld", &n);
while (1)
{
int nRead = fscanf(fp1, "%s %lld %s", q->name, &q->number, q->work);//nRead等于要輸出引數的個數
if (3 == nRead && q->number == n)//找到服務物件
{
puts("********************************");
puts("*姓名\t*職務\t*電話號碼*");
printf("*%-10s\t*%-10s\t*%-lld\n", q->name, q->work, q->number);
puts("********************************");
puts("輸入服務的物件的名字");//服務的物件
scanf("%s", q->name1);
fprintf(fp2, "%s %s %lld %s\n", q->name, q->work,q->number,q->name1);
puts("服務成功");
free(q);
break;
}
else
{
p->next = q;
p = q;
}
if (nRead != 3)
printf("沒有這個號碼的服務人員");
}
p->next = NULL;
fclose(fp1);
system("pause");
system("cls");
}
7,查詢服務物件
八,檔案管理
1,檔案管理選單
檔案包括:檔案保存,檔案資料查詢,清空檔案資料
void FileMenu()
{
system("cls");
while (1) {
system("cls");
printf("*************************************************\n");
printf("*\t歡迎使用檔案管理功能\t\t\t*\n");
printf("*\t\t請選擇功能\t\t\t*\n");
printf("*************************************************\n");
printf("*\t\t1.檔案保存\t\t\t*\n");
printf("*\t\t2.檔案資料查詢\t\t\t*\n");
printf("*\t\t3.檔案資料清空\t\t\t*\n");
printf("*\t\t0.回傳\t\t\t\t*\n");
printf("*************************************************\n");
char b = _getch();
if (b == '0')
break;
switch (b)
{
case '1':
Savefile();
break;
case '2':
Filesercher();
break;
case '3':
flash();
break;
default:
printf("輸入有誤,沒有該功能\n\n");
system("pause");
system("cls");
break;
}
}
system("cls");
}
2,檔案資料保存
可以保存:會員,房屋,娛樂設施,用戶資料
ps:因為新建時是用的鏈表,所以必須要保存
創新(取巧):這里用了個switch,再用strcpy,給filename賦值,再進行操作
void Savefile() {
system("cls");
//打開檔案
while (1)
{
system("cls");
FILE* pFile;
printf("************************************************\n");
printf("*\t\t請輸入您想保存那個文本資料\t*\n");
printf("*\t\t輸入1,保存會員資料\t\t*\n*\t\t輸入2,保存房屋資料\t\t*\n");
printf("*\t\t輸入3,保存娛樂設施資料\t\t*\n*\t\t輸入4,保存用戶資料\t\t*\n");
printf("*\t\t輸入0,回傳\t\t\t*\n");
printf("*************************************************\n");
char ch2 = _getch();
if (ch2 == '0')
break;
struct Entity* p1 = NULL;
char filename[30] = { "0" };
switch (ch2)
{
case '1':
strcpy(filename, ".\\會員資訊.txt");
p1 = head2;
break;
case '2':
strcpy(filename, ".\\房屋資訊.txt");
p1 = head1;
break;
case '3':
strcpy(filename, ".\\娛樂設施資訊.txt");
p1 = head3;
break;
case '4':
strcpy(filename, ".\\用戶資訊.txt");
p1 = head4;
break;
case'\n':
break;
default:
printf("輸入有誤,沒有該功能\n\n");
system("pause");
system("cls");
break;
}
if (filename == ".\\用戶資訊.txt")
{
pFile = fopen(filename, "a+");
//檔案地址要改
fseek(pFile, 0, SEEK_END);
if (pFile == NULL) {
printf("打開檔案失敗,\n");
return;
}
else {//寫入資料
struct Entity* p = p1;
while (p != NULL)
{
fprintf(pFile, "%s %s %lld\n", p->name,p->number,p->work);
p = p->next;
}
//關閉檔案
fclose(pFile);
printf("%s資料保存成功,\n", filename);
system("pause");
system("cls");
}
}
else if (filename == ".\\會員資訊.txt")
{
pFile = fopen(filename, "a+");
//檔案地址要改
fseek(pFile, 0, SEEK_END);//末尾
if (pFile == NULL) {
printf("打開檔案失敗,\n");
return;
}
else {//寫入資料
struct Entity* p = p1;
while (p != NULL)
{
fprintf(pFile, "%s %lld %s \n", p->name, p->number, p->work);
p = p->next;
}
//關閉檔案
fclose(pFile);
printf("%s資料保存成功,\n", filename);
system("pause");
system("cls");
}
}
else if (filename == ".\\入住資訊.txt")
{
pFile = fopen(filename, "a+");
//檔案地址要改
fseek(pFile, 0, SEEK_END);//末尾
if (pFile == NULL) {
printf("打開檔案失敗,\n");
return;
}
else {//寫入資料
struct Entity* p = p1;
while (p != NULL)
{
fprintf(pFile,"%s %lld %s %d\n", p->name, p->number, p->work, p->message);
p = p->next;
}
//關閉檔案
fclose(pFile);
printf("%s資料保存成功,\n", filename);
system("pause");
system("cls");
}
}
else
{
pFile = fopen(filename, "a+");
//檔案地址要改
fseek(pFile, 0, SEEK_END);
if (pFile == NULL) {
printf("打開檔案失敗,\n");
return;
}
else {//寫入資料
struct Entity* p = p1;
while (p != NULL)
{
fprintf(pFile, "%s %lld %s \n", p->name, p->number, p->work);
p = p->next;
}
//關閉檔案
fclose(pFile);
printf("%s資料保存成功,\n", filename);
system("pause");
system("cls");
}
}
}
system("cls");
}
3,檔案資料查詢
@1,檔案查詢選單
可以查詢(列印)會員,房屋,娛樂設施,用戶人員,服務物件資訊
既是查詢,有是列印
void Filesercher() {
system("cls");
while (1) {
system("cls");
puts("******************************");
puts("*\t輸入1查詢會員資訊 *\t");
puts("*\t輸入2查詢房屋資訊 *\t");
puts("*\t輸入3查詢娛樂設施資訊*\t");
puts("*\t輸入4查詢用戶人員資訊*\t");
puts("*\t輸入5查詢入住資訊 *\t");
puts("*\t輸入6查詢服務物件資訊*\t");
puts("*\t輸入0退出 *\t");
puts("******************************");
char b = _getch();
if (b == '0')
break;
switch (b)
{
case '1':
Huiyuanfile();
break;
case '2':
Fangwufile();
break;
case '3':
Sheshifile();
break;
case '4':
Userfile();
break;
case '5':
Personfile();
break;
case '6':
PersonUserfile();
break;
default:
printf("輸入有誤,沒有該功能\n\n");
system("pause");
system("cls");
break;
}
}
system("cls");
}
@2,房屋檔案查詢
void Fangwufile()
{
system("cls");
FILE* fp;
struct Entity* p = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* q = (struct Entity*)malloc(sizeof(struct Entity));
if ((fp = fopen(".\\房屋資訊.txt", "r")) == NULL)
{
printf("打開房屋資訊.txt檔案失敗\n");
return;
}
else
{
puts("**********************************");
puts("*房屋型別\t\t*面積(m^2)");
while (1)
{
int nRead = fscanf(fp, "%s %lld", q->name, &q->number);//nRead等于要輸出引數的個數
if (2 == nRead)//判斷是否到了結尾
{
printf("*%-10s\t\t*%-lld*\n", q->name, q->number);
p->next = q;
p = q;
puts("**********************************");
}
else
{
free(q);
break;
}
}
}
p->next = NULL;
fclose(fp);
system("pause");
}
@3,會員檔案查詢
void Huiyuanfile()
{
system("cls");
FILE* fp;
struct Entity* p = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* q = (struct Entity*)malloc(sizeof(struct Entity));
if ((fp = fopen(".\\會員資訊.txt", "r")) == NULL)
{
printf("打開會員資訊.txt檔案失敗\n");
return;
}
else
{
puts("**********************************");
puts("*購買人\t\t*電話號碼\t*所購買的房型\t*");
while (1)
{
int nRead = fscanf(fp, "%s %lld %s", q->name, &q->number, q->work);//nRead等于要輸出引數的個數
if (3 == nRead)
{
printf("*%-10s\t*%-lld\t*%-10s\n", q->name, q->number, q->work);
p->next = q;
p = q;
}
else
{
free(q);
break;
}
}
puts("**********************************");
}
p->next = NULL;
fclose(fp);
system("pause");
system("cls");
}
@4,設施檔案查詢
void Sheshifile()
{
FILE* fp;
struct Entity* p = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* q = (struct Entity*)malloc(sizeof(struct Entity));
if ((fp = fopen(".\\娛樂設施資訊.txt", "r")) == NULL)
{
printf("打開娛樂設施資訊.txt檔案失敗\n");
return;
}
else
{
puts("*娛樂設施的名稱\t*可以使用的人數");
while (1)
{
int nRead = fscanf(fp, "%s %lld\n", q->name, &q->number);//nRead等于要輸出引數的個數
if (2 == nRead)
{
printf("*%-10s\t*%-lld\t\n", q->name, q->number);
p->next = q;
p = q;
}
else
{
free(q);
break;
}
}
}
p->next = NULL;
fclose(fp);
system("pause");
}
@5,用戶檔案查詢
void Userfile()
{
system("cls");
FILE* fp1;
struct Entity* p = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* q = (struct Entity*)malloc(sizeof(struct Entity));
if ((fp1 = fopen(".\\用戶資訊.txt", "r")) == NULL)
{
printf("打開用戶資訊.txt檔案失敗\n");
return;
}
puts("********************************");
puts("*姓名 \t*職務\t\t*電話號碼*");
while (1)
{
int nRead = fscanf(fp1, "%s %lld %s", q->name, &q->number,q->work);//nRead等于要輸出引數的個數
if (3 == nRead)
{
printf("*%-10s\t*%-10s\t*%-lld\n", q->name, q->work, q->number);
p->next = q;
p = q;
puts("********************************");
}
else
{
free(q);
break;
}
}
p->next = NULL;
fclose(fp1);
system("pause");
}
@6,入住檔案查詢
void Personfile() {
system("cls");
FILE* fp;
struct Entity* p = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* q = (struct Entity*)malloc(sizeof(struct Entity));
if ((fp = fopen(".\\入住資訊.txt", "r")) == NULL)
{
printf("打開入住資訊.txt檔案失敗\n");
return;
}
else
{
puts("******************************************************");
printf("*購買人\t\t*電話號碼\t*所購買的房型\t");
printf("*入住資訊\t\n");
while (1)
{
struct Entity* q = (struct Entity*)malloc(sizeof(struct Entity));
int nRead = fscanf(fp, "%s %lld %s %d\n", q->name, &q->number, q->work, &q->message);//nRead等于要輸出引數的個數
if (4 == nRead)
{
char b[20] = "\0";
if (q->message == 1)
strcpy(b, "入住");
else if (q->message == 2)
strcpy(b, "出租");
else strcpy(b, "閑置");
printf("*%-10s\t*%-lld\t*%-10s\t*%-10s\n", q->name, q->number, q->work, b);
p->next = q;
p = q;
}
else
{
free(q);
break;
}
}
}
p->next = NULL;
fclose(fp);
system("pause");
system("cls");
}
@7,服務物件檔案查詢
void PersonUserfile(){
system("cls");
FILE* fp1;
struct Entity* p = (struct Entity*)malloc(sizeof(struct Entity));
struct Entity* q = (struct Entity*)malloc(sizeof(struct Entity));
if ((fp1 = fopen(".\\服務物件資訊.txt", "r")) == NULL)
{
printf("打開服務物件資訊.txt檔案失敗\n");
return;
}
puts("********************************");
puts("*姓名 \t*職務\t\t*電話號碼\t*服務物件");
while (1)
{
int nRead = fscanf(fp1, "%s %s %lld %s\n", q->name, q->work, &q->number,q->name1);//nRead等于要輸出引數的個數
if (4 == nRead)
{
printf("*%-10s\t*%-10s\t*%-lld\t*%-10s\n", q->name, q->work, q->number,q->name1);
p->next = q;
p = q;
puts("********************************");
}
else
{
break;
}
}
p->next = NULL;
free(q);
fclose(fp1);
system("pause");
system("cls");
}
4,檔案資料清空
可以清空:會員,房屋,服務物件,娛樂設施,用戶,入住資訊
思想:switch,再用strcpy給filename賦值
重點:檔案打開方式為w+,再直接關閉即可!!!
void flash() {
system("cls");
//打開檔案
FILE* pFile;
puts("***********************************");
printf("*請輸入您想保存哪個清空資料\n");
printf("*輸入1,清慷訓員資料\n*輸入2,清空房屋資料\n*輸入3,清空服務物件資訊\n");
printf("*輸入4,清空娛樂設施資料\n*輸入5,清空用戶資料\n輸入6,清空入住資訊\n");
puts("***********************************");
char ch2 = _getch();
char filename[30] = { "0" };
switch (ch2)
{
case '1':
strcpy(filename, ".\\會員資訊.txt");
break;
case '2':
strcpy(filename, ".\\房屋資訊.txt");
break;
case '3':
strcpy(filename, ".\\服務物件資訊.txt");
break;
case '4':
strcpy(filename, ".\\娛樂設施資訊.txt");
break;
case '5':
strcpy(filename, ".\\用戶資訊.txt");
break;
case '6':
strcpy(filename, ".\\入住資訊.txt");
break;
case'\n':
break;
default:
printf("輸入有誤,沒有該功能\n\n");
system("pause");
system("cls");
break;
}
FILE* fp = fopen(filename, "w+");
if (fp == NULL)
{
printf("檔案未被打開\n");
}
else
{
fclose(fp);
printf("你已經清空%s\n", filename);
}
system("pause");
system("cls");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/234944.html
標籤:其他
上一篇:Java圖片上傳功能
下一篇:C語言實作單鏈表的增刪查改
