學(xué)生籍貫信息記錄簿_第1頁
學(xué)生籍貫信息記錄簿_第2頁
學(xué)生籍貫信息記錄簿_第3頁
學(xué)生籍貫信息記錄簿_第4頁
學(xué)生籍貫信息記錄簿_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、程程序序設(shè)設(shè)計(jì)計(jì)課課程程設(shè)設(shè)計(jì)計(jì)報報告告學(xué)生籍貫信息記錄簿學(xué)生籍貫信息記錄簿專業(yè)專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)計(jì)算機(jī)科學(xué)與技術(shù)(嵌入式軟件人才培養(yǎng))(嵌入式軟件人才培養(yǎng))學(xué)生姓名學(xué)生姓名李蘇興李蘇興班級班級學(xué)號學(xué)號指導(dǎo)教師指導(dǎo)教師完成日期完成日期2013 年年 6 月月目 錄第 1 章 設(shè)計(jì)目的. 第 2 章 設(shè)計(jì)內(nèi)容與要求. 第 3 章 主要技術(shù)指標(biāo)及特點(diǎn). 第 4 章 設(shè)計(jì)小結(jié). 第 5 章 參考文獻(xiàn). 附錄:源代碼清單. 第 1 章 設(shè)計(jì)目的1) 加深對C語言程序設(shè)計(jì)課程知識的理解,掌握C語言應(yīng)用程序的開發(fā)方法和步驟; 2) 進(jìn)一步掌握和利用C語言進(jìn)行課程設(shè)計(jì)的能力;3) 進(jìn)一步理解和運(yùn)用結(jié)構(gòu)化程

2、序設(shè)計(jì)的思想和方法;4) 初步掌握開發(fā)一個小型實(shí)用系統(tǒng)的基本方法;5) 學(xué)會調(diào)試一個較長的程序的基本方法;6) 學(xué)會利用流程圖或N-S圖表示算法;7) 掌握書寫課程設(shè)計(jì)開發(fā)文檔的能力(書寫課程報告) 。 第 2 章 設(shè)計(jì)內(nèi)容與要求課程設(shè)計(jì)目的課程設(shè)計(jì)題目:學(xué)生籍貫信息記錄簿;該軟件主要是編制一個學(xué)生籍貫信息記錄簿每個學(xué)生信息包括:學(xué)號、姓名、籍貫。具體功能要求如下:1)創(chuàng)建信息鏈表并以磁盤文件保存;2)讀取磁盤文件并顯示輸出所有學(xué)生的籍貫信息;3)按學(xué)號或姓名查詢其籍貫;4)按籍貫查詢并輸出該籍貫的所有學(xué)生;5)能添加、刪除和修改學(xué)生的籍貫信息;6)顯示輸出江蘇籍和非江蘇籍的所有學(xué)生的信息并可

3、分別存盤。第 3 章 主要技術(shù)指標(biāo)及特點(diǎn)主要技術(shù)指標(biāo)及特點(diǎn)各項(xiàng)功能(模塊層次圖):該軟件主要組成模塊和各個模塊之間的調(diào)用關(guān)系如圖: 學(xué)生籍貫信息記錄簿學(xué)生籍貫信息記錄簿 主函數(shù)(在主函數(shù)調(diào)用的框架函數(shù)中包含主函數(shù)(在主函數(shù)調(diào)用的框架函數(shù)中包含以下所有函數(shù))以下所有函數(shù)) 刪除學(xué)生信息刪除學(xué)生信息查詢學(xué)生信息(按姓名)查詢學(xué)生信息(按姓名)查詢學(xué)生信息(按學(xué)號)查詢學(xué)生信息(按學(xué)號)添加學(xué)生信息添加學(xué)生信息退出系統(tǒng)退出系統(tǒng)查詢學(xué)生信息(按籍貫)查詢學(xué)生信息(按籍貫)修改學(xué)生信息修改學(xué)生信息顯示學(xué)生信息(全部)顯示學(xué)生信息(全部)顯示學(xué)生信息(分類)顯示學(xué)生信息(分類)程序采用主要的結(jié)構(gòu)類型分析該

4、程序采用的是結(jié)構(gòu)體類型來處理學(xué)生的所有基本信息,如下所述。結(jié)構(gòu)體為:typedef struct Studentchar num20;char name20;char place20;struct Student *next;STU;包含的庫函數(shù)有:#include #include #include /文件的使用 包含的函數(shù)有: Select(); /*主菜單*/ New(); /*初始化學(xué)生信息*/Add(); /*添加學(xué)生信息*/ Query1(); /*查找學(xué)生信息(按學(xué)號)*/Query2(); /*查找學(xué)生信息(按姓名)*/Query3(); /*查找學(xué)生信息(按籍貫)*/ Cha

5、nge();/*修改學(xué)生信息*/ Displayall(); /*顯示學(xué)生信息(全部)*/ Displayjs(); /*顯示學(xué)生信息(分類)*/ Delete(); /*刪除學(xué)生信息*/ Save(); /*保存學(xué)生信息*/ Load(); /*載入學(xué)生信息*/ 函數(shù)分析(1)main()該函數(shù)的主要功能是調(diào)用其他 12 個函數(shù)來實(shí)現(xiàn)主菜單的 8 項(xiàng)功能,通過 switch 選擇語句選擇操作,然后通過調(diào)用各種函數(shù)實(shí)現(xiàn)調(diào)用: void main() FILE *fp; /*創(chuàng)建文件型指針*/ if(fp=fopen(Student.dat,rb)=NULL) New(); else Load(

6、); for(;) /*循環(huán)調(diào)用模式,保證能進(jìn)行重復(fù)操作*/switch(Select() /*功能選擇*/ case 0:system(cls);/*清除屏幕先前的顯示內(nèi)容*/Save();printf(nnt 文件保存成功!n); printf(nnt 歡迎下次使用本系統(tǒng)!n); getchar(); exit(0); case 1: Add();break; case 2: Query1();break;case 3: Query2();break;case 4: Query3();break;case 5: Change();break;case 6: Delete();break;c

7、ase 7: Displayall();break;case 8: Displayjs();break;default:printf(n 錯誤!);exit(0);第 4 章 設(shè)計(jì)小結(jié)好久沒用 C 語言寫東西了,自從程序競賽結(jié)束后就沒怎么碰過 C 語言,在做課程設(shè)計(jì)的時候暴露出很多問題,知識點(diǎn)的遺忘之類的。在這過程中翻翻書本,還都能回憶起來。不過鏈表和文件那部分的知識通過這次課程設(shè)計(jì)是確實(shí)重新學(xué)習(xí)了。文件的讀寫、關(guān)于文件指針的各種函數(shù)、單鏈表的操作,等等。都復(fù)習(xí)鞏固了。通過運(yùn)行并調(diào)試自己寫的代碼,解決了遇到的一些問題。提高了編程能力。第 5 章 參考文獻(xiàn)1 譚浩強(qiáng),C 語言程序設(shè)計(jì)(第四版).

8、清華大學(xué)出版社 2 譚浩強(qiáng),C 語言程序設(shè)計(jì)(第四版)學(xué)習(xí)輔導(dǎo) .清華大學(xué)出版社 附錄:源代碼清單附錄:源代碼清單#include #include #include typedef struct Studentchar num20;char name20;char place20;struct Student *next;STU;STU *pointer_student;int Select(); /*主菜單*/void New(); /*初始化學(xué)生信息*/void Add(); /*添加學(xué)生信息*/void Query1(); /*查找學(xué)生信息(按學(xué)號)*/void Query2(); /

9、*查找學(xué)生信息(按姓名)*/void Query3(); /*查找學(xué)生信息(按籍貫)*/void Change();/*修改學(xué)生信息*/void Displayall(); /*顯示學(xué)生信息(全部)*/void Displayjs(); /*顯示學(xué)生信息(分類)*/void Delete(); /*刪除學(xué)生信息*/void Save(); /*保存學(xué)生信息*/ void Load(); /*載入學(xué)生信息*/int Select() /*主菜單*/ int sn;printf(nt 學(xué)生籍貫信息記錄簿n);printf(=n);printf(*t1-添加學(xué)生信息 *n);printf(*t2-查

10、詢學(xué)生信息(按學(xué)號) *n);printf(*t3-查詢學(xué)生信息(按姓名) *n);printf(*t4-查詢學(xué)生信息(按籍貫) *n);printf(*t5-修改學(xué)生信息 *n);printf(*t6-刪除學(xué)生信息 *n);printf(*t7-顯示學(xué)生信息(全部) *n);printf(*t8-顯示學(xué)生信息(分類) *n);printf(*t0-退出系統(tǒng) *n);printf(=n);printf(請選擇相應(yīng)代碼:); for(;) scanf(%d,&sn); fflush(stdin); if(sn8) printf(n 錯誤!請重新輸入:); else break; syst

11、em(cls);return sn; void New() /*初始化學(xué)生信息*/STU *p0;printf(n 學(xué)生信息初始化開始,請輸入學(xué)生信息n);p0=(STU*)malloc(sizeof(STU);pointer_student=p0; printf(n 請輸入學(xué)生信息:nn); printf(學(xué)號:); /*輸入學(xué)生學(xué)號(唯一)*/ scanf(%s,p0-num); printf(姓名:); /*輸入學(xué)生姓名*/ scanf(%s,p0-name);printf(籍貫:); /*輸入學(xué)生籍貫*/ scanf(%s,p0-place); p0-next=NULL; printf

12、(n 學(xué)生信息初始化完畢!n); getchar(); system(cls);void Add()/*添加學(xué)生信息*/STU *p,*p0,*p1; p=p1=pointer_student;printf(n 請輸入學(xué)生信息.nn);p0=(STU *)malloc(sizeof(STU); printf(學(xué)號:); scanf(%s,p0-num); while(strcmp(p0-num,p1-num)!=0&p1-next!=NULL) p1=p1-next; if(strcmp(p0-num,p1-num)=0) /*此處分兩種情況,若學(xué)生學(xué)號已存在,則不進(jìn)行操作*/ pri

13、ntf(n 此學(xué)號的學(xué)生信息已存在!n); else/*若不存在,則需要輸入其他的信息 ,然后在進(jìn)行插入操作*/ printf(姓名:); scanf(%s,p0-name);printf(籍貫:); scanf(%s,p0-place);while(p-next) p=p-next; if(pointer_student=NULL) pointer_student=p0; /*此處分兩種情況,鏈表中沒有數(shù)據(jù),head 直接指向 p0 處*/ else p-next=p0; /*此處分兩種情況,鏈表中有數(shù)據(jù),鏈表中最后元素的 next 指向 p0 處*/ p0-next=NULL; print

14、f(n 添加完畢!n); getchar(); system(cls);void Query1() /*查找學(xué)生信息(按學(xué)號)*/STU *p;char find20; /*功能很簡單,學(xué)生學(xué)號唯一,查找只須一次遍歷*/p=pointer_student;printf(n 學(xué)生信息查詢n);printf(n 請輸入你要查詢學(xué)生學(xué)號:);scanf(%s,find);while(strcmp(p-num,find)!=0&p-next) p=p-next;if(strcmp(p-num,find)=0)/*找到了就顯示,否則提示不存在,或出錯*/ printf(n 學(xué)生學(xué)號:%s 的籍貫

15、為:%sn,find,p-place);else printf(n 此學(xué)生學(xué)號不存在,請核對!);system(pause);system(cls);void Query2() /*查找學(xué)生信息(按姓名)*/STU *p;char find20; p=pointer_student;printf(n 學(xué)生信息查詢n);printf(n 請輸入你要查詢學(xué)生姓名:);scanf(%s,find);while(strcmp(p-name,find)!=0&p-next) p=p-next;if(strcmp(p-name,find)=0)/*找到了就顯示,否則提示不存在,或出錯*/ prin

16、tf(n 學(xué)生姓名:%s 的籍貫為:%sn,find,p-place);else printf(n 此學(xué)生不存在,請核對!);system(pause);system(cls);void Query3() /*查找學(xué)生信息(按籍貫)*/STU *p;char find20; p=pointer_student;printf(n 學(xué)生信息查詢n);printf(n 請輸入你要查詢學(xué)生的籍貫:);scanf(%s,find);while(p)if(strcmp(p-place,find)=0)/*找到了就顯示,否則提示不存在,或出錯*/printf(學(xué)生學(xué)號為:%s 姓名為:%sn,p-num,p

17、-name); p=p-next;system(pause);system(cls);void Change()STU *p;char find20; p=pointer_student;printf(n 請輸入你要修改信息的學(xué)生學(xué)號:);scanf(%s,find);while(strcmp(p-num,find)!=0&p-next) p=p-next;if(strcmp(p-num,find)=0)printf(新的學(xué)號為:n);scanf(%s,p-num);printf(新的姓名為:n);scanf(%s,p-name);printf(新的籍貫為:n);scanf(%s,p-

18、place);printf(修改完成!n);system(pause);system(cls);void Delete()STU *p;STU *temp;char find20; p=pointer_student;printf(n 請輸入你要刪除信息的學(xué)生學(xué)號:);scanf(%s,find);while(strcmp(p-num,find)!=0&p-next)temp=p; p=p-next;if(strcmp(p-num,find)=0)if(p-next=NULL) /*Can not delete this node*/temp-next=NULL;free(p);els

19、etemp=p-next;strcpy(p-num,temp-num);strcpy(p-name,temp-name);p-next=temp-next;free(temp);printf(刪除完成!n);system(pause);system(cls);void Displayall() /*顯示學(xué)生信息*/STU *p;p=pointer_student;printf(n 學(xué)生信息如下:nn);printf(學(xué)號:tt 姓名:tt 籍貫:n);/*直接打印所有學(xué)生的信息,遍歷鏈表一次就可*/while(p!=NULL) printf(%st%stt%sn,p-num,p-name,p-

20、place); p=p-next;printf(n 學(xué)生信息顯示完畢!n);system(pause);system(cls);void Displayjs() /*顯示學(xué)生信息*/FILE *fp1=fopen(江蘇籍.txt,w); FILE *fp2=fopen(非江蘇籍.txt,w); STU *p;p=pointer_student;printf(n 江蘇籍的學(xué)生信息如下:nn);printf(學(xué)號:tt 姓名:tt 籍貫:n);/*直接打印所有學(xué)生的信息,遍歷鏈表一次就可*/while(p!=NULL)if(strcmp(p-place,江蘇)=0) printf(%st%stt%

21、sn,p-num,p-name,p-place);fprintf(fp1,%-20st%-20st%-20sn,p-num,p-name,p-place); p=p-next;fclose(fp1); printf(nnn);p=pointer_student;printf(n 非江蘇籍的學(xué)生信息如下:nn);printf(學(xué)號:tt 姓名:tt 籍貫:n);while(p!=NULL)if(strcmp(p-place,江蘇)!=0) printf(%st%stt%sn,p-num,p-name,p-place);fprintf(fp2,%-20st%-20st%-20sn,p-num,p-

22、name,p-place); p=p-next;fclose(fp2); printf(n 學(xué)生信息按籍貫分類顯示完畢!n 分別存盤已完成!n);system(pause);system(cls);void Save() /*保存學(xué)生信息*/FILE *fp; /*創(chuàng)建文件型指針*/STU *p,*p0;p=pointer_student;if(fp=fopen(Student.dat,wb)=NULL) /*創(chuàng)建文件,進(jìn)行保存*/ printf(n 文件保存失敗!n 請重新啟動本系統(tǒng).n); exit(0);while(p!=NULL) if(fwrite(p,sizeof(STU),1,fp)!=1) /*將鏈表中的信息寫入文件中*/ printf(n 寫入文件失敗!n 請重新啟動本系統(tǒng)!n); p0=p; p=p-next; free(p0); pointer_student=NULL;fclose(fp); /*關(guān)閉文件*/void Load() /*加載學(xué)生信息*/STU *p1,*p2,*p3;FILE *fp; /*創(chuàng)建文件

溫馨提示

  • 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

提交評論