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

下載本文檔

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

文檔簡介

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

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

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

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

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

6、); for(;) /*循環(huán)調用模式,保證能進行重復操作*/switch(Select() /*功能選擇*/ case 0:system(cls);/*清除屏幕先前的顯示內容*/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 章 設計小結好久沒用 C 語言寫東西了,自從程序競賽結束后就沒怎么碰過 C 語言,在做課程設計的時候暴露出很多問題,知識點的遺忘之類的。在這過程中翻翻書本,還都能回憶起來。不過鏈表和文件那部分的知識通過這次課程設計是確實重新學習了。文件的讀寫、關于文件指針的各種函數(shù)、單鏈表的操作,等等。都復習鞏固了。通過運行并調試自己寫的代碼,解決了遇到的一些問題。提高了編程能力。第 5 章 參考文獻1 譚浩強,C 語言程序設計(第四版).

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

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

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

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

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

13、ntf(n 此學號的學生信息已存在!n); else/*若不存在,則需要輸入其他的信息 ,然后在進行插入操作*/ 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() /*查找學生信息(按學號)*/STU *p;char find20; /*功能很簡單,學生學號唯一,查找只須一次遍歷*/p=pointer_student;printf(n 學生信息查詢n);printf(n 請輸入你要查詢學生學號:);scanf(%s,find);while(strcmp(p-num,find)!=0&p-next) p=p-next;if(strcmp(p-num,find)=0)/*找到了就顯示,否則提示不存在,或出錯*/ printf(n 學生學號:%s 的籍貫

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

16、tf(n 學生姓名:%s 的籍貫為:%sn,find,p-place);else printf(n 此學生不存在,請核對!);system(pause);system(cls);void Query3() /*查找學生信息(按籍貫)*/STU *p;char find20; p=pointer_student;printf(n 學生信息查詢n);printf(n 請輸入你要查詢學生的籍貫:);scanf(%s,find);while(p)if(strcmp(p-place,find)=0)/*找到了就顯示,否則提示不存在,或出錯*/printf(學生學號為:%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 請輸入你要修改信息的學生學號:);scanf(%s,find);while(strcmp(p-num,find)!=0&p-next) p=p-next;if(strcmp(p-num,find)=0)printf(新的學號為: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 請輸入你要刪除信息的學生學號:);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() /*顯示學生信息*/STU *p;p=pointer_student;printf(n 學生信息如下:nn);printf(學號:tt 姓名:tt 籍貫:n);/*直接打印所有學生的信息,遍歷鏈表一次就可*/while(p!=NULL) printf(%st%stt%sn,p-num,p-name,p-

20、place); p=p-next;printf(n 學生信息顯示完畢!n);system(pause);system(cls);void Displayjs() /*顯示學生信息*/FILE *fp1=fopen(江蘇籍.txt,w); FILE *fp2=fopen(非江蘇籍.txt,w); STU *p;p=pointer_student;printf(n 江蘇籍的學生信息如下:nn);printf(學號:tt 姓名:tt 籍貫:n);/*直接打印所有學生的信息,遍歷鏈表一次就可*/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 非江蘇籍的學生信息如下:nn);printf(學號: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 學生信息按籍貫分類顯示完畢!n 分別存盤已完成!n);system(pause);system(cls);void Save() /*保存學生信息*/FILE *fp; /*創(chuàng)建文件型指針*/STU *p,*p0;p=pointer_student;if(fp=fopen(Student.dat,wb)=NULL) /*創(chuàng)建文件,進行保存*/ 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); /*關閉文件*/void Load() /*加載學生信息*/STU *p1,*p2,*p3;FILE *fp; /*創(chuàng)建文件

溫馨提示

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

評論

0/150

提交評論