版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院課程設(shè)計(jì)成績(jī)單課程名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 指導(dǎo)教師: 姓名 性別 學(xué)號(hào)班級(jí)計(jì)科1203班綜合成績(jī)成績(jī)等級(jí)程序運(yùn)行情況(占總成績(jī)20%)能正確運(yùn)行 基本能正確運(yùn)行 能運(yùn)行但結(jié)果不完善(20分) (15分) (10分)程序功能的完善程度(占總成績(jī)10%)完善 基本完善 不完善(10分) (8分) (5分)程序結(jié)構(gòu)的合理性(占總成績(jī)10%)合理 基本合理 不太合理(10分) (8分) (5分)對(duì)問(wèn)題的答辯情況(占總成績(jī)40%)概念正確有創(chuàng)新 能正確回答所有問(wèn)題 基本能正確回答(40分) (35分) (30分)部分問(wèn)題回答概念不清晰(20分)學(xué)生的工作態(tài)度與獨(dú)立工作能力(占總成績(jī)1
2、0%)工作態(tài)度認(rèn)真能獨(dú)立完成任務(wù) 工作態(tài)度認(rèn)真但獨(dú)立性較差(10分) (8分)工作態(tài)度基本認(rèn)真但缺乏獨(dú)立性(5分)設(shè)計(jì)報(bào)告的規(guī)范性(占總成績(jī)10%)符合規(guī)范 基本符合規(guī)范 規(guī)范性較差(10分) (8分) (5分)優(yōu)秀:90分100分 良好:80分89分 中等:7079分 及格:6069分 不及格0分59分 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院制表1)問(wèn)題描述無(wú)歧義的陳述設(shè)計(jì)的內(nèi)容,明確設(shè)計(jì)所能夠達(dá)到的要求或功能。這個(gè)課程設(shè)計(jì)一般不懂的問(wèn)題,自己都解決了,比較難搞定的是對(duì)文件的處理這塊,但是通過(guò)自己上網(wǎng)查資料,自己摸索,才得以解決問(wèn)題。還有在對(duì)刪除學(xué)生信息的時(shí)候,起初沒(méi)有考慮到要把選修表里面的學(xué)生信息也刪除掉,
3、后來(lái)經(jīng)過(guò)自己仔細(xì)考慮,結(jié)合實(shí)際情況才完善了等等一些細(xì)節(jié)。2) 解題思路(1) 定義對(duì)象類(lèi)型,三張表的數(shù)據(jù)類(lèi)型除了grade設(shè)為int型,其余都設(shè)為char類(lèi)型,后面的字符串的匹配。而且還設(shè)置指針域。通過(guò)鏈表來(lái)實(shí)現(xiàn)數(shù)據(jù)的增刪改查的功能。(2) 將三個(gè)進(jìn)行初始化,初始化只創(chuàng)建頭指針。(3) 通過(guò)尾插法輸入數(shù)據(jù),建立三張表。(4) 輸出三個(gè)表的數(shù)據(jù),分別對(duì)結(jié)點(diǎn)設(shè)定指針,如 student *p; p=h_student-next; .p=p-next;從而輸出表的相關(guān)信息。(5) 添加學(xué)生數(shù),尾插法來(lái)實(shí)現(xiàn)。插入過(guò)程中判斷學(xué)生學(xué)號(hào)是否與表的已有的學(xué)生學(xué)號(hào)重復(fù),性別輸入格式是否正確。做了相應(yīng)的判斷,從而
4、防止用戶添加學(xué)生時(shí)出現(xiàn)的誤操作。(6) 刪除學(xué)生。結(jié)合student表和course表。用戶輸入學(xué)生的學(xué)號(hào)或者是姓名,輸入后,在學(xué)生表中查找,看是否有該學(xué)生的信息,如有則刪除該學(xué)生,考慮到學(xué)生的選課情況,再次判斷,如果選修表中有該學(xué)生對(duì)應(yīng)的選課信息,則刪除該學(xué)生選課的所有信息。(7) 修改學(xué)生信息。考慮各數(shù)據(jù)項(xiàng)的性質(zhì),只能修改學(xué)生年齡和學(xué)生所在系,同理輸入信息,匹配則修改,否則。(8) 查詢學(xué)生個(gè)人基本信息。以姓名或?qū)W號(hào)為參數(shù),用戶輸入數(shù)據(jù),匹配則顯示當(dāng)前的該學(xué)生信息,否則退出到菜單。(9) 查詢學(xué)生單科目的成績(jī)。結(jié)合三張表進(jìn)行查詢,輸入數(shù)據(jù)在表中查詢。(10) 添加學(xué)生選課信息。考慮到學(xué)生是
5、否有重選課程的情況,在此也防止了誤操作。(11) 刪除學(xué)生選課信息(12) 修改學(xué)生選課信息(13) 查詢某個(gè)系所有學(xué)生的成績(jī)(14) 保存學(xué)生表、課程表、選修表。(15) 加載學(xué)生表、課程表、選修表。(16) 定義菜單,定義主函數(shù),運(yùn)行程序。3)算法描述用流程圖、偽碼等描述算法。 整體設(shè)計(jì)流程圖說(shuō)明:由于代碼比較多,如果一一用流程和代碼描述算法,工作量大,并且有些函數(shù)原理一樣,自認(rèn)為沒(méi)有必要都描述,故就自認(rèn)為比較有代表性的描述如下: 學(xué)生選課系統(tǒng)選修表課程表學(xué)生表查詢某系所有學(xué)生成績(jī)查詢學(xué)生單科成績(jī)查詢學(xué)生選課修改學(xué)生選課刪除學(xué)生選課添加學(xué)生選課刪除學(xué)生修改學(xué)生查詢學(xué)生添加學(xué)生若學(xué)生存在選課
6、信息,則要?jiǎng)h除該學(xué)生選課信息。退出系統(tǒng),保存三張表 部分程序設(shè)計(jì)流程圖1、 添加學(xué)生信息流程圖。開(kāi)始輸入學(xué)生學(xué)號(hào)查找學(xué)生表,判斷學(xué)生表中是否有存在該學(xué)生 否退出菜單欄 是輸入姓名,性別 在菜單欄輸入:0程序結(jié)束所有表的數(shù)據(jù)庫(kù)都自動(dòng)保存保存檢查性別輸入格式是否正確說(shuō)明:只有選擇菜單欄 0 ,才能保存所有表的數(shù)據(jù)。輸入年齡和所在系 是 輸入后把數(shù)據(jù)插入原來(lái)表的結(jié)尾。插入學(xué)生信息函數(shù)的代碼如下:void insert_student(student *stu) student *s,*s1; /這里定義指針s 和s1printf(| 學(xué)號(hào) | 姓名 | 性別 | 年齡 | 所在系 |n);s=(st
7、udent *)malloc(sizeof(student); /這里為s申請(qǐng)一個(gè)新的結(jié)點(diǎn)printf(請(qǐng)輸入學(xué)號(hào):); scanf(%s,&s-sno);/輸入學(xué)號(hào)信息s1=stu-next;/檢查是否存在這名學(xué)生,輸入的學(xué)號(hào)不能重復(fù)while(s1!=null) /在鏈表中查找,看是否有與重復(fù)的學(xué)號(hào)if(strcmp(s1-sno,s-sno)=0)printf(該學(xué)生已存在,請(qǐng)檢查是否輸入錯(cuò)誤n);printf(請(qǐng)重新輸入學(xué)號(hào):); scanf(%s,&s-sno); /這里說(shuō)明有重復(fù),重新輸入學(xué)號(hào)s1=s1-next;/指向下一個(gè)結(jié)點(diǎn)if(s1=null)/如果沒(méi)有找到重復(fù)的學(xué)號(hào),說(shuō)明
8、可以插入新學(xué)生printf(請(qǐng)輸入姓名:); scanf(%s,&s-sname);printf(請(qǐng)輸入性別(男/女):); scanf(%s,&s-ssex);if(strcmp(s-ssex,男)=0)|(strcmp(s-ssex,女)=0) /這里匹配年齡,要求用戶輸入性別的格式正確printf(請(qǐng)輸入年齡:); scanf(%s,&s-sage);printf(請(qǐng)輸入所在系:); scanf(%s,&s-sdept);r_student-next=s;r_student=s; /這里把用戶輸入的信息插入到表尾r_student-next=null; /指向尾結(jié)點(diǎn)printf(插入成功
9、!nn);elseprintf(插入失敗! 性別輸入有誤!n); /返回錯(cuò)誤信息2、 刪除學(xué)生信息流程圖 開(kāi)始輸入學(xué)生學(xué)號(hào)查找學(xué)生表,判斷學(xué)生表中是否有存在該學(xué)生 否 是刪除學(xué)生表中的該學(xué)生信息查找選修表,判斷選修表中是否有該學(xué)生的選課信息 否 是刪除兩個(gè)表中對(duì)應(yīng)該學(xué)生的所有信息返回主菜單刪除學(xué)生信息函數(shù)的代碼如下:void delete_student(student *stu,sc *s)char sn20;定義一個(gè)char類(lèi)型的字符串,表示要輸入學(xué)生的學(xué)號(hào)或者姓名student *p; /這里定義指針psc *s;/這里定義指針sprintf(請(qǐng)輸入要?jiǎng)h除的信息中學(xué)生學(xué)號(hào)或姓名:);sc
10、anf(%s,&sn); /用戶輸入要?jiǎng)h除的學(xué)生的學(xué)號(hào)或姓名p=stu-next; /p指向頭指針的下一個(gè)結(jié)點(diǎn)s=s-next; /s指向頭指針的下一個(gè)結(jié)點(diǎn)student *q=stu; /把頭指針賦給指針qsc *s1=s; /把頭指針賦給指針s1while(p!=null)/在學(xué)生表中表中查找,看是否這樣的一個(gè)學(xué)生if(strcmp(p-sno,sn)=0 | strcmp(p-sname,sn)=0)/找到對(duì)應(yīng)的學(xué)生strcpy(sn,p-sno);while(s!=null)/在選修表中表中查找,看是否有該學(xué)生對(duì)應(yīng)的選課信息if(strcmp(sn,s-sno)=0)s1-next=s
11、-next; /如果有,則刪除學(xué)生對(duì)應(yīng)的選課信息free(s); /釋放s結(jié)點(diǎn),刪除選課信息s=s1-next; /指向下一個(gè)結(jié)點(diǎn),看選課表中是否還有該學(xué)生的選課信息,若有,則刪除continue;if(s!=null)s=s-next;s1=s1-next;q-next=p-next;/指向下一個(gè)結(jié)點(diǎn),看學(xué)生表中是否還有該學(xué)生的相關(guān)信息,若有,則刪除free(p);/釋放p結(jié)點(diǎn),刪除該學(xué)生printf(刪除成功!nn); 開(kāi)始break;p=p-next;輸入系名q=q-next;查找學(xué)生表,判斷學(xué)生表中是否有存在有學(xué)生在該系3、 查詢某個(gè)系所有學(xué)生的成績(jī) 否 有結(jié)合選修表,看在該系對(duì)應(yīng)的學(xué)
12、生是否有選課 否 有返回主菜單輸出信息4、 查詢某個(gè)系所有學(xué)生的成績(jī)的代碼:void select_sdept_grade(student *stu,sc *s)char sdept4;定義一個(gè)char類(lèi)型的字符串,表示要輸入的系名student *p; /定義一個(gè)指向?qū)W生表的指針sc *q;/定義一個(gè)指向選修表的指針int i=0; /此處設(shè)置一個(gè)標(biāo)記printf(請(qǐng)輸入系名:);scanf(%s,&sdept); /輸入系名p=stu-next; /指向頭指針的下一個(gè)結(jié)點(diǎn)printf(-n);printf(| 學(xué)號(hào) | 姓名 | 課程號(hào) | 成績(jī) |n);printf(-n);printf
13、(| sno | sname | cno | grade |n);printf(-n);while(p!=null)/在學(xué)生表中表中查找,看是否這樣的一個(gè)學(xué)生if(strcmp(p-sdept,sdept)=0)q=s-next; /找出所有匹配的系名,并全部輸出while(q!=null)if(strcmp(p-sno,q-sno)=0)i=1;printf(|%9s%11s%14s%17d |n,q-sno,p-sname,q-cno,q-grade); printf(-n);q=q-next; /指向下一個(gè)結(jié)點(diǎn),查詢對(duì)應(yīng)系名的相關(guān)信息p=p-next;if(i=0) /輸出誤操作情況pr
14、intf(對(duì)不起,沒(méi)有你需要的信息,請(qǐng)檢查系名是否輸入錯(cuò)誤!n);/保存課程表void save_course()course *p,*p0; /定義一個(gè)指向課程表的指針p=h_course-next; /指向頭結(jié)點(diǎn)的指針賦給pif(fp_course=fopen(course.txt,wb)=null) /創(chuàng)建文件,進(jìn)行保存printf(文件保存失敗!n請(qǐng)重新啟動(dòng)本系統(tǒng)!n);exit(0); /直接退出系統(tǒng)while(p!=null) /在課程表中表中訪問(wèn)鏈表數(shù)據(jù),將鏈表信息一一寫(xiě)入文件中if(fwrite(p,sizeof(course),1,fp_course)!=1) /將鏈表中的信
15、息寫(xiě)入文件中printf(寫(xiě)入文件失敗!n請(qǐng)重新啟動(dòng)本系統(tǒng)!n); p0=p; p=p-next; /指向下一個(gè)結(jié)點(diǎn). free(p0); /釋放所有結(jié)點(diǎn)free(h_course); /釋放指針fclose(fp_course); /關(guān)閉文件/加載課程表的相關(guān)信息void load_course() course *p;/定義一個(gè)指向課程表的指針course *q=h_course; /把課程信息的一個(gè)指針指向q fp_course=fopen(course.txt,rb); 打開(kāi)course.txt , p=(course *)malloc(sizeof(course);/申請(qǐng)一個(gè)新的結(jié)點(diǎn)
16、p while(fread(p,sizeof(course),1,fp_course) q-next=p;q=p;p=(course *)malloc(sizeof(course); q-next=null;r_course=q; fclose(fp_course); /關(guān)閉文件(主菜單和主函數(shù)比較簡(jiǎn)單,c語(yǔ)言里面的知識(shí),一看便知)/主菜單int menu() int i;printf( |-|n);printf( | 歡迎進(jìn)入學(xué)生選課管理系統(tǒng) |n);printf( | 本系統(tǒng)含有三張信息表 |n);printf( | 學(xué)生表、課程表、學(xué)生選課信息表 |n);printf( |-|n);pr
17、intf( | 1 = 查看各個(gè)表信息 |n);printf( | 2 = 查詢學(xué)生信息 |n);printf( | 3 = 刪除學(xué)生信息 |n);printf( | 4 = 修改學(xué)生信息 |n);printf( | 5 = 添加學(xué)生信息 |n);printf( | 6 = 刪除學(xué)生選課信息 |n);printf( | 7 = 修改學(xué)生選課信息 |n);printf( | 8 = 添加學(xué)生選課信息 |n);printf( | 9 = 查詢學(xué)生單科目的成績(jī) |n);printf( | 10 = 查詢某個(gè)系所有學(xué)生的成績(jī) |n);printf( | 0 = 退出系統(tǒng) |n);printf( |-|
18、n);printf(請(qǐng)選擇您需要的操作(0-10);for(;)scanf(%d,&i); /輸入要操作的數(shù)字if(i10)printf(n錯(cuò)誤!請(qǐng)重新輸入:);exit(0);else break;return i;/主菜單選擇函數(shù)void menu_select()for(;) switch(menu() /功能選擇case 0:system(cls);printf(謝謝使用,再見(jiàn)!n);save(); /退出系統(tǒng)才能保存三張表三個(gè)表printf(nnt文件保存成功!n); exit(0);case 1:show_all_student(); show_all_course();show_
19、all_sc(); break;case 2:select_student(h_student);break;case 3:delete_student(h_student,h_sc);break;case 4:show_all_student(); update_student(h_student);break;case 5:insert_student(h_student);break;case 6:show_all_sc();delete_student_sc(h_student,h_course,h_sc);break; case 7:update_student_sc(h_stude
20、nt,h_course,h_sc);break; case 8: show_all_course();add_student_sc(h_student,h_course,h_sc);break;case 9:select_sc(h_student,h_course,h_sc);break;case 10:select_sdept_grade(h_student,h_sc);break;default:printf(輸入錯(cuò)誤,請(qǐng)重新輸入!n);system(cls); break;5)測(cè)試結(jié)果截圖給出你的測(cè)試結(jié)果,并對(duì)輸出結(jié)果進(jìn)行適當(dāng)?shù)姆治?、比?duì)和客觀的評(píng)價(jià)。說(shuō)明:截屏圖片太多,故采用層疊放置第
21、一次打開(kāi)首頁(yè)面輸入數(shù)據(jù)到三張表1、以下是添加學(xué)生表、課程表、選修表輸入序號(hào)1:顯示結(jié)果為輸入序號(hào)2:演示學(xué)號(hào)為20120005,和不存在的學(xué)號(hào)20120004輸入序號(hào)3:演示學(xué)號(hào)為20120001,和不存在的學(xué)號(hào)20120004顯示是否刪除成功輸入序號(hào)4:修改學(xué)生信息。演示學(xué)號(hào)為20120002,修改其年齡輸入序號(hào)4:添加學(xué)生信息。添加學(xué)號(hào)為20120006的學(xué)生輸入序號(hào)6:刪除學(xué)生選課信息。刪除學(xué)號(hào)為20120001的學(xué)生輸入序號(hào)7:修改學(xué)生選課信息。刪除學(xué)號(hào)為20120001的學(xué)生輸入序號(hào)8:添加學(xué)生選課信息。刪除學(xué)號(hào)為20120003的學(xué)生輸入序號(hào)9:查詢學(xué)生單科目的成績(jī)。查詢學(xué)號(hào)為20
22、120001的學(xué)生的選修課程4的成績(jī)輸入序號(hào)10:查詢某個(gè)系所有學(xué)生的成績(jī)。查詢學(xué)院為cs的學(xué)生的選修課程所有的成績(jī)7)設(shè)計(jì)總結(jié) 總結(jié):首先,當(dāng)我看到這個(gè)課程設(shè)計(jì)題目的時(shí)候,第一感覺(jué)就想用php+mysql做(自己課外時(shí)間學(xué)了php網(wǎng)站設(shè)計(jì))。說(shuō)實(shí)話,php+mysql做這個(gè)課程設(shè)計(jì)很簡(jiǎn)單的,但是很可惜,這是數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)。所以得把老師在課堂上講的東西聯(lián)想起來(lái),但是,老師在課堂上大部分時(shí)間講的很多不是如何寫(xiě)代碼,講的是概念,講的是算法設(shè)計(jì)。所以說(shuō),這次課程設(shè)計(jì)對(duì)于我來(lái)說(shuō),是一種挑戰(zhàn)。第一次做課程設(shè)計(jì)嘛,感覺(jué)無(wú)從下手,無(wú)賴之下,只好在網(wǎng)上隨便找了一份課程設(shè)計(jì),看看別人是怎么設(shè)計(jì)的,我下載的是圖書(shū)館圖書(shū)信息系統(tǒng)。先琢磨別人的思路。估計(jì)琢磨了三個(gè)小時(shí)左右,之后自己在看要做的課程設(shè)計(jì)。三張表,定義三個(gè)對(duì)象類(lèi)型,各分配指針域,然后是初始化三張表,創(chuàng)建頭指針,之后分別輸入數(shù)據(jù),建立三張表。然后是設(shè)計(jì)單個(gè)表的操作,多個(gè)表關(guān)聯(lián)的操作。設(shè)計(jì)主函數(shù)。想好了
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 珍愛(ài)生命從安全開(kāi)始
- 高中語(yǔ)文7玄黑結(jié)婚課件蘇教版必修
- 高二化學(xué)家用燃料更新
- 安全教育知識(shí)讀本課程-教案
- Windows Server網(wǎng)絡(luò)管理項(xiàng)目教程(Windows Server 2022)(微課版)教案1 部署虛擬環(huán)境安裝Windows Server 2022操作系統(tǒng)
- 八年級(jí)英語(yǔ)上英語(yǔ)課外閱讀拓展訓(xùn)練四(時(shí)文)無(wú)答案
- 高中物理第四章牛頓運(yùn)動(dòng)定律3牛頓第二定律課件新人教版必修
- 2014-2020年磷酸氫鈣行業(yè)現(xiàn)狀分析及風(fēng)險(xiǎn)投資報(bào)告
- 2024至2030年中國(guó)手機(jī)維修專用系統(tǒng)行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024至2030年中國(guó)異形金屬天花板數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024年時(shí)事政治考點(diǎn)大全(173條)
- 初中《學(xué)憲法講憲法》第八個(gè)國(guó)家憲法日主題教育課件
- 2023-2024學(xué)年北京市通州區(qū)九年級(jí)(上)期中數(shù)學(xué)試卷【含解析】
- 2024醫(yī)療機(jī)構(gòu)重大事故隱患判定清單(試行)學(xué)習(xí)課件
- 第一單元中國(guó)特色社會(huì)主義的開(kāi)創(chuàng)、堅(jiān)持、捍衛(wèi)和發(fā)展單元測(cè)試-2023-2024學(xué)年中職高教版(2023)中國(guó)特色社會(huì)主義
- (正式版)JBT 7248-2024 閥門(mén)用低溫鋼鑄件技術(shù)規(guī)范
- 汽車(chē)修理工崗前培訓(xùn)
- 學(xué)校信息技術(shù)培訓(xùn)方案
- 聘用制干部審批表
- 海拔高度修正系數(shù)
- 人教PEP四年級(jí)上冊(cè)英語(yǔ)《Unit 5 Dinner’s ready》教案
評(píng)論
0/150
提交評(píng)論