版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、西安郵電學(xué)院數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告題 目: 學(xué)生宿舍管理系統(tǒng) 系部名稱:通信工程系專業(yè)名稱:通信工程班級:通工0805學(xué) 號:學(xué)生姓名 :指導(dǎo)教師:時間:2009年12月16日 至2009年12月25日 一、 課程設(shè)計目的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計是讓學(xué)生綜合運用數(shù)據(jù)結(jié)構(gòu)課程中學(xué)到的幾種典型數(shù)據(jù)結(jié)構(gòu),以及程序設(shè)計語言(c語言),自行實現(xiàn)一個較為完整的應(yīng)用系統(tǒng)的設(shè)計與開發(fā)通過課程設(shè)計,使學(xué)生通過系統(tǒng)分析、系統(tǒng)設(shè)計、編程調(diào)試,寫實驗報告等環(huán)節(jié),進一步掌握應(yīng)用系統(tǒng)設(shè)計的方法和步驟,靈活運用并深刻理解典型數(shù)據(jù)結(jié)構(gòu)在軟件開發(fā)中的應(yīng)用 。學(xué)會將知識應(yīng)用于實際的方法,提高分析和解決問題的能力,增加綜合能力。二、課程設(shè)計
2、內(nèi)容 用c語言編寫“學(xué)生宿舍管理系統(tǒng)”,要求如下:1. 創(chuàng)建鏈表,錄入數(shù)據(jù)。2. 數(shù)據(jù)的讀寫操作。3. 數(shù)據(jù)的更新操作。4. 數(shù)據(jù)的刪除和插入。5. 請你要求對數(shù)據(jù)進行查找。6. 按要求排序。7. 設(shè)計總體菜單界面。三、需求分析1、錄入數(shù)據(jù) 學(xué)生的基本信息,包括學(xué)號、姓名、性別、年齡(出生年月日)、專業(yè)、班級等。 宿舍樓的基本信息,包括宿舍樓號、學(xué)生所住的房間號和宿舍床位號等。2、數(shù)據(jù)存儲 信息的錄入要求用鏈表,把輸入的信息要求存儲到指定文件夾中,以便隨時查看,也可供程序調(diào)用,方便操作人員不用重復(fù)輸入數(shù)據(jù)。3、數(shù)據(jù)的更新 更新包括插入、刪除、修改。 刪除分根據(jù)學(xué)號刪除和根據(jù)學(xué)生的樓層信息刪除。
3、5、數(shù)據(jù)的查詢 查詢可以根據(jù)學(xué)號和姓名、宿舍信息不同方面進行查詢,方便操作者使用。6、數(shù)據(jù)的排序 操作者可以使所輸入的信息按學(xué)號排序。7、數(shù)據(jù)的統(tǒng)計 分別可以按整體統(tǒng)計,統(tǒng)計所有學(xué)生人數(shù),男生人數(shù)和女生人數(shù),也可以按宿舍樓號統(tǒng)計,統(tǒng)計一個宿舍樓所有學(xué)生人數(shù)。四、概要設(shè)計1系統(tǒng)結(jié)構(gòu)圖(功能模塊圖)主函數(shù)錄入存儲數(shù)據(jù)操作輸出信息輸入統(tǒng)計查找修改刪除插入顯示排序2功能模塊說明: (1). 數(shù)據(jù)錄入:創(chuàng)建單鏈表,調(diào)用initnode()函數(shù)申請頭結(jié)點,在調(diào)用creat(),在調(diào)用write_to_file()函數(shù)將信息寫入文件中,(2) 插入模塊:先將文件信息讀出,再調(diào)用insert()函數(shù),可以向文
4、件中插入 的信息。(3) 插入模塊:先將文件信息讀出,再調(diào)用del()函數(shù),可以將輸入錯誤或者 需要的信息刪除。(4) 修改模塊:先將文件信息讀出,再調(diào)用modify()函數(shù),將輸入錯誤的信息修改。(5) 查詢模塊:先將文件信息讀出,再調(diào)用search(),在search()中有調(diào)用兩個數(shù),一個按照宿舍信息查詢dorm_search(),需要樓號和宿舍號,一個按照生信息查詢stu_search()需要學(xué)生學(xué)號或者姓名。(6) 排序模塊:先將文件信息讀出,再調(diào)用sort_in_num(),按照學(xué)生學(xué)號排序,拍完續(xù)沒有直接寫入文件,如果要直接寫入調(diào)用文件讀入函數(shù)write_to_file().(7
5、) 統(tǒng)計模塊:先將文件信息讀出,再調(diào)用stat()函數(shù),統(tǒng)計了女生人數(shù)和男生人數(shù),還統(tǒng)計了總?cè)藬?shù)和男女宿舍個數(shù)。五詳細(xì)過程和運行結(jié)果:刪除模塊 開始 輸入要刪除學(xué)生的學(xué)號num 組織循環(huán),掃描存儲學(xué)生信息的鏈表 p-num:num != =刪除該學(xué)生信息結(jié)束開始插入模塊 選擇插入方式頭插入學(xué)生信息中間插入學(xué)生信息輸入插入位置(學(xué)號num)輸入插入的學(xué)生信息p-num:num組織循環(huán),掃描存儲學(xué)生信息的鏈表 將其入棧,即將插入的學(xué)生信息插到了最前面 輸入插入學(xué)生的信息 = !=將要插入的學(xué)生信息插到了學(xué)號為num的學(xué)生之后、結(jié)束查找模塊 開始選擇查找方式 按宿舍信息查找按學(xué)生學(xué)號查找組織循環(huán),掃
6、描存儲學(xué)生信息的鏈表表輸入要查找的學(xué)生build_num,room_num,bed_num輸入要查找的學(xué)生學(xué)號nump-build_num:room_nup-room_num:room_nup-bed_num:bed_nump-num:num != != =輸出該學(xué)生的信息 輸出該學(xué)生信息 = 結(jié)束 開始修改模塊輸入要修改的學(xué)生學(xué)號num組織循環(huán),掃描存儲學(xué)生信息的鏈表表p-num:num != =修改學(xué)生信息結(jié)束 開始排序模塊 組織循環(huán),掃描存儲學(xué)生信息的鏈表表選出學(xué)號最小的學(xué)生,與第一學(xué)生交換存儲位置在余下的學(xué)生中選出學(xué)號最小的學(xué)生與第二個學(xué)生交換存儲位置以此類推,直至排序完成結(jié)束開始統(tǒng)計
7、模塊 組織循環(huán),掃描存儲學(xué)生信息的鏈表表p-sex=mp-sex=fcount2+count1+count1%4=0count1%4=0結(jié)束六調(diào)試情況,對自己的評價和體會:調(diào)試程序真的比想象中麻煩很多,以前只是寫一些很簡單的代碼,更多的是照著書在抄,當(dāng)出現(xiàn)錯誤是,我們不知道怎么調(diào)試,開始實習(xí)時就在計劃這做一個如何完美的程序,當(dāng)我著手去寫的時候,我發(fā)現(xiàn)平時的知識積累太少了,更本沒有思路??戳撕芏鄷辛讼敕?,可是做起來有些功能好難。這次實習(xí),讓我覺得c語言不只是你知道他有寫什么 ,而要看你自己能用c寫出什么,只要寫出對的代碼,那你就是會了,時間長了自然就能寫出很漂亮的代碼了。雖然寫的程序有了老師
8、的要求,卻沒有做到自己想要的結(jié)果,本來想換一個界面,換一個顏色,可是都沒有,基礎(chǔ)知識掌握的很流利時時間已經(jīng)不多了,不過我會再課外的時間,學(xué)會如何能讓程序變得簡潔易懂,讓運行結(jié)果更漂亮。我想我的c學(xué)習(xí)不會隨想和實習(xí)的結(jié)束而結(jié)束,我喜歡當(dāng)我運行不正確時安靜思考的自己,喜歡當(dāng)程序該了好多次改好了那種激動的心情,我會繼續(xù)努力,完善自己,對自己說:加油!在實習(xí)過程中也的到了很多人的幫助,在這謝謝我們的指導(dǎo)老師,謝謝我們同學(xué),還有幫我看過代碼的學(xué)長。七參考文獻: c語言程序設(shè)計: 王曙燕-科技出版社數(shù)據(jù)結(jié)構(gòu)使用c語言:陳一華,劉學(xué)民,潘道才-電子科技出版社數(shù)據(jù)結(jié)構(gòu)c語言描述:耿國華-高等教育出版社八附錄:
9、源代碼(詳見電子版報告)#include #include #include #include typedef struct int year; int month; int day;date;typedef struct int build_num; /*樓號*/ int room_num; /*宿舍號*/ int bed_num; /*床號*/dorm;typedef struct student_information int num; /*學(xué)號*/ char name15; /*姓名*/ char sex; /*性別*/ char department20; /*系別*/ char s
10、ubject20; /*專業(yè)*/ date birth; /*出生日期*/ dorm dorm; struct student_information *next;stu;void write_to_file(stu *l) /*將信息寫入文件*/ file *fp; stu *p; fp=fopen(e:dorm.txt,w); if(fp=null) printf(此文件不能打開,按任意鍵退出!); getch(); exit(0); p=l-next; while(p) fprintf(fp,%d %s %c %d %d %d %s %s %d %d %dn,p-num,p-name,p
11、-sex, p-birth.year,p-birth.month,p-birth.day,p-department, p-subject,p-dorm.build_num,p-dorm.room_num,p-dorm.bed_num); p=p-next; fclose(fp);void initstu(stu *h) /*創(chuàng)建頭結(jié)點*/ (*h)=(stu *)malloc(sizeof(stu); if(h=null) printf(init stu error!); getch(); exit(0); (*h)-next=null;void create(void) /*創(chuàng)建單鏈表*/
12、stu *head; stu *p,*q; char ch; initstu(&head); q=head; while(1) system(cls);printf(ntt*歡迎進入學(xué)生宿舍管理系統(tǒng)*n); printf(nntt*請錄入學(xué)生信息*nnn);p=(stu *)malloc(sizeof(stu); flushall(); printf(nt學(xué)號:); scanf(%d,&p-num); flushall(); printf(nt姓名:); scanf(%s,p-name); flushall(); printf(nt性別:); scanf(%c,&p-sex); flushal
13、l(); printf(nt生日(年_月_日):); scanf(%d_%d_%d,&p-birth.year,&p-birth.month,&p-birth.day); flushall(); printf(nt系別:); scanf(%s,p-department ); flushall(); printf(nt專業(yè):); scanf(%s,p-subject); flushall(); printf(nt樓號:); scanf(%d,&p-dorm.build_num); flushall(); printf(nt宿舍號:); scanf(%d,&p-dorm.room_num); fl
14、ushall(); printf(nt床號:); scanf(%d,&p-dorm.bed_num); p-next=q-next; q-next=p; q=p; flushall(); printf(nntttend with 0?); ch=getch(); if(ch=0) break; write_to_file(head); void read_from_file(stu *h) /*將文件信息讀出*/ file *fp; stu *p,*q; int i; fp=fopen(e:dorm.txt,r); if(fp=null) printf(cannot open the file
15、); exit(0); q=h; while(!feof(fp) p=(stu *)malloc(sizeof(stu); i=fscanf(fp,%d %s %c %d %d %d %s %s %d %d %dn,&p-num,p-name,&p-sex, &p-birth.year,&p-birth.month,&p-birth.day,p-department, p-subject,&p-dorm.build_num,&p-dorm.room_num,&p-dorm.bed_num); if(i!=11) break; p-next=q-next; q-next=p; q=p; fclo
16、se(fp);int display() /*將文件信息顯示出來 */ stu *head; stu *p; initstu(&head); read_from_file(head); p=head-next; system(cls); if(!p) printf(have no element!); printf(nend with esc); getch(); return 0; printf(ntt*歡迎進入學(xué)生宿舍管理系統(tǒng)*nnnn); printf(學(xué)號 姓名 性別 生日(年_月_日) 系別 專業(yè) 樓號 宿舍號 床號nn); while(p) printf(%-8d%-8s%-4c%
17、-6d%-5d%-8d%-12s%-8s%-8d%-8d%-5dn,p-num,p-name,p-sex,p-birth.year,p-birth.month,p-birth.day,p-department,p-subject,p-dorm.build_num,p-dorm.room_num,p-dorm.bed_num); p=p-next; printf(nend with ecs); getch(); return 1;void delete() /*刪除學(xué)生信息*/ stu *head; stu *p,*q; char ch,h; int n; int build_num,room_
18、num,bed_num; initstu(&head); read_from_file(head); q=head; p=head-next;do system(cls); flushall(); printf(ntt*歡迎進入學(xué)生宿舍管理系統(tǒng)*n); printf(nntta. 根據(jù)學(xué)生學(xué)號刪除n); printf(nnttb.根據(jù)宿舍信息刪除n); printf(nntt-請選擇刪除方式:); ch=getchar(); while(1) if(ch=a) printf(nn-請輸入學(xué)生學(xué)號:); scanf(%d,&n); while(p) if(p-num=n) q-next=p-ne
19、xt; free(p); p=q-next;printf(刪除成功!);break; q=p;p=p-next; if( p=null) printf(n*not find the student!*); break; else if(ch=b) printf(nn-請輸入宿舍信息(樓號 宿舍 床號):); scanf(%d %d %d,&build_num,&room_num,&bed_num); while(p!=null) if(p-dorm.build_num=build_num & p-dorm.room_num=room_num & p-dorm.bed_num) q-next=p
20、-next; free(p); p=q-next; printf(刪除成功!); break; q=p;p=p-next; if(p=null) printf( not find the student); break; break;printf(nn*繼續(xù) ?y/n);h=getch();while(h=y |h=y);write_to_file(head);void midinsert() /*中間插入學(xué)生信息*/stu *head; stu *p,*q; char ch; int n; initstu(&head); read_from_file(head); q=head-next;
21、system(cls); printf(ntt*歡迎進入學(xué)生宿舍管理系統(tǒng)*n); flushall();doprintf(nnt-請輸入插入位置 : );scanf(%d,&n);while(q!=null)p=(stu *)malloc(sizeof(stu *);if(q-num=n)printf(tt請輸入插入的學(xué)生信息 :n ); flushall();printf(t 學(xué)號:);scanf(%d,&p-num); flushall();printf(nt 姓名:); scanf(%s,p-name); flushall();printf(nt性別:); scanf(%c,&p-sex
22、); flushall();printf(nt 生日(年_月_日):);scanf(%d_%d_%d,&p-birth.year,&p-birth.month,&p-birth.day); flushall(); printf(nt 系別:);scanf(%s,p-department); flushall();printf(nt 專業(yè):);scanf(%s,p-subject); flushall();printf(nt 樓號:);scanf(%d,&p-dorm.build_num); flushall();printf(nt 宿舍號:);scanf(%d,&p-dorm.room_num
23、); flushall();printf(nt 床號:);scanf(%d,&p-dorm.bed_num);p-next=q-next;q-next=p;break;p=q;q=q-next;if(q=null)printf(tt not find !);write_to_file(head); printf(t 繼續(xù) ?y/n);ch=getch();while(ch=y|ch=y);stu *headinsert(stu *top) stu *p; char ch; initstu(&top); read_from_file(top); system(cls); printf(ntt*歡
24、迎進入學(xué)生宿舍管理系統(tǒng)*n); flushall(); do p=(stu*)malloc(sizeof(stu); p-next=null; printf(tt請輸入插入的學(xué)生信息 :n ); flushall();printf(t 學(xué)號:);scanf(%d,&p-num); flushall();printf(nt 姓名:); scanf(%s,p-name); flushall();printf(nt性別:); scanf(%c,&p-sex); flushall();printf(nt 生日(年_月_日):);scanf(%d_%d_%d,&p-birth.year,&p-birth
25、.month,&p-birth.day); flushall(); printf(nt 系別:);scanf(%s,p-department); flushall();printf(nt 專業(yè):);scanf(%s,p-subject); flushall();printf(nt 樓號:);scanf(%d,&p-dorm.build_num); flushall();printf(nt 宿舍號:);scanf(%d,&p-dorm.room_num); flushall();printf(nt 床號:);scanf(%d,&p-dorm.bed_num); if (top!=null) p-
26、next=top; top=p; else top=p; printf(nn*繼續(xù)?y/n); ch=getch();while(ch=y|ch=y); return(top);void insert()int choose; stu *head,*top; initstu(&head); read_from_file(head); system(cls); flushall();printf(n*歡迎進入學(xué)生宿舍管理系統(tǒng)*nnnn); printf(nntt1.中間插入學(xué)生信息.); printf(nntt2.開頭插入學(xué)生信息.); printf(nntt3.退出.nn); printf(n
27、請選擇查找方式:); scanf(%d,&choose); switch(choose) case 1: midinsert(); break;case 2:headinsert(top);break; case 3: break; void modify(void) /*修改學(xué)生信息*/ stu *head; stu *p; char ch; int n; initstu(&head); read_from_file(head);system(cls);printf(ntt*歡迎進入學(xué)生宿舍管理系統(tǒng)*n);printf(nn-請輸入修改的學(xué)生信息(學(xué)號): );scanf(%d,&n);p=
28、head-next;dowhile(p!=null)if(p-num=n)printf(tt請輸入新的學(xué)生信息 :n );printf(t學(xué)號:);scanf(%d,&p-num); flushall();printf(nt姓名:); scanf(%s,p-name); flushall();printf(nt性別:); scanf(%c,&p-sex); flushall();printf(nt生日(年_月_日):);scanf(%d_%d_%d,&p-birth.year,&p-birth.month,&p-birth.day); flushall();printf(nt系別:);scan
29、f(%s,p-department); flushall();printf(nt專業(yè):);scanf(%s,p-subject); flushall();printf(nt樓號:);scanf(%d,&p-dorm.build_num); flushall();printf(nt 宿舍號:);scanf(%d,&p-dorm.room_num); flushall();printf(nt床號:);scanf(%d,&p-dorm.bed_num);break;p=p-next;if(p=null)printf(tt not find !); printf(t 繼續(xù) ?y/n);ch=getch
30、();while(ch=y|ch=y);write_to_file(head);void stuinfo_search(stu * head) /*按照學(xué)生學(xué)號查找*/ int num; stu *p; char ch; p=head-next ; do system(cls); printf(nn-請輸入要查找的學(xué)生學(xué)號 : ); scanf(%d,&num); while(p!=null) if(p-num=num )printf(學(xué)號 姓名 性別 生日(年_月_日) 系別 專業(yè) 樓號 宿舍號 床號nn); printf(%-8d%-8s%-4c%-6d%-5d%-8d%-12s%-8s%
31、-8d%-8d%-5dn,p-num,p-name,p-sex, p-birth.year,p-birth.month,p-birth.day,p-department,p-subject, p-dorm.build_num,p-dorm.room_num,p-dorm.bed_num); break; p=p-next; if(p=null) printf(ttnot find !); printf(t 繼續(xù) ?y/n); ch=getch(); while(ch=y | ch=y); void dorm_search(stu *head) /*按照宿舍信息查找*/ int build_nu
32、m,room_num,bed_num; stu *p; char ch; p=head-next; do system(cls); printf(nn-請輸入要查找的學(xué)生宿舍信息(樓號 宿舍 床號) : ); printf(nntt 樓號 :); scanf(%d,&build_num); printf(nntt 宿舍號 :); scanf(%d,&room_num); printf(nntt 床號 :); scanf(%d,&bed_num); while(p!=null) if(p-dorm.build_num=build_num & p-dorm.room_num=room_num &p
33、-dorm.bed_num=bed_num)printf(學(xué)號 姓名 性別 生日(年_月_日) 系別 專業(yè) 樓號 宿舍號 床號nn); printf(%-8d%-8s%-4c%-6d%-5d%-8d%-12s%-8s%-8d%-8d%-5dn,p-num,p-name,p-sex, p-birth.year,p-birth.month,p-birth.day,p-department,p-subject, p-dorm.build_num,p-dorm.room_num,p-dorm.bed_num); break; p=p-next; if(p=null) printf(ttnot find
34、 !); printf(tt繼續(xù) ?y/n); ch=getch(); while(ch=y | ch=y);void search(void) /*查找學(xué)生信息*/ int choose; stu *head; initstu(&head); read_from_file(head); system(cls); flushall();printf(n*歡迎進入學(xué)生宿舍管理系統(tǒng)*nnnn); printf(nntt1.根據(jù)宿舍信息查找.); printf(nntt2.根據(jù)學(xué)生學(xué)號查找.); printf(nntt3.退出.nn); printf(n請選擇查找方式:); scanf(%d,&ch
35、oose); switch(choose) case 1: dorm_search(head); break;case 2:stuinfo_search(head);break; case 3: break; void sort_in_num(void) /*將學(xué)生信息按學(xué)號排序*/ stu *head; stu *i,*j,*k; stu *m,*n; stu *temp; int l=0; initstu(&head); read_from_file(head); /冒泡排序法 for(m=head,i=head-next;i;m=i,i=i-next) k=i; for(n=i,j=i-next;j;n=j,j=j-next) if(j-numnum) k=j; break; if(i!=k) m-next=j;n-next=i;temp=i-next; i-next=j-next; j-next=temp;i=head; system(cls);printf(nntt*歡迎進入學(xué)生宿舍管理系統(tǒng)*nn);printf(nn輸入學(xué)生信息 : nn); i=head-next; printf(學(xué)號 姓名 性別 生日(年_月_日) 系別 專業(yè) 樓號 宿舍號 床號nn); while(i) printf(%-8d%-8s%-4c%-6d%
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)個人年度工作計劃
- 冀教版小學(xué)五年級上冊數(shù)學(xué)教學(xué)計劃
- 幼兒教學(xué)計劃模板
- 年化妝品銷售工作計劃范文
- 2025年女工個人工作計劃范文
- 年度教育工作計劃
- 2025年辦公室秘書工作計劃
- 辦公室秘書年度工作計劃例文
- 美團芒果杯 推廣計劃
- 《氧化還原滴定》課件
- 人教版2024年新版七年級上冊英語Unit 6綜合測試卷(含答案)
- 卡通版名人介紹袁隆平
- 走進李叔同完整版本
- 英語兒童繪本I Am A Bunny我是一只小兔子
- 交通系統(tǒng)仿真與評價智慧樹知到期末考試答案章節(jié)答案2024年長安大學(xué)
- 頸后路手術(shù)護理查房
- 2024年湖南網(wǎng)絡(luò)工程職業(yè)學(xué)院單招職業(yè)技能測試題庫附答案
- 衛(wèi)生經(jīng)濟學(xué)智慧樹知到期末考試答案章節(jié)答案2024年內(nèi)蒙古醫(yī)科大學(xué)
- 部編版四年級上冊語文期末測試卷(附答案)
- 綠色施工技術(shù)在道路工程中的經(jīng)濟效益與社會效益
- 2024年中考作文十二大高頻熱點主題1-至愛親情(素材)
評論
0/150
提交評論