




已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
*大學(xué)C語言課程設(shè)計報告題 目: 學(xué)生宿舍管理系統(tǒng) 系部名稱:專業(yè)名稱:班級:學(xué) 號: 學(xué)生姓名 :指導(dǎo)教師:時間: 一、 課程設(shè)計目的1.設(shè)計一個ubuntu下的學(xué)生宿舍管理系統(tǒng)2.掌握用C語言定義單鏈表結(jié)構(gòu),并實現(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ù)進行查找。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é)生的樓層信息刪除。5、數(shù)據(jù)的查詢 查詢可以根據(jù)學(xué)號和宿舍信息不同方面進行查詢,方便操作者使用。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)建單鏈表,調(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(),需要樓號和宿舍號,一個按照生信息查詢xuehao_search()需要學(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ì)過程和運行結(jié)果:刪除模塊 開始 輸入要刪除學(xué)生的學(xué)號num 組織循環(huán),掃描存儲學(xué)生信息的鏈表 p-num:num != =刪除該學(xué)生信息結(jié)束開始插入模塊 頭插入學(xué)生信息輸入插入的學(xué)生信息將其入棧,即將插入的學(xué)生信息插到了最前面 結(jié)束 查找模塊 開始選擇查找方式 按宿舍信息查找按學(xué)生學(xué)號查找組織循環(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é)生交換存儲位置以此類推,直至排序完成結(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; /*樓號*/ intsushenum; /*宿舍號*/ intchuangnum; /*床號*/ struct 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); 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-chuangnum); p=p-next; fclose(fp);void InitStu(Stu *h) /*創(chuàng)建頭結(jié)點*/ (*h)=(Stu *)malloc(sizeof(Stu); if(h=NULL) printf(創(chuàng)建失敗!); getchar();getchar(); exit(0); (*h)-next=NULL;void append( ) /*錄入學(xué)生信息*/ Stu *head; 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( %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); 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(打開失敗); 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 display() /*顯示文件信息*/ 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(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,sushenum,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(%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,&chuangnum);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);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,&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 宿舍號:);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( ) /*修改學(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é)號:); 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);break;p=p-next;if(p=NULL)printf(n未找到此學(xué)生);elseprintf(修改成功n); printf(nn 繼續(xù)修改 ?Y/N);scanf( %c,&ch);while(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è) 樓號 宿舍號 床號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 | 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 宿舍號 :); scanf(%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,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 *head; 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_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-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);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-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-
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 豫北方言處所介詞研究
- 發(fā)熱查因病例討論
- 科學(xué)做好入學(xué)準(zhǔn)備活動銜接教育
- 小班健康勇敢告訴老師
- 頜下腺護理課件
- 牙體牙髓科護理
- 股骨骨折患者護理查房
- 領(lǐng)克品牌介紹
- 2025年四川省德陽市中考招生考試數(shù)學(xué)真題試卷(真題+答案)
- 預(yù)防毒品班會課件
- 生活垃圾焚燒發(fā)電廠自動監(jiān)測設(shè)備運行維護技術(shù)規(guī)范
- 血管加壓藥物在急診休克中的應(yīng)用專家共識2021解讀課件
- 《個人信息保護法》知識考試題庫150題(含答案)
- 高一化學(xué)達(dá)標(biāo)訓(xùn)練:第一單元化石燃料與有機化合物
- 反食品浪費法培訓(xùn)
- 2025版國家開放大學(xué)法學(xué)本科《知識產(chǎn)權(quán)法》期末紙質(zhì)考試總題庫
- 2025年行政執(zhí)法人員執(zhí)法證考試必考多選題庫及答案(共300題)
- 嗜鉻細(xì)胞瘤危象的救治策略
- 《工程勘察設(shè)計收費標(biāo)準(zhǔn)》(2002年修訂本)
- 2024年度瀝青水穩(wěn)混合料銷售代理合同
- 《汽車尾氣治理技術(shù)》課件
評論
0/150
提交評論