C語言課程設(shè)計——學(xué)生宿舍管理系統(tǒng)(ubuntu下)_第1頁
C語言課程設(shè)計——學(xué)生宿舍管理系統(tǒng)(ubuntu下)_第2頁
C語言課程設(shè)計——學(xué)生宿舍管理系統(tǒng)(ubuntu下)_第3頁
C語言課程設(shè)計——學(xué)生宿舍管理系統(tǒng)(ubuntu下)_第4頁
C語言課程設(shè)計——學(xué)生宿舍管理系統(tǒng)(ubuntu下)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、*大學(xué)C語言課程設(shè)計報告題 目: 學(xué)生宿舍管理系統(tǒng) 系部名稱:專業(yè)名稱:班級:學(xué) 號: 學(xué)生姓名 :指導(dǎo)教師:時間: 一、 課程設(shè)計目的1. 設(shè)計一個ubuntu下的學(xué)生宿舍管理系統(tǒng)2. 掌握用C語言定義單鏈表結(jié)構(gòu),并實(shí)現(xiàn)其創(chuàng)立、插入、刪除等根本操作。二、課程設(shè)計內(nèi)容 用C語言編寫“學(xué)生宿舍管理系統(tǒng),要求如下:1. 創(chuàng)立鏈表,錄入數(shù)據(jù)。2. 數(shù)據(jù)的讀寫操作。3. 數(shù)據(jù)的更新操作。4. 數(shù)據(jù)的刪除和插入。5. 請你要求對數(shù)據(jù)進(jìn)行查找。6. 按要求排序。7. 設(shè)計總體菜單界面。三、實(shí)驗(yàn)要求1、錄入數(shù)據(jù) 學(xué)生的根本信息,包括學(xué)號、姓名、性別、年齡、專業(yè)、班級等。 宿舍樓的根本信息

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

3、立單鏈表,調(diào)用Initnode()函數(shù)申請頭結(jié)點(diǎn),在調(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(),需要樓號和宿舍號,一個按照生信息查詢xuehao_sear

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

5、找組織循環(huán),掃描存儲學(xué)生信息的鏈表表輸入要查找的學(xué)生lounum,sushenum,chuangnum輸入要查找的學(xué)生學(xué)號nump->lounum:sushenup->sushenum:sushenup->chuangnum:chuangnump->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é)

6、生交換存儲位置以此類推,直至排序完成結(jié)束開始統(tǒng)計模塊 組織循環(huán),掃描存儲學(xué)生信息的鏈表表p->sex=mp->sex=wCount2+Count1+結(jié)束六參考文獻(xiàn): ?C語言程序設(shè)計?: 王曙燕七源代碼#include <>#include <>#include <>/#include <> typedef struct Student intnum; /*學(xué)號*/ charname15; /*姓名*/ charsex; /*性別*/ charzhuanye20; /*專業(yè)*/ intlounum; /*樓號*/ intsushenu

7、m; /*宿舍號*/ intchuangnum; /*床號*/ struct Student *next;Stu;void Write_to_File(Stu *L) /*將信息寫入文件*/ FILE *fp; Stu *p; fp=fopen("sushe.txt","w"); if(fp=NULL) printf("翻開失?。?quot;); getchar();getchar(); exit(0); p=L->next; while(p) fprintf(fp,"%d %s %c %s %d %d %dn",p-

8、>num,p->name,p->sex, p->zhuanye,p->lounum,p->sushenum,p->chuangnum); p=p->next; fclose(fp);void InitStu(Stu *h) /*創(chuàng)立頭結(jié)點(diǎn)*/ (*h)=(Stu *)malloc(sizeof(Stu); if(h=NULL) printf("創(chuàng)立失敗!"); getchar();getchar(); exit(0); (*h)->next=NULL;void append( ) /*錄入學(xué)生信息*/ Stu *head

9、; Stu *p,*q; char ch; InitStu(&head); q=head; while(1) system("clear"); printf("請錄入學(xué)生信息n");p=(Stu *)malloc(sizeof(Stu); printf("n學(xué)號:"); scanf("%d",&p->num); printf("n姓名:"); scanf("%s",p->name); printf("n性別:"); scanf(

10、" %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

11、); p->next=q->next; q->next=p; q=p; printf("按任意鍵繼續(xù)錄入,按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("翻開失敗&quo

12、t;); 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,&p->lounum,&p->sushenum,&p->chuangnum);if(i = EOF)break; q->next=p; q=p; q->next = NULL; fclose(fp);int disp

13、lay() /*顯示文件信息*/ Stu *head = NULL; Stu *p; InitStu(&head); Read_from_File(head);/printf("ok!n"); p=head->next; system("clear"); if(!p) printf("無內(nèi)容!"); printf("n按任意鍵鍵返回n"); getchar();getchar(); return 0; printf("學(xué)號 姓名 性別 專業(yè) 樓號 宿舍號 床號nn"); while

14、(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() /*刪除學(xué)生信息*/ Stu *head; Stu *p,*q; char ch,h; int N; int lounum,sushen

15、um,chuangnum; InitStu(&head); Read_from_File(head); q=head; p=head->next;dosystem("clear");printf("n1. 根據(jù)學(xué)生學(xué)號刪除n");printf("n2. 根據(jù)宿舍信息刪除n");printf("n 請選擇刪除方式:");scanf(" %c", &ch);while(1)if(ch='1')printf("n請輸入學(xué)生學(xué)號:");scanf

16、("%d",&N);while(p)if(p->num=N)q->next=p->next;printf("刪除成功!");break;q=p;p=p->next;if(p=NULL)printf("n未找到此學(xué)生");break;elsefree(p);else if(ch='2')printf("n請輸入宿舍信息(樓號 宿舍 床號):");scanf("%d %d %d",&lounum,&sushenum,&chuan

17、gnum);while(p!=NULL)if(p->lounum=lounum && p->sushenum=sushenum && p->chuangnum)q->next=p->next;printf("刪除成功!");break;q=p;p=p->next;if(p=NULL)printf("未找到此學(xué)生");break;elsefree(p);break;printf("nn是否繼續(xù) :Y/N?");scanf(" %c", &h)

18、;while(h='Y' |h='y');Write_to_File(head);void insert()/*用頭插法插入學(xué)生信息*/Stu *p , *head;char ch;InitStu(&head);Read_from_File(head);system("clear");do p=(Stu*)malloc(sizeof(Stu);p->next=NULL;printf("tt請輸入插入的學(xué)生信息 :n ");printf("t 學(xué)號:");scanf("%d&quo

19、t;,&p->num);printf("nt 姓名:");scanf("%s",p->name);printf("nt性別:"); scanf(" %c",&p->sex);printf("nt 專業(yè):");scanf("%s",p->zhuanye);printf("nt 樓號:");scanf("%d",&p->lounum);printf("nt 宿舍號:"

20、);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( ) /*修改

21、學(xué)生信息按學(xué)號修改*/Stu *head;Stu *p; char ch; int N; InitStu(&head); Read_from_File(head);system("clear");printf("nn請輸入修改的學(xué)生學(xué)號: ");scanf("%d",&N);p=head->next;dowhile(p!=NULL)if(p->num=N)system("clear"); printf("n請輸入新的學(xué)生信息 :n ");printf("n學(xué)

22、號:"); 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->lounu

23、m); printf("n宿舍號:"); scanf("%d",&p->sushenum); printf("n床號:"); scanf("%d",&p->chuangnum);break;p=p->next;if(p=NULL)printf("n未找到此學(xué)生");elseprintf("修改成功n"); printf("nn 繼續(xù)修改 ?Y/N");scanf(" %c",&ch);while

24、(ch='y'|ch='Y');Write_to_File(head);void xuehao_search(Stu * head) /*按照學(xué)生學(xué)號查找*/ int num; Stu *p; char ch; p=head->next ; do system("clear"); printf("n請輸入要查找的學(xué)生學(xué)號 : "); scanf("%d",&num); while(p!=NULL) if(p->num = num )printf("學(xué)號 姓名 性別 專業(yè) 樓

25、號 宿舍號 床號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未找到此學(xué)生"); printf("nn 繼續(xù)查找 ?Y/N"); scanf("%s",&ch); while(ch='Y

26、9; | ch='y');void sushe_search(Stu *head) /*按照宿舍信息查找*/ int lounum,sushenum,chuangnum; Stu *p; char ch; p=head->next; do system("clear"); printf("n請輸入要查找的學(xué)生宿舍信息(樓號 宿舍 床號) : "); printf("n 樓號 :"); scanf("%d",&lounum); printf("n 宿舍號 :"); s

27、canf("%d",&sushenum); printf("n 床號 :"); scanf("%d",&chuangnum); while(p!=NULL) if(p->lounum=lounum && p->sushenum=sushenum&&p->chuangnum=chuangnum)printf("學(xué)號 姓名 性別 專業(yè) 樓號 宿舍號 床號nn"); printf("%-8d%-8s%-4c%-8s%-8d%-8d%-5dn&qu

28、ot;,p->num,p->name,p->sex,p->zhuanye,p->lounum,p->sushenum,p->chuangnum);break;p=p->next;if(p=NULL)printf("n未找到此學(xué)生"); printf("nn 是否繼續(xù) ?Y/N");scanf("%s",&ch); while(ch='y' | ch='Y');void Search( ) /*查找學(xué)生信息*/ int choose; Stu *he

29、ad; InitStu(&head); Read_from_File(head); system("clear"); printf("n1.根據(jù)宿舍信息查找."); printf("n2.根據(jù)學(xué)生學(xué)號查找."); printf("n3.退出.nn"); printf("n請選擇查找方式:"); scanf("%d",&choose); switch(choose) case 1: sushe_search(head); break;case 2:xuehao_

30、search(head);break; case 3: break; void sort( ) /*將學(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->num< k->num)k=j;break; i

31、f(i!=k)m->next=j;n->next=i;temp=i->next;i->next=j->next;j->next=temp;i=head; system("clear");printf("nn輸入學(xué)生信息 : nn"); i=head->next; printf("學(xué)號 姓名 性別 專業(yè) 樓號 宿舍號 床號nn"); while(i) printf("%-8d%-8s%-4c%-8s%-8d%-8d%-5dn",i->num,i->name,i-&

32、gt;sex,i->zhuanye,i->lounum,i->sushenum,i->chuangnum); i=i->next; printf("n按任意鍵返回!"); getchar();getchar();void tongji( ) /*統(tǒng)計學(xué)生信息*/Stu *head,*p;int Count1,Count2;InitStu(&head); Read_from_File(head);system("clear");p=head->next;Count1=0;Count2=0;while(p!=NULL)if(p->sex='w' | p->sex='W')Count1+;else Count2+;p=p->next;printf("t女生總

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論