版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> C語言程序設計</b></p><p><b> 課程設計報告</b></p><p> 設計題目:班級學生成績管理系統(tǒng)</p><p> 專 業(yè): </p><p> 班 級: </p><p>
2、 學 號: </p><p> 姓 名: </p><p> 指導教師: </p><p> 時間:2011/06/12</p><p> 目 錄</p><p> 課程設計目的和要求……………………3</p><p&g
3、t; 課程設計任務內容………………………4</p><p> 程序流程圖………………………………16</p><p> 軟件使用說明……………………………17</p><p> 課程設計心得與體會……………………19</p><p> 一. 課程設計的目的和要求</p><p> 目的:本課程設計是計算機科
4、學與技術專業(yè)重要的實踐性環(huán)節(jié)之一,是在學生學習完《程序設計語言(C)》課程后進行的一次全面的綜合練習。本課程設計的目的和任務:</p><p> 1. 鞏固和加深學生對C語言課程的基本知識的理解和掌握</p><p> 2. 掌握C語言編程和程序調試的基本技能</p><p> 3. 利用C語言進行基本的軟件設計</p><p> 4
5、. 掌握書寫程序設計說明文檔的能力</p><p> 5. 提高運用C語言解決實際問題的能力</p><p><b> 程序功能和要求:</b></p><p><b> 學生記錄用結構體</b></p><p> 學生信息數據用文件保存</p><p> 采用多文
6、件形式組織程序</p><p><b> 基本功能:</b></p><p><b> 增加學生記錄</b></p><p><b> 文件存儲</b></p><p><b> 讀取文件</b></p><p><b
7、> 刪除記錄 </b></p><p><b> 修改記錄</b></p><p><b> 查詢記錄 </b></p><p><b> 5.程序簡潔易懂</b></p><p> 二.課程設計任務和內容</p><p>&
8、lt;b> 代碼:</b></p><p> #ifndef H_STUDENT_HH</p><p> #define H_STUDENT_HH</p><p> #include<stdio.h></p><p> #include<stdlib.h></p><p&
9、gt; #include<conio.h></p><p> #include<string.h></p><p> #define NUM_SUBJECT 5 //科目數</p><p> #define INITIAL_SIZE 100 //數組初始大小</p><
10、p> #define INCR_SIZE 50 //數組每次增加的大小</p><p> struct student_info{</p><p> char number[15]; //學號</p><p> char name[20]; //姓名</p&g
11、t;<p> char gender[4]; //性別</p><p> float score[NUM_SUBJECT]; //某學生的各科成績</p><p> float sum; //總分</p><p> float average;
12、 //平均分</p><p> int index; //名次</p><p><b> };</b></p><p> typedef struct student_info StuInfo;</p><p> extern int numStus;
13、 //記錄的學生數</p><p> extern StuInfo* records; //記錄學生信息的數組</p><p> extern char savedTag; //信息是否保存</p><p> extern int arraySize; //數組大小<
14、;/p><p> extern char* subject[];</p><p> void handle_menu(void);</p><p> int menu_select(void);</p><p> void addRecord(void);</p><p> void modifyRecord(v
15、oid);</p><p> void display(void);</p><p> void queryInfo(void);</p><p> void removeRecord(void);</p><p> int saveRecords(void);</p><p> int loadRecord
16、s(void);</p><p> void quit(void);</p><p> void showTable(void);</p><p> int findRecord(char* target,int targetType,int from);</p><p> void copyRecord(StuInfo* src,S
17、tuInfo* dest);</p><p> void sortInfo(void);</p><p> int findRecord(char* target,int targetType,int from);</p><p> int getIndex(float);</p><p> #endif // H_STUDENT_
18、HH</p><p> #include "student.h"</p><p> //******************輸出表頭**********************</p><p> void showTable(void)</p><p><b> {</b></p>
19、<p><b> int j;</b></p><p> printf("學號\t姓名\t性別");</p><p> for(j=0;j<NUM_SUBJECT;j++)</p><p> printf(" %s ",subject[j]);</p><
20、p> printf(" 總分 平均分 名次\n");</p><p><b> }</b></p><p> //****************顯示所有學生信息函數******************</p><p> void display(void)</p><p>&
21、lt;b> {</b></p><p><b> int i,j;</b></p><p> if(numStus==0)</p><p><b> {</b></p><p> printf("沒有可供顯示的記錄!");</p><
22、;p><b> return;</b></p><p><b> }</b></p><p> showTable();</p><p> for(i=0;i<numStus;i++)</p><p><b> {</b></p><p
23、> printf("%4s\t%3s\t%3s",records[i].number,records[i].name,records[i].gender);</p><p> for(j=0;j<NUM_SUBJECT;j++)</p><p> printf("\ %.1f ",records[i].score[j]);<
24、/p><p> printf(" %.1f %.1f %d\n",records[i].sum,records[i].average,records[i].index);</p><p> if(i%19==0 && i!=0)</p><p><b> {</b></p>&l
25、t;p> printf("輸入一行字符后繼續(xù)...\n");</p><p><b> getch();</b></p><p> printf("\n\n");</p><p> showTable();</p><p><b> }</b>
26、</p><p><b> }</b></p><p><b> }</b></p><p> //*******************在當前表的末尾增加新的信息*************************</p><p> void addRecord(void)</p>
27、;<p><b> {</b></p><p> char str[10];</p><p><b> int j;</b></p><p> float mark,sum;</p><p> if(numStus==0)</p><p> prin
28、tf("原來沒有記錄,現在建立新表\n");</p><p><b> else</b></p><p> printf("先面在當前的末尾增加新的信息\n");</p><p><b> while(1)</b></p><p><b>
29、{</b></p><p> printf("您將要添加一組信息,確定嗎?(y/n)");</p><p> gets(str);</p><p> if(str[0]=='n' || str[0]=='N')</p><p><b> break;</b
30、></p><p> if(numStus >= arraySize)</p><p><b> {</b></p><p> records=realloc(records,(arraySize+INCR_SIZE)*sizeof(StuInfo));</p><p> if(records==NU
31、LL)</p><p><b> {</b></p><p> printf("memory falled!");</p><p><b> exit(-1);</b></p><p><b> }</b></p><p>
32、 arraySize=arraySize+INCR_SIZE;</p><p><b> }</b></p><p> printf("請輸入學號:");</p><p> gets(records[numStus].number);</p><p> printf("請輸入姓名:&
33、quot;);</p><p> gets(records[numStus].name);</p><p> printf("請輸入性別(0為女,1為男):");</p><p> gets(str);</p><p> if(str[0]=='0')</p><p> s
34、trcpy(records[numStus].gender,"女");</p><p><b> else</b></p><p> strcpy(records[numStus].gender,"男");</p><p><b> sum=0;</b></p>
35、<p> for(j=0;j<NUM_SUBJECT;j++)</p><p><b> {</b></p><p> printf("請輸入%s成績:",subject[j]);</p><p> gets(str);</p><p> mark=(float)atof(s
36、tr);</p><p> records[numStus].score[j]=mark;</p><p> sum+=mark;</p><p><b> }</b></p><p> records[numStus].sum=sum;</p><p> records[numStus
37、].average=sum/NUM_SUBJECT;</p><p> records[numStus].index=getIndex(sum);</p><p> numStus++;</p><p><b> }</b></p><p> printf("現在一共有%d條信息\n",num
38、Stus);</p><p> savedTag=1;</p><p><b> }</b></p><p> //************找出總分為sum在第0至numStus-1個記錄中按升序排序的位置************</p><p> int getIndex(float sum)</p>
39、;<p><b> {</b></p><p><b> int i;</b></p><p> int count=0;</p><p> for(i=0;i<numStus;i++)</p><p><b> {</b></p>
40、<p> if(records[i].sum<sum)</p><p><b> {</b></p><p> records[i].index++;</p><p><b> }</b></p><p> else if(records[i].sum>sum)<
41、;/p><p><b> {</b></p><p><b> count++;</b></p><p><b> }</b></p><p><b> }</b></p><p> return count+1;</p
42、><p><b> }</b></p><p> #include "student.h"</p><p> //******************文件存儲操作函數*********************</p><p> int saveRecords(void)</p>&l
43、t;p><b> {</b></p><p><b> FILE *fp;</b></p><p> char fname[30];</p><p> if(numStus==0)</p><p><b> {</b></p><p>
44、 printf("沒有記錄可存!");</p><p> return -1;</p><p><b> }</b></p><p> printf("請輸入要存入的文件名(直接回車選擇文件stu_info):");</p><p> gets(fname);</p&
45、gt;<p> if(strlen(fname)==0)</p><p> strcpy(fname,"stu_info");</p><p> if((fp=fopen(fname,"wb"))==NULL)</p><p><b> {</b></p><p&
46、gt; printf("不能存入文件!\n");</p><p> return -1;</p><p><b> }</b></p><p> printf("\n存文件...\n");</p><p> fwrite(records,sizeof(StuInfo)*n
47、umStus,1,fp);</p><p> fclose(fp);</p><p> printf("%d條記錄已經存入文件,請繼續(xù)操作。\n",numStus);</p><p> savedTag=0;</p><p><b> return 0;</b></p><
48、p><b> }</b></p><p> //************************文件讀取操作函數****************************</p><p> int loadRecords(void)</p><p><b> {</b></p><p>
49、<b> FILE *fp;</b></p><p> char fname[30];</p><p> char str[5];</p><p> if(numStus!=0 && savedTag==0)</p><p><b> {</b></p>&l
50、t;p> printf("請選擇您是要覆蓋現有記錄(y),還是要將");</p><p> printf("讀取的記錄添加到現有記錄之后(n)?\n");</p><p> printf("直接回車則覆蓋現有記錄\n");</p><p> gets(str);</p><
51、p> if(str[0]=='n'||str[0]=='N')</p><p><b> {</b></p><p> savedTag=1;</p><p><b> }</b></p><p><b> else</b><
52、;/p><p><b> {</b></p><p> if(savedTag==1)</p><p><b> {</b></p><p> printf("讀取文件將會更改原來的記錄,");</p><p> printf("是否保存原
53、來記錄?(y/n)");</p><p> gets(str);</p><p> if(str[0]!='n'&&str[0]!='N')</p><p> saveRecords();</p><p><b> }</b></p><
54、;p> numStus=0;</p><p><b> }</b></p><p><b> }</b></p><p> printf("請輸入要讀取的文件名(直接回車選擇文件stu_info):");</p><p> gets(fname);</p&g
55、t;<p> if(strlen(fname)==0)</p><p> strcpy(fname,"stu_info");</p><p> if((fp=fopen(fname,"rb"))==NULL)</p><p><b> {</b></p><p&g
56、t; printf("打不開文件!請重新選擇\'n");</p><p> return -1;</p><p><b> }</b></p><p> printf("\n取文件...\n");</p><p> while(!feof(fp))</p&g
57、t;<p><b> {</b></p><p> if(numStus>=arraySize)</p><p><b> {</b></p><p> records=realloc(records,(arraySize+INCR_SIZE)*sizeof(StuInfo));</p&g
58、t;<p> if(records==NULL)</p><p><b> {</b></p><p> printf("memory failed!");</p><p><b> exit(-1);</b></p><p><b> }<
59、;/b></p><p> arraySize=arraySize+INCR_SIZE;</p><p><b> }</b></p><p> if(fread(&records[numStus],sizeof(StuInfo),1,fp)!=1) break;</p><p> //按照addR
60、ecord函數的方法,更新名次</p><p> records[numStus].index = getIndex(records[numStus].sum);</p><p> numStus++;</p><p><b> }</b></p><p> fclose(fp);</p><
61、p> printf("現在共有%d條記錄。",numStus);</p><p><b> return 0;</b></p><p><b> }</b></p><p> #include "student.h"</p><p> //**
62、****************文件存儲操作函數*********************</p><p> int saveRecords(void)</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> char fname[30]
63、;</p><p> if(numStus==0)</p><p><b> {</b></p><p> printf("沒有記錄可存!");</p><p> return -1;</p><p><b> }</b></p>
64、<p> printf("請輸入要存入的文件名(直接回車選擇文件stu_info):");</p><p> gets(fname);</p><p> if(strlen(fname)==0)</p><p> strcpy(fname,"stu_info");</p><p>
65、if((fp=fopen(fname,"wb"))==NULL)</p><p><b> {</b></p><p> printf("不能存入文件!\n");</p><p> return -1;</p><p><b> }</b></p
66、><p> printf("\n存文件...\n");</p><p> fwrite(records,sizeof(StuInfo)*numStus,1,fp);</p><p> fclose(fp);</p><p> printf("%d條記錄已經存入文件,請繼續(xù)操作。\n",numStus
67、);</p><p> savedTag=0;</p><p><b> return 0;</b></p><p><b> }</b></p><p> //************************文件讀取操作函數****************************</
68、p><p> int loadRecords(void)</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> char fname[30];</p><p> char str[5];</p>&l
69、t;p> if(numStus!=0 && savedTag==0)</p><p><b> {</b></p><p> printf("請選擇您是要覆蓋現有記錄(y),還是要將");</p><p> printf("讀取的記錄添加到現有記錄之后(n)?\n");<
70、;/p><p> printf("直接回車則覆蓋現有記錄\n");</p><p> gets(str);</p><p> if(str[0]=='n'||str[0]=='N')</p><p><b> {</b></p><p>
71、savedTag=1;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(savedTag==1)</p><p><b> {</b
72、></p><p> printf("讀取文件將會更改原來的記錄,");</p><p> printf("是否保存原來記錄?(y/n)");</p><p> gets(str);</p><p> if(str[0]!='n'&&str[0]!='
73、;N')</p><p> saveRecords();</p><p><b> }</b></p><p> numStus=0;</p><p><b> }</b></p><p><b> }</b></p>&
74、lt;p> printf("請輸入要讀取的文件名(直接回車選擇文件stu_info):");</p><p> gets(fname);</p><p> if(strlen(fname)==0)</p><p> strcpy(fname,"stu_info");</p><p> i
75、f((fp=fopen(fname,"rb"))==NULL)</p><p><b> {</b></p><p> printf("打不開文件!請重新選擇\'n");</p><p> return -1;</p><p><b> }</b&g
76、t;</p><p> printf("\n取文件...\n");</p><p> while(!feof(fp))</p><p><b> {</b></p><p> if(numStus>=arraySize)</p><p><b> {&
77、lt;/b></p><p> records=realloc(records,(arraySize+INCR_SIZE)*sizeof(StuInfo));</p><p> if(records==NULL)</p><p><b> {</b></p><p> printf("memory
78、 failed!");</p><p><b> exit(-1);</b></p><p><b> }</b></p><p> arraySize=arraySize+INCR_SIZE;</p><p><b> }</b></p>&l
79、t;p> if(fread(&records[numStus],sizeof(StuInfo),1,fp)!=1) break;</p><p> //按照addRecord函數的方法,更新名次</p><p> records[numStus].index = getIndex(records[numStus].sum);</p><p>
80、numStus++;</p><p><b> }</b></p><p> fclose(fp);</p><p> printf("現在共有%d條記錄。",numStus);</p><p><b> return 0;</b></p><p>
81、;<b> }</b></p><p> #include "student.h"</p><p> //*********************學生信息排序函數*************************</p><p> void sortInfo(void)</p><p>&l
82、t;b> {</b></p><p> char str[5];</p><p><b> int i,j;</b></p><p> StuInfo tmps;</p><p> if(numStus==0)</p><p><b> {</b>
83、;</p><p> printf("沒有可供排序的記錄!");</p><p><b> return; </b></p><p><b> }</b></p><p> printf("請輸入您希望進行排序的方式:\n");</p>
84、<p> printf("1.按學號進行升序排序\n");</p><p> printf("2.按學號進行降序排序\n");</p><p> printf("3.按姓名進行升序排序\n");</p><p> printf("4.按姓名進行降序排序\n");<
85、/p><p> printf("5.按名次進行升序排序\n");</p><p> printf("6.按名次進行降序排序\n");</p><p> printf("7.按錯了,現在并不想進行排序\n");</p><p> gets(str);</p><
86、p> if(str[0]<'1'||str[0]>'6') return;</p><p><b> //進行排序</b></p><p> for(i=0;i<numStus-1;i++)</p><p><b> {</b></p><
87、p> for(j=i+1;j<numStus;j++)</p><p><b> {</b></p><p> if((str[0]=='1' && strcmp(records[i].number,records[j].number)>0) ||</p><p> (str[0]==&
88、#39;2' && strcmp(records[i].number,records[j].number)<0) ||</p><p> (str[0]=='3' && strcmp(records[i].name,records[j].name)>0) ||</p><p> (str[0]=='4'
89、 && strcmp(records[i].name,records[j].name)<0) ||</p><p> (str[0]=='5' && records[i].index>records[j].index) ||</p><p> (str[0]=='6' && records[i]
90、.index<records[j].index))</p><p><b> {</b></p><p> copyRecord(&records[i],&tmps);</p><p> copyRecord(&records[j],&records[i]);</p><p>
91、 copyRecord(&tmps,&records[j]);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> printf("排序已經完成\n")
92、;</p><p> savedTag=1;</p><p><b> }</b></p><p> #include "student.h"</p><p><b> //初始化</b></p><p> int numStus=0;
93、 //記錄學生數</p><p> StuInfo *records=NULL; //記錄學生信息</p><p> char savedTag=0; //信息保存標志,1為未保存,0為已保存</p><p> int array
94、Size; //數組大小</p><p> char* subject[]={"高數","英語","線代","物理","電工","體育"};</p><p> //*****************主函數*****
95、*********************</p><p> int main()</p><p><b> {</b></p><p> records=(StuInfo*)malloc(sizeof(StuInfo)*INITIAL_SIZE);</p><p> if(records==NULL)</
96、p><p><b> {</b></p><p> printf("memory fall!");</p><p><b> exit(-1);</b></p><p><b> }</b></p><p> arraySize
97、=INITIAL_SIZE;</p><p> printf("\n");</p><p> printf("\t****************************\n");</p><p> printf("\t* 這是一個 *\n");</p>
98、<p> printf("\t* 學生成績管理程序 *\n");</p><p> printf("\t* 可以對學生成績進行管理 *\n");</p><p> printf("\t* 歡迎使用管理系統(tǒng) *\n");</p><p> printf(&
99、quot;\t****************************\n");</p><p> printf("\n");</p><p> handle_menu();</p><p><b> }</b></p><p> //******************菜單處理函數
100、***********************</p><p> void handle_menu(void)</p><p><b> {</b></p><p><b> for(;;){</b></p><p> switch(menu_select())</p><
101、;p><b> {</b></p><p><b> case 1:</b></p><p> addRecord();</p><p><b> break;</b></p><p><b> case 2:</b></p>
102、<p> modifyRecord();</p><p><b> break;</b></p><p><b> case 3:</b></p><p> display();</p><p><b> break;</b></p><
103、;p><b> case 4:</b></p><p> queryInfo();</p><p><b> break;</b></p><p><b> case 5:</b></p><p> removeRecord();</p><
104、p><b> break;</b></p><p><b> case 6:</b></p><p> saveRecords();</p><p><b> break;</b></p><p><b> case 7:</b></
105、p><p> loadRecords();</p><p><b> break;</b></p><p><b> case 8:</b></p><p> sortInfo();</p><p><b> break;</b></p>
106、;<p><b> case 9:</b></p><p><b> quit();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b>&l
107、t;/p><p> //*********************菜單選擇函數*************************</p><p> int menu_select()</p><p><b> {</b></p><p> char s[2];</p><p><b>
108、; int cn=0;</b></p><p> printf("\n");</p><p> printf("\t1.增加學生信息\n");</p><p> printf("\t2.修改學生信息\n");</p><p> printf("\t3.
109、顯示學生信息\n");</p><p> printf("\t4.查詢學生信息\n");</p><p> printf("\t5.刪除學生信息\n");</p><p> printf("\t6.保存學生信息至記錄文件\n");</p><p> printf(&
110、quot;\t7.從記錄文件讀取學生信息\n");</p><p> printf("\t8.排序學生信息\n");</p><p> printf("\t9.結束運行\(zhòng)n");</p><p> printf("\n左邊數字對應功能選擇,請選1-9:\t");</p><
111、;p><b> for(;;)</b></p><p><b> {</b></p><p><b> gets(s);</b></p><p> cn=atoi(s);</p><p> if(cn<1||cn>9) printf("\n
112、\t輸入錯誤,重選1-9:");</p><p> else break;</p><p><b> }</b></p><p> return cn;</p><p><b> }</b></p><p> //*********************
113、*結束運行*************************</p><p> void quit(void)</p><p><b> {</b></p><p> char str[5];</p><p> if(savedTag==1)</p><p><b> {<
114、;/b></p><p> printf("是否保存原來的記錄?(y/n)");</p><p> gets(str);</p><p> if(str[0]!='n' && str[0]!='N')</p><p> saveRecords();</p&
115、gt;<p><b> }</b></p><p> free(records);</p><p><b> exit(0);</b></p><p><b> }</b></p><p><b> 1.總體設計:</b></
116、p><p> 本設計有4個C文件(14個函數)和一個頭文件組成,每個C文件都代表著某種特定功能,他們的關系如表12-1</p><p><b> 所示。</b></p><p> 程序包含頭文件的存、取過程,其功能就是按輸入順序建立記錄。如果原來沒有記錄文件,可以重新建立一個文件;</p><p> 如果已經有記錄,
117、可以先把文件內容讀入,然后把新記錄追加到原來記錄的尾部;也可以單獨建立新文件,以后再使用</p><p> 讀取文件的方法拼裝。</p><p> 表12—1 文件及函數組成</p><p> 由上述功能分析可以看到改程序的全貌。因為它有并列選擇,所</p><p> 可以用選擇菜單方便地實現。這個菜單具有8項,用switch語句可&
118、lt;/p><p> 以實現這些選擇。所以用簡潔的偽碼對它們進行選擇,因為并不復雜,所以這里不自在贅述。</p><p><b> 2.函數具體設計</b></p><p> 為一些函數設計兩個返回值以區(qū)分其執(zhí)行結果是否正確。每個學生信息資料用一個StnInfo結構來保存,用StuInfo數組的全局變量records來保存一批學生的信息資料。
119、宏定義INTIAL_SIZE表示數組初始大小,當已分配的數組大小不夠用時,敬愛那個增加數組大小,INCR_SIZE為每次增加的大小。全局變量numStus 表示數組中記錄的學生數,arraySize是為數組分配的空間大小。全局變量savedTag是信息是否保存的標志,當數組內容被保存只文件后,設為‘’以保存‘’狀態(tài),當數組內容被修改之后,設為“未保存”狀態(tài)。</p><p><b> .文件存儲操作函
120、數</b></p><p> 函數原型:int savedRecord(void)</p><p> 功 能:將及錄存入默認文件 stu_info 或者指定文件。</p><p> 參 數:void。</p><p> 返 回 值:成功0,失敗-1。</p><p> 工作方式:數組r
121、ecords被保存至指定文件。</p><p> 要 求:報告是否有記錄可保存、是否能正常建立或打開文件、根據要求執(zhí)行存入操作并報告存入記錄的條數。</p><p><b> .文件讀取操作函數</b></p><p> 函數原型:int loadRecords(void)</p><p> 功 能:
122、將默認文件stu_info 或者指定文件里的記錄存入內存。</p><p> 參 數:void。</p><p> 返 回 值:成功0,失敗-1。</p><p> 工作方式:records 為從指定文件中讀取出記錄。</p><p> 要 求:報告是否有記錄可存、是否能正常打開文件、是否覆蓋已有記錄以及讀取記錄的條數。&
123、lt;/p><p> .顯示所有學生信息函數</p><p> 函數原型:void display(void)</p><p> 功 能:顯示內存里的記錄信息。</p><p> 參 數:void。</p><p> 返 回 值:void。</p><p> 工作方式:從頭文
124、件開始逐個顯示記錄內容。</p><p> 要 求:報告是否有記錄及記錄條數和內容。</p><p><b> .增加信息函數</b></p><p> 函數原型:void addRecord(void)</p><p> 功 能:增加記錄。</p><p> 參 數:
125、void。</p><p> 返 回 值:void。</p><p> 工作方式:從尾部開始逐個追加記錄。</p><p> 要 求:將新記錄追加在記錄尾部,并對記錄進行計數。</p><p><b> .輸出表頭函數</b></p><p> 函數原型:void showTabl
126、e(void)</p><p> 功 能:輸出表頭信息。</p><p> 改表頭里面含有學生學號,姓名,性別,及各學科名稱,總分,平均分,這樣以后每一次要輸出學生信息是直接就可以用此函數,減少程序的代碼,是程序簡單化。</p><p> 參 數:void。</p><p> 返 回 值:void。</p>
127、<p> 工作方式:輸出頭一行表頭信息。</p><p> 要 求:輸出一行表頭信息。</p><p><b> .刪除記錄函數</b></p><p> 函數原型:void removerecord(void)</p><p> 功 能:刪除內存數組中指定記錄。</p>&
128、lt;p> 如果有的學生信息發(fā)生改變,你可以丟它進行刪除,刪除之前,你必須找到你要修改學生的記錄,你可以根據姓名,學號超找改學生的信息,找到之后,若要刪除,就對它進行刪除。</p><p> 參 數:void。</p><p> 返 回 值:void。</p><p> 工作方式:根據給定的關鍵字,查找符合的記錄并刪除之。</p>
129、<p> 要 求:將后面的記錄前移,同時改變名次并給出相關信息。</p><p><b> .查找指定記錄函數</b></p><p> 函數原型:void findRecord(char*,int,int)</p><p> 功 能:查找指定記錄。</p><p> 參 數:cha
130、r *target:欲查找記錄的某一項與target相同。</p><p> int targetType:表明通過哪一項來查找,0為學號,</p><p> 1為姓名,2為名次。</p><p> int from:從第from個記錄開始找。</p><p> 返 回 值:int(找到的記錄序號),若找不到則返回-1。</p&
131、gt;<p> 工作方式:根據給定的關鍵字,查找符合記錄的序號。</p><p> 要 求:找不到則返回-1。</p><p> .查找指定學生信息函數</p><p> 函數原型:void queryInfo(void)</p><p> 功 能:將一個文件的內容追加到另一個文件的尾部。</p>
132、;<p> 參 數:void。</p><p> 返 回 值:void。</p><p> 工作方式:可以按照學號、姓名或名次來查詢。</p><p> 要 求:打印查詢到得學生信息或給出相關信息。</p><p><b> .記錄復制函數</b></p><p&g
133、t; 函數原型:void copyRecord(stuInfo*, stuInfo*)</p><p> 功 能:將src指向的一條記錄復制給dest指向的記錄。</p><p> 參 數:StuInfo* src為源記錄StuInfo* dest為目的記錄。</p><p> 返 回 值:void。</p><p>
134、工作方式:將源記錄逐條復制到目的記錄。</p><p> 要 求:正確復制字符串。</p><p> .修改指定學生信息函數</p><p> 函數原型:void modifyRecord(void)</p><p> 功 能:找到指定記錄并修改。如果有的學生信息發(fā)生改變,你可以丟它進行修改,修改之前,你必須找到你要修改學
135、生的記錄,你可以根據姓名,學號超找改學生的信息,找到之后,若要修改,就對它進行修改。</p><p> 參 數:void。</p><p> 返 回 值:void。</p><p> 工作方式:可以按照學號、姓名活名次找到要修改的記錄,確認后方可修改。</p><p> 要 求:同時需要調整名次。</p>&
136、lt;p><b> .菜單處理函數函數</b></p><p> 函數原型:void handle_menu(void)</p><p> 功 能:處理選擇的菜單命令。</p><p> 參 數:void。</p><p> 返 回 值:void。</p><p>
137、工作方式:根據命令,調用相應函數。</p><p> 要 求:給出結束信息。</p><p><b> .菜單選擇函數</b></p><p> 函數原型:void menu_select(void)</p><p> 功 能:接受用戶選擇代碼。</p><p> 參
138、數:void。</p><p> 返 回 值:int。</p><p> 工作方式:返回命令代碼整數值。</p><p> 要 求:只允許選擇規(guī)定鍵,若果輸入不符合要求,則提醒用戶重新輸入。</p><p><b> .結束程序運行函數</b></p><p> 函數原型:void
139、 quit(ADDR*)</p><p> 功 能:結束程序運行。</p><p> 參 數:void。</p><p> 返 回 值:void。</p><p> 工作方式:根據要求決定在退出前是否將修改的記錄存入文件。</p><p> 要 求:結束運行之前,詢問是否丟修改的記錄進行存儲
140、。</p><p><b> 排序函數</b></p><p> 函數原型:sortInfo(void)</p><p> 功 能:對學生的總進行排序,可以按照升序,降序,對學生成績或學號進行準確的排名。</p><p> 參 數:void。</p><p> 返 回 值:v
141、oid。</p><p> 工作方式:對學生進行排序,可以根據需要,對學生的學號或者成績進行升序或者降序。你通過選擇1—7中的選項來滿足你的需求。</p><p> 要 求:升序或者降序。</p><p><b> .主函數</b></p><p> 函數原型:void main(void)</p&g
142、t;<p> 功 能:控制程序。</p><p> 參 數:void。</p><p> 返 回 值:void。</p><p> 要 求:管理菜單命令并完成初始化。</p><p><b> .頭文件</b></p><p> 文件名稱:student
143、.h</p><p> 功 能:聲明函數原型,包含文件及自定義宏和數據結構。</p><p> 要 求:報告是否能正常打開文件執(zhí)行存入操作及存入記錄條數。</p><p> #ifndef H_STUDENT_HH</p><p> #define H_STUDENT_HH</p><p> 用來
144、防止重復包含的。這種比較怪異方式,不如STUDENT_H那樣清晰明了,目的是盡量避免可能出現的重復的宏定義。</p><p> 在頭文件是,對于系統(tǒng)庫投文件,使用“<>”形勢,表示從系統(tǒng)查找頭文件;對于自己建立的頭文件,如student.h,使用 #include“student”的形勢,表示處理系統(tǒng)庫目錄外,還要從目錄去查找頭文件。</p><p> 這14個函
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言程序設計-學生成績管理系統(tǒng)
- c語言程序設計__學生成績管理系統(tǒng)
- c語言程序設計課程設計---學生成績管理系統(tǒng)
- c語言課程設計---學生成績管理系統(tǒng)程序設計
- c語言程序課程設計----學生成績管理系統(tǒng)
- 學生成績管理系統(tǒng)-c語言計算機程序設計基礎課程設計報告
- c++程序設計課程設計---學生成績管理系統(tǒng)
- c++程序設計課程設計---學生成績管理系統(tǒng)
- c語言程序課程設計--學生成績管理系統(tǒng)設計
- c語言學生成績管理系統(tǒng)設計報告
- c++程序設計課程設計 ----學生成績管理系統(tǒng)實驗報告
- vb程序設計課程設計報告-學生成績管理系統(tǒng)
- vb程序設計課程設計報告學生成績管理系統(tǒng)
- vb程序設計課程設計報告學生成績管理系統(tǒng)
- c語言課程設計報告-學生成績管理系統(tǒng)
- c語言課程設計報告學生成績管理系統(tǒng)
- c語言課程設計報告---學生成績管理系統(tǒng)
- c語言課程設計報告--學生成績管理系統(tǒng)
- c語言課程設計報告----學生成績管理系統(tǒng)
- c語言課程設計報告--學生成績管理系統(tǒng)
評論
0/150
提交評論