c語言課程設計,c語言課程設計學生成績管理系統

本文目錄一覽:

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:23
下一篇 2024-12-12 13:23

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python數據處理課程設計

    本文將從多個方面對Python數據處理課程設計進行詳細闡述,包括數據讀取、數據清洗、數據分析和數據可視化四個方面。通過本文的學習,讀者將能夠了解使用Python進行數據處理的基本知…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 數據結構學生成績管理系統

    在現代教育中,學生成績的管理已經成為了一個不可或缺的部分。藉助數據結構,一個高效、可靠的學生成績管理系統可以被輕鬆實現。 一、數據結構的選擇 在構建學生成績管理系統時,選擇合適的數…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28

發表回復

登錄後才能評論