<output id="r87xx"></output>
    1. 
      
      <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
        •   

               當前位置:首頁>軟件介紹>學生成績管理程序 查詢:
               
          學生成績管理程序

                  一. 功能設計要求

                  設計要求實現(xiàn)的功能較多,所以將他們分為幾個部分敘述。

                  1.建立文件

                  (1)可以使用默認文件名或指定文件名將記錄存儲到文件;

                  (2)文件保存成功返回0,失敗返回-1;

                  (3)設置保存標志savedtag作為是否已對記錄進行存儲操作的信息;

                  (4)寫同名文件將覆蓋原來文件的內(nèi)容。

                  2.增加學生紀錄

                  (1)可在已有記錄后面追加新的記錄;

                  (2)可以隨時用它增加新的記錄,它們僅保存在結構數(shù)組中;

                  (3)可以將一個文件讀入,追加在已有記錄之后;

                  (4)如果已經(jīng)采取用文件追加的方式,在沒有保存到文件之前,將繼續(xù)保持文件追加狀態(tài),以便實現(xiàn)連續(xù)文件追加操作方式;

                  (5)如果沒有記錄存在,給出提示信息。

                  3.新建學生信息文件

                  (1)用來重新建立學生信息記錄;

                  (2)如果已經(jīng)有記錄存在,可以覆蓋原記錄或者在原記錄后面追加,也可以將原有記錄信息保存到一個指定文件,然后重新建立記錄;

                  (3)給出相應的提示信息。

                  4.顯示記錄

                  (1)如果沒有記錄可供顯示,給出提示信息;

                  (2)可以隨時顯示內(nèi)存中的記錄;

                  (3)顯示表頭。

                  5.文件存儲

                  (1)可以按默認名字或指定名字存儲記錄文件;

                  (2)存儲成功返回0,否則返回-1;

                  (3)更新存儲標志。

                  6.讀取文件

                  (1)可以按默認名字或指定名字將記錄文件讀入內(nèi)存;

                  (2)讀取成功返回0,否則返回-1;

                  (3)可以將指定或默認文件追加到現(xiàn)有記錄的尾部;

                  (4)可以將文件連續(xù)追加到現(xiàn)有記錄并更新記錄的名次;

                  (5)更新存儲標志。

                  7.刪除記錄

                  (1)可以按“學號”、“姓名”或“名次”方式刪除記錄;

                  (2)給出將被刪除記錄的信息,經(jīng)確認后再刪除;

                  (3)如果已經(jīng)是空表,刪除時應給出提示信息并返回住菜單;

                  (4)如果沒有要刪除的信息,輸出沒有找到的信息;

                  (5)應該更新其他記錄的名次;

                  (6)刪除操作僅限于內(nèi)存,只有執(zhí)行存記錄時,才能覆蓋原記錄;

                  (7)更新存儲標志。

                  8.修改記錄

                  (1)可以按“學號”、“姓名”或“名次”方式修改記錄;

                  (2)給出將被修改記錄的信息,經(jīng)確認后進行修改;

                  (3)如果已經(jīng)是空表,應給出提示信息并返回住菜單;

                  (4)如果沒有找到需要修改的信息,輸出提示信息;

                  (5)應該同時更新其他記錄的名次;

                  (6)修改操作僅限于內(nèi)存,只有進行存儲操作時,才能覆蓋原記錄;

                  (7)更新存儲標志。

                  9.查詢記錄

                  (1)可以按“學號”、“姓名”或“名次”方式查詢記錄;

                  (2)能給出查詢記錄的信息;

                  (3)如果查詢的信息不存在,輸出提示信息。

                  10.對記錄進行排序

                  (1)可以按學號進行升序或降序排序;

                  (2)可以按名稱進行升序或降序排序;

                  (3)可以按名次進行升序或降序排序;

                  (4)如果屬于選擇錯誤,可以立即退出排序;

                  (5)更新存儲標志。

                  11.頭文件

                  (1)使用條件編譯定義頭文件;

                  (2)函數(shù)原型聲明;

                  (3)數(shù)據(jù)結構及包含文件。

                  12.測試程序

                  (1)應列出測試大綱對程序進行測試;

                  (2)應保證測試用例測試到程序的各種邊緣情況。

                  以上是基本要求,希望通過對本題設計的理解,重新考慮如何改進設計。

                  二.總體設計

                  最初的整體規(guī)劃只是說明它們的可行性,不要求制定函數(shù)的具體實現(xiàn),甚至不需要考慮函數(shù)原型。完成整體規(guī)劃后,可以按照流程描述各個模塊之間的接口功能。

                  本課程設計對模塊設計的要求如下:

                  (1)要求使用多文件方式實現(xiàn)設計;

                  (2)要求在各個文件內(nèi)實現(xiàn)結構化設計

                  (3)每個模塊作為一個單獨的C文件,每個文件內(nèi)的函數(shù)如表12-1所示,表中給出了各個函數(shù)的功能說明;

                  (4)宏和數(shù)據(jù)結構等放在頭文件中,并使用條件編譯。

                  本設計有5個C 文件(17個函數(shù))和一個頭文件組成,每個C文件都代表著某特定的功能,它們的關系如表12-1所示。本章的設計將更加注意模塊化,以便展示C 語言的編程風格。

                              u=3477250800,3024225596&fm=26&gp=0.jpg

                  程序包含文件的存、取過程。它的功能就是按輸入順序建立記錄。如果原來沒有記錄文件,可以重新建立一個文件;如果已經(jīng)有記錄,可以先把文件內(nèi)容輸入,然后把新記錄追加到原來記錄的尾部;也可以單獨建立新文件,以后再使用讀取文件的方法拼接。

                  由上述功能分析可以看到它的全貌。因為它有并列選擇,所以可以用選擇菜單方便地實現(xiàn)。這個菜單具有10個選擇項,用switch語句可以實現(xiàn)這些選擇。可以用簡潔的偽碼對它們進行描述,因為并不復雜,所以不再贅述。

                  三.函數(shù)設計

                  為一些函數(shù)設計兩個返回值一曲分歧執(zhí)行結果是否正確。每個學生信息資料用一個stuinfo結構來保存,用stuinfo數(shù)組全局變量records來保存一批學生的信息資料。

                  其中的宏定義INITIIAL-SIZE表示數(shù)組初始大小,當已經(jīng)分配的數(shù)組大小不夠用時,將真假數(shù)組的大小,INCR-SIZE為當每次增加的大小。全局變量numstus表示數(shù)組中記錄的學生數(shù),arraysize視為數(shù)組分配的空間大小。全局變量savedtag是信息是否已保存的標志,當屬組內(nèi)容被文件保存值文件后,設為“已保存”狀態(tài),當數(shù)組內(nèi)容被修改之后,設為“未保存”狀態(tài)。

                  下面分別描述這些函數(shù),建立它們的函數(shù)原型。

                  1.文件存儲操作函數(shù)

                  函數(shù)原型:int saverecords(void)

                  功能:將記錄存入默認文件stu_info或者指定文件。

                  參數(shù):void返回值:成功0,失敗-1

                  工作方式:數(shù)組records被保存至指定文件。

                  要求:報告是否有記錄可存、是否能正常建立或打開文件、根據(jù)要求執(zhí)行存

                  入操作并報告存入記錄的條數(shù)。

                  2.文件讀取操作函數(shù)

                  函數(shù)原型:int loadrecords(void)

                  功能:將默認文件stu_info或者指定文件里的記錄取入內(nèi)存。

                  參數(shù):void

                  返回值:成功0,失敗-1

                  工作方式:records將為從指定文件中讀取出的記錄。

                  要求:報告是否有記錄可存、能否能正常打開文件、是否覆蓋已有記錄以及讀取記錄的條數(shù)。

                  3.顯示所有學生信息的函數(shù)

                  函數(shù)原型:int display(void)

                  功能:顯示內(nèi)存里的記錄信息

                  參數(shù):void

                  返回值:void

                  工作方式:從頭部開始逐個顯示記錄內(nèi)容

                  要求:報告是否有記錄及記錄條數(shù)和內(nèi)容。

                  4.增加信息函數(shù)

                  函數(shù)原型:void addrecord(void)

                  功能:增加記錄

                  參數(shù):void

                  返回值:void

                  工作方式:從尾部開始逐個追加記錄。

                  要求:將新記錄追加在記錄尾部,并對記錄進行計數(shù)。

                  5.打印表頭函數(shù)

                  函數(shù)原型:void showtable(void)

                  功能: 打印表頭

                  參數(shù):void

                  返回值:void

                  工作方式:輸出一行表頭信息

                  要求:將表頭按制表符打印要求。

                  6.輸出在記錄中按升序排序的位置

                  函數(shù)原型:void getindex(float sum)

                  功能: 找出總分為sum在第0至numstus-1個記錄中按升序排序的

                  參數(shù):float,預找出其位置的總分

                  返回值:int,sum在第0至numstus-1個記錄中按升序排序的

                  工作方式:查找并計數(shù)

                  要求:輸出位置整數(shù)

                  7.刪除記錄函數(shù)

                  函數(shù)原型:void removerecord(void)

                  功能: 刪除內(nèi)存數(shù)組中的制定記錄

                  參數(shù):void

                  返回值:void

                  工作方式:根據(jù)給定的關鍵字,查找符合的記錄并刪除。

                  要求:將后面的記錄前移,同時改變名次并給出相關信息。

                  8.查找指定記錄函數(shù)

                  函數(shù)原型:void findrecord(char*,int,int)

                  功能:查找指定的記錄。

                  參數(shù):char*target:預查找記錄的某一項與target相同

                  intb targettype:表明通過哪一項來查找,0為學號,1為姓名,2為名次

                  int form:從第from個記錄開始找

                  返回值:int找到的記錄的序號,若找不到則返回-1。

                  工作方式: 根據(jù)給定的關鍵字,查找符合記錄的序號。

                  要求:找不到則返回-1。

                  9.查詢指定學生信息的函數(shù)

                  函數(shù)原型:void queryinfo(void)

                  功能: 將一個文件的內(nèi)容追加到另一個文件的尾部。

                  參數(shù):void

                  返回值:void

                  工作方式:可以按照學號、姓名或名次來查詢。

                  要求:打印查詢到的學生的信息或給出相關信息。

                  10.記錄復制函數(shù):

                  函數(shù)原型:void copyrecord(stuinfo*,stuinfo*)

                  功能: 將stc指向的一條記錄復制給dest指向的記錄。

                  參數(shù):stuinfo*src:源記錄stuinfo*dest:目的記錄。

                  返回值:void

                  工作方式:將源記錄逐條復制到目的記錄

                  要求:正確復制字符串。

                  11.修改指定學生信息函數(shù)

                  函數(shù)原型:void modifyrecord(void)

                  功能: 找到指定記錄并修改

                  參數(shù):void

                  返回值:void

                  工作方式: 可以按照學號、姓名或名次找到要修改的記錄,確認后方可修改。要求:同時需調(diào)整名次

                  12.學生信息排序函數(shù)

                  函數(shù)原型:void sortinfo(void)

                  功能:對記錄進行排序

                  參數(shù):void

                  返回值:void

                  工作方式: 可以按照學號、姓名或名次排序。

                  要求:升序或降序排序。

                  13.菜單處理函數(shù)

                  函數(shù)原型:void handle_menu(void)

                  功能:處理選擇的菜單命令。

                  參數(shù):void

                  返回值:void

                  工作方式:根據(jù)命令,調(diào)用相應函數(shù)。

                  要求:給出結束信息。

                  14.菜單選擇函數(shù)

                  函數(shù)原型:int menu_select(void)

                  功能:接受用戶選擇的命令代碼。

                  參數(shù):void

                  返回值:int

                  工作方式:返回命令代碼的整數(shù)值。

                  要求:只允許選擇規(guī)定鍵,如果輸入不合要求,則提醒用戶重新輸入。

                  15.新建學生信息記錄的函數(shù)

                  函數(shù)原型:void newrecords(void)

                  功能:重新建立輸入信息記錄。

                  參數(shù):void

                  返回值:void

                  工作方式:根據(jù)修要調(diào)用saverecords函數(shù)。

                  要求:若原來信息沒有保存,則保存原來的信息,然后重新輸入信息記錄。

                  16.結束程序運行函數(shù)

                  函數(shù)原型:void quit(addr*)

                  功能: 結束程序運行.

                  參數(shù):void

                  返回值:void

                  工作方式:根據(jù)要求決定在推出前是否將修改的記錄存入文件。

                  要求:結束運行之前,詢問是否對修改的記錄進行存儲。

                  17.主函數(shù)

                  函數(shù)原型:void main(void)

                  功能: 控制程序。

                  參數(shù):void

                  返回值:void

                  要求:管理菜單命令并完成初始化。

                  18.頭部文件

                  文件名稱:student.h

                  功能:聲明函數(shù)原型,包含文件及自定義宏和數(shù)據(jù)結構。

                  要求:報告是否能正常打開文件執(zhí)行存入操作及記錄的條數(shù)。

                  三.參考程序

                  1.student.h文件

                  #ifndef H_STUDENT_HH

                  #define H_ STUDENT_HH

                  #include

                  #include

                  #include

                  #include

                  #define INITIAL_SIZE 100 //樹組初始大小

                  #define INCR_SIZE 50 //數(shù)組每次增加的大小

                  #define NUM_SUBJECT    5 //科目數(shù)

                  struct student_info

                  char number[15]; //學號

                  char name[20]; //姓名

                  char gender[4]; //性別

                  float score[NUM_SUBJECT]; //分別為該學生5門課的成績

                  float sum; //總分

                  float average; //平均分

                  int index; //名次  ;

                  typedef struct student_info stuinfo;

                  extern int numstus; //記錄的學生數(shù)

                  extern stuinfo*records; //記錄學生信息的數(shù)組

                  extern char savetag; //信息是否已保存的標志,0為以保存,1位未保存

                  extern int arraysize; //數(shù)組大小

                  extern char* subject[];

                  void handle_menu(void);

                  int menu_select(void);

                  void addrecord(void);

                  void modifyrecord(void)

                  void display(void);

                  void queryinfo(void);

                  void removerecord(void);

                  void sortinfo(void);

                  int saverecords(void);

                  int loadrecords(void);

                  void newrecords(void);

                  void quit(void);

                  void showtable(void);

                  int findrecord(char*target, int targettype, int from);

                  int getindex(float sum);

                  void copyrecord(stuinfo*src, stuinfo*dest);

                  #endif //H_STUDENT_HH

                  2.student.c

                  #include

                  int numstus=0;

                  stuinfo *records=null;

                  char savedtag=0;

                  int arraysize;

                  char* subject[]=“語文”,“數(shù)學”,“英語”,“物理”,“化學”;

                  int main()

                  //初始化數(shù)組

                  records=(stuinfo*)malloc(stuinfo)*INITIAL_SIZE);

                  if (records==null)

                  printf(“memory fail!”);

                  exit(-1);

                  arraysize = INITIAL_SIZE;

                  printf(“”);

                  printf(“******************************”);

                  printf(“* 這是一個*”);

                  printf(“* 學生成績管理程序*”);

                  printf(“可以對學生成績進行管理*”);

                  printf(“歡迎使用管理程序*”);

                  printf(“”);

                  handle_menu();

                  void handle_menu(void)

                  for( ; ; )

                  switch(menu_select())

                  case 0:

                  addrecord();

                  break;

                  case 1:

                  modifyrecord();

                  break;

                  case 2:

                  display();

                  break;

                  case 3:

                  queryinfo();

                  break;

                  case 4:

                  removerecord();

                  break;

                  case 5:

                  sortinfo();

                  break;

                  case 6:

                  saverecords();

                  break;

                  case 7:

                  loadrecords();

                  break;

                  case 8:

                  newrecords();

                  break;

                  case 9:

                  quit();

                  int menu_select()

                  char s[2];

                  int cn=0;

                  printf(“”);

                  printf(“.增加學生信息”);

                  printf(“.修改學生信息”);

                  printf(“.顯示學生信息”);

                  printf(“.查詢學生信息”);

                  printf(“.刪除學生信息”);

                  printf(“.對學生信息進行排序”);

                  printf(“.保存學生信息至記錄文件”);

                  printf(“.從記錄文件讀取學生信息”);

                  printf(“.新建學生信息文件”);

                  printf(“.結束運行”);

                  printf(“左邊數(shù)字對應功能選擇,請選0-9:”);

                  for( ; ; )

                  gets(s);

                  cn=atoi(s);

                  if(cn==0&&(strcmp(s,”0”)!=0)) cn=11;//處理鍵入的非數(shù)字鍵,過濾出數(shù)字0

                  if(cn9) printf(“輸出錯誤,重選0—9:”);

                  else break;

                  return cn;

                  //新建學生信息記錄

                  void newrecords(void)

                  char str[5];

                  if(numstus!=0)

                  printf(“現(xiàn)在已經(jīng)有記錄,選擇處理已有記錄的方法?!?;

                  printf(“是否保存原來的記錄?(Y/n)”);

                  gets(str);

                  if(str[0]!=‘n’&&str[0]!=‘N’)

                  saverecords();

                  numstus=0;

                  addrecord();

                  //?áê???DD£?í?3?

                  void quit(void)

                  char str[5];

                  if (savedtag==1)

                  gets(str);

                  saverecords();

                  :free(records);

                  exit(0);

                  3.add_disp.c

                  #include

                  void showtable(void)

                  int j;

                  for(j=0;j

                  void display(void)

                  int i,j;

                  if(numstus==0)

                  return;

                  shoetable();

                  for (i=0;i

                  printf((?°%s%s%s?±,records[i].number,records[i].name, records[i].gender);

                  for(j=0;j

                  printf(?°%.1f?±,records[i].score[j]);

                  printf(?°%.1f%.1f%d?±,records[i].sum,records[i].average,records[i].index);

                  if (i ==0&&i!=0)

                  printf(?°ê?è?è?òa×???oó?ìD??-?±);

                  getch();

                  printf(?°?±);

                  showtable();

                  void addrecord(void)

                  char str[10];

                  int j;

                  float mark,sum;

                  if(numstus==0)

                  else

                  while(1)

                  gets(str);

                  break£?

                  if(records==NULL)

                  printf(?°memory failed!?±);

                  exit(-1);

                  arraysize=arraysize INCR_SIZE;

                  gets(records[numstus].number);

                  gets(records[numstus].name);

                  gets(str);

                  if(str[0]==??0?ˉ)

                  sum=0;

                  for(j=0;j

                  gets(str);

                  mark=(float)atof(str);

                  records[numstus].score[j]=mark;

                  sum =mark;

                  records[numstus].sum=sum;

                  records[numstus].average=sum/NUM_SUBJECT;

                  records[numstus].index=getindex(sum);

                  numstus  ;

                  savedtag=1;

                  int i;

                  for (i=0;i

                  if (records[i].sum

                  else if (records[i].sum>sum)

                  count  ;

                  return count 1

                  


          學校排課系統(tǒng)的設計學生成績管理系統(tǒng)
          淺談內(nèi)部控制與ERP管理系統(tǒng)的關系淺談對ERP的認識
          如何發(fā)揮ERP系統(tǒng)中的財務監(jiān)控職能集團ERP項目監(jiān)理的幾點體會
          ERP是否升級考慮的幾個因素電力制造企業(yè)智能制造信息化整體規(guī)劃
          ERP與精益生產(chǎn)PDM和ERP數(shù)據(jù)對接面臨的問題點
          MRP MRP2 ERP介紹與案例對erp的理解
          ERP系統(tǒng)發(fā)展簡介什么是ERP/MRP
          C語言編寫方案-學生成績管理系統(tǒng)VFP學生成績管理系統(tǒng)
          信息發(fā)布:廣州名易軟件有限公司 http://www.jetlc.com
          • 勁爆價:
            不限功能
            不限用戶
            1998元/年

          • 微信客服

            <output id="r87xx"></output>
          1. 
            
            <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
              • 高清无码手机在线 | 91在线精品无码秘 入口APP | 黄色电影中文字幕在线观看 | 围产精品久久久久久 | 人妻三级视频 | 黑人操逼在线观看 | 最近中文字幕免费MV第一季歌词十 | 欧美黄色A片1234区 | 操逼的免费视频 | 女人18水真多毛片一级A片 |