加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

C語言程序設計-學生成績管理系統(tǒng)

12/18 08:48
801
服務支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

學生成績管理系統(tǒng)

本題目設計目的是訓練學生的基本編程能力,了解管理信息系統(tǒng)的開發(fā)流程,熟悉C語言的文件和單鏈表的各種基本操作。本程序中涉及結(jié)構(gòu)體、單鏈表、文件等方面的知識。通過本程序的訓練,使學生能對C語言的文件操作有一個更深刻的了解,掌握利用單鏈表存儲結(jié)構(gòu)實現(xiàn)對學生成績管理的原理,為進一步開發(fā)出高質(zhì)量的管理信息系統(tǒng)打下堅實的基礎(chǔ)。

1、問題定義

創(chuàng)建一個學生成績管理系統(tǒng)。假設系統(tǒng)中每個學生記錄只包括學號、姓名、數(shù)學成績、英語成績、C語言成績、總分、平均分、名次等信息。程序的運行效果如下圖所示,選擇任意菜單后,實現(xiàn)相應功能。

圖1.1? 學生成績管理系統(tǒng)功能需求

在問題定義階段要考慮題目的可行性和需求分析,接下來進入開發(fā)階段,完成系統(tǒng)設計和系統(tǒng)實現(xiàn)的任務。

2、系統(tǒng)設計

2.1 總體設計

采用模塊化的程序設計方法,即將較大的任務按照一定的原則分為一個個較小的任務,然后分別設計各個小任務。需要注意的是劃分出來的模塊應該相對獨立但又相關(guān),且容易理解??梢杂媚K化層次結(jié)構(gòu)圖(即模塊圖)來分析其任務的劃分,一般從上到下進行,最上面一層是主模塊,下面各層是其上一層模塊的逐步細化描述。

本成績管理系統(tǒng)要求采用單鏈表實現(xiàn),如圖2.1所示,它由如下五大功能模塊組成:

  1. 輸入記錄模塊。完成將數(shù)據(jù)存入單鏈表的工作。記錄可以從以二進制形式存儲的數(shù)據(jù)文件中讀入,也可從鍵盤逐個輸入學生記錄。學生記錄由學生的基本信息和成績信息字段構(gòu)成。當從數(shù)據(jù)文件中讀入記錄時,也就是把在以記錄為單位存儲的數(shù)據(jù)文件中,將記錄逐條復制到單鏈表中。
  2. 查詢記錄模塊。完成在單鏈表中查找滿足相關(guān)條件的學生記錄。在此成績管理系統(tǒng)中,用戶可以按照學生的學號或姓名在單鏈表中進行查找。若找到該學生的記錄,則返回指向該學生的記錄的指針。否則返回一個值為NULL的空指針,并打印出未找到該學生記錄的提示信息。
  3. 更新記錄模塊。完成對學生記錄的維護。在此成績管理系統(tǒng)中,它實現(xiàn)了對學生記錄的修改、刪除、插入和排序操作,并將修改后的數(shù)據(jù)存入源數(shù)據(jù)文件。
  4. 統(tǒng)計記錄模塊。完成對各門功課最高分和不及格人數(shù)的統(tǒng)計。
  5. 輸出記錄模塊。一是實現(xiàn)對學生記錄的存盤,即將記錄寫入數(shù)據(jù)文件中;二是實現(xiàn)將記錄信息以表格的形式在屏幕上打印出來。

2.2 詳細設計

2.2.1數(shù)據(jù)結(jié)構(gòu)設計

  1. 學生成績信息結(jié)構(gòu)體

struct student

{

char num[10];?? /*學號*/

char name[15];? /*姓名*/

int cgrade;???? /*C語言成績*/

int mgrade;???? /*數(shù)學成績*/

int egrade;???? /*英語成績*/

int total;????? /*總分*/

float ave;????? /*平均分*/

int mingci;???? /*名次*/

};

結(jié)構(gòu)體struct student將用于存儲學生的基本信息,它將作為單鏈表的數(shù)據(jù)域。為了簡化程序,只取了3門成績。

  1. 單鏈表node結(jié)構(gòu)體

typedef struct node

{

struct student data;? /*數(shù)據(jù)域*/

struct node *next;??? /*指針域*/

}Node,*Link;

這樣就定義了一個單鏈表的結(jié)構(gòu),data為struct student結(jié)構(gòu)類型的數(shù)據(jù),作為單鏈表結(jié)構(gòu)中的數(shù)據(jù)域,next為單鏈表中的指針域,用來存儲其直接節(jié)點的地址。

2.2.2 主控main()函數(shù)執(zhí)行流程

本成績管理系統(tǒng)執(zhí)行主流程如圖2.2所示。它先以可讀寫的方式打開數(shù)據(jù)文件,此文件默認為“D:student”,若該文件不存在,則新建此文件。當打開文件操作成功后,從文件中一次讀出一條記錄,添加到新建的單薄鏈表中,然后執(zhí)行顯示主菜單和進入主循環(huán)操作,進行按鍵判斷。

在判斷鍵值時,有效的輸入為本0至9之間的任意數(shù)值,其他輸入都被視為錯誤按鍵。若輸入為0(即變量select=0),它會繼續(xù)判斷,如果對記錄進行過更新操作,那么是否已經(jīng)保存過新的數(shù)據(jù),若沒有,則全局變量saveflage=1,系統(tǒng)會提示用戶是否需要進行數(shù)據(jù)存盤操作,用戶輸入Y或y,系統(tǒng)會自動進行存盤操作后再執(zhí)行退出成績管理系統(tǒng)的操作。

若選擇1,則調(diào)用Add()函數(shù),執(zhí)行增加學生記錄操作;若選擇2,則調(diào)用Del()函數(shù),執(zhí)行刪除學生記錄操作;若選擇3,則調(diào)用Qur()函數(shù),執(zhí)行查詢學生記錄操作;若選擇4,則調(diào)用Modify()函數(shù),執(zhí)行修改學生記錄操作;若選擇5,則調(diào)用Insert()函數(shù),執(zhí)行插入學生記錄操作;若選擇6,則調(diào)用Tongji()函數(shù),執(zhí)行統(tǒng)計學生記錄操作;若選擇7,則調(diào)用Sort()函數(shù),執(zhí)行按降序排序?qū)W生記錄操作;若選擇8,則調(diào)用Save()函數(shù),執(zhí)行將學生記錄存入數(shù)據(jù)文件的操作;若選擇9,則調(diào)用Disp()函數(shù),執(zhí)行將學生記錄以表格形式打印輸出至屏幕的操作;若輸入為0~9之外的值,則調(diào)用Wrong()函數(shù),給出按鍵錯誤的提示。

      1. 輸入記錄模塊

輸入記錄模塊主要實現(xiàn)將數(shù)據(jù)存入單鏈表中。當從數(shù)據(jù)文件中讀出記錄時,調(diào)用fread(p,sizeof(Node),1,fp)文件讀取函數(shù),執(zhí)行一次從文件中讀取一條學生成績記錄信息存入指針變量p所指的節(jié)點中的操作,并且該操作在main()函數(shù)中執(zhí)行,即當成績管理系統(tǒng)進入顯示菜單界面時,該操作已經(jīng)執(zhí)行了。若該文件中沒有數(shù)據(jù),系統(tǒng)會提示單鏈表為空,沒有任何學生記錄可操作,此時,用戶應選擇1,調(diào)用Add()函數(shù),進行學生記錄的輸入,即完成在單鏈表l中添加記錄的操作。值得一提的是,這里的字符串和數(shù)值的輸入分別采用了函數(shù)來實現(xiàn),在函數(shù)中完成輸入數(shù)據(jù)任務,并對數(shù)據(jù)進行條件判斷,直到滿足條件為止,這樣一來,大大減少了代碼的重復和冗余,符合模塊化程序設計的特點。

      1. 查詢記錄模塊

查詢記錄模塊主要實現(xiàn)了在單鏈表中按學號或姓名查找滿足相關(guān)條件的學生記錄。在查詢函數(shù)Qur(l)中,l為指向保存了學生成績信息的單鏈表的首地址的指針變量。為了遵循模塊化編程的原則,我們將在單鏈表中進行的指針定位操作,設計成了一個單獨的函數(shù)
Node *Locate(Link l,char findmess[],char nameornum[]),參數(shù)findmess[]保存要查找的具體內(nèi)容,nameornum[]保存要查找的字段(值為字符串類型的name或者num),若找到該記錄,則返回指向該節(jié)點的指針;否則,返回一個空指針。

資料借鑒于此?紛傳

  • 有需要資料的可了解一下.docx

相關(guān)推薦

電子產(chǎn)業(yè)圖譜