歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

學生成績管理系統(tǒng)[共28頁]

  • 資源ID:44295889       資源大?。?span id="dsjb243" class="font-tahoma">348KB        全文頁數(shù):28頁
  • 資源格式: DOC        下載積分:12積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要12積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

學生成績管理系統(tǒng)[共28頁]

成績評定教師簽名嘉應學院 計算機學院數(shù)據(jù)結構實驗報告課程名稱:數(shù)據(jù)結構開課學期:2016-2017學年第1學期班 級:1401指導老師:鐘治初實驗題目:學生成績管理系統(tǒng)學 號:141110043姓 名:蘇永達提交時間:2016年10月27日一、 實驗要求:(1) 設計一個學生成績管理系統(tǒng),模擬高考成績的管理。功能至少包括數(shù)據(jù)輸入,輸出,查找,插入,刪除,修改,排序,統(tǒng)計各成績段的人數(shù),考生成績的排位,報考志愿的檢索等。(2) 所有輸入輸出數(shù)據(jù)均使用文本文件進行讀寫。(3) 所有過渡性數(shù)據(jù)使用二進制文件進行讀寫和保存。(4) 設計使用平行志愿進行出檔。(5) 設計使用非平行志愿行進出檔。(6) 設計志愿時,可以設計12個志愿,如果平行志愿,則前后各6個分別為第一組和第二組平行志愿處理。(7) 設計考生記錄的字段時,可以預留補錄志愿的字段。或者將未錄取考生的數(shù)據(jù)進行備份,然后將志愿清空后再增加補錄志愿。28二、功能: (1) 按學號順序輸入學生信息,包括學號、姓名、性別、課程單科成績(單科成績包括C語言、高數(shù)、大學語文、匯編、中近史),并存入文件中。(2) 從文件讀取數(shù)據(jù)(3) 刪除學生信息(4) 查詢學生信息(查詢可分為精確查詢和模糊查詢)(5) 修改學生信息(要求修改后,數(shù)據(jù)依然是按學號順序排列)(6) 插入學生信息(要求插入后,數(shù)據(jù)依然是按學號順序排列)(7) 附加功能,學生可自由發(fā)揮,如:排名、求各門課程平均分等。三、實驗目的1、掌握和鞏固C語言編寫的相關知識和技巧,特別是函數(shù)、指針、結構體。2、能夠采用模塊化思想調試程序。3、通過該課程設計的操作與實踐,能夠根據(jù)數(shù)據(jù)對象的特性,學會數(shù)據(jù)組織的方法,把現(xiàn)實世界中的實際問題在計算機內部表示出來,并培養(yǎng)基本的、良好的程序設計技能,全面提高學生的程序設計、開發(fā)能力。四、系統(tǒng)分析4.1 相關基礎知識 選擇、循環(huán)、函數(shù)、指針、結構體、鏈表4.2 總體方案 架構圖: 方案描述:菜單:運用switch case選擇功能,在每個case中有相對應的調用語句,調用相對應的函數(shù)。刪除功能:調用刪除函數(shù),判斷是否保存,如果保存寫入文件。插入功能:運用鏈表插入。修改功能:調用刪除函數(shù)跟插入函數(shù),先刪除再插入,從而實現(xiàn)修改功能。查詢功能:調用菜單中的查詢函數(shù),用循環(huán)實現(xiàn)查詢功能。排名功能:調用菜單中的排名函數(shù),通過冒泡排序法實現(xiàn)功能。保存功能:運用寫入文件。五、系統(tǒng)設計定義一個student類型的結構體,里面包含學生信息,包括學號、姓名、性別、課程單科成績(單科成績包括C語言、高數(shù)、大學語文、匯編、中近史)、總分、平均成績。5.1 新建功能 從鍵盤輸入N個學生基本信息,包括學號、姓名、性別、課程單科成績(單科成績包括C語言、高數(shù)、大學語文、匯編、中近史),編程根據(jù)輸入信息計算各學生總分和平均分。創(chuàng)建動態(tài)鏈表,將學生信息存入鏈表中。在DOS屏幕上打印鏈表內所有學生信息。新建一個文件,將動態(tài)鏈表中的數(shù)據(jù)(即輸入的學生信息)存入文件中。5.2 打開功能打開一個文件,從文件中讀取學生信息,并新建鏈表,將數(shù)據(jù)存入動態(tài)鏈表。在DOS屏幕上打印鏈表內所有學生信息。5.3 修改功能 在DOS屏幕上打印出當前的所有學生信息。輸入待修改的學生學號,若不存在,輸出“查無此人”;若存在,則輸入修改的信息,并存回學生信息鏈表中,存回后學生信息鏈表依然是按學號順序排列。最后在DOS屏幕上打印出新的所有學生信息。5.4 插入功能在DOS屏幕上打印出當前的所有學生信息。輸入插入信息的條數(shù),從第一條開始到最后一條,依次輸入每條學生信息,包括學號、姓名、性別、課程單科成績(單科成績包括C語言、高數(shù)、大學語文、匯編、中近史),根據(jù)輸入信息計算各學生總分和平均分。若輸入的學生學號已經(jīng)存在,則輸出“該學號已存在,無法操作!”,否則將學生信息插入到鏈表中,插入后鏈表中的數(shù)據(jù)依然按照學號排列。最后在DOS屏幕上打印出新的所有學生信息。5.5 查詢功能查詢分為:精確查詢、模糊查詢精確查詢:(1) 按姓名查詢 輸入待查詢的姓名; 根據(jù)順序查詢的方法,對學生的姓名依次查詢,直到查詢到與輸入的信息相匹配的信息,并在DOS屏幕上顯示出來。若需要查詢的信息不存在,系統(tǒng)則會提示找不到此人??芍貜筒樵?。(2) 按學號查詢輸入待查詢的學號; 根據(jù)順序查詢的方法,對學生的學號依次查詢,直到查詢到與輸入的信息相匹配的信息,并在DOS屏幕顯示出來。若需要查詢的信息不存在,系統(tǒng)則會提示找不到此人??芍貜筒樵儭D:樵儯海?) 按姓氏查詢 輸入待查詢的姓氏; 根據(jù)順序查詢的方法,對學生的姓依次查詢,當查詢到與輸入的信息相匹配的信息,則在DOS屏幕顯示出來,直到鏈表結束。若需要查詢的信息不存在,系統(tǒng)則會提示找不到相關信息??芍貜筒樵儭#?) 按性別查詢 輸入待查詢的性別; 根據(jù)順序查詢的方法,對學生的性別依次查詢,當查詢到與輸入的信息相匹配的信息,則在DOS屏幕顯示出來,直到鏈表結束??芍貜筒樵?。5.6 刪除功能 在DOS屏幕上打印出當前的所有學生信息。(1)按姓名刪除輸入需要刪除的學生姓名; 根據(jù)順序查詢的方法,對學生的姓名依次查詢,當查詢到與輸入的信息相匹配的信息,則刪除該生信息,并在DOS屏幕顯示出新的所有學生信息。若需要刪除的信息不存在,系統(tǒng)則會提示刪除失敗。(2)按學號刪除輸入需要刪除的學生學號; 根據(jù)順序查詢的方法,對學生的學號依次查詢,當查詢到與輸入的信息相匹配的信息,則刪除該生信息,并在DOS屏幕顯示出新的所有學生信息。若需要刪除的信息不存在,系統(tǒng)則會提示刪除失敗。5.7排名功能 可根據(jù)學生的總分進行排名,并在DOS屏幕上輸出排名結果。5.8 關于我們 在DOS屏幕上輸出系統(tǒng)相關信息。5.9 軟件說明5.10 退出保存 選擇0退出系統(tǒng),保存功能在每段函數(shù)結束后實現(xiàn)。5.10運行結果5.10.0 主界面 5.10.1 新建文件(輸入一組數(shù)據(jù),存入文件中)5.10.2 打開文件(打開文件,讀取文件數(shù)據(jù)存入鏈表)5.10.3 修改功能5.10.4 插入功能5.10.5 查詢功能精確查詢-按姓名查詢精確查詢-按學號查詢模糊查詢-按姓氏查詢模糊查詢-按性別查詢5.10.6 刪除功能按姓名刪除按學號刪除5.10.7 總分排名功能5.10.9 軟件說明5.10.10 退出保存保存功能在每段函數(shù)結束后實現(xiàn)。六、心得體會通過這次實驗我們更好的掌握和鞏固C語言編寫的相關知識和技巧,特別是函數(shù)、指針、結構體、鏈表等功能。通過該課程設計的操作與實踐,能夠根據(jù)數(shù)據(jù)對象的特性,學會數(shù)據(jù)組織的方法,把現(xiàn)實世界中的實際問題在計算機內部表示出來,并培養(yǎng)基本的、良好的程序設計技能,雖然在設計過程中遇到了不少問題麻煩,在教材數(shù)據(jù)的幫助下,完成了這次程序設計。 七、源代碼#include <stdlib.h>#include <stdio.h>#include <string.h>/*-*/#define LEN sizeof(struct student)/結構體長度/*-*/#define NEW (struct student *)malloc(LEN)/*-*/FILE *fp;/*文件指針*/*-*/struct student int num; char name20;int score1,score2,score3,score4,score5;char sex;double aver;float sum; struct student *next;char filename100;struct student *creat( ) struct student *h; struct student *p,*q; printf("需要輸入幾條信息:"); int i,n; scanf("%d",&n); printf("n-請按學號順序依次輸入學生信息-n"); char c=getchar(); h=NULL; for(i=1;i<=n;i+) p=NEW; if (p=NULL) printf("Allocation failuren"); exit(0); printf("n"); printf("輸入姓名<如:zhangsan>: "); gets(p->name); printf("輸入學號<如:1>: "); scanf("%d",&p->num); c=getchar(); printf("輸入性別<M/F>: "); scanf("%c",&p->sex); printf("輸入c語言成績: "); scanf("%d",&p->score1); printf("輸入高數(shù)成績: "); scanf("%d",&p->score2); printf("輸入大學語文成績: "); scanf("%d",&p->score3); printf("輸入?yún)R編語言成績: "); scanf("%d",&p->score4); printf("輸入中近史成績: "); scanf("%d",&p->score5); c=getchar(); p->sum=p->score1+p->score2+p->score3+p->score4+p->score5; p->aver=(p->score1+p->score2+p->score3+p->score4+p->score5)/5.0; p->next=NULL; if (h=NULL) /* h為空,表示新結點為第一個結點 */ h=p; /* 頭指針指向第一個結點 */ else /* h不為空 */ q->next=p; /* 新結點與尾結點相連接 */ q=p;/* 使q指向新的尾結點 */ return h; struct student *paixu (struct student *head) /* 總分排名 */ system("cls"); printf("總分排名如下:n"); struct student *op; struct student *p; struct student *p1,*p2; p1 = (struct student *) malloc (LEN); p1->next = head; head = p1; for (op = NULL; op != head; op = p) for (p = p1 = head; p1->next->next!=op; p1 = p1->next) if (p1->next->sum < p1->next->next->sum) p2 = p1->next->next; p1->next->next = p2->next; p2->next = p1->next; p1->next = p2; p = p1->next->next; p1 = head; head = head->next; free (p1); p1 = NULL; return head; void prlist(struct student *head)/*輸出函數(shù)*/ struct student *p; p=head; printf("n學號 姓名 性別 c語言 高數(shù) 大學語文 匯編語言 中近史 總分 平均分n"); while (p!=NULL) printf("%d %s %c %d %d %d %d %d %.1f %.2fn",p->num,p->name,p->sex,p->score1,p->score2,p->score3,p->score4,p->score5,p->sum,p->aver); p=p->next; system("pause"); /*-write將數(shù)據(jù)存入文件-*/void write(struct student *head) struct student *p; p=head; if(head!=NULL) while(p!=NULL)fwrite(p,LEN,1,fp);p=p->next; printf("文件更新成功!n");fclose(fp); system("pause");system("cls");/*-read將文件數(shù)據(jù)讀入一個新鏈表中-*/struct student *read(void) struct student *head; struct student *p1,*p2; head=NULL;p1=NEW;rewind(fp);/指向文件頭fread(p1,LEN,1,fp); while(!feof(fp) if(head=NULL) head=p1; else p2->next=p1; p2=p1;p1=NEW; fread(p1,LEN,1,fp); p2->next=NULL;fclose(fp); return(head);void find(struct student *head)/* 查詢功能 */ int t,s,i,j; struct student *p,*q; char x10,y2="0",c2; char k,f; p=head; printf("精確查找:n *1 按姓名查找n *2 按學號查找n 模糊查找n *3 按姓氏查找:n *4 按性別查找n"); scanf("%d",&s); k=getchar(); if(s=1) printf("請輸入姓名:"); gets(x); while (p!=NULL) if (strcmp(x,p->name)=0) printf("n學號 姓名 性別 c語言 高數(shù) 大學語文 匯編語言 中近史 總分 平均分n");printf("%d %s %c %d %d %d %d %d %.1f %.2fn",p->num,p->name,p->sex,p->score1,p->score2,p->score3,p->score4,p->score5,p->sum,p->aver);j=1;else i=1;q=p;p=p->next; else if(s=2) printf("按學號查找:n");scanf("%d",&t);while (p!=NULL)if (t=p->num) printf("n學號 姓名 性別 c語言 高數(shù) 大學語文 匯編語言 中近史 總分 平均分n");printf("%d %s %c %d %d %d %d %d %.1f %.2fn",p->num,p->name,p->sex,p->score1,p->score2,p->score3,p->score4,p->score5,p->sum,p->aver);j=1;else i=1; q=p;p=p->next; else if(s=3) printf("按姓氏查詢:n"); gets(c); while ( p!=NULL) if (strncmp(c,p->name,1)=0) printf("n學號 姓名 性別 c語言 高數(shù) 大學語文 匯編語言 中近史 總分 平均分n");printf("%d %s %c %d %d %d %d %d %.1f %.2fn",p->num,p->name,p->sex,p->score1,p->score2,p->score3,p->score4,p->score5,p->sum,p->aver);j=1;else i=1;q=p;p=p->next; else if(s=4) printf("按性別查詢:n"); f=getchar(); while(p!=NULL) if(f=p->sex) printf("n學號 姓名 性別 c語言 高數(shù) 大學語文 匯編語言 中近史 總分 平均分n"); printf("%d %s %c %d %d %d %d %d %.1f %.2fn",p->num,p->name,p->sex,p->score1,p->score2,p->score3,p->score4,p->score5,p->sum,p->aver); j=1; else i=1; q=p;p=p->next; if(i=1&&j!=1) printf("Not found.輸入錯誤n");system("pause");system("cls"); struct student *delstudent(struct student *head)/* 刪除功能 */ int s,n,m=1; char c; struct student *p,*q; char x10; while(m) printf(" *1 按學號刪除n *2 按姓名刪除n"); scanf("%d",&s); c=getchar(); printf("已有信息如下:n"); prlist(head); if (head=NULL) printf("This is a empty list."); return head; p=head; switch(s) case 2: printf("請輸入姓名:"); gets(x); while (strcmp(x,p->name)!=0 && p->next!=NULL) q=p;p=p->next; if (strcmp(x,p->name)=0) if (p=head) head=p->next; else q->next=p->next; free(p); else printf("Not found.n");continue; ;m=0;break; case 1: printf("請輸入學號:"); scanf("%d",&n); c=getchar(); while (n!=p->num && p->next!=NULL) q=p;p=p->next; if (n=p->num) if (p=head) head=p->next; else q->next=p->next; free(p); else printf("Not found.n");continue; ;m=0;break; default: printf("輸入錯誤n");break; return head; void about()/* 關于我們 */ system("cls"); printf(" , _ nn");printf(" (. ) ()nn");printf(" / / Hinn"); printf(" 成員介紹nn");printf(" 1.組長:nn");printf(" 2.組員:nn");printf(" 3.組員:nn");printf(" 4.組員:nn");printf(" 產(chǎn)品信息nn"); printf(" 一.產(chǎn)品用途:主要用于學生成績管理與查詢.nn");printf(" 二.班級成績管理系統(tǒng)主要包括:數(shù)據(jù)的錄入 nn");printf(" 讀取 顯示 刪除 插入 查找 修改 排名.nn");system("pause");system("cls"); void end() /*退出系統(tǒng)*/ char s;printf("是否退出系統(tǒng)Y/N?n");scanf("%c",&s);if(s=Y | s=y)exit(0);else if(s=N | s=n) return; else printf("輸入錯誤,請重新輸入nn");system("pause");return; struct student *insert(struct student *head, struct student *op)/* 插入功能 */ struct student *p,*q; if (head=NULL) head=op; /* 空表時,插入結點 */ op->next=NULL; else p=head; while (op->num > p->num && p->next!=NULL) q=p;p=q->next; if (op->num=p->num) printf("n該學號已存在,無法插入!n"); return head; else if(op->num<p->num) if (p=head) head=op; /* 在表頭插入結點 */ else q->next=op; /* 在表中間插入結點 */ op->next=p; else p->next=op; /* 在表尾插入結點 */ op->next=NULL; return head; struct student *xiugai(struct student *head)/*修改功能*/struct student *op=NEW;int c;head=delstudent(head);printf("請輸入新名字:");gets(op->name); printf("請輸入新學號:");scanf("%d",&op->num);c=getchar();printf("請輸入新性別:");scanf("%c",&op->sex); printf("請輸入新C語言成績:"); scanf("%d",&op->score1); printf("請輸入新高數(shù)成績:"); scanf("%d",&op->score2); printf("請輸入新大學語文成績:"); scanf("%d",&op->score3);printf("請輸入新匯編成績:"); scanf("%d",&op->score4);printf("請輸入新中近史成績:"); scanf("%d",&op->score5);c=getchar();op->sum=op->score1+op->score2+op->score3+op->score4+op->score5; op->aver=(op->score1+op->score2+op->score3+op->score4+op->score5)/5.0; op->next=NULL; head=insert(head,op);return head;struct student *ca(struct student *head)/*插入功能*/ struct student *op=NEW; char c; printf("請輸入名字:");gets(op->name); printf("請輸入學號:");scanf("%d",&op->num);c=getchar(); printf("請輸入性別:");scanf("%c",&op->sex); printf("請輸入C語言成績:"); scanf("%d",&op->score1); printf("請輸入高數(shù)成績:"); scanf("%d",&op->score2); printf("請輸入大學語文成績:"); scanf("%d",&op->score3);printf("請輸入?yún)R編成績:"); scanf("%d",&op->score4);printf("請輸入中近史成績:"); scanf("%d",&op->score5);c=getchar();op->next=NULL;head=insert(head,op); op->sum=op->score1+op->score2+op->score3+op->score4+op->score5; op->aver=(op->score1+op->score2+op->score3+op->score4+op->score5)/5.0; return head;void help()/* 軟件說明 */ system("cls");printf("n 說明 nnn");printf(" 運行本軟件需先使用新建文件或打開文件功能,否則運行出錯。n"); printf(" 每次使用修改 插入 刪除等功能后需重新打開文件讀取數(shù)據(jù),n");printf(" 否則得到的數(shù)據(jù)是未保存的。每運行完一個功能會自動返回到 n");printf(" 主界面。 nnn"); printf("nn 純屬原創(chuàng) 禁止抄襲 nn"); system("pause");system("cls");/*-主函數(shù) 菜單-*/int main() system("color 9f");char c,r; struct student *head;int z; while(1)printf("n");printf(" - nn");printf(" 歡迎使用學生成績管理系統(tǒng) nn");printf(" - nn");printf("*菜單*nn");printf("=nn");printf("* 1.新建文件 * 2.打開文件 *");printf("nn");printf("* 3.修改功能 * 4.插入功能 *");printf("nn");printf("* 5.查詢功能 * 6.刪除功能 *");printf("nn"); printf("* 7.排名功能 * 8.關于我們 *");printf("nn"); printf("* 9.軟件說明 * 0.退出系統(tǒng) *");printf("nn"); printf("請輸入指令:");scanf("%d",&z);c=getchar(); switch(z) case 1: printf("請輸入文件路徑和新建文件名(如:d:/123):");scanf("%s",filename);/-輸入文件名,如d:/123 if(fp=fopen(filename,"w+")=NULL)/W+先新建文件在寫入數(shù)據(jù)printf("新建文件失敗!n");elseprintf("新建文件成功!n");head=creat();write(head);break; case 2:printf("nn讀取文件數(shù)據(jù)n"); printf("請輸入讀取的文件路徑和文件名(如:d:/123):");scanf("%s",filename);/*-輸入文件名,如d:/123-*/ c=getchar();if(fp=fopen(filename,"r+")=NULL)/r+讀文件printf("打開文件失敗n");elseprintf("打開文件成功n"); head=read();system("pause");printf("信息如下:n");prlist(head);system("cls");break; case 3:head=xiugai(head);prlist(head); printf("是否保存Y/N?n");scanf("%c",&r); if(r=y|r=Y) fp=fopen(filename,"w+");write(head);else printf("未保存n");system("pause");system("cls");break; case 4:head=ca(head);prlist(head); printf("是否保存Y/N?");scanf("%c",&r); if(r=y|r=Y) fp=fopen(filename,"w+");write(head);break; case 5:find(head);break; case 6:head=delstudent(head);prlist(head);printf("是否保存Y/N?n");scanf("%c",&r); if(r=y|r=Y) fp=fopen(filename,"w+");write(head); else printf("未保存n");system("pause");system("cls");break; case 7:head=paixu(head);prlist(head);system("cls");break; case 8:about();break; case 9:help();break; case 0:end();break; default:printf("輸入錯誤,請重新輸入n");break;return 0;

注意事項

本文(學生成績管理系統(tǒng)[共28頁])為本站會員(gfy****yf)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。 若此文所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復下載不扣分。




關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!