資源簡介
現有學生成績信息文件1(1.txt),內容如下
姓名 學號 語文 數學 英語
張明明 01 67 78 82
李成友 02 78 91 88
張輝燦 03 68 82 56
王露 04 56 45 77
陳東明 05 67 38 47
…. .. .. .. …
學生成績信息文件2(2.txt),內容如下:
姓名 學號 語文 數學 英語
陳果 31 57 68 82
李華明 32 88 90 68
張明東 33 48 42 56
李明國 34 50 45 87
陳道亮 35 47 58 77
…. .. .. .. …
試編寫一管理系統,要求如下:
1) 實現對兩個文件數據進行合并,生成新文件3.txt
2) 抽取出三科成績中有補考的學生并保存在一個新文件4.txt
3) 對合并后的文件3.txt中的數據按總分降序排序
4) 輸入一個學生姓名后,能查找到此學生的信息并輸出結果
5) 要求使用結構體,鏈或數組等實現上述要求.
6) 采用多種方法且算法正確者,可適當加分.

代碼片段和文件信息
#include
using?namespace?std;
#define?SIZE?100??????????????????????????????????/*存放學生數據的結構體*/
typedef?struct?
{
char?name[10];
int?id;
int?chinese;
int??math;
int?english;
int?sum;
}Student;
Student?stud[SIZE];
int?i;
int?sign=0sign1=0sign2=0sign3=0;
void?Unitedfile()?????????????????????????????????/*合并1.txt和2.txt為3.txt*/
{
FILE?*fp*p;
Student?studd;
fp=fopen(“1.txt““r“);????????????????????????/*以讀的方式打開1.txt*/
p=fopen(“3.txt““w“);?????????????????????????/*以寫的方式打開3.txt*/
????fscanf(fp“%*[^\n]%*c“);?????????????????????/*跳過一行字符串*/
fprintf(p“姓名??????學號???語文??數學??英語??\n“);?
while(fscanf(fp“%s%d%d%d%d“studd.name&studd.id&studd.chinese&studd.math&studd.english?)!=EOF)
{
fprintf(p“%-6s???%2d???????%d????%d?????%d\n“studd.namestudd.idstudd.chinesestudd.mathstudd.english?);
}?????????????????????????????????????????????/*讀取1.txt的數據進入結構體中,寫入3.txt,繼續讀取直結束*/
fclose(fp);???????????????????????????????????/*關閉文件1.txt*/
fp=fopen(“2.txt““r“);????????????????????????/*以寫的方式打開2.txt*/
fscanf(fp“%*[^\n]%*c“);??????????????????????/*跳過一行字符串*/
while(fscanf(fp“%s%d%d%d%d“studd.name&studd.id&studd.chinese&studd.math&studd.english?)!=EOF)
{
fprintf(p“%-6s???%2d???????%d????%d?????%d\n“studd.namestudd.idstudd.chinesestudd.mathstudd.english?);
}?????????????????????????????????????????????/*讀取2.txt的數據進入結構體中,寫入3.txt,繼續讀取直結束*/???
fclose(fp);???????????????????????????????????/*關閉文件2.txt*/
fclose(p);????????????????????????????????????/*關閉文件3.txt*/
}
void?findout()??????????????????????????????????/*抽取出三科成績中有補考的學生并保存在一個新文件4.txt*/
{
FILE?*fp*p;
Student?studd;
fp=fopen(“3.txt““r“);???????????????????????/*以讀的方式打開3.txt*/
p=fopen(“4.txt““w“);????????????????????????/*以寫的方式打開4.txt*/
fscanf(fp“%*[^\n]%*c“);??????????????????????/*跳過一行字符串*/
fprintf(p“姓名??????學號???語文??數學??英語\n“);?
while(fscanf(fp“%s%d%d%d%d“studd.name&studd.id&studd.chinese&studd.math&studd.english?)!=EOF)
{
if(studd.chinese<60||studd.english<60||studd.math<60)
{
fprintf(p“%-6s???%2d???????%d????%d?????%d\n“studd.namestudd.idstudd.chinesestudd.mathstudd.english?);
}
}?????????????????????????????????????????????/*從3.txt中讀入學生數據進結構體,判斷是否有不及格的課程,如果有,則寫入文件4.txt中*/
fclose(fp);???????????????????????????????????/*關閉文件3.txt*/
fclose(p);????????????????????????????????????/*關閉文件4.txt*/
}
void?Selectsort()????????????????????????????????/*對合并后的文件3.txt中的數據按總分降序排序*/
{
int?jkmax1sum1sum2q;
i=0;
Student?temp;
FILE?*fp;
fp=fopen(“3.txt““r“);???????????????????????/*以讀的方式打開3.txt*/
i=0;
fscanf(fp“%*[^\n]%*c“);?????????????????????/*跳過一行字符串*/
while(fscanf(fp“%s%d%d%d%d“stud[i].name&stud[i].id&stud[i].chinese&stud[i].math&stud[i].english?)!=EOF)
{
i++;
}????????????????????????????????????????????/*從3.txt中讀入數據進結構體數組stud中*/
fclose(fp);
for(j=0;j {????????????????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2011-12-24?14:27??源程序閱讀與調試課程設計報告\
?????文件???????66173??2011-12-14?12:08??源程序閱讀與調試課程設計報告\1.jpg
?????文件?????????197??2011-12-14?14:35??源程序閱讀與調試課程設計報告\1.txt
?????文件???????51411??2011-12-14?12:06??源程序閱讀與調試課程設計報告\2.jpg
?????文件?????????197??2011-12-14?14:36??源程序閱讀與調試課程設計報告\2.txt
?????文件???????51583??2011-12-14?12:07??源程序閱讀與調試課程設計報告\3.jpg
?????文件???????51876??2011-12-14?12:05??源程序閱讀與調試課程設計報告\4.jpg
?????文件???????63297??2011-12-14?12:07??源程序閱讀與調試課程設計報告\5.jpg
?????文件????????7111??2011-12-24?14:22??源程序閱讀與調試課程設計報告\學生管理系統-源程序閱讀與調試課程設計報告源代碼.txt
?????文件????????7111??2011-12-14?16:15??源程序閱讀與調試課程設計報告\源程序閱讀與調試課程設計報告.cpp
?????文件??????598528??2011-12-18?14:12??源程序閱讀與調試課程設計報告\源程序閱讀與調試課程設計報告.doc
?????文件??????825856??2011-12-14?15:33??源程序閱讀與調試課程設計報告\源程序閱讀與調試課程設計報告.ppt
- 上一篇:隨機點名系統源碼
- 下一篇:國科大數字圖像處理習題課重點
評論
共有 條評論