c++課程設計之學生選修課程系統(tǒng)設計_第1頁
c++課程設計之學生選修課程系統(tǒng)設計_第2頁
c++課程設計之學生選修課程系統(tǒng)設計_第3頁
c++課程設計之學生選修課程系統(tǒng)設計_第4頁
c++課程設計之學生選修課程系統(tǒng)設計_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上C+程序設計課程設計報告學生選修課程系統(tǒng)設計一、需求分析計算機技術作為信息化的核心技術受到全社會的普遍重視。如今,計算機的使用也已不再局限于科學計算,它已進入人類社會的各個領域并發(fā)揮著越來越重要的作用。深入掌握計算機專業(yè)知識、具有良好系統(tǒng)設計與分析能力的計算機高級專業(yè)人才在社會上深受歡迎。而系統(tǒng)設計與分析能力的培養(yǎng)需要通過實踐訓練才能獲得。通過計算機對一些系統(tǒng)的管理已經成為一種系統(tǒng)、便捷的方式。本課程設計就是用C+設計學生選課系統(tǒng)的問題,實現(xiàn)對學生選課的管理操作。本課程設計的目的是設計一個學生選修課程系統(tǒng)的程序,用來實現(xiàn)對學生成績的管理,其中包括學生信息的文件讀入、添

2、加、查詢、保存、刪除以及相應的課程信息管理。程序設計了兩個類,其中一個包含學生的學號、姓名、選課數(shù)以及選修總學分,另一個則包含了課程的信息,包括課程編號、課程名稱、課程性質、課時等等。然后通過數(shù)組、向量、集合等來實現(xiàn)學生選課信息的記錄、保存,刪除等相關操作從而達到管理學生選課的。二、設計要求假定有n門課程,每門課程有課程編號、課程名稱、課程性質、總學時、授課學時、實驗學時、學分、開課學期等信息。學生可以按要求(如每個學生總學分不得少于20、沒學期不能超過3門課程,每門課程不得超過50個人,但不能少于10否則該課程不開設)自由選課。使之能提供一些功能:1) 課程信息錄入功能2) 課程信息瀏覽功能

3、3) 查詢功能:(按課程性質查詢、按課程學分查詢,查詢每個學生的選修信息、查詢每門課程的選修信息等)4) 學生選修課程5) 修改課程或選課信息(根據(jù)課程編號或名稱修改課程信息、根據(jù)學生姓名修改選課信息);6) 刪除課程或選課信息(根據(jù)課程編號或名稱刪除課程信息、根據(jù)學生姓名刪除選課信息);三、總體設計我們設計一個程序對學生選課信息進行保存,對學生的選課信息進行可執(zhí)行操作,如添加、刪除、查詢等等。該程序包括以下功能模塊: 1) 學生信息添加模塊:能夠輸入學生基本信息并保存到文件中。2) 查看模塊:顯示所有可選修課程的信息。3) 查詢:顯示所有符合要求的課程信息。4) 選課:顯示學生已選課程信息和

4、選課,刪除已選課程信息。5) 退出系統(tǒng)。為了完善系統(tǒng),我們還添加了一個登錄界面。考慮到添加課程信息的功能只適合老師,因此我們設置了添加課程的權限設置(必須輸入密碼)。我們建立了兩個文件用來保存學生信息和課程信息。(student.txt和subject.txt)該系統(tǒng)功能說明:1) 系統(tǒng)以菜單方式工作 2) 課程信息錄入功能(課程信息用文件保存)輸入 3) 課程信息瀏覽功能輸出 4) 查詢功能:(至少一種查詢方式)算法 5) 按學分查詢 6) 按課程性質查詢 7) 學生選修課程(可選項) 四、詳細設計該成序包含的主要函數(shù)功能說明:void XuanKeMenu(); / 選課主菜單函數(shù)int

5、find(int no); void Save(); void DL();/登錄界面的函數(shù)void MainMenu();void output(); void Load(); /載入文件信息的函數(shù)void Load2();void quit();void add();void ChaXun();void chaxun1();void chaxun2();void xuanke();void tq1(); /提取選課編號的函數(shù)void tq2();void AddStuInfo();/添加學生信息的函數(shù)void SaveStuInfo(); /保存學生信息到文件中void del();/刪除已

6、選課程信息的函數(shù)主要的數(shù)據(jù)結構表: 序號成員名數(shù)據(jù)類型字段含義1namchar姓名2numchar學號3zxfint總學分4cntint選課總數(shù)5namechar課程名稱6numint課程編號7chachar 課程性質8Timeint課程總學時9time1int授課總學時10time2int實驗(上機)總學時11xfint課程學分12kkxqchar開課學期五、程序代碼#include<iostream>#include<vector>#include<set>#include<string>#include<conio.h>#def

7、ine N 10using namespace std;int F;class subject /建立一個課程類,保存課程信息public:int num;char name30;char cha20;int Time,time1,time2,xf;char kkxq20;S;class student /建立一個學生類,保存學生信息public:char nam10;char num15;int zxf;int cnt;Stu;vector <subject> v; /聲明一個 指向課程信息的向量vector <student> z; /聲明一個 指向學生信息的向量s

8、et <int> T; /建立一個 集合vector <set<int> > TT; /建立一個 向量集合set <int> :iterator it; /建立一個 迭代器void XuanKeMenu(); /聲明一個 選課主菜單函數(shù)int find(int no);void Save();void DL(); /聲明一個登錄界面的函數(shù)void MainMenu();void output();void Load(); /聲明載入文件信息的函數(shù)void Load2();void quit();void add();void ChaXun();v

9、oid chaxun1();void chaxun2();void xuanke();void tq1(); /聲明提取信息的函數(shù)void tq2();void AddStuInfo(); /聲明添加學生信息的函數(shù)void del();void AddStuInfo()FILE *fp;fp=fopen("d:student.txt","a");fseek(fp,0,2); /打開學生信息文件system("cls");cout<<endl<<endl<<endl<<endl<&l

10、t;endl;cout<<"tt*"<<endl;cout<<"tt* 學生選課系統(tǒng) *"<<endl;cout<<"tt*"<<endl<<endl;cout<<"ttt請輸入學號:"cin>>Stu.num;cout<<"ttt請輸入姓名:"cin>>Stu.nam;St=Stu.zxf=0;fprintf(fp,"%s %s %d %dn"

11、,Stu.num,Stu.nam,St,Stu.zxf); /存入文件z.push_back (Stu); T.clear(); TT.push_back(T); /用向量指向學生信息fclose(fp);void add()string password1,password2;char password20;int _cnt=0;FILE *fp;fp=fopen("d:password","r");fscanf(fp,"%s",password); password2=password;fclose(fp);system(&quo

12、t;cls");cout<<endl<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 課 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 請輸入密碼:" /對添加課程進行權限設置char ch;while(ch=getch()if(ch=13) break;if(ch != 8) putchar

13、('*'); password1 += ch;_cnt+;elseif(_cnt)password1.erase(password1.end()-1);_cnt-;system("cls");cout<<endl<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 課 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cou

14、t<<"t 請輸入密碼:"int x=_cnt;while(x-)cout<<"*"if(password1 != password2) cout<<"nnttt 密碼錯誤!"getch(); MainMenu(); A: system("cls");cout<<endl<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 課 程 信 息 *&quo

15、t;<<endl;cout<<"t *"<<endl<<endl;cout<<"ttt請輸入課程編號:"cin>>S.num;cout<<"ttt請輸入課程名稱:"cin>>S.name;cout<<"ttt請輸入課程性質:"cin>>S.cha;cout<<"ttt請輸入總課時:"cin>>S.Time;cout<<"ttt請輸入

16、授課學時"cin>>S.time1;cout<<"ttt請輸入上機學時(實驗學時):"cin>>S.time2;cout<<"ttt請輸入學分:"cin>>S.xf;cout<<"ttt請輸入開課學期:"cin>>S.kkxq;v.push_back(S);Save();cout<<endl<<"t 是否繼續(xù)添加Y/N:"string s; cin>>s;if(s0='Y'

17、;|s0='y') goto A;else MainMenu();void Save() /保存已選的課程信息FILE *fp;fp=fopen("d:subject.txt","w");for(int i=0;i<v.size();i+)fprintf(fp,"%d %s %s %d %d %d %d %sn",vi.num,,vi.cha,vi.Time,vi.time1,vi.time2,vi.xf,vi.kkxq);fclose(fp);void SaveStuInfo() /保存學生信息F

18、ILE *fp;fp=fopen("d:student.txt","w");for(int i=0;i<z.size();i+)fprintf(fp,"%s %s %d %d",zi.num,zi.nam,t,zi.zxf);for(it=TTi.begin(); it!=TTi.end(); it+)fprintf(fp, " %d",*it);fprintf(fp,"n");fclose(fp);void quit() /退出函數(shù)exit(1);void ChaXun() /

19、查詢主菜單函數(shù)system("cls");cout<<endl<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 課 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"tttt請選擇查詢方式:ntttt1學分查詢ntttt2課程性質查詢ntttt0返回主菜單nn"cout<<&qu

20、ot;tttt請選擇0-2:"int choice;cin>>choice;if(choice>=0&&choice<3)if(choice=1) chaxun1();if(choice=2) chaxun2();if(choice=0) MainMenu();else ChaXun();void chaxun1() /按學分方式查詢system("cls");int cnt=0;cout<<endl<<endl<<endl;cout<<"t *"<&

21、lt;endl;cout<<"t * 課 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 請輸入學分:"int key;cin>>key;cout<<"t 課程"<<" "<<" 課程 "<<"課程"<<" "<<" 總 &q

22、uot;<<" "<<"授課"<<" "<<" 實驗或 "<<" "<<"學分"<<" "<<"開課"<<endl;cout<<"t 編號"<<" "<<" 名稱 "<<"性質"<<"

23、; "<<"學時"<<" "<<"學時"<<" "<<"上機學時"<<" "<<"學分"<<" "<<"學期"<<endl<<endl;for(int i=0;i<v.size();i+)if(cnt&&cnt%10=0)cout<<endl&

24、lt;<"t ="<< endl;cout<<"t 按任意鍵查看下一頁" getch();system("cls");cout<<endl<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 課 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<&

25、quot;t 課程"<<" "<<" 課程 "<<"課程"<<" "<<" 總 "<<" "<<"授課"<<" "<<" 實驗或 "<<" "<<"學分"<<" "<<"開課"

26、;<<endl;cout<<"t 編號"<<" "<<" 名稱 "<<"性質"<<" "<<"學時"<<" "<<"學時"<<" "<<"上機學時"<<" "<<"學分"<<" &q

27、uot;<<"學期"<<endl<<endl;if(vi.xf=key)cnt+;printf("t %3d%12s%8s%4d%6d%8d%8d%7sn",vi.num,,vi.cha,vi.Time,vi.time1,vi.time2,vi.xf,vi.kkxq);cout<<endl<<"t 是否繼續(xù)查詢Y/N:"string s; cin>>s;if(s0='Y'|s0='y') chaxun1();else

28、MainMenu();void chaxun2() /按課程性質查詢system("cls");int cnt=0;cout<<endl<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 課 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 請輸入課程性質:"char key20;cin&

29、gt;>key;cout<<"t 課程"<<" "<<" 課程 "<<"課程"<<" "<<" 總 "<<" "<<"授課"<<" "<<" 實驗或 "<<" "<<"學分"<<" &qu

30、ot;<<"開課"<<endl;cout<<"t 編號"<<" "<<" 名稱 "<<"性質"<<" "<<"學時"<<" "<<"學時"<<" "<<"上機學時"<<" "<<"學

31、分"<<" "<<"學期"<<endl<<endl;for(int i=0;i<v.size();i+)if(cnt&&cnt%10=0)cout<<endl<<"t ="<< endl;cout<<"t 按任意鍵查看下一頁" getch();system("cls");cout<<endl<<endl<<endl;cout<&

32、lt;"t *"<<endl;cout<<"t * 課 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 課程"<<" "<<" 課程 "<<"課程"<<" "<<" 總 "<<" "<<

33、;"授課"<<" "<<" 實驗或 "<<" "<<"學分"<<" "<<"開課"<<endl;cout<<"t 編號"<<" "<<" 名稱 "<<"性質"<<" "<<"學時"&l

34、t;<" "<<"學時"<<" "<<"上機學時"<<" "<<"學分"<<" "<<"學期"<<endl<<endl;if(!strcmp(vi.cha,key)cnt+;printf("t %3d%12s%8s%4d%6d%8d%8d%7sn",vi.num,,vi.cha,vi.Tim

35、e,vi.time1,vi.time2,vi.xf,vi.kkxq);cout<<endl<<"t 是否繼續(xù)查詢Y/N:"string s; cin>>s;if(s0='Y'|s0='y') chaxun2();else MainMenu();void tq1(char *str) /提取出選課時輸入的課程編號string t=""int i=0,cont=0;while(stri)if(isalnum(stri) t += stri;elseint tmp=atoi(t.c_str()

36、;if(TTF.find(tmp)!=TTF.end() t=""i+; continue;zF.zxf += vfind(tmp).xf;TTF.insert(tmp); t=""cont+;i+;/int tmp=atoi(t.c_str();/cout<<t<<" "system("pause");if(TTF.find(tmp)=TTF.end()cont+;TTF.insert(tmp);zF.zxf += vfind(tmp).xf;zF.cnt += cont;void xua

37、nke() /選課函數(shù):執(zhí)行選課功能char str100;system("cls");cout<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 課 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 課程"<<" "<<" 課程 "&l

38、t;<"課程"<<" "<<" 總 "<<" "<<"授課"<<" "<<" 實驗或 "<<" "<<"學分"<<" "<<"開課"<<endl;cout<<"t 編號"<<" "

39、;<<" 名稱 "<<"性質"<<" "<<"學時"<<" "<<"學時"<<" "<<"上機學時"<<" "<<"學分"<<" "<<"學期"<<endl<<endl;for(int i=0

40、; i<v.size(); i+)if(i&&i%10=0)cout<<endl<<"t ="<< endl;cout<<endl<<"t 請輸入所選課程編號:" gets(str);if(strcmp(str,"") tq1(str);/,system("cls");cout<<endl<<endl;cout<<"t *"<<endl;cout<<&qu

41、ot;t * 課 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 課程"<<" "<<" 課程 "<<"課程"<<" "<<" 總 "<<" "<<"授課"<<" "<<&q

42、uot; 實驗或 "<<" "<<"學分"<<" "<<"開課"<<endl;cout<<"t 編號"<<" "<<" 名稱 "<<"性質"<<" "<<"學時"<<" "<<"學時"<&

43、lt;" "<<"上機學時"<<" "<<"學分"<<" "<<"學期"<<endl<<endl;printf("t %3d%12s%8s%4d%6d%8d%8d%7sn",vi.num,,vi.cha,vi.Time,vi.time1,vi.time2,vi.xf,vi.kkxq);cout<<endl<<"t ="

44、;cout<<endl<<"t 請輸入所選課程編號:" gets(str);if(strcmp(str,"") tq1(str);SaveStuInfo();if(zF.zxf<60)cout<<"tt你所選課程的總學分少于60,是否繼續(xù)選課!Y/N"string x; cin>>x;if(x0='y'|x0='Y') xuanke();else XuanKeMenu();else XuanKeMenu();int find(int no) /尋找函

45、數(shù),找到想要的課程編號for(int i=0;i<v.size();i+)if(vi.num=no) return i;void display(int i)printf("t %3d%12s%8s%4d%6d%8d%8d%7sn",vi.num,,vi.cha,vi.Time,vi.time1,vi.time2,vi.xf,vi.kkxq);void XuanKeMenu() /選課菜單函數(shù)system("cls");int choice,l=0;cout<<endl<<endl;cout<<&q

46、uot;t *"<<endl;cout<<"t * 學 生 選 課 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 姓名:"<<zF.nam<<" 學號:"<<zF.num<<" 已選 "<<zF.cnt;cout<<"門課程"<<" 已選課程總學分:&q

47、uot;<<zF.zxf<< endl;cout<<"t ="<<endl;cout<<"t 已選課程信息:n"cout<<"t 課程"<<" "<<" 課程 "<<"課程"<<" "<<" 總 "<<" "<<"授課"<<&quo

48、t; "<<" 實驗或 "<<" "<<"學分"<<" "<<"開課"<<endl;cout<<"t 編號"<<" "<<" 名稱 "<<"性質"<<" "<<"學時"<<" "<<

49、"學時"<<" "<<"上機學時"<<" "<<"學分"<<" "<<"學期"<<endl<<endl;for(it=TTF.begin();it!=TTF.end();it+,l+)if(l&&l%10=0)cout<<endl<<"t ="<< endl;cout<<&quo

50、t;t 1 開始選課 2 刪除已選課程 3 下一頁 0 返回 請選擇0/3:" cin>>choice; getchar();if(choice=1) xuanke();else if(choice=2) del();else if(choice=0) MainMenu();else if(choice=3) ;else XuanKeMenu();system("cls");cout<<endl<<endl;cout<<"t *"<<endl;cout<<"t *

51、 學 生 選 課 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 姓名:"<<zF.nam<<" 學號:"<<zF.num<<" 已選 "<<zF.cnt;cout<<"門課程"<<" 已選課程總學分:"<<zF.zxf<< endl;cout<<&qu

52、ot;t ="<<endl;cout<<"t 已選課程信息:n"cout<<"t 課程"<<" "<<" 課程 "<<"課程"<<" "<<" 總 "<<" "<<"授課"<<" "<<" 實驗或 "<<"

53、; "<<"學分"<<" "<<"開課"<<endl;cout<<"t 編號"<<" "<<" 名稱 "<<"性質"<<" "<<"學時"<<" "<<"學時"<<" "<<&quo

54、t;上機學時"<<" "<<"學分"<<" "<<"學期"<<endl<<endl;display(find(*it);cout<<endl<<"t ="<< endl;cout<<"t 1 開始選課 2 刪除已選課程 0 返回 請選擇0/2:" cin>>choice; getchar();if(choice=1) xuanke();

55、else if(choice=2) del();else if(choice=0) MainMenu();else XuanKeMenu();void tq2(char *str) /提取函數(shù):提前刪除時輸入的課程編號string t=""int i=0,cont=0;while(stri)if(isalnum(stri) t += stri;elseint tmp=atoi(t.c_str();set<int>:iterator _t=TTF.find(tmp);if(_t!=TTF.end()t=""TTF.erase(_t);zF.cn

56、t-;zF.zxf-=vfind(tmp).xf;i+;int tmp=atoi(t.c_str();set<int>:iterator _t=TTF.find(tmp);if(_t!=TTF.end()t=""TTF.erase(_t);zF.cnt-;zF.zxf-=vfind(tmp).xf;void del() /刪除已選課程信息int m,l=0,k=0;char str100;system("cls");cout<<endl<<endl;cout<<"t *"<<

57、endl;cout<<"t * 學 生 選 課 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 姓名:"<<zF.nam<<" 學號:"<<zF.num<<" 已選 "<<zF.cnt;cout<<"門課程"<<" 已選課程總學分:"<<zF.zxf<

58、;< endl;cout<<"t ="<<endl;cout<<"t 已選課程信息:n"cout<<"t 課程"<<" "<<" 課程 "<<"課程"<<" "<<" 總 "<<" "<<"授課"<<" "<<&quo

59、t; 實驗或 "<<" "<<"學分"<<" "<<"開課"<<endl;cout<<"t 編號"<<" "<<" 名稱 "<<"性質"<<" "<<"學時"<<" "<<"學時"<<

60、;" "<<"上機學時"<<" "<<"學分"<<" "<<"學期"<<endl<<endl;for(it=TTF.begin();it!=TTF.end();it+,l+)if(l&&l%10=0)cout<<endl<<"t ="<< endl;cout<<"tttt請輸入要刪除的課程的編號:&q

61、uot;gets(str);if(strcmp(str,"") tq2(str);system("cls");cout<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 學 生 選 課 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 姓名:"<<zF.nam<<&qu

62、ot; 學號:"<<zF.num<<" 已選 "<<zF.cnt;cout<<"門課程"<<" 已選課程總學分:"<<zF.zxf<< endl;cout<<"t ="<<endl;cout<<"t 已選課程信息:n"cout<<"t 課程"<<" "<<" 課程 "<

63、;<"課程"<<" "<<" 總 "<<" "<<"授課"<<" "<<" 實驗或 "<<" "<<"學分"<<" "<<"開課"<<endl;cout<<"t 編號"<<" "

64、<<" 名稱 "<<"性質"<<" "<<"學時"<<" "<<"學時"<<" "<<"上機學時"<<" "<<"學分"<<" "<<"學期"<<endl<<endl;display(find

65、(*it);cout<<"tttt請輸入要刪除的課程的編號:"gets(str);if(strcmp(str,"") tq2(str);SaveStuInfo();XuanKeMenu();void Load() /載入函數(shù):載入課程信息(文件此前已建立)FILE *fp1;bool f=1;fp1=fopen("d:subject.txt","r");if(fp1=NULL) f=0;while(f&&!feof(fp1)fscanf(fp1,"%d%s%s%d%d%d%d%

66、s",&S.num,S.name,S.cha,&S.Time,&S.time1,&S.time2,&S.xf,S.kkxq);v.push_back(S);fclose(fp1);void Load2() /載入學生信息(文件此前已建立)FILE *fp;fp=fopen("d:student.txt","r");while(!feof(fp)int x;fscanf(fp,"%s%s%d%d",Stu.num,&Stu.nam,&St,&Stu.zxf);z.

67、push_back(Stu); T.clear();for(int j=0;j<St;j+)fscanf(fp,"%d",&x),T.insert(x);TT.push_back(T);fclose(fp);void output() /顯示函數(shù):將課程信息輸出到屏幕system("cls");cout<<endl<<endl<<endl;cout<<"t *"<<endl;cout<<"t * 課 程 信 息 *"<<endl;cout<<"t *"<<endl<<endl;cout<<"t 課程"<<" "

溫馨提示

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

評論

0/150

提交評論