11計(jì)本(3)班《c++課程設(shè)計(jì)報(bào)告》學(xué)生信息管理系統(tǒng)程張磊
《11計(jì)本(3)班《c++課程設(shè)計(jì)報(bào)告》學(xué)生信息管理系統(tǒng)程張磊》由會(huì)員分享,可在線閱讀,更多相關(guān)《11計(jì)本(3)班《c++課程設(shè)計(jì)報(bào)告》學(xué)生信息管理系統(tǒng)程張磊(12頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、巢湖學(xué)院計(jì)算機(jī)與信息工程學(xué)院 課程名稱 C+課程設(shè)計(jì) 課題名稱 學(xué)生信息管理系統(tǒng) 專業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班級(jí) 11級(jí)計(jì)本3班 學(xué)號(hào) 11011169 姓名 程張磊 聯(lián)系方式 18226926353 指導(dǎo)教師 許榮泉 目錄一、 系統(tǒng)的設(shè)計(jì)需求-2二、 系統(tǒng)的功能模塊劃分-2三、 系統(tǒng)的整體設(shè)計(jì)-2四、 調(diào)試分析-6五、 總結(jié)-7六、 附件:代碼-7一、系統(tǒng)的設(shè)計(jì)需求1、整個(gè)系統(tǒng)均用C語言實(shí)現(xiàn);2、利用指針、鏈表來實(shí)現(xiàn)學(xué)生成績(jī)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì);3、系統(tǒng)具有輸入、顯示、刪除、排序、退出基本功能;4、系統(tǒng)的各個(gè)功能模塊都用函數(shù)的形式來實(shí)現(xiàn);5、可以將學(xué)生信息全部顯示出來出來。二、系統(tǒng)的功能模塊劃分每一
2、條記錄包括一個(gè)學(xué)生的姓名、成績(jī)。同時(shí)1、輸入功能:一次可以完成一個(gè)學(xué)生成績(jī)記錄的輸入。2、顯示功能:完成全部學(xué)生記錄的顯示。3、刪除功能:對(duì)指定學(xué)生的成績(jī)進(jìn)行刪除。4、排序功能:按學(xué)生從大到小進(jìn)行排序。5、修改功能:對(duì)學(xué)生的成績(jī)進(jìn)行修改。三、系統(tǒng)的整體設(shè)計(jì)1).數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):A、輸入功能的設(shè)計(jì):void insert_func(void) char s_temp4;ptr=(struct student *) malloc(sizeof(struct student);printf( Student name : );gets(ptr-name);/ gets從標(biāo)準(zhǔn)輸入設(shè)備讀取字符串/prin
3、tf( Student score: );gets(s_temp);ptr-score = atoi(s_temp);/把字符串轉(zhuǎn)化為 整數(shù)/B、刪除功能的設(shè)計(jì):void delete_func(void)/現(xiàn)在進(jìn)入刪除操作/char del_name20;printf( Delete student name: );gets(del_name);prev = head;current = head-next;while (current != NULL) & (strcmp(current-name , del_name)!=0)/用到了strcmp 比較字符串prev = current;
4、current = current-next;if (current != NULL)prev-next = current-next;free(current);/釋放當(dāng)前位置/printf( %s student record deletedn,del_name);/輸出被刪除的姓名/elseprintf( Student %s not foundn,del_name);/否則此學(xué)生不存在/C、排序功能的設(shè)計(jì):void sort_func(void) /插入數(shù)據(jù)/prev = head;/把頭指針?biāo)傅闹蹈督oprev/current = head-next;/把頭指針的下一個(gè)指針值付給當(dāng)前
5、指針?biāo)傅奈恢?while (current != NULL) & (current-score ptr-score)prev = current;current = current-next;ptr-next = current;prev-next = ptr;D、修改功能的設(shè)計(jì):void modify_func(void)char n_temp20,s_temp4;/定義字符類型/printf( Modify student name: );gets(n_temp);/這樣輸入姓名current=head-next;while (current != NULL) & (strcmp(cur
6、rent-name , n_temp)!=0)prev = current;current = current-next;if (current != NULL)printf( *n);printf( Student name : %sn,current-name);printf( Student score: %dn,current-score);printf( *n);printf( Please enter new score: );gets(s_temp);current-score = atoi(s_temp);printf( %s student record modifiedn,
7、n_temp);/輸出被修改的成績(jī)/elseprintf( Student %s not foundn,n_temp);/否則此學(xué)生不存在/anykey_func();E、顯示功能的設(shè)計(jì):void display_func(void)/定義顯示/int count=0;system(cls);if(head-next = NULL)/如果頭指針?biāo)笖?shù)為空/printf( No student recordn);/則輸出學(xué)生記錄為空/else/否則輸出學(xué)生姓名和成績(jī)/printf( NAME SCOREn);printf( -n);current=head-next;while(current
8、!= NULL)printf( %-20s %3dn, current-name, current-score);count+;current=current-next;if(count % 20 = 0) getch();printf( -n);printf( Total %d record(s) foundn, count);2).功能模塊的具體設(shè)計(jì)整個(gè)系統(tǒng)除了主函數(shù)外,另外還有8個(gè)函數(shù),實(shí)現(xiàn)5大功能:輸入功能、顯示功能、排序功能、刪除功能、修改功能。各個(gè)函數(shù)的詳細(xì)設(shè)計(jì)說明分別如下:1、 主函數(shù) main()利用while()循環(huán)和swithch()實(shí)現(xiàn)各函數(shù)的調(diào)用,系統(tǒng)根據(jù)輸入的數(shù)字選項(xiàng)
9、來調(diào)用相應(yīng)的函數(shù)。2、 輸入記錄函數(shù)getch(); insert_func();這是一個(gè)無參函數(shù),用來執(zhí)行第學(xué)生成績(jī)記錄的輸入,當(dāng)當(dāng)沒有學(xué)生紀(jì)錄時(shí)就開始進(jìn)行輸入操作。算法:先聲明一個(gè)首節(jié)點(diǎn)head,并將head-next設(shè)為NULL。然后用 if(fptr=fopen(“slist.dat”,”r”)=NULL)對(duì)程序進(jìn)行判斷如果成立則進(jìn)行輸入,輸入時(shí)運(yùn)用getch()函數(shù)和insert_func()主導(dǎo)來完成。 最終效果圖:3、 顯示記錄函數(shù) void display_func(void)這是一個(gè)不返回值的有參函數(shù),負(fù)責(zé)對(duì)全部學(xué)生成績(jī)記錄的輸出,不足之處就是不能對(duì)學(xué)生成績(jī)進(jìn)行分頁(yè)顯示。算法
10、: 先用if語句對(duì)頭指針的下一給位置進(jìn)行判斷看是否為空如果為空則不顯示如果不為空則輸出學(xué)生姓名及成績(jī)。算法:現(xiàn)將head-next賦值給當(dāng)前位置current然后再用while對(duì)current進(jìn)行定義最后輸出。 最終效果:4、 刪除記錄函數(shù)void delete_func(void)這是一個(gè)有參函數(shù),先輸入要?jiǎng)h除的學(xué)生記錄的 姓名,找到后顯示該學(xué)生信息,等確認(rèn)后便可進(jìn)行刪除。算法:從p指向的第一個(gè)結(jié)點(diǎn)開始,檢查該結(jié)點(diǎn)中的num值是否等于輸入的要求刪除的那個(gè)姓名。如果相等就將該結(jié)點(diǎn)刪除,如不相等,就將p后移一個(gè)結(jié)點(diǎn),再如此進(jìn)行下去,直到遇到表尾為止。最終效果:5、排序函數(shù)void sort_fu
11、nc(void)這是一個(gè)有參函數(shù),按學(xué)生成績(jī)的大小進(jìn)行排6、修改函數(shù) void modify_func(void)這是一個(gè)有參函數(shù),先輸入要修改的學(xué)生姓名找到后對(duì)其成績(jī)進(jìn)行修改。算法:先將head-next賦值給當(dāng)前位置current然后用while函數(shù)對(duì)其進(jìn)行定義然后檢查該節(jié)點(diǎn)中的姓名是不是p要找的如果相等就修改,如不相等,就將current next賦值給current在于p節(jié)點(diǎn)比較直到遇到表尾為止。四、調(diào)試分析(1)剛開始沒有那個(gè)初始化函數(shù),程序運(yùn)行后,沒有輸入任何數(shù)據(jù)就試得去執(zhí)行顯示功能,結(jié)果顯示的是一些亂碼!加入初始化函數(shù)后,這種現(xiàn)象也隨之消失。(2)剛開始執(zhí)行輸入函數(shù),輸入十個(gè)學(xué)生
12、的成績(jī),輸完后執(zhí)行顯示功能,學(xué)生成績(jī)記錄是按輸入時(shí)的順序顯示的,試著在其中增加一些語句,希望能把學(xué)號(hào)按從大到小的順序顯示,但暫時(shí)沒有成功,但最后還是按從大到小的順序輸出了。(3)在輸入函數(shù)中設(shè)了一個(gè)無限循環(huán),可以輸入無數(shù)個(gè)學(xué)生的成績(jī)信息,但最后失敗了只能一個(gè)一個(gè)輸入。(4)輸入太多個(gè)學(xué)生的成績(jī)時(shí),屏幕顯示不能控制為一頁(yè)一頁(yè)顯示,所以為了方便起見,不要輸入太多記錄,十七左右為最佳。五、 總結(jié)經(jīng)過C語言課程設(shè)計(jì),感覺自己收獲不少!這次課程設(shè)計(jì)雖然花了我不少時(shí)間,但正是這些時(shí)間,讓我見識(shí)到了C語言的重要性。這個(gè)學(xué)生成績(jī)管理系統(tǒng)都是在自己知識(shí)范圍內(nèi)完成的,所以界面清晰簡(jiǎn)單,可能不是很好看,但絕對(duì)實(shí)用!
13、從這里我也得到一個(gè)體會(huì),做一個(gè)程序,或者開發(fā)一個(gè)軟件,應(yīng)該著重從它的后臺(tái)制作入手,不能做出一個(gè)中看不中用的程序或者軟件。相信這次的課程設(shè)計(jì)為我以后繼續(xù)從事計(jì)算機(jī)工作打了一個(gè)小小的開頭。六、附件:代碼/* file name: slist.c */* 單向鍵結(jié)鏈表,插入、刪除使用排序 */學(xué)會(huì)對(duì)文件操作文件操作和單鏈表一起使用#include #include #include #include void read_func(void);void write_func(void);void insert_func(void);void sort_func(void);/ sort意思為類型/vo
14、id delete_func(void);void display_func(void); /*DSFGAFSHDGSJHDF*/void modify_func(void); /*DSFGAFSHDGSJHDF*/void anykey_func(void); /*DSFGAFSHDGSJHDF*/struct studentchar name20; /*DSFGAFSHDGSJHDF*/int score;struct student *next;struct student *ptr, *head, *current, *prev;/全部聲明為全局變量int main(void)char
15、 option1;system(cls);/清屏read_func();/func意思為目前使用者定義函式的參數(shù)列的數(shù)目/while(1)printf(*n);printf( 1.插入n);printf( 2.刪除n);printf( 3.顯示n);printf( 4.修改n);printf( 5.退出n);printf(*n);printf( Please enter your choice (1-5).);option1=getche();printf(n);/*DSFGAFSHDGSJHDF*/switch(option1)case 1:insert_func();break;case
16、2:delete_func();break;case 3:display_func();break;case 4:modify_func();break;case 5:/ write_func();/寫入?yún)?shù)數(shù)目/exit(0);/這里也處理的比較好void read_func(void)FILE *fptr;/ FILE意思為歸檔/head=(struct student *) malloc(sizeof(struct student);head-next = NULL;/* 開始時(shí),若表中不存在數(shù)據(jù),則要求輸入第一筆數(shù)據(jù) */if(fptr=fopen(slist.dat,r) = NUL
17、L)printf( Data file not existn);/數(shù)據(jù)文件不存在/printf( Press any key to edit first record.n);getch();/字符插入函數(shù)/insert_func();/不存在就實(shí)行插入操作elseptr=(struct student *) malloc(sizeof(struct student);while(fscanf(fptr, %s %d, ptr-name, &ptr-score) != EOF)sort_func();ptr=(struct student *) malloc(sizeof(struct stud
18、ent);fclose(fptr);/關(guān)閉fptr所指的文件釋放緩沖區(qū)/void write_func(void)FILE *fptr;fptr=fopen(slist.dat,w);current=head-next;/ current意思為當(dāng)前的/while(current != NULL)fprintf(fptr, %s %dn, current-name, current-score);current = current-next;fclose(fptr);void insert_func(void) /一插入就比較字符串(想比較很簡(jiǎn)單) 不是等到全部插完了才比較char s_temp
19、4;ptr=(struct student *) malloc(sizeof(struct student);printf( Student name : );gets(ptr-name);/ gets從標(biāo)準(zhǔn)輸入設(shè)備讀取字符串/printf( Student score: );gets(s_temp);ptr-score = atoi(s_temp);/把字符串轉(zhuǎn)化為 整數(shù)/sort_func();/*以分?jǐn)?shù)高低由大到小排列*/void sort_func(void) /插入數(shù)據(jù)/prev = head;/把頭指針?biāo)傅闹蹈督oprev/current = head-next;/把頭指針的下一個(gè)
20、指針值付給當(dāng)前指針?biāo)傅奈恢?while (current != NULL) & (current-score ptr-score)prev = current;current = current-next;ptr-next = current;prev-next = ptr;/前面是進(jìn)行成績(jī)排序操作/void delete_func(void)/現(xiàn)在進(jìn)入刪除操作/char del_name20;printf( Delete student name: );gets(del_name);prev = head;current = head-next;while (current != NULL
21、) & (strcmp(current-name , del_name)!=0)/用到了strcmp 比較字符串prev = current;current = current-next;if (current != NULL)prev-next = current-next;free(current);/釋放當(dāng)前位置/printf( %s student record deletedn,del_name);/輸出被刪除的姓名/elseprintf( Student %s not foundn,del_name);/否則此學(xué)生不存在/以上為刪除操作/anykey_func();/進(jìn)入修改操作/
22、void modify_func(void)char n_temp20,s_temp4;/定義字符類型/printf( Modify student name: );gets(n_temp);/這樣輸入姓名current=head-next;while (current != NULL) & (strcmp(current-name , n_temp)!=0)prev = current;current = current-next;if (current != NULL)printf( *n);printf( Student name : %sn,current-name);printf(
23、Student score: %dn,current-score);printf( *n);printf( Please enter new score: );gets(s_temp);current-score = atoi(s_temp);printf( %s student record modifiedn,n_temp);/輸出被修改的成績(jī)/elseprintf( Student %s not foundn,n_temp);/否則此學(xué)生不存在/anykey_func();/進(jìn)入顯示操作/void display_func(void)/定義顯示/int count=0;system(cl
24、s);if(head-next = NULL)/如果頭指針?biāo)笖?shù)為空/printf( No student recordn);/則輸出學(xué)生記錄為空/else/否則輸出學(xué)生姓名和成績(jī)/printf( NAME SCOREn);printf( -n);current=head-next;while(current != NULL)printf( %-20s %3dn, current-name, current-score);count+;current=current-next;if(count % 20 = 0) getch();printf( -n);printf( Total %d record(s) foundn, count);anykey_func();void anykey_func(void)/任何鍵繼續(xù)printf( Press any key to continue.);getch();printf(n);- 11 -
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 文言特殊句式課件簡(jiǎn)
- 攻克逆作法施工難點(diǎn)確保柱頭施工質(zhì)量
- 如何設(shè)計(jì)年度培訓(xùn)計(jì)劃
- 芳香環(huán)上取代反應(yīng)
- 房屋的演變PPT課件
- 大眾汽車電子零部件
- 129127493023125000互聯(lián)網(wǎng)支付工具與網(wǎng)上銀行
- 英語人教版八年級(jí)下冊(cè)Unit 2 Section A 1 (1a-2d)
- 第15章 開發(fā)Web應(yīng)用程序
- 第6章 Windows窗體應(yīng)用程序
- 第3章 Windows 7軟硬件管理安裝與卸載程序
- 黨員發(fā)展程序和入黨文書基本寫作
- 物理化學(xué)熱力學(xué)一律1課件
- 福建土樓介紹
- 教師課堂提問技能培養(yǎng)專題課件