C語言課程設(shè)計——學生宿舍管理系統(tǒng).doc_第1頁
C語言課程設(shè)計——學生宿舍管理系統(tǒng).doc_第2頁
C語言課程設(shè)計——學生宿舍管理系統(tǒng).doc_第3頁
C語言課程設(shè)計——學生宿舍管理系統(tǒng).doc_第4頁
C語言課程設(shè)計——學生宿舍管理系統(tǒng).doc_第5頁
免費預覽已結(jié)束,剩余18頁可下載查看

下載本文檔

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

文檔簡介

1、.*大學C 語言課程設(shè)計報告題目:學生宿舍管理系統(tǒng)系部名稱:專業(yè)名稱:班級:學號:學生姓名:Word 專業(yè)資料.指導教師:時間:一、課程設(shè)計目的1. 設(shè)計一個 ubuntu 下的學生宿舍管理系統(tǒng)2. 掌握用 C 語言定義單鏈表結(jié)構(gòu),并實現(xiàn)其創(chuàng)建、插入、刪除等基本操作。二、課程設(shè)計容用 C 語言編寫“學生宿舍管理系統(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ù)學生的基本信息,包括學號、姓名、性別、年齡、專業(yè)、班級等。宿舍樓的基本信息,包

2、括宿舍樓號、學生所住的房間號和宿舍床位號等。2、數(shù)據(jù)存儲信息的錄入要求用鏈表,把輸入的信息要求存儲到指定文件夾中,以便隨時查看,也可供程序調(diào)用,方便操作人員不用重復輸入數(shù)據(jù)。3、數(shù)據(jù)的更新更新包括插入、刪除、修改。刪除分根據(jù)學號刪除和根據(jù)學生的樓層信息刪除。5、數(shù)據(jù)的查詢查詢可以根據(jù)學號和宿舍信息不同方面進行查詢,方便操作者使用。6、數(shù)據(jù)的排序操作者可以使所輸入的信息按學號排序。Word 專業(yè)資料.7、數(shù)據(jù)的統(tǒng)計按整體統(tǒng)計,統(tǒng)計所有學生人數(shù),男生人數(shù)和女生人數(shù)。四、概要設(shè)計1系統(tǒng)結(jié)構(gòu)圖(功能模塊圖)錄入存儲輸入插入刪除主修改數(shù)據(jù)操作函查找數(shù)統(tǒng)計排序輸出信息顯示2功能模塊說明 :(1). 數(shù)據(jù)錄

3、入:創(chuàng)建單鏈表,調(diào)用 Initnode() 函數(shù)申請頭結(jié)點, 在調(diào)用 append() ,在調(diào)用 Write_to_File() 函數(shù)將信息寫入文件中,(2) 插入模塊:先將文件信息讀出, 再調(diào)用 insert() 函數(shù),可以向文件中插入信息。(3) 插入模塊:先將文件信息讀出,再調(diào)用 del() 函數(shù),可以將輸入錯誤或者需要的信息刪除。(4) 修改模塊:先將文件信息讀出, 再調(diào)用 modify() 函數(shù),將輸入錯誤的信息修改。(5) 查詢模塊:先將文件信息讀出,再調(diào)用 search(),在 search()中有調(diào)用兩個數(shù),一個按照宿舍信息查詢 sushe_search(),需要樓號和宿舍號,

4、一個按照生信息查詢 xuehao_search() 需要學生學號或者姓名。(6) 排序模塊:先將文件信息讀出,再調(diào)用 sort (), 按照學生學號排序,拍完續(xù)沒Word 專業(yè)資料.有直接寫入文件,如果要直接寫入調(diào)用文件讀入函數(shù) Write_to_File().(7) 統(tǒng)計模塊:先將文件信息讀出,再調(diào)用 tongji() 函數(shù),統(tǒng)計了女生人數(shù)和男生人數(shù),還統(tǒng)計了總?cè)藬?shù) .五詳細過程和運行結(jié)果:刪除模塊開始輸入要刪除學生的學號num組織循環(huán),掃描存儲學生信息的鏈表! =p-num:num=刪除該學生信息結(jié)束插入模塊開始頭插入學生信息Word 專業(yè)資料.輸入插入的學生信息將其入棧,即將插入的學生信

5、息插到了最前面結(jié)束查找模塊開始選擇查找方式按學生學號查找組織循環(huán), 掃描存儲輸入要查找的學生學生信息的鏈表表學號 num!=p-num:num!=輸出該學生的信息按宿舍信息查找輸入要查找的學生lounum,sushenum,chuang nump-lounum:sushenu p-sushenum:sushenu p-chuangnum:chuangnuWord 專業(yè)資料.輸出該學生信息結(jié)束修改模塊開始輸入要修改的學生學號num組織循環(huán),掃描存儲學生信息的鏈表表Word 專業(yè)資料.!=p-num : num=修改學生信息結(jié)束排序模塊開始組織循環(huán),掃描存儲學生信息的鏈表選出學號最小的學生,與第一

6、學生交換存儲位置Word 專業(yè)資料.在余下的學生中選出學號最小的學生與第二個學生交換存儲位置以此類推,直至排序完成統(tǒng)計模塊結(jié)束開始組織循環(huán),掃描存儲學生信息的鏈表表Word 專業(yè)資料.p-sex=wp-sex=mCount1+Count2+結(jié)束六參考文獻 : C 語言程序設(shè)計 :王曙燕七源代碼#include Word 專業(yè)資料#include #include /#include typedef struct Studentintnum;char name15;char sex;char zhuanye20;intlounum;intsushenum;intchuangnum;struct

7、Student *next;Stu;void Write_to_File(Stu *L)FILE *fp;Stu *p;fp=fopen(sushe.txt,w);if(fp=NULL)printf( 打開失?。?);getchar();getchar();exit(0);./* 學號 */* 姓名 */* 性別 */* 專業(yè) */* 樓號 */* 宿舍號 */* 床號 */* 將信息寫入文件*/p=L-next;while(p)fprintf(fp,%d%s%c%s%d%d%dn,p-num,p-name,p-sex,p-zhuanye,p-lounum,p-sushenum,p-chuan

8、gnum);p=p-next;fclose(fp);void InitStu(Stu *h)/* 創(chuàng)建頭結(jié)點 */Word 專業(yè)資料.(*h)=(Stu *)malloc(sizeof(Stu);if(h=NULL)printf( 創(chuàng)建失敗 !);getchar();getchar();exit(0);(*h)-next=NULL;void append( )/* 錄入學生信息*/Stu *head;Stu *p,*q;char ch;InitStu(&head);q=head;while(1)system(clear);printf( 請錄入學生信息n);p=(Stu *)malloc(si

9、zeof(Stu);printf(n學號 :);scanf(%d,&p-num);printf(n姓名 :);scanf(%s,p-name);printf(n性別 :);scanf( %c,&p-sex);printf(n專業(yè) :);scanf(%s,p-zhuanye);printf(n樓號 :);scanf(%d,&p-lounum);printf(n宿舍號 :);scanf(%d,&p-sushenum);printf(n床號 :);scanf(%d,&p-chuangnum);Word 專業(yè)資料.p-next=q-next;q-next=p;q=p;printf( 按任意鍵繼續(xù)錄入,

10、按0 結(jié)束錄入 );getchar();ch=getchar();if(ch=0)break;Write_to_File(head);void Read_from_File(Stu *h)/* 讀出文件信息 */FILE *fp;Stu *p,*q;int i;fp=fopen(sushe.txt,r);if(fp=NULL)printf( 打開失敗 );exit(0);q=h;while(!feof(fp)p=(Stu *)malloc(sizeof(Stu);i=fscanf(fp,%d %s %c %s %d %d %dn,&p-num,p-name,&p-sex,p-zhuanye,&

11、p-lounum,&p-sushenum,&p-chuangnum);if(i = EOF)break;q-next=p;q=p;q-next = NULL;fclose(fp);intdisplay()/* 顯示文件信息*/Stu *head = NULL;Word 專業(yè)資料.Stu *p;InitStu(&head);Read_from_File(head);/printf(ok!n);p=head-next;system(clear);if(!p)printf( 無容 !);printf(n按任意鍵鍵返回n);getchar();getchar();return0;printf( 學號姓

12、名性別專業(yè)樓號宿舍號床號 nn);while(p)printf(%-8d%-10s%-6c%-14s%-8d%-8d%-5dn,p-num,p-name,p-sex,p-zhuanye,p-lounum,p-sushenum,p-chuangnum);p=p-next;printf(n按任意鍵返回n);getchar();getchar();return 1;void del()/* 刪除學生信息*/Stu *head;Stu *p,*q;char ch,h;int N;int lounum,sushenum,chuangnum;InitStu(&head);Read_from_File(he

13、ad);q=head;p=head-next;dosystem(clear);printf(n1.根據(jù)學生學號刪除n);Word 專業(yè)資料.printf(n2.根據(jù)宿舍信息刪除n);printf(n請選擇刪除方式:);scanf( %c, &ch);while(1)if(ch=1)printf(n請輸入學生學號:);scanf(%d,&N);while(p)if(p-num=N)q-next=p-next;printf( 刪除成功! );break;q=p;p=p-next;if(p=NULL)printf(n未找到此學生);break;elsefree(p);else if(ch=2)pri

14、ntf(n請輸入宿舍信息(樓號宿舍床號 ): );scanf(%d %d %d,&lounum,&sushenum,&chuangnum);while(p!=NULL)if(p-lounum=lounum&p-sushenum=sushenum&p-chuangnum)q-next=p-next;printf( 刪除成功! );break;q=p;p=p-next;Word 專業(yè)資料.if(p=NULL)printf( 未找到此學生 );break;elsefree(p);break;printf(nn是否繼續(xù): Y/N ? );scanf( %c, &h);while(h=Y |h=y);W

15、rite_to_File(head);void insert()/* 用頭插法插入學生信息*/Stu *p , *head;char ch;InitStu(&head);Read_from_File(head);system(clear);dop=(Stu*)malloc(sizeof(Stu);p-next=NULL;printf(tt請輸入插入的學生信息:n);printf(t學號 :);scanf(%d,&p-num);printf(nt姓名 :);scanf(%s,p-name);printf(nt性別 :);Word 專業(yè)資料.scanf( %c,&p-sex);printf(nt專

16、業(yè) :);scanf(%s,p-zhuanye);printf(nt樓號 :);scanf(%d,&p-lounum);printf(nt宿舍號 :);scanf(%d,&p-sushenum);printf(nt床號 :);scanf(%d,&p-chuangnum);p-next = head-next;head-next = p;printf(nn是否繼續(xù)插入 ?Y/N);scanf( %c,&ch);while(ch=y|ch=Y);Write_to_File(head);void modify( )/* 修改學生信息(按學號修改)*/Stu *head;Stu *p;char ch;

17、int N;InitStu(&head);Read_from_File(head);system(clear);printf(nn請輸入修改的學生學號:);scanf(%d,&N);p=head-next;doWord 專業(yè)資料.while(p!=NULL)if(p-num=N)system(clear);printf(n請輸入新的學生信息:n);printf(n學號 :);scanf(%d,&p-num);printf(n姓名 :);scanf(%s,p-name);printf(n性別 :);scanf( %c,&p-sex);printf(n專業(yè) :);scanf(%s,p-zhuany

18、e);printf(n樓號 :);scanf(%d,&p-lounum);printf(n宿舍號 :);scanf(%d,&p-sushenum);printf(n床號 :);scanf(%d,&p-chuangnum);break;p=p-next;if(p=NULL)printf(n未找到此學生);elseprintf( 修改成功 n);printf(nn繼續(xù)修改?Y/N);scanf( %c,&ch);while(ch=y|ch=Y);Write_to_File(head);void xuehao_search(Stu * head)/* 按照學生學號查找*/Word 專業(yè)資料.intn

19、um;Stu *p;char ch;p=head-next ;dosystem(clear);printf(n請輸入要查找的學生學號: );scanf(%d,&num);while(p!=NULL)if(p-num = num )printf( 學號姓名性別專業(yè)樓號宿舍號床號nn);printf(%-8d%-8s%-4c%-8s%-8d%-8d%-5dn,p-num,p-name,p-sex,p-zhuanye, p-lounum,p-sushenum,p-chuangnum);break;p=p-next;if(p=NULL)printf(n未找到此學生);printf(nn繼續(xù)查找?Y/N

20、);scanf(%s,&ch);while(ch=Y | ch=y);void sushe_search(Stu *head)/* 按照宿舍信息查找*/int lounum,sushenum,chuangnum;Stu *p;char ch;p=head-next;dosystem(clear);printf(n 請輸入要查找的學生宿舍信息 (樓號 宿舍 床號 ) : ); printf(n 樓號 :);Word 專業(yè)資料.scanf(%d,&lounum);printf(n宿舍號:);scanf(%d,&sushenum);printf(n床號:);scanf(%d,&chuangnum);

21、while(p!=NULL)if(p-lounum=lounum & p-sushenum=sushenum&p-chuangnum=chuangnum)printf( 學號姓名性別專業(yè)樓號宿舍號床號 nn);printf(%-8d%-8s%-4c%-8s%-8d%-8d%-5dn,p-num,p-name,p-sex,p-zhuanye,p-lounum,p-sushenum,p-chuangnum);break;p=p-next;if(p=NULL)printf(n未找到此學生);printf(nn是否繼續(xù)?Y/N);scanf(%s,&ch);while(ch=y | ch=Y);voi

22、d Search( )/* 查找學生信息*/int choose;Stu *head;InitStu(&head);Read_from_File(head);system(clear);printf(n1. 根據(jù)宿舍信息查找.);printf(n2.根據(jù)學生學號查找.);printf(n3.退出 .nn);printf(n請選擇查找方式:);scanf(%d,&choose);switch(choose)case 1:sushe_search(head);break;Word 專業(yè)資料.case 2:xuehao_search(head);break;case 3:break;void sor

23、t( )/* 將學生信息按學號排序*/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(clear);prin

24、tf(nn輸入學生信息:nn);i=head-next;printf( 學號姓名性別專業(yè)樓號宿舍號床號 nn);Word 專業(yè)資料.while(i)printf(%-8d%-8s%-4c%-8s%-8d%-8d%-5dn,i-num,i-name,i-sex,i-zhuanye,i-lounum,i-sushenum,i-chuangnum);i=i-next;printf(n按任意鍵返回!);getchar();getchar();void tongji( )/* 統(tǒng)計學生信息 */Stu *head,*p;int Count1,Count2;InitStu(&head);Read_from_File(head);system(clear);p=head-next;Count1=0;Count2=0;while(p!=NULL

溫馨提示

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

評論

0/150

提交評論