成绩管理单链表文件c语言,c语言学生信息管理完整.docx
學生信息管理系統(tǒng)
本題目設(shè)計目的是訓練學生的基本編程能力,了解管理信息系統(tǒng)的開發(fā)流程,熟悉 C 語言的文件和單鏈表的各種基本操作。本程序中涉及結(jié)構(gòu)體、單鏈表、文件等方面的知 識。通過本程序的訓練,使學生能對 C 語言的文件操作有一個更深刻的了解,掌握利用單 鏈表存儲結(jié)構(gòu)實現(xiàn)對學生成績管理的原理,為進一步開發(fā)出高質(zhì)量的管理信息系統(tǒng)打下堅 實的基礎(chǔ)。
1、問題定義 創(chuàng)建一個學生成績管理系統(tǒng)。假設(shè)系統(tǒng)中每個學生記錄只包括學生學號、學生姓名、 年齡、性別、出生年月、電話等信息。程序的運行效果如下圖所示,選擇任意菜單后,實 現(xiàn)相應(yīng)功能。
在問題定義階段要考慮題目的可行性和需求分析,接下來進入開發(fā)階段,完成系統(tǒng)設(shè) 計和系統(tǒng)實現(xiàn)的任務(wù)。
2、系統(tǒng)設(shè)計
2.1 總體設(shè)計 采用模塊化的程序設(shè)計方法,即將較大的任務(wù)按照一定的原則分為一個個較小的任 務(wù),然后分別設(shè)計各個小任務(wù)。需要注意的是劃分出來的模塊應(yīng)該相對獨立但又相關(guān),且 容易理解。可以用模塊化層次結(jié)構(gòu)來分析其任務(wù)的劃分,一般從上到下進行,最上面一層 是主模塊,下面各層是其上一層模塊的逐步細化描述。
本成績管理系統(tǒng)要求采用數(shù)組實現(xiàn),它由如下六大功能模塊組成: 輸入學生記錄。
查詢學生記錄。
刪除學生記錄。 顯示所有學生記錄。 統(tǒng)計學生人數(shù)。刷新當前信息。
2.2詳細設(shè)計
2.2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計
學生個人信息結(jié)構(gòu)體
結(jié)構(gòu)體 struct student 將用于存儲學生的基本信息,它將作為單鏈表的數(shù)據(jù)域。
struct record /* 結(jié)構(gòu)體 */
{
char code[LEN+1] 。 /* 學號 */
char name[LEN+1] 。 /* 姓名 */
int age 。 /* 年齡 */
char sex[3] 。 /* 性別 */
char date[LEN+1] 。 /* 出生年月 */
char tel[LEN+1] 。 /* 電話號碼 */
}stu[N] 。
2.2.2輸入記錄模塊
void readfile()/* 建立信息 */
{
char *p="student.txt" 。
FILE *fp 。
int i=0 。
if ((fp=fopen("student.txt","r"))==NULL)
{
printf("Open file %s error! Strike any key to exit!",p) 。 system("pause")。
exit(0) 。
}
while(fscanf(fp,"%s %s %d %s %s %s",stu[i].code,stu[i].name,&stu[i].age, stu[i].sex,stu[i].date,stu[i].tel)==8)
{ i++ 。 i=i 。
}
fclose(fp) 。
n=i。 printf(" 錄入完畢! \n") 。
}
2.2.3查詢記錄模塊
void seek() /* 查找 */
{
int i,item,flag 。
char s1[21]。 /* 以姓名和學號最長長度 +1為準 */ printf("\n") 。
printf(" 1. 按學號查詢 \n") 。
printf(" 2. 退出本菜單 \n") 。 printf("\n") 。
while(1)
{
printf(" 請選擇子菜單編號 :") 。 scanf("%d",&item) 。
flag=0 。 switch(item)
{
case 1:
printf(" 請輸入要查詢的學生的學號 :\n") 。 scanf("%s",s1) 。
for(i=0 。 i
{
flag=1 。
printf(" 學生學號 學生姓名 年齡 性別 出生年月 電話 \n") 。 printf("\n") 。
printf("%6s %7s %6d %5s %9s %10s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].date,stu[i].tel) 。
}
if(flag==0)
printf(" 該學號不存在! \n") 。 break。
case 2:return。
default:printf(" 請在 1-2 之間選擇 \n") 。
}
}
}
2.2.4刪除記錄模塊
void del()
{
int i,j,flag=0 。
char s1[LEN+1] 。
printf(" 請輸入要刪除學生的學號 :\n") 。
scanf("%s",s1) 。
for(i=0 。 i
if(strcmp(stu[i].code,s1)==0)
{
fla
總結(jié)
以上是生活随笔為你收集整理的成绩管理单链表文件c语言,c语言学生信息管理完整.docx的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux终端vim底行模式点冒号,Vi
- 下一篇: c语言函数汉诺塔不用move,C语言——