資源簡介
程序功能
(1)存取功能,能夠從磁盤上的文本文件讀取學生信息,并將內(nèi)存中的學生信息保存到磁盤上的文件中。學生信息包括學號、姓名、數(shù)學成績、英語成績、政治成績。
(2)查詢功能,分別能按學生學號和學生姓名進行查找學生信息,根據(jù)提示輸入不同的數(shù)字,進行不同的查找方式。
(3)學生成績統(tǒng)計功能,能夠統(tǒng)計學生的平均成績和總成績。
(4)插入功能,能夠插入學生信息,若新插入的學號應經(jīng)存在系統(tǒng)中,會進行提示,此時不允許在插入具有相同學號的學生信息。
(5)修改功能,先用學號或姓名關鍵字查找要修改的學生的信息,若找到,則可進行修改。
(6)刪除功能,能夠刪除指定的學生信息。

代碼片段和文件信息
/*?File:StuManage.c
?*
?*?學生成績管理信息系統(tǒng)
?*?作者:阿龍
?*?使用時自己先建一個名為stumanage.txt的文件
?*?不然學生信息不能保存到磁盤上去的啊
?*/
#include?
#include?
#include?
#include?
#define?LEN?sizeof(struct?students)
/*定義結構體,用來存放學生信息*/
struct?score
{
double?math;
double?english;
double?politics;
};
struct?students
{
char?num[12];
char?name[15];
struct?score?sco;
struct?students?*next;
};
/*開始運行程序時,從stumanage.txt文件讀取學生信息到內(nèi)存中,并返回頭指針*/
struct?students?*InputMem(struct?students?*head)
{
FILE?*fp;
struct?students?*temp?=?NULL?*tail?=?NULL;
fp?=?fopen(“stumanage.txt“?“r+“);
if?(NULL?==?fp)
{
printf(“不能打開文件\n“);
return?head;
}
while?(!feof(fp))
{
temp?=?(struct?students?*)malloc(LEN);
/*判斷是否申請到內(nèi)存空間,若沒有返回頭指針,否則跳過if繼續(xù)執(zhí)行*/
if?(NULL?==?temp)
{
printf(“沒有申請到足夠的內(nèi)存空間\n“);
return?head;
}
fread(temp?LEN?1?fp);
if?(head?==?NULL)
{
head?=?temp;
tail?=?temp;
}
else
{
tail->next?=?temp;
tail?=?temp;
}
}
temp->next?=?NULL;?/*將動態(tài)鏈表最后節(jié)點的尾指針設為NULL*/
fclose(fp);
return?head;
}
/*退出時將內(nèi)存中的學生信息寫入到stumanage.txt文件中去*/
void?OutputMem(struct?students?*head)
{
FILE?*fp;
struct?students?*temp?=?NULL;
fp??=?fopen(“stumanage.txt“?“r+“);
if?(head?!=?NULL)
{
temp?=?head;
while?(temp->next?!=?NULL)
{
fwrite(temp?LEN?1?fp);
temp?=?temp->next;
}
}
fclose(fp);
}
/*程序運行結束時釋放申請的內(nèi)存空間*/
void?DelMem(struct?students?*head)
{
struct?students?*temp?=?head;
if?(temp?!=NULL)
{
while?(temp->next?!=NULL)
{
head?=?temp->next;
free(temp);
temp?=?head;
}
free(head);
}
}
/*打印信息管理系統(tǒng)功能使用說明*/
void?Instruction(void)
{
printf(“********************************************\n“);
printf(“??????????學生成績管理信息系統(tǒng)??????????\n\n“);
printf(“??使用說明\n“);
printf(“??查看所有信息請按?1???學生信息查詢請按?2\n“);
printf(“??學生信息插入請按?3???學生信息修改請按?4\n“);
printf(“??學生信息刪除請按?5???學生成績統(tǒng)計請按?6\n“);
printf(“??退出請按?0\n\n“);
printf(“********************************************\n“);
}
/*打印學生信息的表頭*/
void?Printtitle()
{
printf(“??學號??姓名??數(shù)學??英語??政治“);
}
/*輸出temp指針指向的單個學生的信息*/
void?PrintStuInfo(struct?students?*temp)
{
printf(“%6s%6s%6.1lf%6.1lf%6.1lf“?temp->num?temp->name?
temp->sco.mathtemp->sco.english?temp->sco.politics);
}
/*查看所有學生信息*/
void?Chakan(struct?students?*head)
{
struct?students?*temp?=?head;
if?(NULL?==?head)
{
printf(“沒有學生信息,請先輸入后再查看學生信息\n\n“);
}
else
{
printf(“????學生的所有信息如下:\n\n“);
Printtitle();
printf(“\n“);;
while?(temp->next!=NULL)
{
PrintStuInfo(temp);
printf(“\n“);
temp?=?temp->next;
}
printf(“\n\n“);
}
}
/*按學生學號進行查詢*/
struct?students?*NumQuery(struct?students?*head?char?number[])
{
struct?students?*temp?=?head;
while?(temp->next?!=?NULL)
{
if?(!strcmp(temp->num?number))
{
return?temp;
}
temp?=?temp->next;
}
return?NULL;
}
/*按學生姓名進行查詢*/
struct?students?*NameQuery(stru
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????9573??2008-09-21?20:15??學生成績管理信息系統(tǒng)\stumanage.c
?????文件?????134656??2008-09-21?20:27??學生成績管理信息系統(tǒng)\課程設計.doc
?????目錄??????????0??2008-09-21?20:25??學生成績管理信息系統(tǒng)
-----------?---------??----------?-----??----
???????????????144229????????????????????3
評論
共有 條評論