C語(yǔ)言課程設(shè)計(jì)大學(xué)社團(tuán)管理系統(tǒng)_第1頁(yè)
C語(yǔ)言課程設(shè)計(jì)大學(xué)社團(tuán)管理系統(tǒng)_第2頁(yè)
C語(yǔ)言課程設(shè)計(jì)大學(xué)社團(tuán)管理系統(tǒng)_第3頁(yè)
C語(yǔ)言課程設(shè)計(jì)大學(xué)社團(tuán)管理系統(tǒng)_第4頁(yè)
C語(yǔ)言課程設(shè)計(jì)大學(xué)社團(tuán)管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、2010/5/29東北大學(xué)秦皇島分校c語(yǔ)言課程設(shè)計(jì)一、 有關(guān)變量、結(jié)構(gòu)體的說(shuō)明:1) 對(duì)變量的說(shuō)明:num是對(duì)成員的學(xué)號(hào)的定義數(shù)組,長(zhǎng)度為不超過(guò)10個(gè);name是對(duì)成員的姓名的定義數(shù)組,長(zhǎng)度不超過(guò)20個(gè)字符;phone是對(duì)成員的手機(jī)號(hào)的定義,為一長(zhǎng)整形;number是對(duì)活動(dòng)的隊(duì)長(zhǎng)的學(xué)號(hào)的定義數(shù)組,長(zhǎng)度不超過(guò)10個(gè)字符;nam是對(duì)活動(dòng)名稱的定義數(shù)組,活動(dòng)名稱所占字符不超過(guò)30個(gè);date是對(duì)活動(dòng)日期的定義,定義類型為整形。2) 對(duì)結(jié)構(gòu)體的說(shuō)明:在本程序中定義了兩個(gè)結(jié)構(gòu)體,分別為member和activity,分別包含了社團(tuán)中的成員信息和社團(tuán)活動(dòng)信息,這兩個(gè)結(jié)構(gòu)體分別包含了num,name,pho

2、ne和number,nam,date等來(lái)實(shí)現(xiàn)程序的功能,這些在源文件的注釋中都有體現(xiàn)。3) 對(duì)函數(shù)的說(shuō)明: input() 成員信息輸入 display() 顯示所有成員信息 sort_by_num() 按照成員學(xué)號(hào)對(duì)成員進(jìn)行排序 delete_a_record() 刪除一條成員信息 query_a_record() 查找并顯示一個(gè)成員的信息 addfromtext() 從文本文檔中添加成員信息 writetotext() 將成員信息寫入文本文檔 input_act() 活動(dòng)信息輸入display_act() 顯示所有活動(dòng)信息delete_a_act() 刪除一條活動(dòng)記錄query() 查詢并

3、顯示一條活動(dòng)信息addfromtext() 從文本文檔中讀取活動(dòng)信息writetotext() 將活動(dòng)信息寫入寫入文本文檔二、 樹形結(jié)構(gòu)模塊圖:三、操作說(shuō)明:這個(gè)程序很容易上手,運(yùn)行該程序時(shí),在出現(xiàn)的界面上會(huì)出現(xiàn)14個(gè)選項(xiàng),分別為:1) 成員信息輸入;2) 顯示所有成員記錄;3) 將成員按學(xué)號(hào)排序;4) 刪除一條成員信息;5) 成員信息查詢;6) 從文本文檔中讀取成員信息;7) 將成員信息寫入文本文檔;8) 活動(dòng)信息輸入;9) 顯示所喲活動(dòng)信息;10) 刪除一條活動(dòng)信息;11) 活動(dòng)信息查詢;12) 從文本文檔中讀取數(shù)據(jù);13) 將活動(dòng)信息寫入文本文檔;0) 退出系統(tǒng)。具體如下所示:1. 起始

4、歡迎界面2. 成員信息輸入3. 顯示所有成員信息4. 將成員按照學(xué)號(hào)排序5. 刪除一條成員信息6. 成員信息查詢7. 從文本文檔中讀取成員信息8. 將成員信息寫入文本文檔9. 活動(dòng)信息輸入10. 顯示所有活動(dòng)信息11. 刪除一條活動(dòng)信息12. 活動(dòng)信息查詢13. 從文本文檔中讀取活動(dòng)信息此為讀取數(shù)據(jù)失敗時(shí)的提示。14. 將活動(dòng)信息寫入文本文檔15. 退出系統(tǒng)在操作時(shí)只需按照提示和自己的需要完成操作即可,簡(jiǎn)單容易,有效地節(jié)省使用者的時(shí)間,有效地提高工作效率。四、 源程序及代碼:#include<stdio.h> /引用庫(kù)函數(shù)#include<stdlib.h>#inclu

5、de<ctype.h>#include<string.h>typedef struct /定義結(jié)構(gòu)體數(shù)組char num10; /學(xué)號(hào)char name30; /姓名long phone; /手機(jī)號(hào)碼member;member meme80; /結(jié)構(gòu)體數(shù)組變量typedef structchar number10; /學(xué)號(hào)char nam20; /活動(dòng)名稱int date; /活動(dòng)日期activity;activity act80;int menu_select() /菜單函數(shù)int c;dosystem("cls"); /運(yùn)行前清屏printf(&

6、quot;n");printf("*歡 迎 使 用 大 學(xué) 社 團(tuán) 管 理 系 統(tǒng)*n"); /*菜單選擇*/ printf(" 1. 成員信息輸入;n"); printf(" 2. 顯示所有成員記錄;n"); printf(" 3. 將成員按學(xué)號(hào)排序;n"); printf(" 4. 刪除一條成員信息;n"); printf(" 5. 成員信息查詢;n"); printf(" 6. 從文本文檔中讀取成員信息;n");printf("

7、7. 將成員信息寫入文本文檔;n"); printf(" 8. 活動(dòng)信息輸入;n"); printf(" 9. 顯示所有活動(dòng)信息;n"); printf(" 10. 刪除一條活動(dòng)信息;n"); printf(" 11. 活動(dòng)信息查詢;n");printf(" 12. 從文本文檔中讀取活動(dòng)信息;n");printf(" 13. 將活動(dòng)信息寫入文本文檔;n"); printf(" 0. 退出系統(tǒng)。n"); printf("*n")

8、; printf("*|歡迎 使用|歡迎 使用|*n"); printf("*n"); printf("n"); printf("請(qǐng)?jiān)?13之間做出選擇:"); scanf("%d",&c); /讀入選擇while(c<0|c>13);return(c); /返回選擇int input(member mem,int n) /輸入成員信息int i=0;char sign,x10; /x10為了清除多余的數(shù)據(jù)while(sign!='n'&&si

9、gn!='n') /判斷printf("成員學(xué)號(hào):"); /交互式輸入scanf("%s",memn+i.num);printf("成員姓名:");scanf("%s",memn+);printf("成員手機(jī)號(hào):");scanf("%ld",&memn+i.phone);gets(x); /清除多余的輸入printf("要輸入更多的成員信息嗎?(y/n)");scanf("%c",&sign)

10、; /輸入判斷i+;return(n+i);void display(member mem,int n) /顯示所有成員記錄int i;printf("-n"); /*格式頭*/ printf(" 學(xué)號(hào) 姓名 手機(jī)n"); printf("-n"); for(i=1;i<n+1;i+) /循環(huán)輸入printf("%-16s%-15s%ldn",memi-1.num,,memi-1.phone); if(i>1&&i%10=0) /每十個(gè)暫停printf("

11、-n"); /*格式*/ system("pause");printf("-n"); printf("n");system("pause");void sort_by_num(member mem,int n) /對(duì)成員按照學(xué)號(hào)排序int i,j,*p,*q,s; /定義指針類型用以排序char t10;for(i=0;i<n-1;i+) /冒泡法排序for(j=0;j<n-1;j+)if(strcmp(memj.num,memj+1.num)>0) strcpy(t,memj+1.nu

12、m);strcpy(memj+1.num,memj.num); strcpy(memj.num,t); strcpy(t,memj+1.name); strcpy(memj+1.name,); strcpy(,t); p=&memj+1.phone; q=&memj.phone; s=*p;*p=*q;*q=s;int delete_a_record(member mem,int n) /按姓名查找并刪除一條成員信息char s20;int i=0,j;printf("請(qǐng)輸入要?jiǎng)h除的成員姓名:"); /交互式問(wèn)詢scanf

13、("%s",s);while(strcmp(,s)!=0&&i<n) i+; /*查找判斷*/ if(i=n)printf("未發(fā)現(xiàn)此成員!n");return(n); /返回失敗信息for(j=1;j<n-1;j+)strcpy(memj.num,memj+1.num); strcpy(,memj+1.name); memj.phone=memj+1.phone; printf("刪除中.n");printf("刪除成功!"); /返回成功信息ret

14、urn(n-1);void query_a_record(member mem,int n) /*查找并顯示一個(gè)成員的信息*/ char s20;int i=0;printf("請(qǐng)輸入要查詢的成員姓名:"); /*交互式輸入*/ scanf("%s",s); while(strcmp(,s)!=0&&i<n) i+; /*查找判斷*/ if(i=n)printf("未發(fā)現(xiàn)此成員!"); /顯示失敗信息return;printf("查詢中.n");printf("該成

15、員學(xué)號(hào)為:%sn",memi.num); /*輸出該成員信息*/ printf("該成員手機(jī)號(hào)為:%dn",memi.phone); int addfromtext(member mem,int n) /從文件中讀取成員信息 int i=0,num; file *fp; /*定義文件指針 char filename20; /定義文件名 printf("請(qǐng)輸入文件名(如wenjian.txt):"); scanf("%s",filename); /輸入文件名 if(fp=fopen(filename,"rb"

16、;)=null) /打開文件printf("打開文件錯(cuò)誤,請(qǐng)檢查文件的正確性!n"); /打開失敗信息 printf("n"); system("pause"); return(n); fscanf(fp,"%d",&num); /讀入總記錄量 while(i<num) /循環(huán)讀入數(shù)據(jù) fscanf(fp,"%s%s%d",memn+i.num,memn+,&memn+i.phone); i+; n+=num; fclose(fp); /關(guān)閉文件printf(&

17、quot;讀取中.n"); printf("讀入文件成功!n"); printf("n"); system("pause"); return(n); void writetotext(member mem,int n) /將所有記錄寫入文件int i=0; file *fp; /定義文件指針 char filename20; /定義文件名 printf("請(qǐng)輸入要寫入的文件名(如wenjian.txt):"); /輸入文件名 scanf("%s",filename); if(fp=fo

18、pen(filename,"w")=null) /打開文件 printf("不能打開此文件,請(qǐng)檢查文件的正確性!n"); system("pause"); return; fprintf(fp,"%dn",n); /循環(huán)寫入數(shù)據(jù) while(i<n) fprintf(fp,"%-16s%-15s%dn",memi.num,,memi.phone); i+; fclose(fp); /關(guān)閉文件printf("正在寫入信息.n");printf("

19、;信息寫入成功!n"); /返回成功信息 int inpute_act(activity acti,int n) /輸入活動(dòng)記錄int j=0;char sign,x10;while(sign!='n'&&sign!='n')printf("隊(duì)長(zhǎng)學(xué)號(hào):"); /交互式輸入scanf("%s",&actin+j.number);printf("活動(dòng)名稱:");scanf("%s",actin+j.nam);printf("請(qǐng)輸入活動(dòng)時(shí)間(如若

20、活動(dòng)時(shí)間為2010年3月15日,則輸入20100315):");scanf("%d",&actin+j.date);gets(x);printf("要輸入更多活動(dòng)信息嗎?(y/n)"); /輸入判斷scanf("%c",&sign);j+;return(n+j);void display_act(activity acti,int n)int j;printf("-n"); /*格式頭*/ printf("隊(duì)長(zhǎng)學(xué)號(hào) 活動(dòng)姓名 活動(dòng)日期n"); printf("

21、-n"); for(j=1;j<n+1;j+)printf("%-16s%-15s%dn",actij-1.number,actij-1.nam,actij-1.date);if(j>1&&j%10=0)printf("-n"); /*格式*/ system("pause");printf("-n"); printf("n");system("pause");int delete_a_act(activity acti,int n) /按

22、照活動(dòng)名字查找,刪除一條活動(dòng)記錄char s20; int i=0,j;printf("請(qǐng)輸入要?jiǎng)h除的活動(dòng)名稱:"); /系統(tǒng)和用戶的交互式問(wèn)詢scanf("%s",s);while(strcmp(actii.nam,s)!=0&&i<n) /查找i+;if(i=n)printf("沒(méi)有該項(xiàng)活動(dòng)信息!"); /失敗信息返回return(n);for(j=i;j<n-1;j+) /刪除操作strcpy(actij.number,actij+1.number);strcpy(actij.nam,actij+1.

23、nam);actij.date=actij+1.date;printf("刪除中.n");printf("刪除成功!");return(n-1);void query(activity acti,int n) /查找并顯示一項(xiàng)活動(dòng)信息char s20;int i=0;printf("請(qǐng)輸入要查找的活動(dòng)名稱:"); /交互式問(wèn)詢scanf("%s",s);while(strcmp(actii.nam,s)!=0&&i<n)i+;if(i=n)printf("沒(méi)有該項(xiàng)活動(dòng)記錄!n&quo

24、t;);/失敗信息返回return;printf("刪除中.n");printf("該活動(dòng)的隊(duì)長(zhǎng)為:%s;n",actii.number);printf("該項(xiàng)活動(dòng)的日期為:%d。n",actii.date);int addfromtext(activity acti,int n) /從文件中讀入數(shù)據(jù)int i=0,num; file *fp; /定義文件指針 char filename20; /定義文件名 printf("請(qǐng)輸入文件名稱(如wenjian.txt):"); scanf("%s"

25、,filename); /輸入文件名 if(fp=fopen(filename,"rb")=null) /打開文件printf("打開文件失敗,請(qǐng)檢查文件的正確性!n"); /打開失敗信息 system("pause"); return(n); fscanf(fp,"%d",&num); /讀入總記錄量while(i<num) /循環(huán)讀入數(shù)據(jù) fscanf(fp,"%s%s%d",actin+i.number,actin+i.nam,&actin+i.date); i+;

26、n+=num; fclose(fp); /關(guān)閉文件 printf("讀取文件中.n");printf("文件讀取成功!n"); printf("n"); system("pause"); return(n); void writetotext(activity acti,int n) /將所有記錄寫入文件int i=0; file *fp; /定義文件指針 char filename20; /定義文件名 printf("請(qǐng)輸入文件名(如wenjian.txt):"); /輸入文件名 scanf(

27、"%s",filename); if(fp=fopen(filename,"w")=null) /打開文件 printf("不能打開此文件,請(qǐng)檢查文件的正確性!n"); system("pause"); return; fprintf(fp,"%dn",n); /循環(huán)寫入數(shù)據(jù) while(i<n) fprintf(fp,"%-16s%-15s%dn",actii.number,actii.nam,actii.date); i+; fclose(fp); /關(guān)閉文件pri

28、ntf("信息寫入中.n");printf("信息寫入成功!n"); /返回成功信息 int main() /主函數(shù)int n=0;for(;)switch(menu_select() /選擇判斷case 1:printf("nt*成員信息輸入*nn"); /輸入成員信息n=input(meme,n);printf("成員信息輸入成功!n");break;case 2:printf("nt*顯示所有成員信息*nn"); /顯示所有成員信息 display(meme,n);break;case 3

29、:printf("nt*按成員學(xué)號(hào)排序*nn"); sort_by_num(meme,n); /按成員學(xué)號(hào)排序printf("排序成功!n"); printf("n"); system("pause"); break; case 4:printf("nt*刪除一條成員信息*nn"); n=delete_a_record(meme,n); /按成員姓名查找,刪除一條成員信息 printf("n"); system("pause"); break; case

30、5:printf("nt*成員信息查詢*nn"); query_a_record(meme,n); /查找并顯示一個(gè)成員的信息 printf("n"); system("pause"); break;case 6:printf("nt*從文本文檔中添加成員信息*nn"); /從文本文檔中添加成員信息n=addfromtext(meme,n); printf("n");break;case 7:printf("nt*將成員信息寫入文本文檔*nn"); /將成員信息寫入文本文檔writetotext(meme,n); /循環(huán)寫入數(shù)據(jù)printf("n");break;case 8:printf("nt*活動(dòng)信息輸入*nn"); /活動(dòng)信息輸入n=inpute_act(act,n);printf("活動(dòng)信息輸入成功!n");break;case 9:printf("nt*顯示所有活動(dòng)信息*nn"); /顯示所有活動(dòng)信息display_act(act,n

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論