C語言課程設計:學生宿舍管理系統(tǒng)[]_第1頁
C語言課程設計:學生宿舍管理系統(tǒng)[]_第2頁
C語言課程設計:學生宿舍管理系統(tǒng)[]_第3頁
C語言課程設計:學生宿舍管理系統(tǒng)[]_第4頁
C語言課程設計:學生宿舍管理系統(tǒng)[]_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、學生宿舍管理系統(tǒng)1課程設計的目的進一步掌握和利用C語言進行程設計的能力,理解和運用結構化程設計的思想和方法,熟練掌握條件語句、循環(huán)、數組、函數操作,初步掌握開發(fā)一個小型實用系統(tǒng)的基本方法,學會高度一個較長程序的基本方法和利用流程圖或N-S圖表示算法,將本課程所學的知識合理地運用于實踐當中。了解一些書上沒有的函數及使用方法。2設計方案論證21設計思路 利用數組對宿舍的記錄進行循環(huán)輸入輸出,利用冒泡法記錄進行排序,利用循環(huán)查找數組中某個數據,對其進行顯示,刪除,讀入和寫入文檔等操作。22流程圖開始輸出界面選擇操作選擇1選擇2選擇3選擇4選擇5選擇6選擇7選擇8選擇9選擇0輸入記錄是是顯示記錄否否否

2、否否否否否否退出系統(tǒng)結束按床位排序顯示按學號排序顯示是是是是插入一個記錄查找刪除記錄查找顯示記錄從文件輸入寫入文件保存是是是是否23具體程序#include<stdio.h> /*引用庫函數*/#include<stdlib.h>#include<ctype.h>#include<string.h>typedef struct /*定義結構體數組*/ char roomnum4; /*房間號*/ char bednum2; /*床位號*/ char num10; /*學號*/ char name20; /*姓名*/ Student;Student

3、 room11000; /*結構體數組變量*/int menu_select() /*菜單函數*/ char c; do system("cls"); /*運行前清屏*/ printf("tt學生宿舍管理系統(tǒng)n"); /*菜單選擇*/ printf("tt§ 1. 輸入記錄 §n"); printf("tt§ 2. 顯示記錄 §n"); printf("tt§ 3. 按房間號排序并顯示 §n"); printf("tt

4、7; 4. 按學號排序并顯示 §n"); printf("tt§ 5. 插入一條記錄按學號排序并顯示 §n"); printf("tt§ 6. 按姓名查找,刪除一條記錄 §n"); printf("tt§ 7 查找并顯示一個記錄 §n"); printf("tt§ 8. 從文件中讀入數據 §n"); printf("tt§ 9. 循環(huán)寫入數據 §n"); printf(&quo

5、t;tt§ 0. 結束程序 §n"); printf("ttn"); printf("tt請選擇您要運行的選項按(0-9):"); c=getchar(); /*讀入選擇*/ while(c<'0'|c>'9'); return(c-'0'); /*返回選擇*/int Input(Student room,int n) /*輸入若干條記錄*/int i=0;char sign,x10; /*x10為清除多余的數據所用*/while(sign!='n'

6、&&sign!='N') /*判斷*/ printf("tt房間號:"); /*交互輸入*/ scanf("tt%s"&,roomn+i.roomnum); printf("tt床位號:"); scanf("tt%s",&roomn+i.bednum); printf("tt學號:"); scanf("tt%s",&roomn+i.num); printf("tt姓名:"); scanf("

7、tt%s",&roomn+); gets(x); /*清除多余的輸入*/ printf("tt是否繼續(xù)輸入?(Y/N)"); scanf("tt%c",&sign); /*輸入判斷*/ i+;return(n+i);void Display(Student room,int n) /*顯示所有記錄*/int i;printf("tt-n"); /*格式頭*/printf("tt房間號 床位號 學號 姓名 n");printf("tt-n");for(i=1;

8、i<n+1;i+) /*循環(huán)輸入*/ printf("tt%-10s%-10s%-10s%-20sn",roomi-1.roomnum,roomi-1.bednum,roomi-1.num,); if(i>1&&i%10=0) /*每十個暫停*/ printf("tt-n"); /*格式*/ printf("tt"); system("pause"); printf("tt-n"); printf("tt");system(

9、"pause");void Sort_by_num(Student room,int n) /*按學號排序*/ int i,j,*p,*q,s; char t10; for(i=0;i<n-1;i+) /*冒泡法排序*/ for(j=0;j<n-1-i;j+) if(strcmp(roomj.num,roomj+1.num)>0) strcpy(t,roomj+1.bednum); strcpy(roomj+1.bednum,roomj.bednum); strcpy(roomj.bednum,t); strcpy(t,roomj+1.num); strc

10、py(roomj+1.num,roomj.num); strcpy(roomj.num,t); strcpy(t,roomj+1.name); strcpy(roomj+1.name,); strcpy(,t); void Sort_by_roomnum(Student room,int n) /*按房間號排序*/ int i,j,*p,*q,s; char t10; for(i=0;i<n-1;i+) /*冒泡法排序*/ for(j=0;j<n-1-i;j+) if(strcmp(roomj.roomnum,roomj+1.roomnum)

11、>0) strcpy(t,roomj+1.roomnum); strcpy(roomj+1.roomnum,roomj.roomnum); strcpy(roomj.roomnum,t); strcpy(t,roomj+1.bednum); strcpy(roomj+1.bednum,roomj.bednum); strcpy(roomj.bednum,t); strcpy(t,roomj+1.num); strcpy(roomj+1.num,roomj.num); strcpy(roomj.num,t); strcpy(t,roomj+1.name); strcpy(roomj+1.n

12、ame,); strcpy(,t); int Insert_a_record(Student room,int n) /*插入一條記錄*/char x100; /*清除多余輸入所用*/ printf("tt學生房間號:"); /*交互式輸入*/ scanf("tt%s",&roomn.roomnum); printf("tt學生床位號:"); scanf("tt%s",&roomn.bednum); printf("tt學生學號:"); s

13、canf("tt%s",&roomn.num); printf("tt學生姓名:"); scanf("tt%s",&); gets(x); n+; Sort_by_num(room,n); /*調用排序函數*/ printf("tt插入記錄成功!n"); /*返回成功信息*/ return(n);int Delete_a_record(Student room,int n) /*按姓名查找,刪除一條記錄*/ char s20; int i=0,j; printf("tt

14、輸入他(她)的姓名:"); /*交互式問尋*/ scanf("%s",s); while(strcmp(,s)!=0&&i<n) i+; /*查找判斷*/ if(i=n) printf("tt對不起沒找到該學生!n"); /*返回失敗信息*/ return(n); for(j=i;j<n-1;j+) /*刪除操作*/ strcpy(roomj.roomnum,roomj+1.roomnum); strcpy(roomj.bednum,roomj+1.bednum); strcpy(roomj.nu

15、m,roomj+1.num); strcpy(,roomj+1.name); printf("tt刪除記錄成功!n"); /*返回成功信息*/ return(n-1);void Query_a_record(Student room,int n) /*查找并顯示一個記錄*/ char s20; int i=0; printf("tt輸入他(她)的姓名:"); /*交互式輸入*/ scanf("tt%s",&s); while(strcmp(,s)!=0&&i<n)

16、i+; /*查找判斷*/ if(i=n) printf("tt對不起沒找到該學生!n"); /*輸入失敗信息*/ return; printf("tt他(她)的房間號:%sn",roomi.roomnum); /*輸出該學生信息*/ printf("tt他(她)的床位號:%sn",roomi.bednum); printf("tt他(她)的學號:%sn",roomi.num);int AddfromText(Student room,int n) /*從文件中讀入數據*/ int i=0,num; FILE *fp

17、; /*定義文件指針*/ char filename20; /*定義文件名*/ printf("tt輸入文件名:"); scanf("tt%s",&filename); /*輸入文件名*/ if(fp=fopen(filename,"rb")=NULL) /*打開文件*/ printf("tt無法打開該文件n"); /*打開失敗信息*/ printf("tt"); system("pause"); return(n); fscanf(fp,"%d"

18、,&num); /*讀入總記錄量*/ while(i<num) /*循環(huán)讀入數據*/ fscanf(fp,"%s%s%s%s",roomn+i.roomnum,roomn+i.bednum,roomn+i.num,roomn+); i+; n+=num; fclose(fp); /*關閉文件*/ printf("tt讀入成功!n"); printf("tt"); system("pause"); return(n);void WritetoText(Student room,int n)

19、/*將所有記錄寫入文件*/int i=0;FILE *fp; /*定義文件指針*/char filename100; /*定義文件名*/ printf("tt循環(huán)寫入數據n"); /*輸入文件名*/ printf("tt輸入文件名:"); scanf("tt%s",&filename); if(fp=fopen(filename,"w")=NULL) /*打開文件*/ printf("tt無法打開該文件n"); system("pause"); return; fpr

20、intf(fp,"%dn",n); /*循環(huán)寫入數據*/ while(i<n) fprintf(fp,"%-10s%-10s%-10s%-10sn",roomi.roomnum,roomi.bednum,roomi.num,); i+; fclose(fp); /*關閉文件*/ printf("寫入成功!n"); /*返回成功信息*/void main() /*主函數*/int n=0; for(;) switch(menu_select() /*選擇判斷*/ case 1: printf("tt輸

21、入記錄n"); /*輸入若干條記錄*/ n=Input(room1,n); break; case 2: printf("tt顯示記錄n"); /*顯示所有記錄*/ Display(room1,n); break; case 3: printf("tt按房間號排序并顯示n"); Sort_by_roomnum(room1,n); /*按房間號排序*/ printf("tt排序成功!n"); Display(room1,n); printf("tt"); break; case 4: printf(&quo

22、t;tt按學號排序并顯示n"); Sort_by_num(room1,n); /*按學號排序*/ printf("ttt排序成功!n"); Display(room1,n); printf("tt"); break; case 5: printf("tt插入一條記錄按學號排序并顯示n"); n=Insert_a_record(room1,n); /*插入一條記錄*/ Display(room1,n); printf("tt"); break; case 6: printf("tt按姓名查找,刪除

23、一條記錄n"); n=Delete_a_record(room1,n); /*按姓名查找,刪除一條記錄*/ printf("tt"); system("pause"); break; case 7: printf("tt查找并顯示一個記錄n"); Query_a_record(room1,n); /*查找并顯示一個記錄*/ printf("tt"); system("pause"); break; case 8: printf("tt從文件中讀入數據n"); Add

24、fromText(room1,n); /*從文件中讀入數據*/ printf("tt"); system("pause"); break; case 9: printf("tt循環(huán)寫入數據n"); WritetoText(room1,n); /*循環(huán)寫入數據*/ printf("tt"); system("pause"); break; case 0: printf("tt謝謝使用,祝您好運,再見!n"); /*結束程序*/ printf("tt"); system("pause"); exit(0); 3設計結果與分析將程序進行編譯鏈接后生成“學生管理系統(tǒng).exe”運行該文件如圖:按照提示選擇“1”進行記錄的輸入(輸入一個數據后提示是否繼續(xù)輸入)如圖:連續(xù)輸入多組數據后,按“n”結束輸入,提示按任意鍵繼續(xù),按任意鍵后

溫馨提示

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

評論

0/150

提交評論