本文目錄一覽:
C語言課程設計難嗎?C語言這門課難還是課程設計難?
c語言課程設計不難。但是看問題人好像沒有學過C語言,那對你來說就難了。因為雖然C語言是一門很基礎的課程,但是想要突擊學會還是不太現實的,編程是需要一段代碼一段代碼敲出來,才會有實力提升的,很難突擊出來。所以如果沒學過C語言,C語言的課程設計難。
如果已經學習過了C語言,有了底子之後就不難了。原因有三:一:如果C語言底子不好的話,就去百度。C語言課程設計的題目都被大學生做爛了,網上到處是源代碼。老師出的題就算找不到元題,也能找到類似的題,照貓畫虎,就能夠交差了。二,C語言課程設計是把前面的知識綜合運用。如果C語言底子好,平時練習多,那麼只要能夠做到把課程設計題目細化為一個一個模塊—-函數,然後再把一個一個函數編輯出來,最後函數嵌套函數,一個課程設計就出來了。比如選課系統的設計。三:課程設計是個活的東西,底子好的人,你可以再原有程序加上很多內容,大大擴充自己的程序功能;一些不愛編程的人,完成基本功能也不難。所以不管怎麼樣,作業做出來還是簡單的。
例如選課系統的設計
查看所有課程——-顯示所有課程的函數。用數組,或者結構題,加上printf語句可以完成,這部分比較簡單。
查詢課程——查詢函數。根據關鍵字來查詢,也不難,如果用數組名來查詢,只需要把全部課程的名字與查詢課程對比就像。
選課—–選課函數。在儲存有學生課程的數組中,在最後再加一個數組元素就可以了。
刪除已選課程—-刪課函數。和添加差不多。
顯示自己已選函數。—-和現實所有課程差不多。
還有寫入寫出函數—–這個是不常用的東西,把一些信息在開始寫入我們的程序中,在最後把我們修改的信息儲存起來。
,,,,,,,
大體上一個簡單的選課系統就成了。完成這個程度,如果學習了C語言,應該是不難的。當然,這個程序還有很多的可以提升的地方,只要發揮自己的想像力,去動手,完善自覺地程序,做出來一份報告是不難的,不斷的改進,做出來一份拿出手的程序,也不是不可能的。
總結,C語言簡單,但是不可突擊。課程設計不難,想要做出一個好的課程設計作業出來,需要花點心思。
本人也不是什麼高手,只是粗談下自己的意見。
C語言課程設計
/******頭文件(.h)***********/
#include “stdio.h” /*I/O函數*/
#include “stdlib.h” /*標準庫函數*/
#include “string.h”/*字元串函數*/
#include “ctype.h” /*字元操作函數*/
#include “conio.h” /*控制台輸入輸出函數 */
#define M 50 /*定義常數表示記錄數*/
typedef struct /*定義數據結構*/
{
char name[20]; /*姓名*/
char units[30]; /*單位*/
char tele[20]; /*電話*/
char m_ph[20]; //手機
char rela[20]; //關係
char email[50]; //郵箱
char qq[20]; //qq
}ADDRESS;
/******以下是函數原型*******/
int enter(ADDRESS t[]); /*輸入記錄*/
void list(ADDRESS t[],int n); /*顯示記錄*/
void search(ADDRESS t[],int n); /*按姓名查找顯示記錄*/
int Delete(ADDRESS t[],int n); /*刪除記錄*/
int add(ADDRESS t[],int n); /*插入記錄*/
void save(ADDRESS t[],int n); /*記錄保存為文件*/
int load(ADDRESS t[]); /*從文件中讀記錄*/
void display(ADDRESS t[]); /*按序號查找顯示記錄*/
void sort(ADDRESS t[],int n); /*按姓名排序*/
void qseek(ADDRESS t[],int n); /*快速查找記錄*/
void print(ADDRESS temp); /*顯示單條記錄*/
int find(ADDRESS t[],int n,char *s) ; /*查找函數*/
int menu_select(); /*主菜單函數*/
/******主函數開始*******/
main()
{
system(“color 37”);//背景色為淺綠,前景色為白色
printf(” 歡迎使用通訊錄管理系統\n”);//歡迎界面
int i;
ADDRESS adr[M]; /*定義結構體數組*/
int length; /*保存記錄長度*/
for(;;)/*無限循環*/
{
switch(menu_select()) /*調用主菜單函數,返回值整數作開關語句的條件*/
{
case 0:length=enter(adr);break;/*輸入記錄*/
case 1:list(adr,length);break; /*顯示全部記錄*/
case 2:search(adr,length);break; /*查找記錄*/
case 3:length=Delete(adr,length);break; /*刪除記錄*/
case 4:length=add(adr,length); break; /*插入記錄*/
case 5:save(adr,length);break; /*保存文件*/
case 6:length=load(adr); break; /*讀文件*/
case 7:display(adr);break; /*按序號顯示記錄*/
case 8:sort(adr,length);break; /*按姓名排序*/
case 9:qseek(adr,length);break; /*快速查找記錄*/
case 10:exit(0); /*如返回值為10則程序結束*/
}
}
}
/*菜單函數,函數返回值為整數,代表所選的菜單項*/
int menu_select()
{
char s[80];
int c;
printf(“按任意鍵進入菜單……\n”);/*提示按任意鍵繼續*/
getch(); /*讀入任意字元*/
system(“cls”); /*清屏*/
printf(” ********************菜單***********************\n\n”);
printf(” 0. 輸入記錄\n”);
printf(” 1. 顯示所有記錄\n”);
printf(” 2. 按姓名查找記錄\n”);
printf(” 3. 刪除記錄\n”);
printf(” 4. 添加記錄\n”);
printf(” 5. 保存文件\n”);
printf(” 6. 載入文件\n”);
printf(” 7. 按序號顯示記錄\n”);
printf(” 8. 記錄排序\n”);
printf(” 9. 查找記錄\n”);
printf(” 10. 退出\n”);
printf(” ***********************************************\n”);
do
{
printf(“\n 請輸入選項(0~10):”); /*提示輸入選項*/
scanf(“%d”,c);/*輸入選擇項*/
fflush(stdin);
}while(c0 || c10);/*選擇項不在0~10之間重輸*/
return c; /*返回選擇項,主程序根據該數調用相應的函數*/
}
/***輸入記錄,形參為結構體數組,函數值返回類型為整型表示記錄長度*/
int enter(ADDRESS t[])
{
int i,n;
char num[30];
system(“cls”); /*清屏*/
int flag=1;
for(;;)
{
flag = 1;
system(“cls”); /*清屏*/
printf(“\n請輸入記錄數:\n”); /*提示信息*/
scanf(“%s”, num); /*輸入記錄數*/
fflush(stdin);
for(int nima = 0; num[nima]; nima++)
{
if (num[nima] 48 || num[nima] 57)
{
flag = 0;
break;
}
}
if(flag==1)
break;
}
n=atoi(num);
printf(“請輸入記錄:\n”); /*提示輸入記錄*/
printf(“姓名 單位 電話 手機 關係 郵箱 QQ\n”);
printf(“————————————————————————–\n”);
for(i=0;in;i++)
{
scanf(“%s%s%s%s%s%s%s”,t[i].name,t[i].units,t[i].tele,t[i].m_ph,t[i].rela,t[i].email,t[i].qq); /*輸入記錄*/
fflush(stdin);
for(int k=0;k=19;k++)
{
if((t[i].tele[k]=’a’ t[i].tele[k]=’z’ )|| (t[i].tele[k]=’A’ t[i].tele[k]=’Z’))
{
printf(“電話輸入錯誤!請重新輸入聯繫人信息\n”);
i–;
break;
}
if((t[i].m_ph[k]=’a’ t[i].m_ph[k]=’z’ )|| (t[i].m_ph[k]=’A’ t[i].m_ph[k]=’Z’))
{
printf(“手機輸入錯誤!請重新輸入聯繫人信息\n”);
i–;
break;
}
if((t[i].qq[k]=’a’ t[i].qq[k]=’z’ )|| (t[i].qq[k]=’A’ t[i].qq[k]=’Z’))
{
printf(“QQ輸入錯誤!請重新輸入聯繫人信息\n”);
i–;
break;
}
}
printf(“————————————————————————–\n”);
}
return n; /*返回記錄條數*/
}
/*顯示記錄,參數為記錄數組和記錄條數*/
void list(ADDRESS t[],int n)
{
int i;
system(“cls”); /*清屏*/
printf(“\n\n************************************************************************\n”);
printf(“姓名 單位 電話 手機 關係 郵箱 QQ\n”);
printf(“————————————————————————–\n”);
for(i=0;in;i++)
printf(“%-10s%-14s%-12s%-12s%-10s%-12s%-14s\n”,t[i].name,t[i].units,t[i].tele,t[i].m_ph,t[i].rela,t[i].email,t[i].qq);
if((i+1)%10==0) /*判斷輸出是否達到10條記錄*/
{
printf(“按任意鍵顯示下一頁\n”); /*提示信息*/
getch(); /*按任意鍵繼續*/
}
printf(“*********************************結束***********************************\n”);
}
/*查找記錄*/
void search(ADDRESS t[],int n)
{
char s[20]; /*保存待查找姓名字元串*/
int i; /*保存查找到結點的序號*/
system(“cls”); /*清屏*/
printf(“請輸入待查找姓名:\n”);
scanf(“%s”,s); /*輸入待查找姓名*/
i=find(t,n,s); /*調用find函數,得到一個整數*/
if(in-1) /*如果整數i值大於n-1,說明沒找到*/
{
printf(“未找到!!!\n”);
getch();
}
else
print(t[i]); /*找到,調用顯示函數顯示記錄*/
}
/*顯示指定的一條記錄*/
void print(ADDRESS temp)
{
system(“cls”); /*清屏*/
printf(“\n\n************************************************************************\n”);
printf(“姓名 單位 電話 手機 關係 郵箱 QQ\n”);
printf(“————————————————————————–\n”);
printf(“%-10s%-14s%-12s%-12s%-10s%-12s%-14s\n”,temp.name,temp.units,temp.tele,temp.m_ph,temp.rela,temp.email,temp.qq);
printf(“*********************************結束***********************************\n”);
getchar();
}
/*查找函數,參數為記錄數組和記錄條數以及姓名s */
int find(ADDRESS t[],int n,char *s)
{
int i;
system(“cls”); /*清屏*/
for(i=0;in;i++)/*從第一條記錄開始,直到最後一條*/
{
if(strcmp(s,t[i].name)==0) /*記錄中的姓名和待比較的姓名是否相等*/
return i; /*相等,則返回該記錄的下標號,程序提前結結束*/
}
return i; /*返回i值*/
getch();
}
/*刪除函數,參數為記錄數組和記錄條數*/
int Delete(ADDRESS t[],int n)
{
char s[20]; /*要刪除記錄的姓名*/
char ch;
int i,j;
system(“cls”); /*清屏*/
printf(“請輸入待刪除的姓名:\n”); /*提示信息*/
scanf(“%s”,s);/*輸入姓名*/
i=find(t,n,s); /*調用find函數*/
if(in-1) /*如果in-1超過了數組的長度*/
printf(“未找到!!!\n”); /*顯示沒找到要刪除的記錄*/
else
{
print(t[i]); /*調用輸出函數顯示該條記錄信息*/
printf(“確定刪除?(Y/N)\n”); /*確認是否要刪除*/
scanf(“%c”,ch); /*輸入一個整數0或1*/
if(ch==’y’ || ch==’Y’) /*如果確認刪除輸入y*/
{
for(j=i+1;jn;j++) /*刪除該記錄,實際後續記錄前移*/
{
strcpy(t[j-1].name,t[j].name); /*將後一條記錄的姓名拷貝到前一條*/
strcpy(t[j-1].units,t[j].units); /*將後一條記錄的單位拷貝到前一條*/
strcpy(t[j-1].tele,t[j].tele); /*將後一條記錄的電話拷貝到前一條*/
strcpy(t[j-1].m_ph,t[j].m_ph); /*將後一條記錄的手機拷貝到前一條*/
strcpy(t[j-1].rela,t[j].rela); /*將後一條記錄的關係拷貝到前一條*/
strcpy(t[j-1].email,t[j].email); /*將後一條記錄的郵箱拷貝到前一條*/
strcpy(t[j-1].qq,t[j].qq); /*將後一條記錄的qq拷貝到前一條*/
}
printf(“刪除成功!\n”);
n–; /*記錄數減1*/
}
}
getch();
return n; /*返回記錄數*/
}
/*插入記錄函數,參數為結構體數組和記錄數*/
int add(ADDRESS t[],int n)/*插入函數,參數為結構體數組和記錄數*/
{
ADDRESS temp; /*新插入記錄信息*/
int i,j,flag;
char s[30]; /*確定插入在哪個記錄之前*/
system(“cls”); /*清屏*/
printf(“請輸入記錄:\n”);
printf(“************************************************************************\n”);
printf(“姓名 單位 電話 手機 關係 郵箱 QQ\n”);
printf(“————————————————————————–\n”);
scanf(“%s%s%s%s%s%s%s”,temp.name,temp.units,temp.tele,temp.m_ph,temp.rela,temp.email,temp.qq); /*輸入插入信息*/
fflush(stdin);
printf(“請輸入插入位置的姓名: \n”);
scanf(“%s”,s); /*輸入插入位置的姓名*/
i=find(t,n,s); /*調用find,確定插入位置*/
for(j=n-1;j=i;j–) /*從最後一個結點開始向後移動一條*/
{
strcpy(t[j+1].name,t[j].name); /*當前記錄的姓名拷貝到後一條*/
strcpy(t[j+1].units,t[j].units); /*當前記錄的單位拷貝到後一條*/
strcpy(t[j+1].tele,t[j].tele); /*當前記錄的電話拷貝到後一條*/
strcpy(t[j+1].m_ph,t[j].m_ph); /*當前記錄的手機拷貝到後一條*/
strcpy(t[j+1].rela,t[j].rela); /*當前記錄的關係拷貝到後一條*/
strcpy(t[j+1].email,t[j].email); /*當前記錄的郵箱拷貝到後一條*/
strcpy(t[j+1].qq,t[j].qq); /*當前記錄的qq拷貝到後一條*/
}
strcpy(t[i].name,temp.name); /*將新插入記錄的姓名拷貝到第i個位置*/
strcpy(t[i].units,temp.units); /*將新插入記錄的單位拷貝到第i個位置*/
strcpy(t[i].tele,temp.tele); /*將新插入記錄的電話拷貝到第i個位置*/
strcpy(t[i].m_ph,temp.m_ph); /*將新插入記錄的手機拷貝到第i個位置*/
strcpy(t[i].rela,temp.rela); /*將新插入記錄的關係拷貝到第i個位置*/
strcpy(t[i].email,temp.email); /*將新插入記錄的郵箱拷貝到第i個位置*/
strcpy(t[i].qq,temp.qq); /*將新插入記錄的qq拷貝到第i個位置*/
n++; /*記錄數加1*/
printf(“添加成功!!!\n”);
getch();
return n; /*返回記錄數*/
}
/*保存函數,參數為結構體數組和記錄數*/
void save(ADDRESS t[],int n)
{
int i;
char outfile[30];
FILE *fp; /*指向文件的指針*/
system(“cls”); /*清屏*/
printf(“請輸入待保存的文件名:\n”);
scanf(“%s”,outfile);
if((fp=fopen(outfile,”wb”))==NULL) /*打開文件,並判斷打開是否正常*/
{
printf(“無法打開文件!\n”);/*無法打開*/
exit(1); /*退出*/
}
printf(“\n保存文件…\n”); /*輸出提示信息*/
fprintf(fp,”%d”,n); /*將記錄數寫入文件*/
fprintf(fp,”\r\n”); /*將換行符號寫入文件*/
for(i=0;in;i++)
{
fprintf(fp,”%-10s%-14s%-12s%-12s%-10s%-12s%-14s\n”,t[i].name,t[i].units,t[i].tele,t[i].m_ph,t[i].rela,t[i].email,t[i].qq);/*格式寫入記錄*/
fprintf(fp,”\r\n”); /*將換行符號寫入文件*/
}
fclose(fp);/*關閉文件*/
printf(“****保存成功!****\n”); /*顯示保存成功*/
getch();
}
/*載入函數,參數為結構體數組*/
int load(ADDRESS t[])
{
int i,n;
char outfile[30];
FILE *fp; /*指向文件的指針*/
system(“cls”); /*清屏*/
printf(“請輸入待載入的文件名:\n”);
scanf(“%s”,outfile);
if((fp=fopen(outfile,”rb”))==NULL)/*打開文件*/
{
printf(“無法打開文件!\n”); /*不能打開*/
exit(1); /*退出*/
}
fscanf(fp,”%d”,n); /*讀入記錄數*/
for(i=0;in;i++)
fscanf(fp,”%10s%14s%12s%12s%10s%12s%14s”,t[i].name,t[i].units,t[i].tele,
t[i].m_ph,t[i].rela,t[i].email,t[i].qq); /*按格式讀入記錄*/
fclose(fp); /*關閉文件*/
printf(“從文件讀入數據成功!!!\n”); /*顯示保存成功*/
getch();
return n; /*返回記錄數*/
}
/*按序號顯示記錄函數*/
void display(ADDRESS t[])
{
int id,n;
char outfile[30];
FILE *fp; /*指向文件的指針*/
system(“cls”); /*清屏*/
printf(“請輸入待載入的文件名:”);
scanf(“%s”,outfile);
if((fp=fopen(outfile,”rb”))==NULL) /*打開文件*/
{
printf(“無法打開文件!\n”); /*不能打開文件*/
exit(1); /*退出*/
}
printf(“請輸入記錄序號:\n”); /*顯示信息*/
scanf(“%d”,id); /*輸入序號*/
fscanf(fp,”%d”,n); /*從文件讀入記錄數*/
if(id=0idn) /*判斷序號是否在記錄範圍內*/
{
fseek(fp,(id-1)*sizeof(ADDRESS),1); /*移動文件指針到該記錄位置*/
print(t[id]); /*調用輸出函數顯示該記錄*/
printf(“\r\n”);
}
else
{
printf(” %d號記錄不存在!!!\n “,id); /*如果序號不合理顯示信息*/
getch();
}
fclose(fp); /*關閉文件*/
}
/*排序函數,參數為結構體數組和記錄數*/
void sort(ADDRESS t[],int n)
{
int i,j,flag;
system(“cls”); /*清屏*/
ADDRESS temp; /*臨時變數做交換數據用*/
for(i=0;in;i++)
{
flag=0; /*設標誌判斷是否發生過交換*/
for(j=0;jn-1;j++)
if((strcmp(t[j].name,t[j+1].name))0) /*比較大小*/
{
flag=1;
strcpy(temp.name,t[j].name); /*交換記錄*/
strcpy(temp.units,t[j].units);
strcpy(temp.tele,t[j].tele);
strcpy(temp.m_ph,t[j].m_ph);
strcpy(temp.rela,t[j].rela);
strcpy(temp.email,t[j].email);
strcpy(temp.qq,t[j].qq);
strcpy(t[j].name,t[j+1].name);
strcpy(t[j].units,t[j+1].units);
strcpy(t[j].tele,t[j+1].tele);
strcpy(t[j].m_ph,t[j+1].m_ph);
strcpy(t[j].rela,t[j+1].rela);
strcpy(t[j].email,t[j+1].email);
strcpy(t[j].qq,t[j+1].qq);
strcpy(t[j+1].name,temp.name);
strcpy(t[j+1].units,temp.units);
strcpy(t[j+1].tele,temp.tele);
strcpy(t[j+1].m_ph,temp.m_ph);
strcpy(t[j+1].rela,temp.rela);
strcpy(t[j+1].email,temp.email);
strcpy(t[j+1].qq,temp.qq);
}
if(flag==0)break; /*如果標誌為0,說明沒有發生過交換循環結束*/
}
printf(“排序成功!!!\n”); /*顯示排序成功*/
}
/*快速查找,參數為結構體數組和記錄數*/
void qseek(ADDRESS t[],int n)
{
char s[20];
int l,r,m;
system(“cls”); /*清屏*/
printf(“\n請在查找前排序!\n”); /*提示確認在查找之前,記錄是否已排序*/
printf(“請輸入待查找的姓名:\n”); /*提示輸入*/
scanf(“%s”,s); /*輸入待查找的姓名*/
l=0;r=n-1; /*設置左邊界與右邊界的初值*/
while(l=r) /*當左邊界=右邊界時*/
{
m=(l+r)/2; /*計算中間位置*/
if(strcmp(t[m].name,s)==0) /*與中間結點姓名欄位做比較判是否相等*/
{
print(t[m]); /*如果相等,則調用print函數顯示記錄信息*/
return ; /*返回*/
}
if(strcmp(t[m].name,s)0) /*如果中間結點小*/
l=m+1; /*修改左邊界*/
else
r=m-1; /*否則,中間結點大,修改右邊界*/
}
if(lr) /*如果左邊界大於右邊界時*/
printf(“未找到!\n”); /*顯示沒找到*/
getch();
}
c語言課程設計?
之前寫過的,你可以拿去參考
#includestdio.h
#includestring.h
#includestdlib.h
typedef struct guest
{
int number;
char name[10];
int sum;
char time[5];
struct guest *next;
}GuestLink,*Pointer;
GuestLink stu[10];
int i,j,k;
void Insert(Pointer *Head);
void Search(Pointer Head);
void Update(Pointer Head);
void Delete(Pointer *Head);
void Show(Pointer Head);
void Sort(Pointer Head);
void Save(Pointer Head);
void Put(Pointer Head);
int main()
{
Pointer Head=NULL;
int i;
do{
printf(“
“);
printf(“1—增加訂餐客戶信息
“);
printf(“2—查詢訂餐客戶信息
“);
printf(“3—修改訂餐客戶信息
“);
printf(“4—刪除訂餐客戶信息
“);
printf(“5—瀏覽客戶訂餐信息
“);
printf(“6—按照用餐時間升序排序
“);
printf(“7—保存訂餐信息到數據文件
“);
printf(“8—查看數據文件中的訂餐信息
“);
printf(“9—退出
“);
printf(“
“);
printf(“請選擇1–9:”);
scanf(“%d”,i);
switch(i)
{
case 1:Insert(Head);
break;
case 2:Search(Head);
break;
case 3:Update(Head);
break;
case 4:Delete(Head);
break;
case 5:Show(Head);
break;
case 6:Sort(Head);
break;
case 7:Save(Head);
break;
case 8:Put(Head);
break;
case 9:
break;
default:printf(“選擇錯誤!請重新選擇!”);
break;
}
}while(i!=9);
return 0;
}
void Insert(Pointer *Head)
{
int in_number;
Pointer p,q,r;
printf(“請輸入編號:
“);
scanf(“%d”,in_number);
p=q=*Head;
while(p!=NULL)
{
if(p-number==in_number)
{
printf(“已經有相同編號:”);
return;
}
else
{
q=p;p=p-next;
}
}
r=(Pointer)malloc(sizeof(GuestLink));//沒有*號
r-next=NULL;
if(r==NULL)
{
printf(“分配空間失敗”);
return;
}
if(q==NULL)//如果是空表,判斷空表用q!!!!
*Head=r;
else
{q-next=r;}
r-number=in_number;
printf(“請輸入姓名:
“);
scanf(“%s”,r-name);
printf(“請輸入人數:
“);
scanf(“%d”,r-sum);
printf(“請輸入時間:
“);
scanf(“%s”,r-time);
}
/*
void Insert(Pointer *Head)
{int in_number;
Pointer p,q,r;
p=q=*Head;
printf(“請輸入號碼:”);
scanf(“%d”,in_number);
while(p!=NULL)
{
if(in_number==p-number)
{printf(“已存在號碼!”);}
else
{q=p;p=p-next;}
}
r=(Pointer)malloc(sizeof GuestLink);
r-next=NULL;
if(q==NULL)
*Head=r;
else
q-next=r;
printf(“請輸入姓名:”);
scanf(“%s”,r-name);
printf(“請輸入人數”);
scanf(“%f”,r-sum);
printf(“請輸入時間”);
scanf(“%s”,r-time);
}*/
void Search(Pointer Head)
{
int flag=1;
int number;
Pointer p;
printf(“請輸入要查詢的編號:”);
scanf(“%d”,number);
p=Head;
while(p!=NULLflag)
{
if(p-number==number)
{ printf(“編號\t姓名\t人數\t時間
“);
printf(“%s\t”,p-name);
printf(“%d\t”,p-sum);
printf(“%s\t
“,p-time);
flag=0;
}
else
p=p-next;
}
if(flag)
printf(“沒有查詢到!”);
}
/*
void Search(Pointer Head)
{
int flag=0;
int number;
Pointer p;
p=Head;
printf(“請輸入您要查找的編號:”);
scanf(“%f”,number);
while(p!=NULLflag)
{
if(p-number==number)
{
printf(“已查詢到您要的編號”);
flag=0;
}
else
{
p=p-next;
}
}
if(flag==1)
{printf(“姓名:%s”,p-name);
printf(“編號:%f”,p-number);
printf(“人數:%f”,p-sum);
printf(“時間:%s”,p-time);
}
else
{printf(“沒有查詢到您要查詢的編號!”);}
}
*/
void Update(Pointer Head)
{
int flag=1;
int number;
Pointer p;
printf(“請輸入要修改的編號:”);
scanf(“%d”,number);
p=Head;
while(p!=NULLflag)
{
if(p-number==number)
{
printf(“請輸入人數:”);
scanf(“%d”,p-sum);
printf(“請輸入用餐時間:”);
scanf(“%s”,p-time);
flag=0;
}
else
p=p-next;
}
if(flag)
printf(“沒有找到要修改的記錄!”);
}
//update與查詢過程相似!!!
void Delete(Pointer *Head)
{
int flag=1;
int number;
Pointer p,q;
printf(“請輸入要刪除的數據編號:”);
scanf(“%d”,number);
p=q=*Head;
while(p!=NULLflag)
{
if(p-number==number)
{
if(p==*Head)
{
*Head=p-next;free(p);//刪除結點後要及時釋放內存!!!
}
else
{q-next=p-next;free(p);}
flag=0;
}
else
{q=p;p=p-next;}
}
if(flag)
printf(“沒有找到可以刪除的數據!!”);
}
/*
void Delete(Pointer *Head)
{
Pointer p,q;
p=q=*Head;
int number;
int flag=1;
printf(“請輸入您要刪除的結點:”);
scanf(“%d”,number);
while(p!=NULL)
{
if(p-number==number)
{ if(p==*Head)
{
*Head=p-next;free(p);
}
else
{
q-next=p-next;free(p);
}
flag=0;
}
else
{
q=p;p=p-next;
}
}
if(flag)
{printf(“沒有找到要刪除的數據!”);}
}
*/
void Show(Pointer Head)
{
Pointer p;
p=Head;
printf(“編號\t姓名\t人數\t用餐時間
“);
while(p!=NULL)
{
printf(“%d\t”,p-number);
printf(“%s\t”,p-name);
printf(“%d\t”,p-sum);
printf(“%s\t
“,p-time);
p=p-next;
}
}
void Sort(Pointer Head)
{
//三個for循環,第一個賦給結構數組 第二個排序,第三個輸出
Pointer p;
p=Head;
int count=0;
GuestLink temp;
for(i=0;p!=NULL;i++)
{
strcpy(stu[i].name,p-name);
stu[i].number=p-number;
stu[i].sum=p-sum;
strcpy(stu[i].time,p-time);
count++;
p=p-next;
}
for(i=0;icount-1;i++)
{
k=i;
for(j=i+1;jcount;j++)
if(strcmp(stu[j].time,stu[k].time)0)k=j;
if(k!=i)
{temp=stu[i];stu[i]=stu[k];stu[k]=temp;}//一個字都不能改!!!!
//{temp=stu[k];stu[k]=stu[i];stu[i]=temp;}
}
printf(“編號\t姓名\t人數\t用餐時間
“);
for(i=0;icount;i++)
{
printf(“%d\t”,stu[i].number);
printf(“%s\t”,stu[i].name);
printf(“%d\t”,stu[i].sum);
printf(“%s\t
“,stu[i].time);
}
}
/*Head=p=stu;
while(p!=NULL)
{
printf(“姓名:%-10s”,p-name);
printf(“人數:%-10d”,p-sum);
printf(“用餐時間:%-10s”,p-time);
printf(“編號:%-10d
“,p-number);
p=p-next;
}*/
/*
void Sort(Pointer Head)
{
Pointer p;
p=Head;
GuestLink temp;
count=0;
while(p!=NULL)
{p=p-next;
count++;
}
p=Head;
while(p!=NULL)
{for(i=0;icount;i++)
{
stu[i].number=p-number;
strcpy(stu[i].name,p-name);
stu[i].sum=p-sum;
strcpy(stu[i].time,p-time);
}
p=p-next;
}
for(i=0;icount-1;i++)
{
k=i;
for(j=0;jcount;j++)
{if(strcmp(stu[j].time,stu[k].time)0)k=j;
if(k!=i)
{temp=stu[k];stu[k]=stu[i];temp=stu[i];}
}
}
}
*/
void Save(Pointer Head)
{
Pointer p;
FILE *fp;
p=Head;
for(i=0;p!=NULL;i++)
{
strcpy(p-name,stu[i].name);
p-number=stu[i].number;
p-sum=stu[i].sum;
strcpy(p-time,stu[i].time);
p=p-next;
}
if((fp=fopen(“stud”,”w”))==NULL)
{printf(“can’t open !”);}
p=Head;
while(p!=NULL)
{
if(fwrite(p,sizeof(GuestLink),1,fp)!=1)
printf(“can’t write!
“);
p=p-next;
}
fclose(fp);
}
/*
void Save(Pointer Head)
{
FILE *fp;
Pointer p;
p=Head;
for(i=0;p!=NULL;i++)
{
stu[i].number=p-number;
strcpy(stu[i].name,p-name);
stu[i].sum=p-sum;
strcpy(stu[i].time,p-time);
p=p-next;
}
p=Head;
if((fp=fopen(“stud”,”w”))==NULL)
{
printf(“cam’t open the file”);
}
for(i=0;icount;i++)
if(fwrite(p,sizeof(GuestLink),1,fp)!=1)
{
printf(“cant write”);
}
fclose(fp);
}
*/
void Put(Pointer Head)
{
FILE *fp;
Pointer p;
p=Head;
if((fp=fopen(“stud”,”r”))==NULL)
{printf(“can’t open the File
“);}
printf(“編號\t姓名\t人數\t用餐時間
“);
while(p!=NULL)
{
if(fread(p,sizeof(GuestLink),1,fp)!=1)
{printf(“can’t read!”);}
printf(“%d\t”,p-number);
printf(“%s\t”,p-name);
printf(“%d\t”,p-sum);
printf(“%s\t
“,p-time);
p=p-next;
}
fclose(fp);
}
採納哦~
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/247767.html