當前位置:編程學習大全網 - 編程語言 - 求壹個輸出不及格學生的的名單(學號 姓名 課程名稱) C++

求壹個輸出不及格學生的的名單(學號 姓名 課程名稱) C++

《C++程序設計》

課程設計報告

設計題目:學生成績管理系統

專業:智能終端

班級:

學號:

姓名:

指導老師:

日期:

目錄

壹、設計任務與要求…………………………………………3

1.設計內容………………………………………………3

2.課程設計的要求………………………………………3

二、系統分析(需求分析)…………………………………3

1.需求分析…………………………………………3

2.系統性能要求……………………………………3

3.系統的功能分析……………………………………3

4.系統功能模塊……………………………………3

5.模塊框架圖…………………………………………3

三、系統設計與實現……………………………………4

1.界面設計…………………………………………4

2.功能設計與實現………………………………4

四、測試結果……………………………………4

五、總結…………………………………………5

六、參考資料……………………………………5

附錄:源程序……………………………………5

壹、設計任務與要求

1.設計內容:

a.設計四個類;學生類(描述學生基本信息);成績類:班級類;課程類(描述課程信息:課程編號,科目名稱(如高等數學,大學英語等);學生成績及課程信息用文件保存,每個類壹個文件,程序執行時從文件讀入;

b.能按學期,按班級完成對學生成績的錄入,修改,能按班級統計學生的成績;求學生的總分及平均分;並能根據學生的平均成績進行排序,能查詢學生成績,不及格科目及學生名單;能按班級輸出學生的成績單。

– 設置學生的成績信息:學生學號、姓名、所選課程名稱、平時成績、期末成績、平時成績所占百分比

– 計算學生總評成績:總評成績=平時成績*平時成績所占百分比+期末成績*(1-平時成績所占百分比)

– 顯示學生的姓名、所選課程名稱以及平時成績、期末成績和總評成績信息。分單人顯示和以班輸出(班成績單格式輸出到文件)

– 註意,至少壹個班,30人三門課

2.課程設計的要求:

根據C++課程所學的概念、理論和方法,按照C++程序設計的基本步驟,設計出壹個適當規模的程序來實現設計課程內容中的全部功能;設計主控模塊程序.對給出的程序源代碼要給出各部分的詳細註釋.自己根據能力及需要添加相應功能模塊,增強模擬系統功能。包括系統的功能分析、系統的功能模塊設計、程序流程圖或結構框圖、邏輯結構設計,數據庫中的表、視圖(如果使用)、索引的結構和定義、觸發器、存儲過程、課程設計體會。

二、系統分析(需求分析)

1.需求分析:

a.能對學生各科成績進行錄入:。

b.能對學生的成績進行增加。

c.能對學生的成績進行刪除。

d.能對學生的成績進行修改。

e.能對學生的成績按總成績,姓名,進行查詢。

f.能輸出學生的所有數據。

g.能進行成績統計

h能進行總分查詢排名。

2.系統性能要求:

a.系統安全、可靠;

b.功能齊全;

c.操作方便、界面友好;

d易於維護和擴充。

3.系統的功能分析:

資料維護:系統維護包括對學生信息的錄入操作及數據表中的信息進行瀏覽。

系統功能:可以對數據表中的信息進行瀏覽。

系統查詢:可以對學生的信息進行查詢。

4.系統功能模塊

學生成績查詢系統有:成績錄入、增加、刪除、修改,數據查詢,排序顯示構成。

5.模塊框架圖

三、系統設計與實現

1.界面設計

程序運行後會出現壹個簡捷的窗口,便於用戶查詢數據。

2.功能設計與實現

通過主窗體調用其他窗體,具體實現可以參照系統分析相關內容。應用系統主控界面包括記錄編輯和記錄查詢等功能模塊。記錄編輯功能完成學生成績記錄編輯和記錄查詢功能。記錄查詢功能可以對數據各分類的記錄進行查詢

四、測試結果

每壹個case都能執行,但是有很多的地方都不夠完善,例如:在總成績排序中,只能輸出總成績,不能單獨的輸出學生的相應的信息;每次進行別的操作之前都要在進行壹次數據的錄入,不能直接對原有的文件進行讀取。

五、總結

此次c++課程設計,在指導教師的精心教導下,我們學會了如何用C++編寫壹個簡單的應用程序。首先要對程序的設計要求有壹個比較明確的認識,然後系統分析與系統設計,最後是代碼設計與調試。程序實現上,設計了簡單的查詢界面,將各個功能集中出來按照程序編寫原則,便於查詢。

根據C++課程所學的概念、理論和方法,按照C++程序設計的基本步驟,設計出壹個適當規模的程序;進壹步加深對C++語言的理解和掌握。理論聯系實際,加深和鞏固所學的理論知識,提高實踐能力和計算機的綜合運用能力。我們編寫程序的過程是辛苦與快樂的,程序的編寫原則很重要,只要我們在編程,就必須不斷改進,才能更好提高編程能力。

六、參考資料

C++程序設計 譚浩強 清華大學出版社

附錄:源程序

#include<iostream>

#include<string>

#include<fstream>

#include<sstream>

#include<iomanip>

using namespace std;

class Tstu //通過定義壹個類來定義數據錄入的函數

{

char name[20];

int number;

float math,cpp,english,average,sum;

public:

Tstu()

{};

Tstu ( char n[20], int num,float ma,float cj,float eng ) ;

float getsum();//得到總分的函數

float getaver(); //得到平均分的函數

friend void main(); //將主函數定義為友元函數,方便訪問類中的成員

};

Tstu::Tstu ( char n[20], int num,float ma,float cj,float eng )

{

strcpy(name,n); //得到姓名

number=num; //得到學號

math=ma; //得到數學成績

cpp=cj; //得到c++成績

english=eng; //得到英語成績

}

float Tstu::getsum() //得到總分的函數

{

sum=cpp+english+math;

return sum;

}

float Tstu::getaver() //得到平均分的函數

{

average=getsum()/3;

return average;

}

void main()

{

cout<<"*****************歡迎來到學生成績查詢系統*****************"<<endl;

cout<<"請選擇您需要的操作!"<<endl; //菜單的輸出

cout<<"操作:"<<endl;

cout<<"(1)數據錄入"<<endl;

cout<<"(2)增加學生"<<endl;

cout<<"(3)刪除學生"<<endl;

cout<<"(4)修改數據"<<endl;

cout<<"查詢:"<<endl;

cout<<"(5)按總成績查詢"<<endl;

cout<<"(6)按姓名查詢"<<endl;

cout<<"(7)輸出所有學生的數據"<<endl;

cout<<"成績統計:"<<endl;

cout<<"(8)每個學生的平均成績"<<endl;

cout<<"(9)各科不及格人數"<<endl;

cout<<"排名:"<<endl;

cout<<"(10)按總分查詢排名"<<endl;

cout<<"(11)退出"<<endl;

cout<<"選擇相關操作請輸入相對的括號裏的阿拉伯數字及字母!"<<endl;

int p=0; //全局變量,用於選擇菜單時的輸入

char w;//全局變量,用於在大項中選擇是否繼續操作

Tstu *s[100]; //類定義的指針將所錄入的數據按類中的形式分別存儲

ofstream *file[100];

int i=0; //全局變量,用於做每個錄入數據的下標

int j=0;

int chris1=0; //用於判斷do—while語句

do //判斷輸入是否正確

{

cin>>p;

if((p>=1&&p<=11))

chris1=1;

else

cout<<"指令錯誤!請重新輸入:"<<endl;

}while(chris1==0);

do{

switch(p)

{

case 1: //數據的錄入

{

char c; //用於在小項中選擇是否繼續操作

char name[20];

int number;

float math,cpp,english;

do{

cout<<"請輸入姓名:"<<endl;

cin>>name;

cout<<"請輸入學號:"<<endl;

cin>>number;

cout<<"請輸入數學成績:"<<endl;

cin>>math;

cout<<"請輸入C++成績:"<<endl;

cin>>cpp;

cout<<"請輸入英語成績:"<<endl;

cin>>english;

fstream outfile,infile; //作壹個文本文檔在文件夾中用於顯示所錄入的數據

outfile.open("f1.txt",ios::out|ios::app);

if(!file)

{ cout<<"f1.txt can not open.\n";

return;

}

outfile<<name<<" "<<"學號:"<<number<<" "<<"數學成績:"<<math<<" "<<"C++成績:"<<cpp<<" "<<"外語成績:"<<english<<endl;

outfile.close();

infile.open("f1.txt",ios::in);

if(!file) //判斷文件是否打開

{ cout<<"f1.txt can not open.\n";

return;

}

char ch;

while(infile.get(ch))

cout<<ch;

cout<<endl;

infile.close();

j++;

s[i]=new Tstu(name, number,math, cpp, english);

i++;

cout<<"數據錄入成功,想繼續錄入嗎(y/n)"<<endl;

cin>>c;

chris1=0;

do{

if(c!='y'&&c!='n')

{ cout<<"指令錯誤!請重新輸入!"<<endl;

cin>>c;

}

else

chris1=1;

}while(chris1==0);

}while(c=='y'); //重復輸入

break;

}

case 2: //增加學生數據

{

char name[20];

int number;

float math,cpp,english;

char c;

do

{

cout<<"請輸入您要增加的學生的姓名:"<<endl;

cin>>name;

cout<<"請輸入妳要增加的學生的學號:"<<endl;

cin>>number;

cout<<"請輸入數學成績:"<<endl;

cin>>math;

cout<<"請輸入C++成績:"<<endl;

cin>>cpp;

cout<<"請輸入英語成績:"<<endl;

cin>>english;

fstream outfile,infile;

outfile.open("f1.txt",ios::out|ios::app);

if(!file)

{

cout<<"f1.txt can not open.\n";

return;

}

outfile<<name<<" "<<"學號:"<<number<<" "<<"數學成績:"<<math<<" "<<"C++成績:"<<cpp<<" "<<"外語成績:"<<english<<endl;

outfile.close();

infile.open("f1.txt",ios::in);

if(!file)

{

cout<<"f1.txt can not open.\n";

return;

}

char h;

while(infile.get(h))

cout<<h;

cout<<endl;

infile.close();

j++;

s[i]=new Tstu(name,number, math, cpp, english);

i++;

cout<<"數據錄入成功,想繼續錄入嗎(y/n)"<<endl;

cin>>c;

if(c!='y'&&c!='n')

{

cout<<"指令錯誤!請重新輸入!"<<endl;

cin>>c;

}

}while(c=='y');

break;

}

case 3://刪除學生信息

{

char c;

string xingming,line,str,name;

do

{ ifstream fin("f1.txt");

fstream outfile("f2.txt",ios::trunc|ios::out); //作壹個文本文檔在文件夾中用於顯示所錄入的數據

cout<<"請輸入您要刪除的學生的姓名:"<<endl;

cin>>xingming;

while(!fin.eof() )

{

getline(fin,line);

istringstream stream(line);

name = line.substr(0,line.find(" ",0));//找到名字,判斷是否相等

if(name != xingming)

outfile<<line<<endl;

}

outfile.close();

fin.close();

fstream f("f1.txt",ios::trunc|ios::out);

ifstream outf("f2.txt");

f<<outf.rdbuf();

outf.close();

f.close();

cout<<"數據刪除成功,想繼續刪除嗎(y/n)"<<endl;

cin>>c;

if(c!='y'&&c!='n')

{

cout<<"指令錯誤!請重新輸入!"<<endl;

cin>>c;

}

}while(c=='y');

break;

}

case 4://修改數據

{

string sname,line,str,name;

int nu;float eng,ma,com;int flag;char c;

if(i==0)

{

cout<<"系統中沒有輸入數據,請先輸入數據!"<<endl;break;

}

do

{

flag=0;

cout<<"請輸入您要修改的學生的姓名:";

cin>>name;

fstream fin("f1.txt",ios::in);

ofstream outfile("f.txt",ios::trunc|ios::out);

cout<<endl;

while(!fin.eof() ) //在文件中查找

{

getline(fin,line);

istringstream stream(line);

sname = line.substr(0,line.find(" ",0));

if(name!=sname)

{

outfile<<line<<endl;

}

else flag=1;

}

fin.close();

if(flag=1)

{

cout<<"請輸入修改學生姓名及其新學號,數學,c++和英語成績:";

cin>>name>>nu>>ma>>com>>eng;

cout<<endl;

outfile<<name<<" "<<"學號:"<<nu<<" "<<"數學成績:"<<ma<<" "<<"C++成績:"<<com<<" "<<"外語成績:"<<eng<<endl;

outfile.close();

fstream outf("f1.txt",ios::trunc|ios::out);

fstream inf("f.txt",ios::in);

outf<<inf.rdbuf()<<endl;

outf.close();

inf.close();

}

if(flag=0)cout<<"對不起,您要修改的學生不存在!請查證後輸入!"<<endl;

cout<<"想繼續修改嗎(y/n):";

cin>>c;

cout<<endl;

if(c!='y'&&c!='n')

{

cout<<" 指令錯誤!請重新輸入!"<<endl<<" ";

cin>>c;

}

}while(c=='y');

break;

}

case 5://按總分查詢

{

int j=0;float SUM;char c;int flag;

if(i==0)

{

cout<<"系統中沒有輸入數據,請先輸入數據!"<<endl;break;

}

do

{

flag=0;

cout<<"請輸入您要查詢的學生的總成績:"<<endl;

cin>>SUM;

for(int j=0;j<i;j++)

{

if(s[j]->getsum()==SUM)

{

flag=1;

cout<<"您要查詢的學生是:"<<(*s[j]).name<<endl;

cout<<"該生的信息為:"<<endl;

cout<<" 學號:"<<(*s[j]).number<<" 數學分數:"<<(*s[j]).math<<" c++分數:"<<(*s[j]).cpp<<" 英語分數"<<(*s[j]).english<<endl;

}

}

if(flag==0)cout<<"對不起!您要查詢的學生不存在!"<<endl;

cout<<"是否繼續查?(y/n):";

cin>>c;

if(c!='y'&&c!='n')

{

cout<<"指令錯誤!請重新輸入!"<<endl;

cin>>c;

};

}while(c=='y');

break;

}

case 6://按姓名查詢

{

char n[20];char c;int j=0;int flag;

if(i==0)

{

cout<<"系統中沒有輸入數據,請先輸入數據!"<<endl;break;

}

do

{

flag=0;

cout<<"請輸入要查詢的名字: "<<endl;

cin>>n;

for(int j=0;j<i;j++)

{

if(strcmp(n,(*s[j]).name)==0)

{

flag=1;

cout<<"您要查詢的學生是:"<<(*s[j]).name<<endl;

cout<<"該生的信息是:學號:"<<(*s[j]).number<<" 數學分數:"<<(*s[j]).math<<"c++分數:"<<(*s[j]).cpp<<"英語分數:"<<(*s[j]).english<<endl;

}

}

if(flag==0)

cout<<"對不起您要查詢的學生不存在,請查證後再輸入!"<<endl;

cout<<"您想繼續查詢嗎?(y/n):";

cin>>c;

if(c!='y'&&c!='n')

{

cout<<"指令錯誤!請重新輸入:"<<endl;

cin>>c;

}

}while(c=='y');

break;

}

case 7://輸出所有學生數據

{

cout<<"所有學生數據如下:"<<endl;

ifstream file;

file.open("f1.txt",ios::in);

cout<<file.rdbuf();

file.close();

break;

}

case 8://統計每個學生的平均成績

{

if(i==0)

{

cout<<"系統中沒有輸入數據,請先輸入數據!"<<endl;break;

}

for(int m=0;m<i;m++)

{

cout<<(*s[m]).name<<" 學號:"<<(*s[m]).number<<" 總分:"<<(*s[m]).getsum()<<" 均分:"<<(*s[m]).getaver()<<endl;

}

break;

}

case 9://統計各學科不及格人數

{

if(i==0)

{

cout<<"系統中沒有輸入數據,請先輸入數據!"<<endl;break;

}

int m,n,k,j;m=0;n=0;k=0;

for(j=0;j<i;j++)

{

if(s[j]->math<60)m++;

if(s[j]->cpp<60)n++;

if(s[j]->english<60)k++;

}

cout<<"數學不及格人數為:"<<m<<endl;

cout<<"c++不及格人數為:"<<n<<endl;

cout<<"英語不及格人數為:"<<k<<endl;

break;

}

case 10://按總分排名

{

if(i==0)

{

cout<<"系統中沒有輸入數據,請先輸入數據!"<<endl;break;

}

int h,g,n;int j=0;float a[100],temp;

for(g=0;g<i;g++)

{

a[j]=(*s[g]).getsum();j++;

}

for(h=0;h<i;h++)

{for(n=0;n<i-h;n++)

if(a[n]>a[n+1])

{

temp=a[n];a[n]=a[n+1];a[n+1]=temp;

}

}

for(n=1;n<=i;n++)

cout<<a[n]<<endl;

break;

}

}

cout<<" 您想繼續進行其他操作嗎?(y/n):";

int flag=0;

do

{

cin>>w;

cout<<endl;

if(w!='y'&&w!='n')

cout<<" 指令錯誤!請重新輸入!"<<endl;

else

flag=1;

}while(flag==0);

if(w=='y')

{

cout<<"*****************歡迎來到學生成績查詢系統*****************"<<endl;

cout<<"請選擇您需要的操作!"<<endl; //菜單的輸出

cout<<"操作:"<<endl;

cout<<"(1)數據錄入"<<endl;

cout<<"(2)增加學生"<<endl;

cout<<"(3)刪除學生"<<endl;

cout<<"(4)修改數據"<<endl;

cout<<"查詢:"<<endl;

cout<<"(5)按總成績查詢"<<endl;

cout<<"(6)按姓名查詢"<<endl;

cout<<"(7)輸出所有學生的數據"<<endl;

cout<<"成績統計:"<<endl;

cout<<"(8)每個學生的平均成績"<<endl;

cout<<"(9)各科不及格人數"<<endl;

cout<<"排名:"<<endl;

cout<<"(10)按總分查詢排名"<<endl;

cout<<"(11)退出"<<endl;

cout<<"選擇相關操作請輸入相對的括號裏的阿拉伯數字及字母!"<<endl;

cin>>p;

}

}while(w=='y');

}

另外,團IDC網上有許多產品團購,便宜有口碑

  • 上一篇:編程牛編程語言
  • 下一篇:煙花遊戲通關策略
  • copyright 2024編程學習大全網