C語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告—宿舍管理系統(tǒng)_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告—宿舍管理系統(tǒng)_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告—宿舍管理系統(tǒng)_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告—宿舍管理系統(tǒng)_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告—宿舍管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、西安郵電學(xué)院C語(yǔ)言課程設(shè)計(jì)報(bào)告題 目: 宿舍管理系統(tǒng)院系名稱: 計(jì) 算 機(jī) 學(xué) 院 專業(yè)名稱: 網(wǎng) 絡(luò) 工 程班 級(jí): 1004 學(xué)生姓名: 李斯良學(xué)號(hào)(8位): 04102109(17)指導(dǎo)教師:劉霞林設(shè)計(jì)起止時(shí)間:2011年6月13日2011年6月22日一、 課程設(shè)計(jì)目的1.通過(guò)本次課程設(shè)計(jì),強(qiáng)化上級(jí)動(dòng)手能力,在理論和實(shí)踐的基礎(chǔ)上進(jìn)一步鞏固 C語(yǔ)言程序設(shè)計(jì)課程的學(xué)習(xí)內(nèi)容,掌握工程軟件設(shè)計(jì)的基本方法。2.熟悉C語(yǔ)言的基本內(nèi)容從而掌握C語(yǔ)言的基本知識(shí)以及了解C程序的基本編寫(xiě)及運(yùn)行;3.了解程序的分模塊編寫(xiě)并對(duì)程序的每個(gè)模塊進(jìn)行詳細(xì)的設(shè)計(jì)并且能理解一般C語(yǔ)言編寫(xiě)的程序。4.熟悉C程序設(shè)計(jì)的開(kāi)發(fā)環(huán)

2、境及C程序的調(diào)試過(guò)程。二、課程設(shè)計(jì)內(nèi)容用所學(xué)過(guò)的C語(yǔ)言知識(shí)(文件,結(jié)構(gòu)體,函數(shù),數(shù)組等)編寫(xiě)一個(gè)學(xué)身份學(xué)籍管理系統(tǒng)。使其有以下功能。1.通過(guò)鍵盤(pán)輸入某些學(xué)生的學(xué)生學(xué)籍管理信息。(包含學(xué)生學(xué)號(hào)、姓名、性別、年齡、出生年月、住址、班級(jí)、專業(yè)、院系等信息)。2.輸入給定學(xué)號(hào),顯示出某位學(xué)生的學(xué)生學(xué)籍管理信息。3.顯示出全部學(xué)生的學(xué)生學(xué)籍管理信息。4.可將某學(xué)生信息添加到文件內(nèi)。5.給定某位學(xué)生的學(xué)號(hào),修改該學(xué)生信息。6.給定某位學(xué)生的學(xué)號(hào),刪除該學(xué)生信息。7.給定某個(gè)班級(jí)號(hào),統(tǒng)計(jì)該班級(jí)的總?cè)藬?shù)。8.按照學(xué)生的學(xué)號(hào)升序?qū)W(xué)生信息進(jìn)行排序。9.用文件的方式將錄入的數(shù)據(jù)進(jìn)行存儲(chǔ),并從其中讀取數(shù)據(jù)。三、概要

3、設(shè)計(jì)1. 功能模塊圖:進(jìn)入主界面信息添加模塊信息修改模塊信息刪除模塊 信息查詢模塊信息統(tǒng)計(jì)模塊按升序排序模塊信息打印模塊2. 各模塊詳細(xì)的功能描述:A.輸入模塊:調(diào)用input( )函數(shù)將學(xué)生宿舍信息依次輸入到結(jié)構(gòu)體數(shù)組中,結(jié)束后將保存在制定文件中,在其他模塊的函數(shù)中可以隨時(shí)進(jìn)行調(diào)用,結(jié)束后可以將修改后的學(xué)生宿舍信息再一次保存。B.添加模塊:如果要添加新入住學(xué)生信息可以調(diào)用append函數(shù)將新生信息插入到原有信息的末尾,在保存到文件中。C.修改模塊:修改可以通過(guò)輸入要修改的學(xué)生的學(xué)號(hào),對(duì)學(xué)生的個(gè)人信息利用switch選擇要修改的內(nèi)容.修改完畢后,保存到所設(shè)定的文件中去。D.刪除模塊:刪除可以通

4、過(guò)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào),對(duì)學(xué)生的所有個(gè)人信息進(jìn)行刪除.刪除完畢之后保存到文件中去。E.查詢模塊:選擇輸入要查詢學(xué)生的學(xué)號(hào),并將查詢的信息顯示在屏幕上。F.統(tǒng)計(jì)模塊:輸入要統(tǒng)計(jì)人數(shù)的班級(jí)號(hào),然后輸出此班的總?cè)藬?shù)。G.排序模塊:按學(xué)生學(xué)號(hào)用冒泡法升序排出學(xué)生的信息。H.打印模塊:輸出當(dāng)前文件中所有的學(xué)生住宿信息。四、 詳細(xì)設(shè)計(jì):1.流程圖:開(kāi)始判斷是否有文件創(chuàng)建并輸入學(xué)生信息進(jìn)入菜單添加學(xué)生信息刪除學(xué)生信息根據(jù)學(xué)號(hào)查找某學(xué)生宿舍信息修改某學(xué)生信息輸出該學(xué)生宿舍信息輸出所有同學(xué)宿舍信息否有將學(xué)生按學(xué)號(hào)升序排列輸出退出系統(tǒng)統(tǒng)計(jì)某班學(xué)生的人數(shù)主函數(shù) 1.添加學(xué)生信息; 2.修改學(xué)生信息 3.刪除學(xué)生信息

5、; 4.查詢學(xué)生信息; 5.統(tǒng)計(jì)學(xué)生信息; 6.學(xué)生排行信息; 7.打印學(xué)生信息;0.退出系統(tǒng);2.重點(diǎn)設(shè)計(jì):int read_file(STUDENTS students) FILE *fp; int i=0;if(fp=fopen("stu.txt","rt")=NULL) printf("nn*庫(kù)存文件不存在!請(qǐng)創(chuàng)建"); /*創(chuàng)建文件*/return 0;while(fread(&studentsi,sizeof(STUDENTS),1,fp)=1) /*成功創(chuàng)建*/ i+;fclose(fp); return i;v

6、oid save_file(STUDENTS students,int sum) /*保存信息*/ FILE *fp;int i;if(fp=fopen("stu.txt","wb")=NULL) printf("讀文件錯(cuò)誤!n");return;五測(cè)試數(shù)據(jù)及運(yùn)行結(jié)果:三組正常數(shù)據(jù):1.2.異常測(cè)試數(shù)據(jù)及運(yùn)行結(jié)果:1.2.六、調(diào)試情況,設(shè)計(jì)技巧及體會(huì):1. 設(shè)計(jì)過(guò)程中的體會(huì):在剛開(kāi)始還沒(méi)有大體思路,覺(jué)得設(shè)計(jì)不簡(jiǎn)單。但當(dāng)總體構(gòu)思完成后,對(duì)各個(gè)功能的實(shí)現(xiàn)可以用小程序即模塊形式進(jìn)行實(shí)現(xiàn),比如輸入數(shù)據(jù),輸出數(shù)據(jù),修改數(shù)據(jù),刪除數(shù)據(jù)等.在一個(gè)個(gè)

7、小程序中調(diào)試,最后各個(gè)模塊的功能完成比較好后,在將所有的模塊都放進(jìn)main()主函數(shù)中進(jìn)行調(diào)試,這樣可以避免由整體構(gòu)思調(diào)試引起的調(diào)試障礙.但還是沒(méi)有得到完美的效果,有的模塊還是有問(wèn)題。而且程序上看沒(méi)什么問(wèn)題???老師也幫了不少的忙吧。在此寫(xiě)過(guò)老師的幫助。2.在調(diào)試過(guò)程中,F(xiàn)5,F10,F11,有了更深的認(rèn)識(shí),并且可以更靈活的運(yùn)用。 在編寫(xiě)程序的過(guò)程中,有些邏輯不是很清楚,但大部分程序模塊還是寫(xiě)出來(lái)了。 那些不清楚的就是文件方面的知識(shí),以后要好好研究下文件了??傮w來(lái)說(shuō), 這次課程設(shè)計(jì)對(duì)C語(yǔ)言方面的知識(shí)又重新復(fù)習(xí)了一遍,感覺(jué)還行。3.還有就是原先有想過(guò)用密碼,構(gòu)思是想實(shí)現(xiàn)一個(gè)帳號(hào)密碼配對(duì)使用的方法,

8、但是由于文件的使用不熟練,最后還是以失敗告終。同時(shí)程序只能在當(dāng)前登錄過(guò)程中輸入進(jìn)入系統(tǒng),有較大的局限性。七、參考文獻(xiàn)C語(yǔ)言程序設(shè)計(jì) 譚浩強(qiáng) 清華大學(xué)出版社 1999年12月C語(yǔ)言程序設(shè)計(jì)(第二版)王曙燕 /主編八附錄:3. 完全代碼:#include"stdio.h"#include"string.h"#include"stdlib.h" /*頭文件*/#define MAX 100typedef struct int year; int month; int day;DATE;typedef struct int num; /*學(xué)號(hào)

9、*/ char name20; /*姓名*/ /*定義結(jié)構(gòu)體*/char sex6; /*性別*/int age; /*年齡*/DATE birthday; /*出生年月*/char sushe30; /*宿舍號(hào)*/char classes10; /*班級(jí)*/char zhuanye50; /*專業(yè)*/char chuanghao50; /*床號(hào)*/STUDENTS;/*讀取信息*/int read_file(STUDENTS students) FILE *fp; int i=0;if(fp=fopen("stu.txt","rt")=NULL) pr

10、intf("nn*庫(kù)存文件不存在!請(qǐng)創(chuàng)建"); /*創(chuàng)建文件*/ return 0;while(fread(&studentsi,sizeof(STUDENTS),1,fp)=1) /*成功創(chuàng)建*/ i+; fclose(fp); return i;/*保存信息*/void save_file(STUDENTS students,int sum) FILE *fp; int i; if(fp=fopen("stu.txt","wb")=NULL) printf("讀文件錯(cuò)誤!n"); return; for

11、(i=0;i<sum;i+) if(fwrite(&studentsi,sizeof(STUDENTS),1,fp)!=1) printf("寫(xiě)文件錯(cuò)誤!n"); /*學(xué)生信息保存到文件中*/ fclose(fp);/*輸入模塊*/ int input(STUDENTS students) int i=0,t; /*定義要輸入學(xué)生的個(gè)數(shù)*/ system("cls"); printf("nn 錄入學(xué)生個(gè)數(shù)(最多%d個(gè))",MAX); scanf("%d",&t); printf("

12、-n"); do / printf("n 第%d個(gè)學(xué)生信息",i+1); /*輸入學(xué)生的基本信息*/ printf("n 第%d個(gè)學(xué)生的學(xué)號(hào)",i+1); scanf("%d",&studentsi.num); if(studentsi.num=0) break; printf("n 學(xué)生姓名:"); scanf("%s",); printf("n 學(xué)生性別:"); scanf("%s",studentsi.s

13、ex); printf("n 學(xué)生年齡:"); scanf("%d",&studentsi.age); printf("n 學(xué)生出生年月日:"); scanf("%d %d %d",&studentsi.birthday.year,&studentsi.birthday.month, &studentsi.birthday.day); printf("n 學(xué)生宿舍:"); scanf("%s",studentsi.sushe); printf(

14、"n 學(xué)生班級(jí):"); scanf("%s",studentsi.classes); printf("n 學(xué)生專業(yè):"); scanf("%s",studentsi.zhuanye); printf("n 學(xué)生床號(hào):"); scanf("%s",studentsi.chuanghao); i+; while(i<t); save_file(students,t); /*保存輸入的學(xué)生信息*/ printf("n %d個(gè)學(xué)生信息輸入完畢! n",t);

15、 getch(); return t; /*返回輸入學(xué)生的個(gè)數(shù)值*/ /*輸出模塊*/ void output(STUDENTS students,int sum) int i; system("cls"); printf("num name sex age year-month-day sushe classes zhuanye chuanghaon");printf(" n"); for(i=0;i<sum;i+) /*輸出學(xué)生的信息*/ printf("%5d %5s %5s %5d %5d %5d %5d %5

16、s %5s %5s %5sn", studentsi.num,,studentsi.sex,studentsi.age,studentsi.birthday.year, studentsi.birthday.month,studentsi.birthday.day,studentsi.sushe, studentsi.classes,studentsi.zhuanye,studentsi.chuanghao); printf(" n"); getch(); save_file(students,sum); /*添加信息模塊*/int a

17、ppend(STUDENTS students,int sum) int i=sum,flag=0; /*從已經(jīng)輸入的學(xué)生尾部添加*/ char choice;sum=read_file(students); system("cls");printf("nn 添加學(xué)生信息 n"); do if(i<MAX)/*已經(jīng)輸入的學(xué)生個(gè)數(shù)和要添加的學(xué)生個(gè)數(shù)之和要小于定義的學(xué)生個(gè)數(shù)最大值*/printf("n 新學(xué)生學(xué)號(hào):"); scanf("%d",&studentsi.num); printf("n

18、 學(xué)生姓名:"); scanf("%s",); printf("n 學(xué)生性別:"); /*輸入添加學(xué)生的基本信息*/ scanf("%s",studentsi.sex); printf("n 學(xué)生年齡:"); scanf("%d",&studentsi.age); printf("n 學(xué)生出生年月日:"); scanf("%d %d %d",&studentsi.birthday.year,&s

19、tudentsi.birthday.month,&studentsi.birthday.day); printf("n 學(xué)生宿舍號(hào):"); scanf("%s",studentsi.sushe); printf("n 學(xué)生班級(jí):"); scanf("%s",studentsi.classes); printf("n 學(xué)生專業(yè):"); scanf("%s",studentsi.zhuanye); printf("n 床號(hào):"); scanf(&quo

20、t;%s",studentsi.chuanghao); i+; printf("n 繼續(xù)添加嗎?(Y/N)"); choice=getch(); if(choice='Y'|choice='y') flag=1; printf("n 繼續(xù)!n"); /*是否要繼續(xù)添加*/ else flag=0;while(flag=1); printf("n 按任意鍵返回主菜單!"); getch(); save_file(students,i); /*保存添加的學(xué)生信息到原文件*/ return i; /

21、*返回文件中學(xué)生個(gè)數(shù)值*/ /*修改信息模塊*/void modify(STUDENTS students,int sum) /FILE *fp;int i,choice,flag,modify_num;sum=read_file(students); /*讀文件*/ do system("cls"); printf("n 輸入要修改的學(xué)生學(xué)號(hào):"); scanf("%d",&modify_num); /*輸入要修改的學(xué)生學(xué)號(hào)*/ for(i=0;i<sum;i+) if(studentsi.num=modify_num

22、) printf("n 學(xué)生信息 n"); printf("num name sex age year-month-day address sushe zhuanye chuanghaon"); printf(" n"); printf("%5d %5s %5s %5d %5d %5d %5d %5s %5s %5s %5sn",studentsi.num,,studentsi.sex,studentsi.age,studentsi.birthday.year,studentsi.bir

23、thday.month,studentsi.birthday.day,studentsi.sushe,studentsi.classes,studentsi.zhuanye,studentsi.chuanghao); printf("n 要修改哪一項(xiàng)?n"); printf("n 1.學(xué)生學(xué)號(hào) n"); printf("n 2.學(xué)生姓名 n"); printf("n 3.學(xué)生性別 n"); printf("n 4.學(xué)生年齡 n"); printf("n 5.學(xué)生出生年月日 n"

24、;); printf("n 6.學(xué)生宿舍號(hào) n"); printf("n 7.學(xué)生班級(jí) n"); printf("n 8.學(xué)生專業(yè) n"); printf("n 9.學(xué)生床號(hào) n"); printf("n 請(qǐng)選擇(1-9):"); scanf("%d",&choice); switch(choice) case 1:printf("n 輸入修改后的學(xué)號(hào):"); scanf("%d",&studentsi.num); br

25、eak; case 2:printf("n 輸入修改后的姓名:"); scanf("%s",); break; case 3:printf("n 輸入修改后的性別:"); scanf("%s",studentsi.sex); break; /*選擇要修改學(xué)生的項(xiàng)目*/ case 4:printf("n 輸入修改后的年齡:"); scanf("%d",&studentsi.age); break; case 5:printf("n

26、輸入修改后的出生年月:"); scanf("%d %d %d",&studentsi.birthday.year,&studentsi.birthday.month, &studentsi.birthday.day); break; case 6:printf("n 輸入修改后的宿舍號(hào):"); scanf("%s",studentsi.sushe); break; case 7:printf("n 輸入修改后的班級(jí):"); scanf("%s",students

27、i.classes); break; case 8:printf("n 輸入修改后的專業(yè):"); scanf("%s",studentsi.zhuanye); break; case 9:printf("n 輸入修改后的床號(hào):"); scanf("%s",studentsi.chuanghao); break; printf("n 學(xué)生信息表 n"); printf("num name sex age year-month-day sushe classes zhuanye chuan

28、ghaon"); printf(" n"); printf("%5d %5s %5s %5d %5d %5d %5d %5s %5s %5s %5sn", studentsi.num,,studentsi.sex,studentsi.age,studentsi.birthday.year, studentsi.birthday.month,studentsi.birthday.day,studentsi.sushe, studentsi.classes,studentsi.zhuanye,studentsi.chua

29、nghao); break; /*輸出修改后的學(xué)生信息*/ if(i=sum) printf("n 該學(xué)生不存在!"); getch(); printf("nn 繼續(xù)修改嗎?(Y/N)"); choice=getch(); if(choice='Y'|choice='y') flag=1; printf("n 繼續(xù)!n"); /*是否要繼續(xù)修改*/ else flag=0; while(flag=1); printf("n 按任意鍵返回主菜單!");getch(); save_fil

30、e(students,sum); /*保存修改后的信息*/ /*刪除信息模塊*/ int del(STUDENTS students,int sum) int i,del_num; printf("請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào)"); scanf("%d",&del_num); /*輸入要?jiǎng)h除的學(xué)生學(xué)號(hào)*/ for(i=0;i<sum;i+) if(del_num=studentsi.num) for(;i<sum-1;i+) studentsi.num=studentsi+1.num; printf("刪除成功"); g

31、etch(); save_file(students,sum-1); /*保存刪除后的學(xué)生信息到原文件*/ return (sum-1) ; /*查詢信息模塊*/ void inquire(STUDENTS students,int sum) FILE *fp;int i,choice,flag,inquire_num; sum=read_file(students); /*讀文件*/ printf("%dn",sum); do system("cls"); printf("n 輸入要查詢的學(xué)生學(xué)號(hào):"); scanf("%

32、d",&inquire_num); /*輸入要查詢的學(xué)生學(xué)號(hào)*/ for(i=0;i<sum;i+) if(studentsi.num=inquire_num) printf("n 此學(xué)生信息為: n"); printf("num name sex age year-month-day sushe classes zhuanye chuanghaon"); printf(" n"); printf("%5d %5s %5s %5d %d%d%d %5s %5s %5s %5sn", stud

33、entsi.num,,studentsi.sex,studentsi.age,studentsi.birthday.year, studentsi.birthday.month,studentsi.birthday.day,studentsi.sushe, studentsi.classes,studentsi.zhuanye,studentsi.chuanghao); break; /*輸出要查詢的學(xué)生信息*/ if(i=sum) printf("n 無(wú)此學(xué)生信息 n"); getch(); printf("nn 是否繼續(xù)?(Y/N)

34、"); choice=getch(); if(choice='Y'|choice='y') flag=1; printf("n 繼續(xù)!n"); /*是否要繼續(xù)*/ else flag=0; while(flag=1); printf("n 按任意鍵返回主菜單!"); getch();/*統(tǒng)計(jì)信息模塊*/ void count(STUDENTS students,int sum) int i,count=0; char s10; printf("請(qǐng)輸入要統(tǒng)計(jì)的班級(jí)的學(xué)生的班級(jí)號(hào)!"); scan

35、f("%s",s); /*按輸入的班級(jí)號(hào)統(tǒng)計(jì)此班的總學(xué)生人數(shù)*/ for(i=0;i<sum;i+) if(strcmp(s,studentsi.classes)=0) count+; printf("%s班的總?cè)藬?shù)為%d人",s,count); getch(); save_file(students,sum); /*排行信息模塊*/ void sort(STUDENTS students,int sum) int i,j,t; system("cls"); printf("n 學(xué)生信息排行n");print

36、f("n 按學(xué)號(hào)排行n"); printf(" n"); for(i=0;i<sum-1;i+) /*按學(xué)號(hào)用冒泡法升序排列學(xué)生信息*/ for(j=i+1;j<sum;j+) if(studentsi.num>studentsj.num) t=studentsi.num; studentsi.num=studentsj.num; studentsj.num=t; printf(" n"); printf("num name sex age year-month-day sushe classes zhua

37、nye chuanghaon"); for(i=0;i<sum;i+) printf("%5d %5s %5s %5d %d%d%d %5s %5s %5s %5sn", studentsi.num,,studentsi.sex,studentsi.age,studentsi.birthday.year,studentsi.birthday.month,studentsi.birthday.day,studentsi.sushe,studentsi.classes,studentsi.zhuanye,studentsi.chuanghao); /*輸出排序后的學(xué)生信息*/getch(); save_file(students,sum); /*保存排序后的學(xué)生信息到文件中*/void mima() char mima; char a9; int i; printf(" 請(qǐng)輸入密碼:")

溫馨提示

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

評(píng)論

0/150

提交評(píng)論