欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      C++語言學生宿舍管理系統(tǒng)(五篇范文)

      時間:2019-05-14 09:40:48下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《C++語言學生宿舍管理系統(tǒng)》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《C++語言學生宿舍管理系統(tǒng)》。

      第一篇:C++語言學生宿舍管理系統(tǒng)

      #include #include #include using namespace std;

      typedef struct

      /*定義結構體數(shù)組*/ {

      string roomnum;

      /*房間號*/ string stunum;

      /*學號*/ string name;

      /*姓名*/ }Student;

      Student stu[1000];

      /*結構體數(shù)組變量*/ int menu_select()

      /*菜單函數(shù)*/ { char c;

      system(“cls”);

      /*運行前清屏*/ cout<<“tt★★★★★★學生宿舍管理系統(tǒng)★★★★★★n”;cout<<“tt§1.輸入記錄

      §n”;cout<<“tt§2.顯示記錄

      §n”;

      cout<<“tt§3.按房間號排序并顯示

      §n”;

      cout<<“tt§4.按學號排序并顯示

      §n”;

      cout<<“tt§5.插入一條記錄按學號排序顯示

      §n”;

      cout<<“tt§6.按姓名查找,刪除一條記錄

      §n”;

      cout<<“tt§7.查找并顯示一條記錄

      §n”;

      cout<<“tt§8.從文件中讀入數(shù)據(jù)

      §n”;

      cout<<“tt§9.循環(huán)寫入數(shù)據(jù)

      §n”;

      cout<<“tt§0.結束程序

      §n”;

      cout<<“tt★★★★★★★★★★★★★★★★★★★★n”;cout<<“tt請選擇你要運行的選項按(0-9):”;c=getchar();

      /*讀入選擇*/ return c;

      /*返回選擇*/ }

      int Input()

      /*輸入若干條記錄*/ { int i=0;

      char flag,x[10];

      /*x[10]為清除多余的數(shù)據(jù)所用*/

      do{

      cout<<“tt房間號:”;

      /*交互輸入*/

      cin>>stu[i].roomnum;

      cout<<“tt學號:”;

      cin>>stu[i].stunum;

      /*菜單選擇*/

      cout<<“tt姓名:”;

      cin>>stu[i].name;

      gets(x);

      /*清除多余的輸入*/

      cout<<“tt是否繼續(xù)輸入?(Y/N)”;

      cin>>flag;

      /*輸入判斷*/

      i++;

      } while(flag=='y'||flag=='y');

      /*判斷*/

      return i;}

      void Display(int n)

      /*顯示所有記錄*/ {

      int i;

      cout<<“tt-n”;

      /*格式頭*/

      cout<<“tt房間號

      學號

      姓名

      n”;

      cout<<“tt-n”;

      for(i=0;i

      /*循環(huán)輸入*/

      {

      cout<<“tt”<

      if(i>1&&i%10==0)

      /*每十個暫停*/

      {

      cout<<”tt-n“;

      cout<<”tt“;

      system(”pause“);

      cout<<”tt-n“;

      }

      } cout<<”tt“;system(”pause“);}

      void Sort_by_stunum(int n)

      /*按學號排序*/ {

      int i,j;

      string t;

      for(i=0;i

      /*冒泡法排序*/

      for(j=0;j

      if(stu[j].stunum>stu[j+1].stunum)

      {

      t=stu[j].stunum;

      stu[j].stunum=stu[j+1].stunum;

      stu[j+1].stunum=t;

      t=stu[j].roomnum;

      ”<

      stu[j].roomnum=stu[j+1].roomnum;

      stu[j+1].roomnum=t;

      t=stu[j].name;

      stu[j].name=stu[j+1].name;

      stu[j+1].name=t;

      } }

      void Sort_by_roomnum(int n)

      /*按房間號排序*/ {

      int i,j;string t;

      for(i=0;i

      /*冒泡法排序*/

      for(j=0;j

      if(stu[j].stunum>stu[j+1].stunum)

      {

      t=stu[j].stunum;

      stu[j].stunum=stu[j+1].stunum;

      stu[j+1].stunum=t;

      t=stu[j].roomnum;

      stu[j].roomnum=stu[j+1].roomnum;

      stu[j+1].roomnum=t;

      t=stu[j].name;

      stu[j].name=stu[j+1].name;

      stu[j+1].name=t;

      } }

      int Insert_a_record(int n)

      /*插入一條記錄*/ {

      cout<<“tt學生房間號:”;

      /*交互輸入*/

      cin>>stu[n].roomnum;

      cout<<“tt學生學號:”;

      cin>>stu[n].stunum;

      cout<<“tt學生姓名:”;

      cin>>stu[n].name;

      n++;

      Sort_by_roomnum(n);

      /*調(diào)用排序函數(shù)*/

      cout<<“tt插入記錄成功!n”;

      /*返回成功信息*/

      return n;} int Delete_a_record(int n)

      /*按姓名查找,刪除一條記錄*/ {

      string s;

      int i=0,j;

      cout<<“tt輸入他(她)的名字:”;

      /*交互式問尋*/ cin>>s;while(i

      {

      if(stu[i].name==s)

      break;

      else

      i++;

      }/*查找并判斷*/ if(i==n){

      cout<<“tt對不起,沒找到該學生!n”;

      /*返回失敗信息*/

      return n;} for(j=i;j

      /*刪除操作*/ {

      stu[j].stunum=stu[j+1].stunum;

      stu[j].roomnum=stu[j+1].roomnum;

      stu[j].name=stu[j+1].name;}

      cout<<“tt刪除記錄成功!n”;

      /*返回成功信息*/

      return n-1;}

      void Query_a_record(int n)

      /*查找并顯示一條記錄*/ {

      string s;

      int i=0;

      cout<<“tt輸入他(她)的名字:”;

      /*交互式輸入*/

      cin>>s;

      while(i

      {

      if(stu[i].name==s)

      break;

      else

      i++;

      }/*查找并判斷*/

      if(i==n)

      {

      cout<<“tt對不起,沒找到該學生!n”;return;

      }

      cout<<“tt他(她)的房間號:n”<

      /*輸出該學生信息*/

      cout<

      int ReadfromText(int n)

      /*從文件中讀入數(shù)據(jù)*/ {

      int i=0;ifstream in(“students.txt”);//ofstream out(“students.txt”);while(i

      in>>stu[i].roomnum>>stu[i].stunum>>stu[i].name;

      i++;}

      } cout<<“讀取成功!n”;

      /*返回成功信息*/ return n;void WritetoText(int n)

      /*將所有記錄寫入文件*/ {

      int i=0;//ifstream in(“students.txt”);ofstream out(“students.txt”);while(i

      out<

      i++;} cout<<“寫入成功!n”;

      /*返回成功信息*/

      }

      int main(){ int n=0;

      while(1)

      {

      switch(menu_select())

      /*選擇判斷*/

      {

      case '1':

      cout<<“tt輸入記錄n”;

      /*輸入若干條記錄*/

      n=Input();

      break;

      case '2':

      cout<<“tt顯示記錄n”;

      /*顯示所有記錄*/

      Display(n);

      break;

      case '3':

      cout<<“tt按房間號排序并顯示n”;

      Sort_by_roomnum(n);

      /*按房間號排序*/

      cout<<“tt排序成功!n”;

      Display(n);

      cout<<“tt”;

      break;

      case '4':

      cout<<“tt按學號排序并顯示n”;

      Sort_by_stunum(n);

      /*按學號排序*/

      cout<<“tt排序成功!n”;

      Display(n);

      cout<<“tt”;

      break;

      case '5':

      cout<<“tt插入一條記錄按學號排序并顯示n”;

      n=Insert_a_record(n);

      /*插入一條記錄*/

      Display(n);

      cout<<“tt”;

      break;

      case '6':

      cout<<“tt按姓名查找,刪除一條記錄n”;

      n=Delete_a_record(n);

      /*按姓名查找,刪除一條記錄*/

      cout<<“tt”;

      system(“pause”);

      break;

      case '7':

      cout<<“tt查找并顯示一條記錄n”;

      Query_a_record(n);

      /*查找并顯示一條記錄*/

      cout<<“tt”;

      system(“pause”);

      break;

      case '8':

      cout<<“tt從文件中讀入數(shù)據(jù)n”;

      n=ReadfromText(n);

      /*從文件中讀入數(shù)據(jù)*/

      cout<<“tt”;

      system(“pause”);

      break;

      case '9':

      cout<<“tt循環(huán)寫入數(shù)據(jù)n”;

      WritetoText(n);

      /*循環(huán)寫入數(shù)據(jù)*/

      cout<<“tt”;

      system(“pause”);

      break;

      case '0':

      cout<<“tt謝謝使用,祝您好運,再見!n”;

      /*結束程序*/

      cout<<“tt”;

      system(“pause”);

      exit(0);

      }

      } return 0;}

      第二篇:C++通訊錄管理系統(tǒng)

      黑龍江工程學院

      第一章 問題分析和任務定義

      1.1 問題分析

      問題: 編寫一個通訊錄管理系統(tǒng)。要求包括通訊錄建立、增加號碼、刪除號碼、查詢號碼(按姓名、按號碼)、修改號碼、號碼分組、打印通訊錄(全部或分組號碼)等功能,并設計主控菜單和子菜單供用戶選擇要執(zhí)行的操作。

      分析:

      實現(xiàn)以下功能:

      1)通訊錄編輯(添加、刪除); 2)按不同的項進行查找;

      3)對已存在的通訊錄按不同的項排序; 4)將通訊錄寫入文件; 5)從文件讀入通訊錄。

      1.2 任務定義

      創(chuàng)建一個鏈表,每個節(jié)點有姓名和號碼以及關系三個信息。增加號碼操作為增加節(jié)點,刪除號碼操作為刪除節(jié)點,查找號碼為鏈表的遍歷。每個功能以函數(shù)的形式出現(xiàn),由主控菜單控制。并以文件的形式對號碼信息進行保存。

      第二章 詳細設計

      主函數(shù)(main()函數(shù))是通過一個多分支語句(switch(i)語句)實現(xiàn)的。顯示菜單函數(shù)(displaymenu()函數(shù))顯示與用戶交互的界面。以下是各個模塊實現(xiàn)程序各項功能的函數(shù)的詳細設計:

      1、插入新的記錄:insert()函數(shù)

      定義變量,設計loop模塊,模塊的功能是用來輸入記錄:輸入姓名、性別、電話號碼、地址的信息。用for語句查找是否輸入了與原有記錄相同的記錄,用strcmp 函數(shù)比較,if 語句判斷,如果輸入了重復的記錄,提示信息:“此記錄已存在,請重新輸入!”并且用 goto語句返回到loop,重新輸入信息。設計一個a模塊:鍵盤輸入一個字符,必須是“Y”“y”“N”“n”,否則重新輸入。最后if 語句判斷變量的值是否重新輸入信息,如果輸入的是“Y”或“y”,返回到loop,黑龍江工程學院

      用戶可以輸入下一條信息,直到用戶輸入“N”或“n”返回主界面。每插入一條記錄n的值加1。功能的實現(xiàn)見源程序:

      2、示好友的信息:display()函數(shù)

      定義整型變量i用來循環(huán)輸出記錄。分別輸出每條記錄,并輸出記錄的個數(shù)。

      3、查找好友的信息search()函數(shù)

      定義字符型變量c,字符型數(shù)組a,定義loop模塊,功能:通過鍵盤輸入要查找的信息。首先顯示提示信息:“輸入你要查找的好友的姓名”然后從鍵盤輸入姓名。For語句循環(huán)內(nèi)嵌if語句,用strcmp 函數(shù)查找信息,并且顯示該記錄的所有信息,并跳出循環(huán)。再用for 語句內(nèi)嵌if語句判斷,如果沒有查到顯示提示信息:“如果沒有查到相關語句,是否重新查找(Y/N)?定義abc模塊的功能輸入一個字符(“Y”或“y”“N”“n”)用來判斷是否重新查找。如果輸入“Y”或“y”,則用goto語句返回loop重新查找。否則令i的值為n跳出循環(huán)。最后返回主界面。

      4、刪除好友信息:del()函數(shù)

      首先定義字符數(shù)組、變量和a、b兩個goto標識符。在a模塊中用scanf函數(shù)輸入要刪除的好友的姓名,用for循環(huán)和if 語來實現(xiàn)對好友的查找,如果找到記錄末尾,提示查無此人。在b模塊中,用來實現(xiàn)刪除功能。先確認是否刪除,如果鍵盤輸入Y 或y來確認要刪除再執(zhí)行for循環(huán),通過strcmpy函數(shù)把后一條記錄復制到前一條記錄。進行刪除記錄后,并把原末尾記錄數(shù)據(jù)賦空字符,按任意鍵刪除,按任意鍵返回主菜單。

      5、修改記錄:modify()函數(shù)

      定義了a、b兩個goto標識符。在a模塊中,用scanf函數(shù)輸入要修改人的姓名,用for 循環(huán)、if語句及strcmp函數(shù)找到該姓名的記錄,若到記錄末尾提示“查無此人”是否繼續(xù)重新輸入姓名,黑龍江工程學院

      如果重新輸入姓名再用goto語句再執(zhí)行重新查找。在b模塊中,用于修改記錄,如果要修改記錄則從鍵盤輸入Y或y,用scanf函數(shù)來輸入新的記錄數(shù)據(jù)來實現(xiàn)修改記錄。

      6、排序:sort()函數(shù)

      選擇法排序的方法。定義變量i,j,用于循環(huán),定義4個字符型數(shù)組,用于替換的中間變量;用兩個for循環(huán)語句,用strcmp函數(shù)比較。按姓名升序排序。比較前一條記錄和后一條記錄的姓名,如果strcmp函數(shù)值大于0,則將這兩條記錄的所有信息替換,4個字符型數(shù)組用作替換的中間變量。最后調(diào)用display()(顯示結果)顯示排序后的結果。

      第三章 程序編碼

      #include #include #include struct student //結構體 { char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];};class inter { private: student st[35];public: void add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]);void del(char name[20]);void find1(char no[13]);void find2(char name[20]);void list1();void list2();int correct(char name[20]);void read();void write();

      黑龍江工程學院

      void format();int back(){

      cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫): ”;

      char back;

      cin>>back;

      if(back=='R'||back=='r')

      return 1;

      else

      return 0;} void print(int i){

      cout<<“學號:”<

      cout<<“姓名:”<

      cout<<“地址:”<

      cout<<“電話號碼:”<

      cout<<“郵編:”<

      cout<<“E_MAIL:”<

      <<“tt★★★★★★★★★★★★★★★★★★★★★★★★★★” <

      <<“tt※ ※” <

      <<“tt※ 通 迅 錄 ※” <

      <<“tt※ ※” <

      <<“tt※ 1.通訊錄編輯.4.按序排列.※” <

      <<“tt※ ※” <

      <<“tt※ 2.查詢聯(lián)系人.5.將文件讀入程序.※” <

      <<“tt※ ※” <

      <<“tt※ 3.將資料寫入文件.6.格式化(慎用).※” <

      <<“tt※ ※” <

      <<“tt★★★★★★★★★★★★★★★★★★★★★★★★★★” <

      <<“tt ”<

      <<“ttt選擇 :”;cin>>select1;switch(select1)

      黑龍江工程學院

      { case '1':cout<<“(1)添加:”<

      cout<<“(2)刪除:”<

      cout<<“(3)修改:”<

      char select2;

      cout<<“ 請選擇:”<

      cin>>select2;

      switch(select2)

      {

      case '1':cout<<“ 輸入添加的資料:”<

      char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];

      cout<<“ 輸入學號:”<

      cin>>no;

      cout<<“ 輸入姓名:”<

      cin>>name;

      cout<<“ 輸入地址:”<

      cin>>address;

      cout<<“ 輸入電話號碼:”<

      cin>>tel_no;

      cout<<“ 輸入郵編:”<

      cin>>post_code;cout<<“ 輸入E_mail:”<

      cin>>e_mail;

      a.add(no,name,address,tel_no,post_code,e_mail);

      cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫): ”;

      char back_add;

      cin>>back_add;

      if(back_add=='R'||back_add=='r')

      goto top;

      else

      goto bottom;

      break;

      case '2':cout<<“ 輸入要刪除人的姓名:”<

      char name2[20];

      cin>>name2;

      a.del(name2);

      cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫): ”;

      黑龍江工程學院

      “;

      ”;

      char back_del;

      cin>>back_del;

      if(back_del=='R'||back_del=='r')

      goto top;

      else

      goto bottom;

      break;case '3':cout<<“ 輸入需要修改人的姓名:”<

      char name3[20];

      cin>>name3;

      if(a.correct(name3))

      goto top;

      else goto bottom;

      break;} break;case '2':cout<<“(1)根據(jù)姓名查找”<>select3;switch(select3){ case '1':char name4[20];

      cout<<“ 輸入姓名: ”;

      cin>>name4;

      a.find2(name4);

      cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫):

      char back_f1;cin>>back_f1;if(back_f1=='R'||back_f1=='r')

      goto top;else

      goto bottom;break;case '2':char no4[13];cout<<” 輸入學號: “;cin>>no4;a.find1(no4);

      cout<<” 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫): char back_f2;cin>>back_f2;

      黑龍江工程學院

      “;

      ”;

      if(back_f2=='R'||back_f2=='r')

      goto top;

      else

      goto bottom;

      break;} break;case '3':a.write();cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫): ”;char back_w;cin>>back_w;if(back_w=='R'||back_w=='r')

      goto top;else

      goto bottom;break;case '4':cout<<“(1)按學號排序:”<>select4;switch(select4){ case '1':a.list1();

      cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫):

      char back;cin>>back;if(back=='R'||back=='r')

      goto top;else

      goto bottom;break;case '2':a.list2();cout<<” 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫):

      } char back1;cin>>back1;if(back1=='R'||back1=='r')goto top;else goto bottom;break;

      黑龍江工程學院

      break;case '5':a.read();

      cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫): ”;

      char back_r;

      cin>>back_r;

      if(back_r=='R'||back_r=='r')

      goto top;

      else

      goto bottom;

      break;case '6':cout<<“ 請確認刪除所有資料!(Y/N)”;

      char select5;

      cin>>select5;

      if(select5=='Y'||select5=='y')

      a.format();

      cout<<“ 返回還是回到主菜單(T為退出,R為回到主菜單,不計大小寫): ”;

      char back_f;

      cin>>back_f;

      if(back_f=='R'||back_f=='r')

      goto top;

      else

      goto bottom;

      break;} bottom:cout<<“ ★★★★★★★★★★★★★★★★★★★★★★★ ”<

      void inter::add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]){ int x=1;for(int i=0;i<35;i++){

      if(!strcmp(st[i].no,“0”))

      {

      strcpy(st[i].address,address);

      strcpy(st[i].e_mail,e_mail);

      strcpy(st[i].name,name);

      strcpy(st[i].no,no);

      strcpy(st[i].post_code,post_code);

      strcpy(st[i].tel_no,tel_no);

      x=0;

      }

      黑龍江工程學院

      if(x==0)

      break;} } //刪除聯(lián)系人

      void inter::del(char name[20]){ int x=1;for(int i=0;i<35;i++){

      if(!strcmp(st[i].name,name))

      { strcpy(st[i].address,“0”);

      strcpy(st[i].e_mail,“0”);

      strcpy(st[i].name,“0”);

      strcpy(st[i].no,“0”);

      strcpy(st[i].post_code,“0”);

      strcpy(st[i].tel_no,“0”);

      }

      else x=0;} if(x==0)

      cout<<“ error:輸入姓名錯誤!”<

      int inter::correct(char name[30]){ int x;for(int i=0;i<35;i++){

      if(!strcmp(st[i].name,name))

      x=i;} char select;cout<<“(1)修改姓名:”<>select;switch(select){ case '1':cout<<“ 輸入要修改的姓名:”;

      黑龍江工程學院

      char name1[30];

      cin>>name1;

      strcpy(st[x].name,name1);

      cout<<“ 修改成功!”<

      return back();

      break;case '2':cout<<“ 輸入要修改的學號:”;

      char no1[13];

      cin>>no1;

      strcpy(st[i].no,no1);

      cout<<“ 修改成功!”<

      return back();

      break;case '3':cout<<“ 輸入要修改的地址:”;

      char address1[100];

      cin>>address1;

      strcpy(st[x].address,address1);

      cout<<“ 修改成功!”<

      return back();

      break;case '4':cout<<“ 輸入要修改的郵編:”;

      char post_code1[7];

      cin>>post_code1;

      strcpy(st[x].post_code,post_code1);

      cout<<“ 修改成功!”<

      return back();

      break;case '5':cout<<“ 輸入要修改的電話號碼:”;

      char tel_no1[12];

      cin>>tel_no1;

      strcpy(st[x].tel_no,tel_no1);

      cout<<“ 修改成功!”<

      return back();

      break;case '6':cout<<“ 輸入要修改的E_MAIL:”;

      char e_mail1[40];

      cin>>e_mail1;

      strcpy(st[x].e_mail,e_mail1);

      cout<<“ 修改成功!”<

      return back();

      break;} } //按學號查詢聯(lián)系人

      黑龍江工程學院

      void inter::find1(char no[13]){ int x,y=1,z=1;for(int i=0;i<35;i++){

      if(!strcmp(st[i].no,no))

      {

      x=i;

      z=0;

      }

      else y=0;

      if(z==0)

      break;}

      if(y==0)

      cout<<“ 輸入的學號查找不到!!”<

      } //按姓名查詢聯(lián)系人

      void inter::find2(char name[20]){ int x,y=1,z=1;for(int i=0;i<35;i++){

      if(!strcmp(st[i].name,name))

      {

      x=i;

      z=0;

      }

      else y=0;

      if(z==0)

      break;} if(y==0)

      cout<<“ 輸入的姓名查找不到??!”<

      void inter::read(){

      char name1[20];cout<<“ 輸入你要導入的文件名: ”;cin>>name1;

      黑龍江工程學院

      strcat(name1,“.txt”);ifstream file(name1);char line[120];char no[120];char name[120];char address[120];char post_code[120];char tel_no[120];char e_mail[120];int time=0;file.getline(line,120);while(!file.eof()){ for(int k=0;k<35;k++){

      if(time==0)

      {

      strcpy(no,line);

      time=1;

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

      {

      if(no[i]==':')

      {

      i++;

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

      {

      st[k].no[j]=no[i];

      i++;

      }

      }

      }

      file.getline(line,120,'n');

      } if(time==1){

      strcpy(name,line);

      time=2;

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

      {

      if(name[i]==':')

      {

      i++;

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

      {

      黑龍江工程學院

      st[k].name[j]=name[i];

      i++;

      }

      } } file.getline(line,120,'n');} if(time== 2){ strcpy(address,line);time=3;for(int i=0;i<120;i++){

      if(address[i]==':')

      {

      i++;

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

      {

      st[k].address[j]=address[i];

      i++;

      }

      } } file.getline(line,120,'n');}

      if(time==3){ strcpy(tel_no,line);time=4;for(int i=0;i<120;i++){

      if(tel_no[i]==':')

      {

      i++;

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

      {

      st[k].tel_no[j]=tel_no[i];

      i++;

      }

      } } file.getline(line,120,'n');}

      黑龍江工程學院

      if(time==4)

      {

      strcpy(post_code,line);

      time=5;

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

      {

      if(post_code[i]==':')

      {

      i++;

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

      {

      st[k].post_code[j]=post_code[i];

      i++;

      }

      }

      }

      file.getline(line,120,'n');

      }

      if(time==5)

      {

      strcpy(e_mail,line);

      time=0;

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

      {

      if(e_mail[i]==':')

      {

      i++;

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

      {

      st[k].e_mail[j]=e_mail[i];

      i++;

      }

      }

      }

      file.getline(line,120,'n');

      }

      }

      } file.close();} //寫入文件

      void inter::write(){ char name[20];

      黑龍江工程學院

      cout<<“ 輸入要保存的文件名 ”;cin>>name;strcat(name,“.txt”);ofstream savefile(name);for(int i=0;i<35;i++){

      savefile << “學號:”<

      savefile << “姓名:”<

      savefile << “地址:”<

      savefile << “電話號碼:”<

      savefile << “郵編:”<

      savefile << “E_MAIL:”<

      void inter::list1(){ for(int i=0;i<34;i++){

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

      {

      if(strcmp(st[j].no,st[j+1].no)>0)

      {

      char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];

      strcpy(no,st[j].no);

      strcpy(st[j].no,st[j+1].no);

      strcpy(st[j+1].no,no);

      strcpy(name,st[j].name);

      strcpy(st[j].name,st[j+1].name);

      strcpy(st[j+1].name,name);

      strcpy(address,st[j].address);

      strcpy(st[j].address,st[j+1].address);

      strcpy(st[j+1].address,address);

      strcpy(tel_no,st[j].tel_no);

      黑龍江工程學院

      strcpy(st[j].tel_no,st[j+1].tel_no);

      strcpy(st[j+1].tel_no,tel_no);

      strcpy(post_code,st[j].post_code);

      strcpy(st[j].post_code,st[j+1].post_code);

      strcpy(st[j+1].post_code,post_code);

      strcpy(e_mail,st[j].e_mail);

      strcpy(st[j].e_mail,st[j+1].e_mail);

      strcpy(st[j+1].e_mail,e_mail);

      }

      } } for(int k=0;k<35;k++){

      int x=0;

      if(strcmp(st[k].no,“0”))

      {

      print(k);

      x=1;

      }

      if(x==1)

      {

      cout<

      cout<<“---------------”<

      } } } //按姓名排序

      void inter::list2(){ for(int i=0;i<34;i++){

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

      {

      if(strcmp(st[j].name,st[j+1].name)>0)

      {

      char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];

      黑龍江工程學院

      char e_mail[40];

      strcpy(no,st[j].no);

      strcpy(st[j].no,st[j+1].no);

      strcpy(st[j+1].no,no);

      strcpy(name,st[j].name);

      strcpy(st[j].name,st[j+1].name);

      strcpy(st[j+1].name,name);

      strcpy(address,st[j].address);

      strcpy(st[j].address,st[j+1].address);

      strcpy(st[j+1].address,address);

      strcpy(tel_no,st[j].tel_no);

      strcpy(st[j].tel_no,st[j+1].tel_no);

      strcpy(st[j+1].tel_no,tel_no);

      strcpy(post_code,st[j].post_code);

      strcpy(st[j].post_code,st[j+1].post_code);

      strcpy(st[j+1].post_code,post_code);

      strcpy(e_mail,st[j].e_mail);

      strcpy(st[j].e_mail,st[j+1].e_mail);

      strcpy(st[j+1].e_mail,e_mail);

      }

      } } for(int k=0;k<35;k++){

      int x=0;

      if(strcmp(st[k].no,“0”))

      {

      print(k);

      x=1;

      }

      if(x==1)

      {

      cout<

      cout<<“-------”<

      } }

      黑龍江工程學院

      } //格式化

      void inter::format(){ for(int i=0;i<35;i++){

      strcpy(st[i].address,“0”);

      strcpy(st[i].e_mail,“0”);

      strcpy(st[i].name,“0”);

      strcpy(st[i].no,“0”);

      strcpy(st[i].post_code,“0”);

      strcpy(st[i].tel_no,“0”);} }

      第四章 程序調(diào)試與測試

      運行程序,首頁顯示如下:

      按1選擇通訊錄編輯,編輯通訊錄,顯示(1)添加,(2)刪除,(3)修改,運行后結果如下:

      黑龍江工程學院

      第一次使用,按1添加聯(lián)系人,填入相關信息,運行圖如下:

      返回首頁,按2可以查找聯(lián)系人,可以根據(jù)姓名查找和學號查找,本次運用學號查找,運行如下:

      返回首頁,按4可以進行排序,可以根據(jù)姓名和學號排序,按姓名排序需要自己編輯的姓氏排序規(guī)則才能使用,本次使用學號排序,運行如下:

      將資料寫入文件功能是將編輯好的通訊錄寫入文本文件,文本文件的名字可以自己輸入。將文件讀入程序,是將文本文件中的信息讀入程序,進行添加,修改,刪除,排序等功能。

      第五章 結果分析

      總體上可以滿足一般的應用需求,但是還有一定的不足,程序運行流暢,沒有未知錯誤。

      第六章 設計創(chuàng)新及心得

      黑龍江工程學院

      程設計是培養(yǎng)學生綜合運用所學知識 ,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對我們的實際工作能力的具體訓練和考察過程.隨著科學技術發(fā)展的日新月異,當今計算機應用在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握程序開發(fā)技術是十分重要的,而C++語言又是最常見,功能最強大的一種高級語言,因此做好C++語言課程設計是十分必要的。

      通過幾天的課程設計使我們懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次真真的做程序設計,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,對一些前面學過的知識理解得不夠深刻,掌握得不夠牢固,比如說結構體,指針??通過這次課程設計之后,我們把前面所學過的知識又重新溫故了一遍。

      我做的是班級通訊錄的課程設計,雖然是很簡單的一個小的程序,但對我來說卻是一個很大的困難。更加是第一次做課程設計,所以在機房做了一個下午卻絲毫沒有進展,最主要是不知從何開始,這個時候才知道上課老師們不厭其煩的教導是多么的寶貴,這個時候才后悔上課的時候沒有認真的聽講。可是現(xiàn)在一切都晚了,還好時間還算是充裕,只好拿出書本重新復習一下。

      開始的時候真的感覺編程是一件很無聊的事情,不過當一個程序運行成功的時候那種喜悅是無法言語的,那種成就感是無法比擬的。又經(jīng)過幾天的努力,終于把程序完成了,盡管程序還是有很多功能上的欠缺和漏洞,可我還是很高興的。無論如何是自己的勞動成果,是自己經(jīng)過努力得到的成績,同時也是學習C++語言的一次實踐作業(yè),自己進步的證明。

      在課程設計過程中,收獲知識,提高能力的同時,我也學到了很多人生的哲理,懂得怎么樣去制定計劃,怎么樣去實現(xiàn)這個計劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒。因此在以后的生活和學習的過程中,我一定會把課程設計的精神帶到生活中,不畏艱難,勇往直前!

      第三篇:軟件工程 學生宿舍管理系統(tǒng)

      一、需求分析

      軟件需求是軟件開發(fā)的基礎,每個軟件開發(fā)過程都是以獲取需求為目的的活動:理解客戶的基本需求和目標。準確獲取用戶的需求是項目開發(fā)成功的開端。然而,軟件工程所需要解決的問題十分復雜,尤其當軟件系統(tǒng)是全新的時,了解問題的本質(zhì)是十分困難的過程。因此,對軟件需求的完全理解和系統(tǒng)描述,是保證軟件成功開發(fā)至關重要的前提。

      軟件需求包括四個不同的層次:業(yè)務需求、用戶需求、功能需求和非功能需求。需求分析主要包括以下內(nèi)容:理解客戶需要什么,分析要求,評價可行性,協(xié)商合理的方案,無歧義的說明方案,確認規(guī)格說明,管理需求以至將這些需求轉(zhuǎn)化為可行系統(tǒng)。

      本系統(tǒng)的最終使用者是宿舍樓管理員和住宿學生,根據(jù)日常生活的經(jīng)驗,結合對宿舍管理員和住宿學生的調(diào)查,得出用戶的下列需求:

      (一)宿舍樓的基本情況

      學生住在宿舍樓中,每棟宿舍樓都會有若干名管理員負責本宿舍樓的日常管理。

      1、學生的基本信息

      入校時,每位學生都有唯一的學號,并被分配到指定的宿舍樓和指定的宿舍,會有一個固定的宿舍號,其入校時間就是入住時間。另外,為了管理上的方便,同一院系的學生的宿舍一般在一起,相應地會有其所在的院系名稱。

      2、宿舍的基本信息

      每個宿舍都有唯一的宿舍號,床號。每個宿舍的財產(chǎn)屬于學校,燈,床鋪,柜子,桌椅等,為了對不同的財產(chǎn)進行區(qū)分,為每種財產(chǎn)分配不同的財產(chǎn)號。這樣有利于財產(chǎn)的報修和管理。

      3、報修的基本信息

      宿舍樓中經(jīng)常出現(xiàn)財產(chǎn)的損壞,比如燈泡壞了,這時,同學們需要將財產(chǎn)損壞情況報告,以便進行維修。這時,需要上報報修的宿舍號和損壞的財產(chǎn)編號,同時記錄報修的時間和損壞的原因。當損壞的財產(chǎn)維修完畢后,維修人員應記錄解決時間,表示該報修成功解決。

      4、夜歸的基本信息

      宿舍樓在指定的時間關門(晚上23:00),若有同學晚于關門時間會宿舍,需通知宿舍樓管理員,同時應登記晚歸學生姓名,宿舍號,時間和晚歸原因,以利于學校的管理和查證。

      5、離校的基本信息

      寒假或暑假時,同學們大部分都會回家,“元旦”、“五一”、“端午”等小長假時,同學們也有很多不會留在宿舍。這時,為加強學校對同學假期安全的管理,離校的同學應登記離校時間,返校后記錄返校時間,以便學校查證和管理。

      6、衛(wèi)生的基本信息

      學生入住后,每個宿舍安排好衛(wèi)生值日表,宿舍管理員每天對宿舍衛(wèi)生進行檢查并及時上傳衛(wèi)生情況,針對衛(wèi)生不合格的宿舍,提出整改意見。學生可以查看衛(wèi)生評分,針對宿舍衛(wèi)生出現(xiàn)問題的,根據(jù)管理員的意見,及時打掃。出現(xiàn)多次衛(wèi)生不合格的現(xiàn)象,宿舍管理員及時通知輔導員。

      (二)用戶對系統(tǒng)的要求

      1、宿舍樓管理員(1)信息要求

      宿舍樓管理員能查詢到所管理宿舍樓的所有相關信息,包括某一學號的學生在宿舍樓中住宿的詳細信息,報修的所有信息,夜歸的詳細信息、學生離返校的信息和宿舍衛(wèi)生信息。以利于對整個宿舍樓的全面管理。(2)處理要求

      當學生基本信息發(fā)生變化時,宿舍樓管理員能對其進行修改。比如,某些同學搬到其他的宿舍中去,他們在本宿舍樓中相應的記錄就應該刪去;或者學生轉(zhuǎn)換專業(yè),他們記錄中院系的信息也要作相應的修改;學生畢業(yè)后辦理離宿手續(xù)等等。

      當宿舍樓的電話號碼發(fā)生變更時,宿舍樓管理員能根據(jù)有關證明做出修改。

      當宿舍財產(chǎn)報修及時解決后,管理員應登記解決時間,表明該報修問題已成功解決。每天檢查宿舍衛(wèi)生,并及時上傳檢查衛(wèi)生情況。

      2、宿舍樓的學生

      (1)信息要求

      本宿舍樓的學生能查詢其所在的宿舍的所有信息,能查詢本樓的指定宿舍的電話號碼以利于同樓宿舍間的通信,能查詢自己的夜歸記錄,離返校記錄和宿舍衛(wèi)生情況。

      (2)處理要求

      本宿舍樓的學生能在報修信息表中插入報修信息,表示本宿舍的財產(chǎn)發(fā)生了損毀需要派人維修。

      學生離校時,能在離返校記錄表中插入離校時間;學生返校后,能在離返校記錄表中插入返校時間,表示已經(jīng)回校。

      3、安全性要求

      (1)系統(tǒng)應設置訪問用戶的標識以鑒別是否是合法用戶,并要求合法用戶設置其密碼,保證用戶身份不被盜用。

      (2)系統(tǒng)應對不同的數(shù)據(jù)設置不同的訪問級別,限制訪問用戶可查詢和處理數(shù)據(jù)的類別和內(nèi)容。

      (3)系統(tǒng)應對不同用戶設置不同的權限,區(qū)分不同的用戶,如區(qū)分普通用戶(學生),管理員。

      4、完整性要求

      (1)各種信息記錄的完整性,信息記錄內(nèi)容不能為空。(2)各種數(shù)據(jù)間相互的聯(lián)系的正確性。(3)相同的數(shù)據(jù)在不同記錄中的一致性。

      二、系統(tǒng)功能設計和劃分 根據(jù)以上的需求分析,將本系統(tǒng)劃分為兩個部分:學生管理部分和管理員部分。

      (一)學生管理部分

      1、處理學生注冊。

      2、處理學生登錄。

      3、學生可以查詢自己的信息。

      4、學生用戶可以提交與查詢報修信息。

      5、學生可以插入與刪除自己的離返校信息。

      6、學生可以修改自己的密碼。

      (二)管理員管理部分

      1、處理管理員登錄。

      2、管理員可以查詢學生信息。

      3、管理員可以插入、修改與查詢報修信息。

      4、管理員可以插入與查詢學生夜歸信息。

      5、管理員可以查詢在校與離校學生信息。

      6、管理員可以修改管理員密碼。

      三、結構化分析與建模

      結構化分析方法是一種傳統(tǒng)的系統(tǒng)建模技術,其過程是創(chuàng)建描述信息內(nèi)容和數(shù)據(jù)流的模型,依據(jù)功能和行為對系統(tǒng)進行劃分,并描述必須建立的系統(tǒng)要素。

      (一)數(shù)據(jù)流圖

      用數(shù)據(jù)流圖描述系統(tǒng)處理過程是一種很直觀的方式,在需求分中用它來建立現(xiàn)存目標系統(tǒng)的數(shù)據(jù)處理模型,描述數(shù)據(jù)流被(人工/計算機)處理或者轉(zhuǎn)換的加工過程。當數(shù)據(jù)流圖用于軟件設計時,這些處理或者轉(zhuǎn)換在最終生成的程序中將是若干個程序功能模塊。

      1、宿舍管理系統(tǒng)頂層數(shù)據(jù)流圖

      2、一層數(shù)據(jù)流圖

      3、報修管理數(shù)據(jù)流圖

      4、衛(wèi)生管理數(shù)據(jù)流圖

      5、離校管理數(shù)據(jù)流圖

      6、夜歸管理數(shù)據(jù)流圖

      四、用例圖

      五、系統(tǒng)活動圖

      1、學生登錄活動圖

      2、添加學生信息活動圖

      3、修改學生信息活動圖

      4、刪除學生信息活動圖

      六、系統(tǒng)順序圖

      1、添加學生信息順序圖

      2、刪除學生信息順序圖

      3、管理員修改密碼順序圖

      4、學生查詢信息順序圖

      5、添加管理員順序圖

      6、刪除管理員順序圖

      7、管理員登陸順序圖

      8、管理員給學生分配宿舍順序圖

      七、心得體會

      兩周的課程設計結束了,在這次的課程設計中不僅檢驗了我所學習的知識,也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設計過程中,與同學分工設計,和同學們相互探討,相互學習,相互監(jiān)督。學會了合作,學會了運籌帷幄,學會了寬容,學會了理解,也學會了做人與處世。

      課程設計是我們專業(yè)課程知識綜合應用的實踐訓練,著是我們邁向社會,從事職業(yè)工作前一個必不少的過程.”千里之行始于足下”,通過這次課程設計,我深深體會到這句千古名言的真正含義.我今天認真的進行課程設計,學會腳踏實地邁開這一步,就是為明天能穩(wěn)健地在社會大潮中奔跑打下堅實的基礎.

      第四篇:學生宿舍管理系統(tǒng)-小結

      C#項目開發(fā)實訓

      總結報告

      宿舍信息管理系統(tǒng)的設計

      (項目名稱)

      Information Management System for Dormitory design

      班 級 : 軟件092 學生姓名: 唐 坤 學號: 930505037 指導教師: 葛紅美 職稱: 講 師 所屬院(系): 信息管理技術學院 信息工程系 EMAI: 1196301423@qq.com

      第五篇:C++程序設計—電話簿管理系統(tǒng)

      XXXXXXXXXXXC/C++程序設計實訓

      電話簿管理系統(tǒng)

      學生姓名 ×××× 學 號 ×××× 所在學院 ×××× 專業(yè)名稱 ×××× 班 級 ×××× 指導教師

      XXX

      XXXXXXXXXXXXXXXX XXXXXXXXXXXX

      目 錄

      1.前言··················································································································· 3 2.設計目的··········································································································· 3 3.功能描述··········································································································· 3 4.總體設計··········································································································· 4

      1、功能模塊設計···························································································· 4

      2、數(shù)據(jù)結構設計···························································································· 6

      3、函數(shù)功能描述···························································································· 7 5.程序?qū)崿F(xiàn)··········································································································· 7

      1、源程序(略)···························································································· 7

      2、運行結果···································································································· 7 6.小結··················································································································· 9

      1.前言

      隨著科技的進步和信息產(chǎn)業(yè)的飛速發(fā)展,電話簿成為了現(xiàn)代生活中一個重要的工具。本電話簿管理系統(tǒng)利用計算機對通訊錄進行統(tǒng)一管理,包括添加、修改、查詢記錄等功能,實現(xiàn)通訊錄管理工作的系統(tǒng)化、規(guī)范化和自動化,為人們的工作和生活提供便利。本程序是利用結構數(shù)組實現(xiàn)此電話簿管理系統(tǒng)。

      2.設計目的

      本程序旨在訓練基本編程能力,了解管理信息系統(tǒng)的開發(fā)流程,熟悉C語言的文件和結構數(shù)組的各種基本操作。本程序中涉及結構體、數(shù)組、文件等方面的知識。通過本程序的訓練,能對C語言的文件操作有一個更深刻的了解,掌握利用數(shù)組存儲結構實現(xiàn)電話簿管理的原理,為進一步開發(fā)出高質(zhì)量的信息管理系統(tǒng)打下堅實的基礎。

      3.功能描述

      如圖1所示,電話簿管理系統(tǒng)主要利用數(shù)組來實現(xiàn),其數(shù)組元素是結構體類型,整個系統(tǒng)由如下幾大功能模塊組成。

      電話簿管理系統(tǒng)輸入記錄模塊查詢記錄模塊更新記錄模塊輸出記錄模塊從文件讀入從鍵盤讀入按姓名查詢按電話查詢修改記錄刪除記錄插入記錄排序記錄輸出至文件輸出至屏幕(1)輸入記錄模塊。輸入記錄模塊主要完成將數(shù)據(jù)存入數(shù)組中的工作。在此電話簿管理系統(tǒng)中,記錄可以從以文本形式存儲的數(shù)據(jù)文件中讀入,也可從鍵盤逐個輸入記錄。記錄由與聯(lián)系人有關的基本信息字段構成。當從數(shù)據(jù)文件中讀入記錄時,它就是在以記錄為單位存儲的數(shù)據(jù)文件中,將記錄逐條復制到結構體類型的數(shù)組元素中。

      (2)查詢記錄模塊。查詢記錄模塊主要完成在數(shù)組中查找滿足相關條件的記錄。在此電話簿管理系統(tǒng)中,用戶可以按照聯(lián)系人姓名或聯(lián)系人電話號碼在數(shù)組中進行查找。若找到該記錄,則以表格形式打印出此記錄的信息;否則,返回一個-1的值,并打印出未找到該記錄的提示信息。

      (3)更新記錄模塊。更新記錄模塊主要完成對記錄的維護。在此電話簿管理系統(tǒng)中,它實現(xiàn)對記錄的修改、刪除、插入和排序操作。一般而言,系統(tǒng)進行了這些操作之后,需要將修改的數(shù)據(jù)存入源數(shù)據(jù)文件。

      (4)輸出記錄模塊。輸出記錄模塊主要完成兩個任務。第一,它實現(xiàn)對記錄的存盤操作,即將數(shù)組中各元素中存儲的記錄信息寫入數(shù)據(jù)文件中。第二,它實現(xiàn)將數(shù)組中存儲的記 圖1 電話簿管理系統(tǒng)功能模塊 錄信息以表格的形式在屏幕上打印顯示出來。

      4.總體設計

      1、功能模塊設計

      (1)主控main()函數(shù)執(zhí)行流程

      電話簿管理系統(tǒng)執(zhí)行主流程如圖2所示。它先以可讀寫的方式打開文本類型的數(shù)據(jù)文件,此文件默認為“c:telephon”,若該文件不存在,則新建此數(shù)據(jù)文件。當打開文件操作成功后,從文件中一次讀出一條記錄,添加到新建的數(shù)組中,然后執(zhí)行顯示主菜單和進入主循環(huán)操作,進行按鍵判斷。值得一提的是,文本類型文件與二進制類型文件不同,它可以使用Windows自帶的記事本打開并查看到存儲的文件內(nèi)容。

      開始以可讀寫的方式打開一個數(shù)據(jù)文件將此文件的內(nèi)容讀出,并存入一個新的結構體類型的數(shù)組中調(diào)用emnu()菜單函數(shù)進入while(1)主循環(huán)輸入0~8中的一個數(shù)值,選擇相應操作輸入是否為0?是否判斷鍵值,調(diào)用相應函數(shù),完成相應功能是否已對修改進行了存盤?否調(diào)用Save()函數(shù),進行寫數(shù)據(jù)文件操作是結束

      圖2 主控函數(shù)執(zhí)行流程圖

      在判斷鍵值時,有效的輸入為0-8之間的任意數(shù)值,其他輸入都被視為錯誤按鍵。若輸入為0(即變量select=0),則會繼續(xù)判斷是否在對記錄進行了更新操作之后進行了存盤操作,若未存盤,則全局變量saveflag=1,系統(tǒng)會提示用戶是否需要進行數(shù)據(jù)存盤操作,用戶輸入 Y或y,系統(tǒng)會進行存盤操作。最后,系統(tǒng)執(zhí)行退出電話簿管理系統(tǒng)的操作。

      若選擇1,則調(diào)用Add()函數(shù),執(zhí)行增加記錄操作;若選擇2,則調(diào)用Disp()函數(shù),執(zhí)行將記錄以表格形式打印輸出至屏幕的操作;若選擇3,則調(diào)用Del()函數(shù),執(zhí)行刪除記錄操作;若選擇4,則調(diào)用Qur()函數(shù),執(zhí)行查詢記錄操作:若選擇5,則調(diào)用Modify()函數(shù),執(zhí)行修改記錄操作;若選擇6,則調(diào)用lnsert()函數(shù),執(zhí)行插入記錄操作;若選擇7,則調(diào)用SelectSort()函數(shù),執(zhí)行按升序排序記錄的操作;若選擇8,則調(diào)用Save()函數(shù),執(zhí)行將記錄存入磁盤中的數(shù)據(jù)文件的操作:若輸入為0-8之外的值,則調(diào)用Wrong()函數(shù),給出按鍵錯誤的提示。

      (2)輸入記錄模塊

      輸入記錄模塊主要實現(xiàn)將數(shù)據(jù)存入數(shù)組中。當從數(shù)據(jù)文件中讀出記錄時,它調(diào)用fread(&tele[count],sizeof(TELEBOOK), l,fp)文件讀取函數(shù),執(zhí)行一次從文件中讀取一條電話簿記錄信息存入某個數(shù)組元素中的操作,并且這個操作在main()中調(diào)用執(zhí)行,即在電話簿管理系統(tǒng)進入顯示菜單界面時,該操作己經(jīng)執(zhí)行了。若該文件中沒有數(shù)據(jù),則系統(tǒng)會提示數(shù)組為空,沒有任何記錄可操作,此時,用戶應選擇1,調(diào)用Add()函數(shù),進行記錄的輸入,即完成在數(shù)組中添加元素的操作。

      (3)查詢記錄模塊

      查詢記錄模塊主要實現(xiàn)在數(shù)組中按聯(lián)系人姓名或電話查找滿足條件的記錄。在查詢函數(shù)Qur()中,為了遵循模塊化編程的原則,對在數(shù)組中進行的記錄定位操作設計成了一個單獨的函數(shù)int Locate(TELEBOOK temp[],int n,char findmess[],char nameorphonenum[]),參數(shù)findmess[]保存要查找的具體內(nèi)容,nameorphonenum[]保存要查找的字段(值為字特串類型的name或phonenum),若找到該記錄,則返回指向該記錄的數(shù)組元素的下標;否則,返回一個-1的值。

      (4)更新記錄模塊

      更新記錄模塊主要實現(xiàn)了對記錄的修改、刪除、插入和排序操作。因為記錄是以數(shù)組的結構形式存儲的,所以這些操作都在數(shù)組中完成。下面分別介紹這4個功能模塊。

      1)修改記錄

      修改記錄操作需要對數(shù)組中目標元素的數(shù)據(jù)域中的值進行修改,它分兩步完成。第一步,輸入要修改的聯(lián)系人姓名,輸入后調(diào)用定位函數(shù)Locate()在數(shù)組中逐個對聯(lián)系人姓名字段的值進行比較,直到找到該聯(lián)系人姓名的記錄;第二步,若找到該記錄,修改除記錄編號之外的各字段的值,并將存盤標記變saveflag置1,表示已經(jīng)對記錄進行了修改,但還未執(zhí)行存盤操作。

      2)刪除記錄

      刪除記錄操作完成刪除指定聯(lián)系人姓名或電話號碼的記錄,它也分兩步完成。第一步,輸入要修改的聯(lián)系人姓名或電話號碼,輸入后調(diào)用定位函數(shù)Locate()在數(shù)組中逐個對聯(lián)系人姓名或電話號碼字段的值進行比較,直到找到該聯(lián)系人姓名或電話號碼的記錄,返回指向該記錄的數(shù)組元素下標;第二步,若找到該記錄,則從該記錄所在元素的后續(xù)元素起,依次向前移一個元素位置,有值的數(shù)組元素個數(shù)減1,其具體過程如圖3所示,在刪除了數(shù)組元素A2后,數(shù)組元素A3和A4向前移動了一個位置

      A0刪除A2前A0刪除A2后A1A1A2A3A3A4A4

      圖3 數(shù)組中刪除記錄示意圖

      3)插入記錄 插入記錄操作完成在指定記錄編號的隨后位置插入新的記錄。首先,它要求用戶輸入某個記錄編號,新的記錄將插入在該記錄之后、然后,提示用戶輸入一條新的記錄的信息,這些信息保存在新結構體類型的數(shù)組元素的各字段中;最后,將該元素插入在已經(jīng)確認位置的記錄編號之后。它的具體插入執(zhí)行過程如圖4所示,新元素B1準備插入至已有5個元素的數(shù)組中,插入位置為元素A2之后。這具體過程為:先調(diào)用Locate()函數(shù)找到A2在數(shù)組中的下標,從A4開始,往后移動,至A2停止移動,然后在原A3的位置插入元素B1。

      插入B1A0插入B1前A0插入B1后A1A2B1A3A4A1A2A3A4

      圖4 數(shù)組中插入記錄示意圖

      4)排序記錄

      選擇排序法也屬于內(nèi)部排序法中的一種,它是運用字段值比較后,從欲排序的數(shù)組元素中,按指定規(guī)則選出其字段值最小的元素,并依原則交換數(shù)組元素位置后,更新欲排序的數(shù)組元素,以達到排序的目的。這里我們采用這種排序法來實現(xiàn)按照記錄編號或聯(lián)系人姓名字段的值從低到高對記錄進行升序排序。對按照記錄編號排序方式而言,我們將按其數(shù)值大小來排序;對按照聯(lián)系人姓名排序方式而言,我們將按其姓名字符ASCII碼的大小來排序。

      選擇排序的方法為:從欲排序的n個數(shù)組元素中,以線性查找的方式找出最小的元素和第一個元素交換,再從剩下的(n-1)個數(shù)組元素中,找出最小的元素和第二個元素交換,以此類推,直到所有元素均已排序完成。

      將相鄰的兩個數(shù)組元素的電話簿字段的值進行比較,若左邊的值小于右邊的值,則將此兩個元素的值進行交換;若左邊的值大于等于右邊的值,則此兩個值的位置不變。右邊的值繼續(xù)和下一個值做比較,重復此動作,直到比較到最后一個值,最終實現(xiàn)了升序排序。選擇排序法是最簡單的排序法,但選擇排序法所需的排序時間比其他排序法長。

      (5)輸出記錄模塊

      當把記錄輸出至文件時,調(diào)用fwrite(&temp[i],sizeof(TELEBOOK),L,fp)函數(shù),將數(shù)組元素temp[i ]中各字段的值,寫入文件指針fp所指的文件:當把記錄輸出至屏幕時,調(diào)用void Disp()函數(shù),將數(shù)組中存儲的記錄信息以表格的形式在屏幕上打印出來。

      2、數(shù)據(jù)結構設計

      本程序定義了結構體telebook,用于存放聯(lián)系人的基本信息。這里僅有3 個與聯(lián)系人有關的字段,讀者可以按照需要擴展相關字段。

      typedef struct telebook { char num[4];char name[10];char phonenum[15];char address[20];}TELEBOOK;其各字段的值的含義如下: ? num[4]:保存記錄編號。? name[10]:保存聯(lián)系人姓名。? phonenum[15]:保存聯(lián)系人的電話號碼。? address[20]:保存聯(lián)系人地址。

      3、函數(shù)功能描述

      1)printheader()函數(shù)原型:void printheader()printheader()函數(shù)用于在表格形式顯示記錄時,打印輸出表頭信息。2)printdata()函數(shù)原型:void printdata(TELEBOOK pp)printdatan()數(shù)用于以表格顯示的方式,打印輸出單個數(shù)組元素pp中的記錄信息。3)Disp()函數(shù)原型:void Disp(TELEBOOK temp[],int n)Disp()函數(shù)用于顯示temp數(shù)組中存儲的n條記錄,內(nèi)容為telebook結構中定義的內(nèi)容。其余函數(shù)功能描述省略,請同學們在自己寫的時候?qū)懲暾?/p>

      5.程序?qū)崿F(xiàn)

      1、源程序(略)

      2、運行結果

      (1)主界面

      圖5 主界面

      當用戶剛進入電話簿管理系統(tǒng)時,其主界面如圖5所示。此時,系統(tǒng)己經(jīng)將“c:telephon”文件打開,若文件不為空,則將數(shù)據(jù)從文件中逐條記錄讀出,并寫入數(shù)組中。用戶可選擇0-8之間的數(shù)值,調(diào)用相應功能進行操作。當輸入為0時,退出此管理系統(tǒng)。

      (2)輸入記錄

      當用戶輸入1并按Enter鍵后,即可進入數(shù)據(jù)輸入界面。其輸入記錄過程如圖6所示,這里輸入了3條記錄。當用戶輸入為0的記錄編號時,它會結束輸入過程,返回到主菜單界面。

      (3)顯示記錄

      當用戶執(zhí)行了輸入記錄或已經(jīng)從數(shù)據(jù)文件中讀取了記錄之后,即可輸入2并按Enter鍵,查看當前數(shù)組中的記錄情況,如圖7所示,此時表中有3條記錄。

      圖6 輸入記錄

      圖7 顯示記錄

      (4)刪除記錄

      當用戶輸入3并按Enter鍵后,即可進入記錄刪除界面。其刪除記錄過程如圖8所示,這里按聯(lián)系人姓名刪除了一條姓名為A1的記錄。

      圖8 刪除記錄

      (5)查找記錄

      當用戶輸入4并按Enter鍵后,即可進入記錄查找界面。其查找記錄過程如圖9所示,8 用戶可按姓名或電話號碼進行記錄查找。

      圖9 查找記錄

      (6)修改記錄

      當用戶輸入5并按Enter鍵后,即可進入記錄修改界面。其修改記錄過程如圖10所示,這里修改了姓名為a2的聯(lián)系電話和地址字段。

      圖11 修改記錄

      (7)插入記錄

      當用戶輸入6并按Enter鍵后,即可進入記錄插入界面。其插入過程如圖11所示,這里在記錄編號為3的記錄后插入了一條記錄編號為5的記錄。

      (8)排序記錄

      當用戶輸入7并按Enter鍵后,即可進入記錄排序界面。用戶可以選擇按照記錄編號或聯(lián)系人姓名進行排序,圖12為按記錄編號進行記錄升序排序的結果。

      (9)保存記錄

      當用戶輸入8并按Enter鍵后,即可進入記錄保存界面。其保存結果提示信息如圖13所示,這里有3條記錄已經(jīng)存儲至磁盤數(shù)據(jù)文件c:telephon中。

      6.小結

      本文介紹了電話簿管理系統(tǒng)的設計思路及其編程實現(xiàn),重點介紹了功能模塊的設計原理和利用數(shù)組存儲結構實現(xiàn)電話簿管理的過程。通過本程序的開發(fā)使我熟悉C語言下的文件和數(shù)組操作,了解管理信息系統(tǒng)(MIS)的開發(fā)原理,并注意利用選擇排序法來實現(xiàn)數(shù)組元素 排序的特點。

      利用本電話簿管理系統(tǒng)可以對通訊錄進行日常維護和管理。

      下載C++語言學生宿舍管理系統(tǒng)(五篇范文)word格式文檔
      下載C++語言學生宿舍管理系統(tǒng)(五篇范文).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權內(nèi)容。

      相關范文推薦

        C++課程設計(簡單圖書管理系統(tǒng))

        課 程 設 計 課程名稱C++課程設計 題目名稱圖書管理系統(tǒng) 2016 年6 月 29 日目錄 一.設計內(nèi)容與要求 .......................................................................

        C++課程設計(教務管理系統(tǒng))

        #include using namespace std; #include #include #include #include #include #include"01.h" class University; void menu(University uni);//菜單函數(shù)聲明class Stude......

        C++語言學習心得

        C++語言程序?qū)W習心得體會 通過一學期對C++語言的學習,我感覺C++語言是有一定難度卻又是非常有趣的科目。也是很有幫助的,對我們未來工作學習而言。我們可以通過C++語言進行更......

        學生宿舍管理系統(tǒng)項目研究

        學生宿舍管理系統(tǒng)項目研究 摘要:在當今的社會中,社會的科技不斷發(fā)展,計算機正在社會生活廣泛的運用,在社會中各個領域應用。因此,作為新世紀的公民,我們應該要熟習計算機網(wǎng)絡。而......

        學生宿舍管理系統(tǒng) 項目策劃書

        DormManagement學生宿舍管理系統(tǒng) 項目策劃書 導言 天津大學時中國近代歷史上第一所大學,其前身始建于年的歷史,如今,有在校大學會棟以上,在現(xiàn)今的電子信息時代,教學等等許許多多......

        c++課程實踐火車票管理系統(tǒng)

        #include #include #include #include #include using namespace std; class Bus_infor { int No; static int Bus_No; char start[20]; char end[20]; int Bus_order......

        c++超市管理系統(tǒng)課程設計報告

        c++超市管理系統(tǒng)課程設計報告第1章任務描述本次C++實踐課題為“超市管理系統(tǒng)”。要求功能有A、添加商品信息,有商品編號、商品名、供應商代號、進貨價、售出價、存貨數(shù)等。進......

        c++課程設計:教務管理系統(tǒng)源代碼

        #include #include using namespace std; class Person { public: Person(string n):name(n){} virtual void show(){} ~Person(){} protected: string name; }; class......