學生成績信息管理系統(tǒng)(附程序清單)_第1頁
學生成績信息管理系統(tǒng)(附程序清單)_第2頁
學生成績信息管理系統(tǒng)(附程序清單)_第3頁
學生成績信息管理系統(tǒng)(附程序清單)_第4頁
學生成績信息管理系統(tǒng)(附程序清單)_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、學生成績信息管理系統(tǒng)1 引 言1.1 設計目的與要求1.2設計內容2系統(tǒng)需求與功能分析2.1 系統(tǒng)需求分析2.2系統(tǒng)功能分析3總體結構設計3.1系統(tǒng)的結構設計3.2系統(tǒng)管理流程圖4 系統(tǒng)詳細設計和系統(tǒng)實現(xiàn)5 系統(tǒng)測試6 結束語參考文獻附錄1:鏈表結構化設計源程序清單附錄2:順序表結構化設計源程序清單. . .261 引 言1.1 設計目的與要求該學生信息管理系統(tǒng)采用c+語言開發(fā)研制,針對學生成績及其數(shù)據(jù)特點,可以全面實現(xiàn)對學生成績的插入、查詢、修改、刪除和輸出等功能的計算機管理。它能使學生信息數(shù)據(jù)的工作人員從繁重的工作中解脫出來,大大減輕了工作量,減少人為的工作失誤,全面提高學生信息管理的效率

2、,從而使學校對于學生成績的管理水平和技術水平躍上一個新的臺階。(1) 程序要添加適當?shù)淖⑨?,程序的書寫要采用縮進格式。(2) 程序要具在一定的健壯性,即當輸入數(shù)據(jù)非法時,程序也能適當?shù)刈龀龇磻?,如插入刪除時指定的位置不對等等。(3) 程序要做到界面友好,在程序運行時用戶可以根據(jù)相應的提示信息進行操作。(4) 根據(jù)實驗報告模板詳細書寫實驗報告,在實驗報告中給出鏈表根據(jù)姓名進行查找的算法和插入算法的流程圖。1.2設計內容定義一個包含學生信息(學號,姓名,成績)的的順序表和鏈表,使其具有如下功能: (1) 根據(jù)指定學生個數(shù),逐個輸入學生信息;(2) 逐個顯示學生表中所有學生的相關信息;(3) 根據(jù)姓

3、名進行查找,返回此學生的學號和成績;(4) 根據(jù)指定的位置可返回相應的學生信息(學號,姓名,成績); (5) 給定一個學生信息,插入到表中指定的位置; (6) 刪除指定位置的學生記錄;(7) 統(tǒng)計表中學生個數(shù)。2系統(tǒng)需求與功能分析2.1 系統(tǒng)需求分析 (1) 能完成學生信息的插入、查詢、修改、刪除、輸出等功能;(2)采用單鏈表與順序表存儲結構實現(xiàn);(3) 所有數(shù)據(jù)以外部文件方式保存。2.2系統(tǒng)功能分析(1)要設計一個學生成績管理系統(tǒng),其功能包括:插入函數(shù)add():將學生成績信息插入到鏈表中;查詢函數(shù)search():分別可以按學號和按姓名進行學生成績查詢;刪除函數(shù)delete():當需要刪除

4、的學號和姓名一致時則刪除對應的學生記錄;修改函數(shù)modify():修改指定的學生成績信息;輸出函數(shù)show():輸出全部學生成績信息;菜單函數(shù)menu():為程序的菜單函數(shù)為實現(xiàn)各種功能提供便捷;讀取數(shù)據(jù)函數(shù)read():從外部文件讀取學生成績信息;保存數(shù)據(jù)函數(shù)save():將數(shù)據(jù)保存到外部文件中。3總體結構設計3.1系統(tǒng)的結構設計通過對學生信息管理系統(tǒng)的功能分析,可以定義出系統(tǒng)的總體結構模塊圖,如圖3.1所示。學生成績管理系統(tǒng) 學生信息插入學生信息查詢學生信息刪除學生信息修改學生信息輸出學生信息讀取學生信息保存圖3.1學生管理系統(tǒng)總體結構設計3.2系統(tǒng)管理流程圖 前面的分析中已經(jīng)定義了系統(tǒng)各

5、個模塊,屬于靜態(tài)建模的范圍。在系統(tǒng)運行時刻的動態(tài)模型應該由系統(tǒng)的流程決定。當用戶運行該系統(tǒng)后可以來進行學生信息插入管理、學生信息查詢管理、學生信息刪除管理、學生信息修改管理及學生信息輸出等操作,具體的流程如圖3.2所示。進入系統(tǒng)數(shù)據(jù)讀入查詢修改刪除輸出數(shù)據(jù)保存退出系統(tǒng)不保存yn圖3.2系統(tǒng)流程圖主模塊應負責應用程序的主界面,由它調用其他模塊.因此主模塊應具有操作性好、界面清晰的特點,使用戶能夠很方便地找到所需功能。根據(jù)功能需求的結果分析,主界面應該由學生信息插入管理,學生信息查詢管理、學生信息修改管理、學生信息刪除管理和學生信息輸出管理組成,可以通過輸入相應的數(shù)字進入相應的功能模塊。4 鏈表學

6、生信息管理系統(tǒng)詳細設計和系統(tǒng)實現(xiàn)系統(tǒng)總體設計完成后,就可以根據(jù)需求對各個模塊來進行實現(xiàn)了。在本系統(tǒng)中需要編碼實現(xiàn)的主要有學生信息插入、學生信息查詢、學生信息修改、學生信息刪除和學生信息輸出等5個模塊。(1)學生信息插入模塊添加的信息包括學號(不允許重復)、姓名(不允許重復)、分數(shù)。流程圖如下圖4.1所示。開始插入數(shù)據(jù)輸入學生信息調用類成員函數(shù)采用單鏈表保存數(shù)據(jù)結束圖4.1插入模塊流程圖本程序采用的是尾插法,就是每次將新申請的結點插在終端結點的后面,其執(zhí)行過程如圖4.2所示。圖4.2尾插法建立單鏈表操作示意圖(2)學生信息查詢模塊按姓名和學號查找學生信息的流程圖分別如下圖4.3所示。結束輸入要查

7、找姓名判斷抱歉沒有該學生輸出該學生的信息按姓名查找開始ny圖4.3按姓名查找學生信息流程圖在單鏈表中,即使知道被訪問結點的位置i,也不能像順序表那樣直接按序號訪問,而只能從頭指針出發(fā),設置一個工作指針p,順next域逐個結點往下搜索。當p指向某個結點時判斷是否為第i個結點,若是則查找成功;否則,將工作指針p后移,即將p指向原來所指結點的后繼結點。直到p為null時查找失敗。單鏈表查找過程如圖4.4所示。圖4.4單鏈表查找過程的示意圖按學號查詢學生信息同按姓名查找學生信息,此處不再詳細列出。(3)學生信息修改模塊首先要查找與要修改數(shù)據(jù)相匹配的信息,若沒有則返回失敗。否則把相應的信息輸出,然后再重

8、新輸入新的數(shù)據(jù)并保存到單鏈表。(4)學生信息刪除模塊當選擇刪除功能時,首先輸入要刪除的同學的姓名,然后輸入要刪除的同學的學號,如果該同學存在并且姓名與學號匹配的上,則進行刪除操作,否則返回失敗。其流程圖4.5如下:開始刪除操作輸入姓名輸入學號姓名學號一致執(zhí)行刪除功能返回主菜單ny圖4.5刪除學生信息模塊流程圖刪除操作定義為將單鏈表的第i個結點刪去。因為在單鏈表中結點ai存儲地址在其前驅結點ai-1的指針域,所以必須首先找到ai-1的存儲地址p,然后令p的next域指向ai 的后繼結點,即把結點ai 從鏈上摘下來,最后釋放結點ai的存儲空間,如圖4.6所示。 圖4.6在單鏈表中刪除結點指針的變化

9、情況(5)學生信息輸出模塊從單鏈表表頭遍歷整個單鏈表,將所有數(shù)據(jù)輸出。其部分代碼如下: void function:show() char choose;student *temp;system(cls);temp=student_first-next; if(!temp) cout文件無數(shù)據(jù)nn endl;cout1.返回主菜單choose; while(choose!=1) cout1.返回主菜單choose; menu(); elsecoutout(); temp=temp-next; cout1.返回主菜單choose;while(choose!=1)cout1.返回主菜單choose

10、;menu(); 5 系統(tǒng)測試在完成了系統(tǒng)各方面的設計后,并不是可以運行就完成的,為了保證系統(tǒng)性能的穩(wěn)定性跟安全性等,就要對系統(tǒng)做測試。測試環(huán)境如下:l 硬件:p4c 2.4ghz,80gb硬盤,512m內存;l 軟件:windows xp personal sp2,分辨率1024*768,microsoft visual c+ 6.0。1.這是鏈表的主界面2.這是順序表的主界面圖5.1運行主界面我就以順序表為例介紹一下我的學生信息管理系統(tǒng)吧 選擇1清空學生信息功能時,如圖5.2所示。圖5.2插入學生成績信息實現(xiàn)返回主菜單后選擇3插入學生成績信息,4刪除學生信息,運行結果按由姓名特定位置刪除和

11、按學號刪除兩種分別如圖5.3和圖5.4所示。圖5.3按學生學號查找相關信息實現(xiàn)圖5.4按學號查找相關信息實現(xiàn)當在主菜單中選擇4時,則進行刪除功能。其運行結果如圖5.5所示。圖5.5 刪除學生信息功能實現(xiàn)當在主菜單中選擇6時,則進行顯示當前信息功能。其運行結果如圖5.7所示。圖5.7輸出學生信息功能實現(xiàn)6 結束語通過這次數(shù)據(jù)結構課程設計的實驗,在解決問題的過程中,充分體會到了數(shù)據(jù)結構這門課程對于軟件設計的重要性,也體會到了數(shù)據(jù)結構+算法=程序這句話的真正含義,一個實際問題的解決第一步就是要依賴于良好的抽象思維的,將實際問題轉化為相應的數(shù)據(jù)結構,只有這一步做好了,才能采取相應的算法和優(yōu)化方法解決問

12、題和解決好問題。參考文獻1 錢新賢,楊猛,程兆煒,張少東visual c+編程疑難詳解m 北京:人民郵電出版社,2000 2 王紅梅,胡明,王濤數(shù)據(jù)結構(c+)m 北京:清華大學出版社,2007 3 程學先數(shù)據(jù)庫原理與技術m北京:中國水利水電出版社,2001 4 alex kriegel & boris m.trukhnovsql biblem北京:電子工業(yè)出版社,20005 鄭章,程剛,張勇visual c+6.0數(shù)據(jù)開發(fā)技術m北京:機械工業(yè)出版社,1999.96f.brokken and k.kubat. c+ annotations. version 4.4.0m,icce,univer

13、sity of groningen,netherlands,1990. 250280附錄1:鏈表結構化設計源程序清單/ 程序名稱:student.cpp / 程序功能:采用鏈表與文件實現(xiàn)一個簡單的學生成績管理系統(tǒng)。 #include #include #include#include#include using namespace std;struct class int chinese; int math; int english;class studentpublic: student(); void ofile(ofstream &of); void infile(ifstream &f

14、); void out(); void set(char *name,int no,class score); char *getname(); int getno(); student *next; protected:char name20; int no;class score ;student:student():next(0) char *student:getname()return name; int student:getno()return no;void student:set(char *name,int no,class score)strcpy(name,name);

15、no=no; score=score;void student:infile(ifstream &f)fnamenoscore.chinesescore.mathscore.english; /將數(shù)據(jù)輸入到文件 void student:ofile(ofstream &of)of name no score.chinese score.math score.english; /從文件中提取數(shù)據(jù)void student:out() coutnametnotscore.chinesettscore.mathttscore.englishtnext;while(f1-next)f1=f1-next;

16、 do p=new student;cout請輸入您要添加的學生成績信息:endl;coutname;while(f2)if(strcmp(f2-getname(),name)=0)cout該學生已存在,請確定姓名!nn;coutname;break;f2=f2-next; coutno; coutscore.chinese; coutscore.math; coutscore.english; p-set(name,no,score);f1-next=p; p-next=null;f1=f1-next;cout是否繼續(xù)輸入信息?(yn) choose;while(choose=y|choos

17、e=y);save();cout1.返回主菜單choose;while(choose!=1)cout1.返回主菜單choose;menu();void function:delete() /刪除信息函數(shù) char name20; int no;char choose;student *temp,*p;system(cls);p=temp=student_first-next; coutname;coutno;while(temp) if(strcmp(temp-getname(),name)=0&temp-getno()=no) /判斷該學生信息是否存在 coutout(); coutchoo

18、se; if(choose=y|choose=y)p-next=temp-next;delete temp;coutnext; save(); cout1.返回主菜單n2.繼續(xù)刪除choose; while(choose!=1&choose!=2)cout1.返回主菜單n2.繼續(xù)刪除choose;if(choose=1)menu(); else if(choose=2)delete(); void function:modify() /修改學生信息函數(shù)char choose,name20; student *temp,*p; int no;class score;system(cls);tem

19、p=p=student_first;coutname;while(temp)if(strcmp(temp-getname(),name)=0) coutout(); coutname; coutno; coutscore.chinese; coutscore.math; coutscore.english; temp-set(name,no,score);break;temp=temp-next; save();cout修改成功!endl;cout1.返回主菜單n2.繼續(xù)修改choose;while(choose!=1&choose!=2) cout1.返回主菜單n2.繼續(xù)修改choose;i

20、f(choose=1)menu();else if(choose=2)modify();void function:read() /讀取信息函數(shù)student *p,*p2; p=student_first; long t; ifstream is(student.txt,ios:in); if(!is) ofstream os(student.txt,ios:out); os.close(); return ; while(!is.eof() p2=new student; p2-infile(is); p-next=p2; p2-next=null; p=p-next;void funct

21、ion:save() /保存學生成績信息函數(shù)ofstream of(student.txt,ios:out); student *p=student_first-next; while(p)p-ofile(of); p=p-next; of.close();void function:search() int flag(0); char choose; char t120;int t2;system(cls);student *temp=student_first-next; do coutchoose;if(choose=1)coutt1;while(temp)if(strcmp(t1,te

22、mp-getname()=0) flag=1;break;temp=temp-next; if(flag=0)coutn無該學生的信息nendl;elsecoutout();break;else if(choose=2)coutt2;while(temp)if(t2=temp-getno() flag=1; break;temp=temp-next; if(flag=0)coutn無該學生的信息nendl;elsecoutout(); break;while(choose!=1|choose!=2); coutn1.返回主菜單n2.繼續(xù)查詢choose;while(choose!=1&choo

23、se!=2)cout1.返回主菜單n2.繼續(xù)查詢choose;if(choose=1)menu(); else if(choose=2) search(); void function:show() char choose;student *temp;system(cls);temp=student_first-next; if(!temp) cout文件無數(shù)據(jù)nn endl;cout1.返回主菜單choose; while(choose!=1) cout1.返回主菜單choose; menu(); elsecoutout(); temp=temp-next; cout1.返回主菜單choos

24、e;while(choose!=1)cout1.返回主菜單choose;menu(); void function:menu() time_t t; time(&t);char choose; system(cls);cout -版權所有:李卉-endl; coutendl; cout*endl; cout 平頂山學院歡迎你 endlendl; cout 學生成績信息管理系統(tǒng) endlendl; cout 顯示系統(tǒng)時間和日期: ctime(&t)endl; cout*endlendl;cout請選擇您需要的操作,選擇相關操作請輸入相對的括號里的阿拉伯數(shù)字!endl; coutn; cout 1

25、 錄入學生成績信息:nendl;cout 2 查詢學生成績信息:nendl; cout 3 刪除學生成績信息:nendl;cout 4 修改學生成績信息:nendl;cout 5 顯示全部學生成績信息:nendl; cout 6 退出系統(tǒng)endl;coutchoose;switch(choose)case 1: add();break; case 2: search();break; case 3: delete();break;case 4: modify();break;case 5: show();break; case 6: exit(1);break;default:cout請按規(guī)定

26、輸入選擇項!endl;menu();void main()function function; /定義功能接口function.menu(); /調用主菜單附錄2:鏈表結構化設計源程序清單#define list_init_size 10 /確定分配空間大小#include #include #include #include /getch()#include typedef struct student /學生信息結構體類型 char no100; char name7; float score;typedef struct /定義順序類型sqlist student *stu; /指向數(shù)據(jù)

27、元素的基地址int length; /線性表的當前長度int listsize;sqlist;/下面是函數(shù)的原型聲明int initlist(sqlist &sl); /順序表初始化int creat(sqlist &sl);/順序表的建立int insertlist(sqlist &sl,student elem,int pos);/順序表的插入操作int search(sqlist sl,int pos);/按指定位置刪除int dele_elem1(sqlist &sl,int pos,student &elem);/順序表的按位置刪除操作int dele_elem2(sqlist &s

28、l,char *num,student &elem);/順序表的按學號刪除int out_list(sqlist sl);/順序表的輸出操作/主函數(shù)/void main() coutnn歡迎使用學生信息查詢系統(tǒng),請按提示使用!nnn; sqlist sl; initlist(sl); student s; char number9; int pos; while(1) cout n 以下程序是使用順序表實現(xiàn)的:n;cout n 0126程正爐請您選擇您要執(zhí)行的操作:n;coutendlendl; cout 1、清空順序表 2、創(chuàng)建順序表 3、插入信息 4、刪除信息 5、查找信息 6、顯示當前信

29、息 0、退出系統(tǒng)n; coutn; if(n=0)/退出 coutn謝謝您的使用,該系統(tǒng)是11電商一班的程正爐設計,多謝你的使用!n; break; else if(n=1)/清空 coutc; if(c=n) break; else initlist(sl);cout順序表已清空!您可以繼續(xù)其他操作!nn; else if(n=2)/創(chuàng)建 coutc; if(c=n) break; else creat(sl); else if(n=3)/插入 cout輸入插入學生信息:n; couts.no; ; couts.score; insertlist(sl,s,pos); e

30、lse if(n=4)/刪除功能 int m; cout1、我想按輸入特定位置刪除n; cout2、我想按輸入學生學號刪除n; coutm; coutendl; if(m=1) dele_elem1(sl,pos,s); else if(m=2) coutnumber; dele_elem2(sl,number,s); coutendl; else if(n=5) int num; coutnum; search(sl,num); else if(n=6)/顯示 out_list(sl); else if(n!=0|n!=1|n!=2|n!=3|n!=4|n!=5|n!=6) cout您的輸入

31、有誤,請重新輸入!n; /while /函數(shù)定義/int initlist(sqlist &sl) sl.stu =(student *)malloc(list_init_size*sizeof(student); if(!sl.stu) return 0; cout分配失敗!n; sl.length=0; sl.listsize=list_init_size; return 1;/創(chuàng)建操作/int creat(sqlist &sl) cout下面創(chuàng)建學生信息查詢系統(tǒng),請按提示輸入數(shù)據(jù):n; sl.length=0; int m; /用于記數(shù) coutm;cout名n; for(int i=1

32、;i=m;i+) cout請輸入第isl.stui-1.no; coutendl; cout請輸入第 ; coutendl; cout請輸入第isl.stui-1.score ; coutendl; sl.length+; coutn本次操作您一共輸入了m名數(shù)據(jù)n; return 1;/插入操作/int insertlist(sqlist &sl,student elem,int pos) coutpos; if(possl.length+1) cout您要插入的位置不存在,請檢查!n; return 0; struct student *p; for(p=sl.stu;pno,elem.no )=0) cout對不起!輸入的學號已存在,請輸入其它學號!n; cout該學號在系統(tǒng)中代表的信息為:n; cout學號:noendl; cout姓名:nameendl; cout成績:score=q;-p) *(p+1)=*p; *q=elem; +sl.length; coutn插

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論