《C實現(xiàn)學生成績統(tǒng)計管理系統(tǒng)》由會員分享,可在線閱讀,更多相關(guān)《C實現(xiàn)學生成績統(tǒng)計管理系統(tǒng)(3頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、課程設(shè)計任務(wù)書
題目: c+十實現(xiàn)學生成績統(tǒng)計管理系統(tǒng)
課程設(shè)計任務(wù)書及成績評定
課程設(shè)計的任務(wù)和具體要求
1、開設(shè)本課程的冃的是使學生通過小型軟件的開發(fā)過程,進一步掌握面向?qū)ο蟮某?序設(shè)計方法,培養(yǎng)學生的創(chuàng)新能力和創(chuàng)新意識。
2?提高綜合運用所學的理論知識和方法獨立分析和解決問題的能力; 3?訓(xùn)練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進行軟件開發(fā),培養(yǎng)軟件工作者所應(yīng)具備的 科學的工作方法和作風。
指導(dǎo)教師簽字: 日期:
指導(dǎo)教師評語
成績: 指導(dǎo)教師簽字: 日期:
課程設(shè)計所需軟件、硬件等
1、 微型計算機
2、 WindOWS XP
3、 VC6.0
課程設(shè)計進度計劃
2、
起至日期
工作內(nèi)容
^
2010年12 月 1 日-2010 年12月20日
2010年12月 20 R-2010 年12月26 H
收集資料
?z 編寫程序 I
參考文獻、資料索引
序號
y V^V^?4z
舖^^ 0 (
/編著者/ ?
C C^^L
《C+十程序設(shè)計》(第二版),譚浩強著,清華大學出版社
3
1課程設(shè)計的目的 1
2課程設(shè)計的要求 1
3課程設(shè)計報告內(nèi)容 1
1 程序設(shè)計題目 1
2 程序?qū)崿F(xiàn)思路 1
3 程序模塊分析 1
4 系統(tǒng)頂級用例圖 2
5 程序清單 2
4總結(jié) 3
參考文獻 3
附錄 3
一
3、、 課程設(shè)計教學目的
本課程設(shè)計是《高級語言程序設(shè)計9++)》課程的組成之一,也是它的繼續(xù)和延伸。采用 研究型學習方法,完成一個管理類型的小型軟件。開設(shè)本課程的目的是使學生通過小型軟件的 開發(fā)過程,進一步掌握面向?qū)ο蟮某绦蛟O(shè)計方法,培養(yǎng)學生的創(chuàng)新能力和創(chuàng)新意識。
二、 課程設(shè)計的要求
1?了解并掌握面向?qū)ο蟪绦蛟O(shè)計方法,貝備初步的獨立分析和設(shè)計能力; 2?初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基木方法和技能; 3?提高綜合運用所學的理論知識和方法獨立分析和解決問題的能力;
4?訓(xùn)練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進行軟件開發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學的工 作方法和
4、作風。
5?設(shè)計的題目要求達到一定工作量(300行以上代碼),并具有一定的深度和難度。 6?編寫出課程設(shè)計說明書。
7.學生必須仔細閱讀《C+十語言程序設(shè)計》課程設(shè)計方案,認真主動完成課設(shè)的要求。有問題 及時主動通過各種方式與教師聯(lián)系溝通。學生要發(fā)揮自主學習的能力,充分利用時間,安排好 課設(shè)的時間計劃,并在課程設(shè)過程中不斷檢測自己的計劃完成情況。
&課程設(shè)計前期安排學習C+十編程和面向?qū)ο蟮能浖こ痰挠嘘P(guān)知識,以自學和上機實驗為 主。
三?課程設(shè)計報告內(nèi)容
1題目內(nèi)容
學生成績統(tǒng)計管理系統(tǒng)
2功能要求:
① 成績的輸入(學號、姓名、英語、數(shù)學、。++語言…)。
② 成績統(tǒng)計(
5、各科平均成績、各科成績“優(yōu)秀”、“良好”、“中等”、“及格”、“不及格”的人數(shù) 及其所占比例)。
③ 總成績統(tǒng)計(學生的總成績、平均成績及成績排名)。
④ 成績的統(tǒng)計結(jié)果顯示。
⑤ 學生數(shù)據(jù)的添加、修改、與刪除。
⑥ 學生數(shù)據(jù)的讀取與存儲。
3程序?qū)崿F(xiàn)思路(技術(shù)線路):
先創(chuàng)建一個學生元素類,用于存放學生的各種數(shù)據(jù)。然后創(chuàng)建另一個類,把數(shù)據(jù)存儲, 可便進行各種操作。木程序中比較核心的技術(shù)就是用到了堆排序,將學生按優(yōu)先級(高的排 前面,低的排后面)的大小進行有序排列。堆排序的時間復(fù)雜度較一般排序(如:冒泡,選 擇等)來得低,可使程序顯示數(shù)據(jù)時效率更高。
3程序模塊分析:
1)添加
6、數(shù)據(jù):
把用戶輸入的數(shù)據(jù)添加到學生類對象數(shù)組屮,然后再將其入堆,使其有序。
2)刪除數(shù)據(jù):
由用戶輸入要刪除的學生的學號,然后將其從學生類對象數(shù)組中刪除,使數(shù)組中的數(shù)據(jù)
仍然有序。
3) 查找數(shù)據(jù):
由用戶輸入要查找的學生的學號,然后調(diào)用驗0類中關(guān)于查找的函數(shù),將查找結(jié)果顯 示在屏幕上。
4) 顯示數(shù)據(jù):
調(diào)用8。類中關(guān)于顯示數(shù)據(jù)的函數(shù),把所有的學生數(shù)據(jù)都顯示在屏幕上。
5) 清除數(shù)據(jù):
調(diào)用1。0類中關(guān)于清除數(shù)據(jù)的函數(shù),把所有的學牛數(shù)據(jù)都清空。
6) 退出程序:
若用戶輸入了數(shù)字0,則主函數(shù)結(jié)束循環(huán),同時程序也就結(jié)束了。
5程序清單:(見附錄) ^^^^Λ
四、總
7、結(jié)
通過做這個課程設(shè)計讓我逐步學會了使用《面向?qū)ο蟪绦蛟O(shè)計》設(shè)計方法及思想來解決 實際問題,更深刻的理解FC++這種面向?qū)ο蟪绦虻脑O(shè)計語言。同時,通過查閱各類技術(shù)文 獻、資料、手冊解決了許多設(shè)計時遇到的難題,也使我提高了編寫技術(shù)文獻的能力。
附錄: .
#include
#include
#include
#include
#define SmaX 200
USing namespace std;
CIaSS StUdent
{
Public:
String num;
String name;
8、float eng;
float math;
float clang;//定義 c++
float gete(){return eng;}
float getm(){return math;}
float getcl(){return clang;}
String getn(){return num;}
String getna(){return name;}
int rank[3];
int row;//排名
int sinto(string5string5∩oat9float5float);//輸入數(shù)據(jù) VOid sshow();//輸出數(shù)據(jù) float sall();
9、// 求和 float save();//求平均
VOid objrank();//成績分類
};
VOid shows()//普通函數(shù)
{
cout<
10、
{ num=al;name=a2;
eng=bl ;math=b2;clang=b3;
return 0;
}
VOid student::sshow()//^y 出
{ ?AJΛA)ΛA ; HmT^l nCFF>
cout<
11、cout<
12、(n)
{
CaSe 9:n=l;break;
CaSe 8:n=2;break;
CaSe 7:n=3;break;
CaSe 6:n=4;break; default:n=5;} rank [訂=口;
〃類StUdent結(jié)束
〃類IeO開始
CIaSS IeO
{private:
StUdent item[Smax]; int size;
public:
leo();
VOid lsize(int);//設(shè)置數(shù)組大小
VOid Iinit();//清 空
VOid Iinsert();//添加!
VOid Idelet(String);//刪除
VOid
13、lsearch(string);〃查找
VOid Ichan(String);//修改
VOid Ipcent();//成績分類
VOid Irow();//排序
VOid obave();//求平均
VOid Iview();//顯示全部數(shù)據(jù)
VOid Icin();//從磁盤輸出
VOid Icout();//儲存到磁盤 };
leo::leo()
{ StUdent item[Smax];
Isize(O);
VOid leo::lsize(int i)
{size=i; }
VOid leo::linit()
{ Isize(O);
cout<<π學生數(shù)據(jù)
14、清除成功y>c;
if(c==ny,,∣∣c==nYπ) {item[i]=item[--size];k=l;}
}
if(k! =
15、l)cout<<π?n 刪除失敗!π<Smax)cout<<π超出范圍,不能再添加!π<>a 1 >>a2>
16、>b 1 >>b2>>b3;
for(int i=O;i>a;
}
}
VOid leo::lsearch(string 玄)〃查找
{
17、int N=O;
for(int i=O;i
18、t i=O;i>a 1 >>a2>>b 1 >>b2>>b3;
item[i].sinto(al9a29bl5b25b3); cout<<π修改成功!π<
19、leo::lrow()〃排序
5
{ StUdent temb;
if(size>l)
{
for(int i=O;iitem[i+ l].sall())
item[i+ l].row=i+2;
els
20、e item[i+l].row=i+l;〃并列排名
}}
else if(size==l) item[0].row=l;
}
VOid leo::lview()//SzT
{
if(size==0){cout<<π當前學生數(shù)據(jù)為空,請?zhí)砑?...π<
21、Oid leo::obave()//統(tǒng)計科目
{ if(size!=O)
{
float sum[3] = {0};
for(int i=O;i
22、l 平均成績是 √,<
23、;
p[l][i]=item[i].rank[l];
p[2][i]=item[i].rank[2];
}
for(int k=O;k<3;k++)
{ int b[5]={0};
for(int i=O;i
24、 優(yōu) y
25、ags(ios::fixed)<>f[i]; item[size].sinto(a[i],b[i],c[i],
26、d[i]?e [i] );size++;
if(f[i]==l) break;
}
infile.close();
}
VOid leo::lcout()
{ofstream outfile(Hok.txt!\ios::out);
if(! OUtfiIe) cerr<<π文件打開失敗。y
27、;
outfile.close();
}
VOid ShOWmenUO
{
cout<<π
cout<<π∣
H?
5
|^<
28、π
t∣ ?
9
cout<<π∣
3?添加:插入一個學生數(shù)據(jù)
∣u<
29、看系統(tǒng)注意事項
∣π<
30、正在打開文件,請稍后...π<>c;
while(c! = πOπ)
{
system(πclsπ);
showmenu();
if(c==" 1π)
{ cout<<π你選擇了 1,學生數(shù)據(jù)顯示如下:π<
31、科分類情況
}
if(c==π3n)
{ cout<<π你選擇了 3 , IeO l.li nsert();
}
請輸出要刪除的學號ιπ<>a;
IeOl .ldelet(a);
if(c==π5π)
{ cout<<π你選擇了 5 ,請輸出要查找的學號√,<>a;
IeO 1.1 search(a);
}
if(c==π6π)
{ cout<<υ你選擇了 6,請輸出要修改的學號√,<>a;
IeO 1.1 chan(a);
}
if(c=
32、=π7υ)
{ cout<<π你選擇了 7,全部數(shù)據(jù)將要清空”<>a;
if(a==,,y,,∣∣a==,,Yπ) IeO l.linit();
} if(c==π8π)
{ cout<<πl(wèi).本系統(tǒng)最多可以容納200個學生數(shù)據(jù).π< HcniS QC\
showtip();
cin>>c;
system(nclsH);leo 1 .lcout();
}
cout<<π謝謝您的使用!π<