數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)C語言_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)C語言_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)C語言_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)C語言_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)C語言_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

目錄計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院課程設(shè)計(jì)成績單目錄姓名xxx性別x學(xué)號xxx班級xxx班綜合成績成績等級程序運(yùn)行情況(占總成績20%)口能正確運(yùn)行 □基本能正確運(yùn)行 口能運(yùn)行但結(jié)果不完善(20分) (15分) (10分)程序功能的完善程度(占總成績10%)口完善 □基本完善 □不完善(10分) (8分) (5分)程序結(jié)構(gòu)的合理性(占總成績10%)口合理 □基本合理 □不太合理(10分) (8分) (5分)對問題的答辯情況(占總成績40%)口概念正確有創(chuàng)新□能正確回答所有問題 □基本能正確回答(40分) (35分) (30分)口部分問題回答概念不清晰(20分)學(xué)生的工作態(tài)度與獨(dú)立工作能力(占總成績10%)口工作態(tài)度認(rèn)真能獨(dú)立完成任務(wù)口工作態(tài)度認(rèn)真但獨(dú)立性較差(10分) (8分)口工作態(tài)度基本認(rèn)真但缺乏獨(dú)立性(5分)設(shè)計(jì)報(bào)告的規(guī)范性(占總成績10%)口符合規(guī)范 □基本符合規(guī)范 □規(guī)范性較差(10分) (8分) (5分)課程名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)優(yōu)秀:90分~100分良好:80分~89分中等:70~79分及格:60~69分不及格0分~59分武漢科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院制表引言 3、問題描述、需求分析三、詳細(xì)設(shè)計(jì)四、所遇到的問題和分析解決五、系統(tǒng)特色及關(guān)鍵技術(shù)六、結(jié)論及心得體會七、附錄(源代碼)引言通過本課程設(shè)計(jì),使自己更加系統(tǒng)地理解和掌握數(shù)據(jù)結(jié)構(gòu)的基本概念;能自如地根據(jù)實(shí)際要求,設(shè)計(jì)相應(yīng)的數(shù)據(jù)結(jié)構(gòu),并運(yùn)用c或C++語言實(shí)現(xiàn)所設(shè)計(jì)的算法,編寫較大型的程序,分析和解決實(shí)際應(yīng)用問題,進(jìn)一步加深、鞏固所學(xué)專業(yè)課程的基本理論知識,理論聯(lián)系實(shí)際,進(jìn)一步培養(yǎng)自己綜合分析問題和解決問題的能力。掌握C語言或C++語言獨(dú)立的編寫、調(diào)試應(yīng)用程序和進(jìn)行其它相關(guān)設(shè)計(jì)的技能。此項(xiàng)目主要是考察我們對結(jié)構(gòu)體、數(shù)組、文件等具體操作,以及對C語言語法的掌握,所以做成此項(xiàng)目要求比較高的設(shè)計(jì)要求,對整體有很熟悉的概括,同時(shí)調(diào)試過程也是很重要的,對程序界面的要求也比較高,要設(shè)計(jì)的合理同時(shí)也要美觀一點(diǎn),能夠人性化的描述清楚你的各個(gè)功能,一目了然,對其他用戶使用本程序簡單易懂,這才能成本程序或本系統(tǒng)是成功的。對于學(xué)生成績管理系統(tǒng),此項(xiàng)目每年都有學(xué)生去做,但是能夠在其他項(xiàng)目中脫穎而出,還要有自己的設(shè)計(jì)特色,用簡單的語言詳細(xì)描述系統(tǒng)的功能,這才是關(guān)鍵。這個(gè)設(shè)計(jì)能夠練習(xí)我們的理解和運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法,掌握開發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法,學(xué)會調(diào)試一個(gè)比較長的程序的基本方法,同時(shí)掌握書寫程序設(shè)計(jì)開發(fā)文檔的能力。一、問題描述1、課程設(shè)計(jì)應(yīng)完成的工作編寫算法算法測試,并有具體的測試結(jié)果和結(jié)果分析撰寫課程報(bào)告,內(nèi)容包括:封面目錄課程設(shè)計(jì)報(bào)告正文使用說明參考文獻(xiàn)2、總體設(shè)計(jì)工作(包含幾大功能模塊)1.顯示本學(xué)期考核的7門科目信息以供學(xué)生選課;2.輸入學(xué)生基本信息并顯示;3.輸入學(xué)生的選課信息;4.查找某學(xué)生的信息及選修科目的信息;5.修改某學(xué)生的信息;6.增加一個(gè)學(xué)生的記錄;7.刪除某個(gè)學(xué)生的記錄;8.按學(xué)號降序排序,,依次輸出;9.將學(xué)生的信息存儲入文件。二、需求分析1、系統(tǒng)描述該系統(tǒng)實(shí)現(xiàn)對若干個(gè)大學(xué)生的學(xué)習(xí)成績進(jìn)行管理。至少包括以下信息:結(jié)構(gòu)體:學(xué)生,選修科目,選修信息學(xué)生:學(xué)號,姓名,性別,年齡,所屬院系選修科目:科目編號,科目名稱,科目學(xué)分選修信息:選修該科目者學(xué)號,科目編號,科目成績2、功能要求使用中文菜單,界面設(shè)計(jì)和用戶輸入輸出要人性化些;將學(xué)生信息保存在文本文檔中,具體對學(xué)生信息進(jìn)行插入刪除查詢操作時(shí),將保存在文本文檔中的學(xué)生信息提取出來,保存在自己定義的數(shù)據(jù)結(jié)構(gòu)中,然后再對該數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作,所有操作完成,或者在相應(yīng)的命令后,再將學(xué)生信息保存到文本文檔中;具有數(shù)據(jù)輸入功能,輸入的數(shù)據(jù)能最終保存在文件中;具有數(shù)據(jù)刪除功能,能最終從文件中刪除;排序功能,根據(jù)自己設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),設(shè)計(jì)排序算法;具有多種查詢(如按學(xué)號查詢、按姓名查詢、按成績查詢等)及輸出功能;學(xué)生信息的修改(比如修改學(xué)生姓名,修改學(xué)生某門課程的成績)??疾辄c(diǎn):插入時(shí)注意學(xué)號的處理,可以不填嗎,是否重復(fù),其他數(shù)據(jù)是否可以亂填,如何控制;刪除時(shí)一要防止誤操作,二要考慮該生的選課信息,如何處理;修改時(shí)同樣要考慮各數(shù)據(jù)項(xiàng)的性質(zhì);對選修表進(jìn)行插入、刪除、修改操作;查詢要求可以實(shí)現(xiàn)多條件查詢。有3個(gè)文件:中的內(nèi)容:Sno SnameSsexSageSdept中的內(nèi)容:Cno Cname Ccredit英語4數(shù)學(xué)2TOC\o"1-5"\h\z信息系統(tǒng) 4操作系統(tǒng) 3數(shù)據(jù)結(jié)構(gòu) 4數(shù)據(jù)處理 2C/C++ 4中的內(nèi)容:Sno CnoGrade3、開發(fā)環(huán)境VisualC++不僅僅是是一個(gè)C++編譯器,而是一個(gè)基于Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境IDE,這種環(huán)境開發(fā)出來的軟件穩(wěn)定性好、可移植性強(qiáng),可以編制各種各樣的Windows應(yīng)用程序。三、詳細(xì)設(shè)計(jì)1、系統(tǒng)流程圖 尸——*、、(開始,)主界面息2、入學(xué)界面入設(shè)查找學(xué)生修生增加學(xué)生刪除學(xué)生主界面息在信 信 信息2、入學(xué)界面入設(shè)查找學(xué)生修生增加學(xué)生刪除學(xué)生主界面息在信 信 信此界面用戶可以選擇要操作的選項(xiàng),.信車之后即可/息日關(guān)的信息存入頁面進(jìn)行操4

件作統(tǒng)例如:選擇1,即可顯示本學(xué)期考核的7門科目信息)在本界面里用戶可以輸入學(xué)生相關(guān)的信息數(shù)據(jù),按照提示進(jìn)行操作即可,例如在本界面里用戶可以輸入學(xué)生相關(guān)的信息數(shù)據(jù),按照提示進(jìn)行操作即可,例如所有操作均有提示語,比較人性化的管理,易懂,簡單。3、大概設(shè)計(jì)模塊(1)先編入系統(tǒng)所需的庫函數(shù),從而使程序可運(yùn)行。#include<>#include<>#include<>#include<>0”no,Co[i].Cname}fclose(fp);Am編號學(xué)生******#include<>0”no,Co[i].Cname}fclose(fp);Am編號學(xué)生******輸入Wu記錄模塊所屬院系用函數(shù)voidinput(structstudent**headp);來實(shí)現(xiàn)主要功能用來對學(xué)生的信息進(jìn)行收集和輸入。首先會跳出主菜單,選擇”2”,進(jìn)入輸入模塊輸入所需學(xué)生個(gè)數(shù)的學(xué)生信息,比如學(xué)號,姓名,性別,年齡及所屬院系(以學(xué)號為0結(jié)束輸入新的學(xué)生信息)等。輸完之后會自動(dòng)跳出主菜單,根據(jù)主菜單來在此基礎(chǔ)上進(jìn)行操作。期間會有一些提示語,按此操作即可。根據(jù)if和for語句來判定期間是否有重復(fù)學(xué)號輸入,在本操作中,允許有重復(fù)學(xué)生姓名出現(xiàn)。在此模塊中,同時(shí)也用到了一個(gè)控制變量a,它是用來判定的條件變量。之后返回主菜單。******輸入選修信息模塊用函數(shù)voidxuxiuinput(structstudent**headp,structStuCourseSC[])來實(shí)現(xiàn)主要功能用于選修信息的錄入。首先會跳出主菜單,選擇“3“,進(jìn)入輸入模塊輸入所需選修科目的個(gè)數(shù),接著輸入選修該科目者的學(xué)號及科目編號及成績。根據(jù)for-while語句來控制,期間會有提示語。在本操作中,不允許學(xué)號的重復(fù),科目編號控制在1-7。******查找學(xué)生及選修信息模塊用函數(shù)voidfind(structstudent**headp,structStuCourseSC[])實(shí)現(xiàn)主要功能用于學(xué)生基本信息的查找以及選修信息的查找。首先會跳出主菜單,選擇”4’,接著選擇查找的方式(1.學(xué)號查找2.姓名查找),輸入學(xué)號(姓名),便會顯示擁有該學(xué)號(姓名)學(xué)生的基本信息;對于選修信息也是同樣。該模塊運(yùn)用了for-while語句,對于學(xué)號,科目編號等進(jìn)行控制,避免重復(fù)等情況出現(xiàn)。******修改學(xué)生及選修信息模塊用函數(shù)intmodify(structstudent**headp,structStuCourseSC[])實(shí)現(xiàn)主要功能是修改學(xué)生的基本信息以及選修科目的信息。首先跳出主菜單,選擇'5'。輸入你想要修改的學(xué)生的學(xué)號,接著會彈出一個(gè)提示語〃請輸入你想修改的學(xué)生信息的標(biāo)號:1.學(xué)號2.姓名3.性別4.年齡5.所屬院系6.選修科目信息:〃,選擇想要修改的選項(xiàng),例如'1’,接著輸入新的學(xué)號,修改成功。在本模塊中運(yùn)用了if-else語句及while語句來控制變量,只有正確輸入才會彈出循環(huán),正確顯示。******插入學(xué)生記錄及選修信息模塊用函數(shù)voidinsert(structstudent**headp,structStuCourseSC[])實(shí)現(xiàn)主要功能是插入一個(gè)新的學(xué)生記錄,并將該學(xué)生的選修信息錄入到StuCourse中。首先彈出主菜單,選擇'6',輸入新增加的學(xué)生的學(xué)號,接著輸入該學(xué)生的選修信息,然后再輸入學(xué)生的姓名,年齡等信息。在本模塊中同樣使用while語句以及if-else語句來控制學(xué)號等的輸入O******刪除學(xué)生記錄以及選修信息模塊用函數(shù)voidshanchu(structstudent**headp,structStuCourseSC[])來實(shí)現(xiàn)主要功能是刪除一個(gè)學(xué)生的記錄并刪除其中StuCourse中的記錄。首先有個(gè)選擇的操作,之后會有判斷語句,根據(jù)所輸入的學(xué)號,來顯示刪除前的信息記錄,添加for循環(huán)語句,循環(huán)把后一位的信息提前一位,整體數(shù)量減一,來進(jìn)行全局變量的修改,之后再把修改過后的信息記錄保存到文件中去。在現(xiàn)實(shí)中會有由于某些原因而不在學(xué)校的同學(xué)的記錄,這時(shí)候就要對其記錄進(jìn)行刪除操作,這樣可以使系統(tǒng)及時(shí)更新并得到優(yōu)化。******按數(shù)據(jù)結(jié)構(gòu)學(xué)號(冒泡)降序排序模塊用函數(shù)voidsort(structstudent**headp)來實(shí)現(xiàn)主要功能時(shí)是用來對學(xué)生的記錄來按學(xué)號大小進(jìn)行排序。這樣方便對學(xué)生有個(gè)大致的了解。本排序使用冒泡排序。它有兩個(gè)優(yōu)點(diǎn):一是“編程復(fù)雜度”很低,很容易寫出代碼;二是具有穩(wěn)定性,這里的穩(wěn)定性是指原序列中相同兩元素的相對順序仍然保持到排序后的序列。冒泡排序時(shí)進(jìn)過n-1趟子排序完成的,第i趟子排序從第1個(gè)數(shù)至第n+1個(gè)數(shù),若第i個(gè)數(shù)比后一個(gè)數(shù)大(則升序,小則降序。本程序一律采用降序)則交換兩數(shù)。本程序中冒泡排序代碼如下:for(p1=*headp,i=0;i<count-1;i++,p1=p1->next)for(p2=p1->next,j=i+1;j<count;j++,p2=p2->next){if(p1->Snum<p2->Snum){num=p2->Snum;p2->Snum=p1->Snum;p1->Snum=num;strcpy(name,p2->Sname);strcpy(p2->Sname,p1->Sname);strcpy(p1->Sname,name);strcpy(sex,p2->Ssex);strcpy(p2->Ssex,p1->Ssex);strcpy(p1->Ssex,sex);age=p2->Sage;p2->Sage=p1->Sage;p1->Sage=age;strcpy(dept,p2->Sdept);strcpy(p2->Sdept,p1->Sdept);strcpy(p1->Sdept,dept);}}排序前:排序后:******將學(xué)生及選修信息存入文件并顯示模塊用函數(shù)voidfilesave(structstudent**headp,structStuCourseSC[])及voidfileload(structstudent**headp,structStuCourseSC[])實(shí)現(xiàn)主要功能是將之前輸入的學(xué)生信息及選修科目信息存儲入文件并從文件中導(dǎo)出顯示。首先本模塊中有2個(gè)文件指針FILE*fp1,*fp2,分別指向文件與文件。此時(shí)會有提示語〃請確認(rèn)是否將數(shù)據(jù)存儲進(jìn)文件:1.是2.否:〃,選擇'1',將信息存入。*****以上就是本程序的詳細(xì)設(shè)計(jì)及基本思想*****四、所遇到的問題和分析解決1、 存在的不足本學(xué)生成績管理系統(tǒng)由九大模塊組成,每個(gè)模塊相互聯(lián)系又相互獨(dú)立。這個(gè)學(xué)生成績管理系統(tǒng)存在著很多不足之處,由于自己本身編程能力的問題,這個(gè)系統(tǒng)可以實(shí)現(xiàn)的功能非常有限。只能實(shí)現(xiàn)學(xué)生管理系統(tǒng)最基本的功能,可以進(jìn)行簡單的輸入、輸出學(xué)生資料,查詢和修改學(xué)生信息,能直接從文件中讀入數(shù)據(jù),能對系統(tǒng)所作的修改、操作進(jìn)行保存等。而且在每個(gè)模塊也有不足的地方,比如在輸入學(xué)生資料時(shí),對有些信息項(xiàng)沒有嚴(yán)格的規(guī)定,可以輸入任何的字符。這有待以后努力,更詳盡的實(shí)現(xiàn)模塊的功能。2、 do-while語句的位置問題在修改學(xué)生記錄此模塊中,若循環(huán)語句的位置不對那么這個(gè)循環(huán)就會自動(dòng)跳出,或變?yōu)閬y碼,不能實(shí)現(xiàn)原有的功能。所以要想清楚到底是在哪安放,按照邏輯思路找到相應(yīng)的語句正確添加就行了。3、 細(xì)節(jié)方面其實(shí)在有些細(xì)節(jié)方面還是要特別注意啊,比如分號的添加,<<與>>的方向問題,函數(shù)的返回值等問題,雖然容易改掉,但是很容易養(yǎng)成不好的習(xí)慣,而且還會浪費(fèi)時(shí)間,所以在一開始寫的時(shí)候就要很仔細(xì),這樣才能保證程序編的精細(xì),同時(shí)若出現(xiàn)很多這樣的錯(cuò)誤的話,在編寫程序的時(shí)候也會心里煩的,所以在編程的時(shí)候要認(rèn)真仔細(xì)。4、 文件的寫入與讀出剛開始時(shí)對文件的操作不是很明白,一直不能很好的操作文件,直到最后快要驗(yàn)收的時(shí)候,仍舊出現(xiàn)了嚴(yán)重的問題,就是對已經(jīng)存在的文件讀取問題,通過〃讀取文件并輸出學(xué)生信息〃,將數(shù)據(jù)從文件中讀取,但是不能夠正常的讀出,最后把讀文件的操作語句進(jìn)行仔細(xì)檢查后,發(fā)現(xiàn)語句的順序有點(diǎn)問題,把fscanf()語句進(jìn)行再修改后就能夠正常的讀取文件了。5、 內(nèi)存的分配問題對于初學(xué)者的話對內(nèi)存的分配和釋放問題是比較抽象的和模糊的問題,在排序是之前就出現(xiàn)了交換數(shù)據(jù)困難的問題,以及內(nèi)存分配空間繁瑣釋放空間不及時(shí)的問題,造成空間的浪費(fèi),使得程序運(yùn)行時(shí)效率較低,因此最后采用了順序存儲記錄的方式,這就能改變前面所出現(xiàn)的問題。6、 較小的問題方面其余的就沒什么比較大的問題了,基本上只要細(xì)心一點(diǎn)的話就可以正確調(diào)試了。五、 系統(tǒng)特色及關(guān)鍵技術(shù)其實(shí)在本程序的設(shè)計(jì)過程當(dāng)中,沒有很吸引人的關(guān)鍵技術(shù),因?yàn)楸救说腃語言或C++語言都不是學(xué)的很好,所以當(dāng)初設(shè)計(jì)的時(shí)候就只是想把功能都實(shí)現(xiàn)就好了,盡可能的把所要求的功能都編進(jìn)程序,這樣就覺得很滿足了。所以都是設(shè)計(jì)的比較簡單易懂的語言,這樣自己能夠更明白一些,所以就沒有時(shí)間去細(xì)細(xì)地去設(shè)計(jì)自己的程序。本程序要說有什么值得說的,那就只有人性化這點(diǎn)了,在設(shè)計(jì)成學(xué)的時(shí)候,因?yàn)樽约号屡炝?,所以添加了很詳盡的提示,這樣在編程的過程中或調(diào)試的時(shí)候都能夠比較快的運(yùn)行。還有就是盡可能的應(yīng)用了do-while語句和switch-case語句,這兩個(gè)語句在之前不是很常用,所以在這個(gè)程序中試煉了一下,雖然在編寫的過程中總是出錯(cuò),但還是成功的用好了,也是程序有條理一些。我也知道這些東西別人可能比我弄得還要好,但是我在我所學(xué)的知識中成功的應(yīng)用了這些,我覺得就是好事,就是進(jìn)步。唯一的亮點(diǎn)可能就是進(jìn)入系統(tǒng)是的密碼設(shè)計(jì)了,就這一點(diǎn)小小的設(shè)計(jì)就花了我好幾個(gè)小時(shí)去調(diào)試,因?yàn)榭偰茉诤竺娉绦虻募尤爰斑\(yùn)行時(shí)發(fā)現(xiàn)一些新的小問題。六、 結(jié)論及心得體會一周多的課程設(shè)計(jì),終于成功的驗(yàn)收了,雖然有些疲憊,但還是有很多的收獲的,像計(jì)算機(jī)組成原理的課設(shè)一樣,我又一次鞏固了所學(xué)到的知識,之前的學(xué)習(xí)只是停留在理論基礎(chǔ)上,現(xiàn)在自己動(dòng)手操作試驗(yàn)后,才是真正的理解及體會。C也學(xué)了近一年,有很多知識都是似懂非懂,通過平時(shí)上機(jī)操作,自己也了解了一些,但讓我有了更深的理解和更好的認(rèn)識,則是在這次的課設(shè)上,之前的困惑也通過這次的課設(shè)解決了一些,雖然還是不能夠全面的理解,但是有進(jìn)步就很高興。在課程設(shè)計(jì)之前,因?yàn)橛辛司C合實(shí)驗(yàn)的經(jīng)驗(yàn)與教訓(xùn),明白了寫代碼這一步是非常重要的,因?yàn)楫?dāng)你把代碼輸進(jìn)去之后,并編譯讓其運(yùn)行,發(fā)現(xiàn)通過不了,再來檢查出問題,是很費(fèi)費(fèi)力的事情,因此分析和規(guī)劃代碼是很重要的,最重要的是要把邏輯結(jié)構(gòu)寫好,這樣就不會出現(xiàn)大問題,寫代碼就要先找出核心的內(nèi)容,用多種方法來實(shí)現(xiàn)核心部分,這樣可以盡可能的避免發(fā)現(xiàn)邏輯或編譯不支持的錯(cuò)誤。通過本次論文設(shè)計(jì),我初步學(xué)會了論文設(shè)計(jì)的基本方法,學(xué)會了怎樣去借鑒別人的方法和經(jīng)驗(yàn),知道了如何整合資料和處理這些資料的能力,這位以后做畢設(shè)的論文打下了基礎(chǔ),使我感覺比較好的是有一種成功的喜悅,雖然在編譯的時(shí)候會經(jīng)常因?yàn)橐恍┬〉腻e(cuò)誤而心煩意亂,但是也不失為一件好事,失敗的越多積累的經(jīng)驗(yàn)越豐富,對人的考驗(yàn)也比較多,那么在最后編譯成功時(shí)的喜悅就越濃烈,也是自己的能力有了進(jìn)一步的提高。由于知識和經(jīng)驗(yàn)的不足,這個(gè)程序編寫的不是很盡如人意,但是融合了自己的心血,就覺得是最好的,所以在以后還是需要較多的努力的,還是會在以后的學(xué)習(xí)過程中不斷地提高和改進(jìn)的。七、附錄(源代碼)#include<>#include<>#include<>#include<>staticintcount=0;staticintscnum=0;#defineN10#defineSIZE1000structstudent{longSnum;charSname[20];charSsex[10];intSage;charSdept[10];structstudent*next;};structCourse{intCno;charCname[20];intCredit;};structCourseCo[7]={{1,"英語”,4},{2,"數(shù)學(xué)",2},{3,"信息系統(tǒng)”,4},{4,"操作系統(tǒng)”,3},{5,”數(shù)據(jù)結(jié)構(gòu)”,4},{6,"數(shù)據(jù)處理”,2},{7,"c/c++",4}};structStuCourse{longSno;intSCno;doubleGrade;};voidmenu(){printf("\n學(xué)生成績統(tǒng)計(jì)與分析系統(tǒng)\n\n");printf("\n菜單\n\n");printf("\n1.顯示本學(xué)期考核的7門科目信息以供學(xué)生選課\n");printf("\n2.輸入學(xué)生基本信息并顯示\n");printf("\n3.輸入學(xué)生的選課信息\n");printf("\n4.查找某學(xué)生的信息及選修科目的信息\n");printf("\n5.修改某學(xué)生的信息\n");printf("\n6.增加一個(gè)學(xué)生的記錄\n");printf("\n7.刪除某個(gè)學(xué)生的記錄\n");printf("\n8.按學(xué)號降序排序,依次輸出\n");printf("\n9.將學(xué)生的信息存儲入文件\n");printf("\n0.退 出已錄入%d名學(xué)生的記錄\n\n”,count);}no,Co[i].Cname,Co[i].Credit);}fclose(fp);}StuCourseSCno=b;break;}else{printf(-無法找到!請確認(rèn)是否已輸入該學(xué)生的信息。\n");}}printf(-輸入選修的科目編號(1-7):\n");scanf("%d”,&c);while(1){if(c>=1&&c<=7){SC[i].SCno=c;break;}else{printf(-請重新選擇選修科目!偵輸入你選修的科目的編號(1-7):\n");scanf("%d",&c);}}printf("輸入該選修科目的成績:\n");scanf("%lf”,&SC[i].Grade);}printf(-選修科目信息如下:\n");printf("Sno CnoGrade\n");for(i=0;i<scnum;i++)(printf("%-10ld%7d%\n”,SC[i].Sno,SC[i].SCno,SC[i].Grade);}}StuCourseSC號查找2.姓名查找(輸入1或2):\n");scanf("%d”,&a);while(1){if(a==1){printf(-請輸入該學(xué)生的學(xué)號:\n");scanf("%ld”,&x);if(p->Snum==NULL){printf("系統(tǒng)中沒有任何學(xué)生信息,請先選擇存儲!\n");break;}while(x!=p->Snum&&p->next!=NULL){p=p->next;}if(x==p->Snum){printf(-學(xué)號姓名性別年齡 所屬院系\n");printf("%ld%10s%8s%8d%10s\n”,p->Snum,p->Sname,p->Ssex,p->Sage,p->Sdept);}elseprintf("無法找到!請確認(rèn)是否已輸入該學(xué)生的信息。\n");break;}elseif(a==2){printf(-請輸入該學(xué)生的姓名:\n");scanf("%s”,c);if(p->Snum==NULL){printf("系統(tǒng)中沒有任何學(xué)生信息,請先選擇存儲!\n");menu();}while((strcmp(c,p->Sname)!=0)&&p->next!=NULL){p=p->next;}if(strcmp(c,p->Sname)==0){printf(-學(xué)號姓名性別年齡 所屬院系\n");printf("%ld%10s%8s%8d%10s\n”,p->Snum,p->Sname,p->Ssex,p->Sage,p->Sdept);}elseprintf("無法找到!請確認(rèn)是否已輸入該學(xué)生的信息。\n");break;}elseprintf("輸入方式錯(cuò)誤,請重新選擇查找方式!\n");}while(1){printf(-請選擇選修科目查找的方式:1.學(xué)號查找2.科目編號查找(輸入1或2):\n");scanf("%d”,&a);if(a==1){printf(-請輸入想要查找的學(xué)生選課信息者的學(xué)號:\n");scanf("%ld”,&b);printf("選修科目信息如下:\n");printf("Sno CnoGrade\n");for(i=0;i<scnum;i++){if(b==SC[i].Sno)printf("%-10ld%7d%\n”,SC[i].Sno,SC[i].SCno,SC[i].Grade);}break;}elseif(a==2){printf(-請輸入想要查找的學(xué)生選課信息的科目編號:\n");scanf("%d”,&d);printf("選修科目信息如下:\n");printf("Sno CnoGrade\n");for(i=0;i<scnum;i++){if(d==SC[i].SCno)printf("%-10ld%7d%\n”,SC[i].Sno,SC[i].SCno,SC[i].Grade);}break;}elseprintf("輸入錯(cuò)誤!請重新輸入!\n\n");}}StuCourseSC號2.姓名3.性別4.年齡5.所屬院系6.選修科目信息:\n");scanf("%d",&y);while(1){if(y==1)printf(-請輸入該生的新學(xué)號:\n");scanf("%ld”,&b);for(i=0;i<scnum;i++){if(SC[i].Sno==p->Snum)SC[i].Sno=b;}p->Snum=b;break;}if(y==2){printf("請輸入該學(xué)生的新姓名:\n");scanf("%s”,p->Sname);break;}if(y==3){printf(-請重選該學(xué)生的性別:\n");while(1){printf(-請輸入學(xué)生的性別(男/女1/0):\n");scanf("%d”,&q);if(q==1){strcpy(p->Ssex,"男”);break;}elseif(q==0){strcpy(p->Ssex,"女”);break;}elseprintf(-輸入錯(cuò)誤,請重新輸入!\n");}break;}if(y==4){printf(-請輸入該生的年齡(請輸入阿拉伯?dāng)?shù)字):\n");scanf("%d”,&p->Sage);break;}if(y==5){printf(-請輸入該學(xué)生的所屬院系(CS/MA/IS):\n");scanf("%d”,p->Sdept);break;}if(y==6){printf(-請輸入想要修改的選修科目信息:1.選修者的學(xué)號2.選修科目編號\n");scanf("%d",&j);while(1)if(j==1){printf("請輸入想要修改的學(xué)號:\n");scanf("%ld”,&a);for(i=0;i<scnum;i++){if(a==SC[i].Sno){printf("請輸入新學(xué)號:\n");scanf("%ld”,&n);SC[i].Sno=n;}}while(a!=k->Snum&&k->next!=NULL){k=k->next;}if(a==k->Snum)k->Snum=n;break;}elseif(j==2){printf("輸入想要修改科目的編號:\n");load();scanf("%d”,&m);for(i=0;i<scnum;i++){if(m==SC[i].SCno){printf("輸入新的科目編號:\n");scanf("%d”,&SC[i].SCno);}printf("請重新輸入該選修科目的成績:\n");scanf("%lf”,&SC[i].Grade);}break;}elseprintf("輸入錯(cuò)誤!請重新輸入!\n");}break;}elseprintf("\n 選擇錯(cuò)誤,重選!\n");}printf(-學(xué)號 姓名性別年齡 所屬院系\n");printf("%ld%10s%8s%8d%10s\n”,p->Snum,p->Sname,p->Ssex,p->Sage,p->Sdept);printf(-選修科目信息如下:\n");printf("Sno CnoGrade\n");for(i=0;i<scnum;i++)printf("%-10ld%7d%\n”,SC[i].Sno,SC[i].SCno,SC[i].Grade);}elseprintf(-系統(tǒng)未錄入該學(xué)生的信息!請重新輸入學(xué)號!\n");return0;}StuCourseSCno=b;break;}else(printf(-無法找到!請確認(rèn)是否已輸入該學(xué)生的信息。\n");}}printf(-輸入選修的科目編號(1-7):\n");scanf("%d”,&c);while(1){if(c>=1&&c<=7){SC[j].SCno=c;break;}else{printf(-請重新選擇選修科目!\口輸入你選修的科目的編號(1-7):\n");scanf("%d”,&c);}}printf("輸入該選修科目的成績:\n");scanf("%lf”,&SC[j].Grade);}scnum=scnum+a;printf("請輸入學(xué)生的姓名:\n");scanf("%s”,p->Sname);while(i){printf(-請輸入學(xué)生的性別(男/女1/0):\n");scanf("%d”,&q);if(q==1){strcpy(p->Ssex,"男”);i=0;}elseif(q==0){strcpy(p->Ssex,"女”);i=0;}elseprintf("輸入錯(cuò)誤,請重新輸入!\n");}printf(-請輸入學(xué)生的年齡(請輸入阿拉伯?dāng)?shù)字):\n");scanf("%d”,&p->Sage);printf(-請輸入該學(xué)生的所屬院系(CS/MA/IS):\n");scanf("%s”,p->Sdept);current=*headp;while(p->Snum>current->Snum&¤t->next!=NULL){last=current;current=current->next;}if(p->Snum<=current->Snum)if(current==*headp){p->next=*headp;*headp=p;}else{p->next=current;last->next=p;}else{p->next=NULL;current->next=p;}p=*headp;printf(-學(xué)號姓名性別年齡 所屬院系\n");while(p!=NULL){printf("%ld%10s%8s%8d%10s\n”,p->Snum,p->Sname,p->Ssex,p->Sage,p->Sdept);p=p->next;}printf(-選修科目信息如下:\n");printf("Sno CnoGrade\n");for(i=0;i<scnum;i++)printf("%-10ld%7d%\n”,SC[i].Sno,SC[i].SCno,SC[i].Grade);}StuCourseSCno){SC[i].Sno=0;j++;}}last->next=p->next;}free(p);printf("刪除成功!\n");count--;}elseprintf("系統(tǒng)內(nèi)無該學(xué)生的信息!\n");p=*headp;for(i=0;i<scnum;i++){for(k=0;k<scnum-i;k++)if(SC[i].Sno<SC[i+1].Sno){a=SC[i];SC[i]=SC[i+1];SC[i+1]=a;}}scnum=scnum-j;printf(-學(xué)號 姓名性別年齡 所屬院系\n");while(p!=NULL){printf("%ld%10s%8s%8d%10s\n",p->Snum,p->Sname,p->Ssex,p->Sage,p->Sdept);p=p->next;}printf("選修科目信息如下:\n");printf("Sno CnoGrade\n");for(i=0;i<scnum;i++)printf("%-10ld%7d%\n”,SC[i].Sno,SC[i].SCno,SC[i].Grade);}StuCourseSC2.否:\n");scanf("%d",&a);while(1){if(a==1){for(inti=0;i<count;i++)fwrite(&p[i],sizeof(structstudent),1,fp1);for(j=0;j<scnum;j++)fwrite(&SC[j],sizeof(structStuCourse),1,fp2);fclose(fp1);fclose(fp2);printf("數(shù)據(jù)已經(jīng)存儲進(jìn)文件!\n");break;}elseif(a==2){printf("未將數(shù)據(jù)存儲入文件!數(shù)據(jù)會丟失!\n");break;}elseprintf("輸入錯(cuò)誤!請重新輸入!\n");}}StuCourseSCnum,p[i].Sname,p[i].Ssex,p[i].Sage,p[i].

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論