版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 題目:學(xué)生信息管理系統(tǒng)</p><p><b> 一、需求分析</b></p><p><b> 任務(wù)要求:</b></p><p> 自學(xué)C語(yǔ)言中有關(guān)鏈表及外部文件的內(nèi)容,設(shè)計(jì)學(xué)生信息管理系統(tǒng)。具體要求如下:</p><p> ◆ 建立學(xué)生信息,信息至少包括名字、性別
2、、年齡、學(xué)號(hào)、系別、家庭信息等內(nèi)容;</p><p> ◆ 能夠提供添加、刪除和修改學(xué)生信息等功能;</p><p> ◆ 能將通訊錄保存在文件中;</p><p> ◆ 能夠按指定方式輸出學(xué)生信息。</p><p><b> 系統(tǒng)功能需求分析:</b></p><p> ★ 1、為存儲(chǔ)
3、學(xué)生信息,需定義一個(gè)結(jié)構(gòu)體類型,成員名字、性別、年齡、學(xué)號(hào)、系別、家庭信息等,并建立鏈表,定義該結(jié)構(gòu)體類型的指針,用于指向各結(jié)點(diǎn);</p><p> ★ 2、分別建立具有添加、刪除、修改、查詢等功能的子函數(shù),完成相應(yīng)功能,對(duì)程序?qū)崿F(xiàn)模塊化。這其中要用到對(duì)鏈表的刪除、插入等知識(shí)。刪除時(shí)用一結(jié)構(gòu)體指針指向鏈表的第一個(gè)結(jié)點(diǎn),檢查該節(jié)點(diǎn)的值是否等于輸入的要?jiǎng)h除的學(xué)號(hào),若相等就刪除,不相等則后移指針,直至表尾。插入時(shí)也要
4、先找到相應(yīng)結(jié)點(diǎn),再添加。</p><p> ★3、為實(shí)現(xiàn)存儲(chǔ)功能,需用到文件的相關(guān)函數(shù),打開文件,將添加、修改或刪除的信息存入磁盤中。</p><p> ★4、為以表格的形式輸出文件,宏定義格式化輸出語(yǔ)句,指定輸出學(xué)生信息。</p><p><b> 二、概要設(shè)計(jì)</b></p><p><b> 系統(tǒng)
5、總體設(shè)計(jì)框架:</b></p><p> 對(duì)程序進(jìn)行模塊化,建立添加、修改、刪除、查找和顯示功能的子函數(shù),各子函數(shù)中運(yùn)用鏈表存儲(chǔ)數(shù)據(jù)。從主函數(shù)開始執(zhí)行,調(diào)用各個(gè)子函數(shù),并運(yùn)用文件相關(guān)知識(shí)將信息存入磁盤中。</p><p><b> 系統(tǒng)功能模塊圖:</b></p><p><b> 三、詳細(xì)設(shè)計(jì)</b>&
6、lt;/p><p> 主要功能模塊的算法設(shè)計(jì)思路如下:</p><p> 1、查詢通訊錄信息(void chakan())</p><p> ?。?)為開辟一個(gè)新單元</p><p> ?。?)輸入查詢關(guān)鍵字:</p><p> ?。?)讀取保存的文件數(shù)據(jù)輸入ASCLL字符:</p><p>
7、?。?)在鏈表中尋找相應(yīng)結(jié)點(diǎn);</p><p> ?。?)調(diào)用輸出函數(shù),輸出結(jié)點(diǎn)信息。</p><p> 2、添加信息函數(shù)(void add())</p><p> ?。?)定義指向結(jié)構(gòu)體變量的指針;</p><p> ?。?)移動(dòng)指針,找到插入結(jié)點(diǎn);</p><p> (3)在要插入的結(jié)點(diǎn)輸入信息;</p&
8、gt;<p> ?。?)調(diào)用保存函數(shù),打開文件,保存輸入信息。</p><p> 3、刪除信息函數(shù)(void del())</p><p> ?。?)定義指向結(jié)構(gòu)體變量的指針;</p><p> (2)用指針檢驗(yàn)鏈表中是否有記錄,若沒(méi)記錄,返回主函數(shù);</p><p> ?。?)根據(jù)要修改的編號(hào)查找要?jiǎng)h除的結(jié)點(diǎn);</p
9、><p> ?。?)修改鏈表,刪除對(duì)應(yīng)結(jié)點(diǎn)。</p><p> 4、修改信息函數(shù)(void xiugai())</p><p> ?。?)定義指向結(jié)構(gòu)體變量的指針;</p><p> ?。?)讀取保存的文件數(shù)據(jù)輸入ASCLL字符:</p><p> (3)用指針檢驗(yàn)鏈表中是否有記錄,若沒(méi)記錄,返回主函數(shù);</p&
10、gt;<p> ?。?)根據(jù)要修改的編號(hào)查找對(duì)應(yīng)結(jié)點(diǎn);</p><p><b> ?。?)修改信息;</b></p><p> ?。?)打開文件,保存修改記錄。</p><p> 5、保存信息函數(shù)(baocun())</p><p> (1)定義指向結(jié)構(gòu)體變量的指針;</p><p&
11、gt; ?。?)用文件指針指向要讀寫的磁盤文件名,若沒(méi)有則新建此文件名:</p><p> ?。?)用指針檢驗(yàn)鏈表中是否有記錄,若沒(méi)記錄,返回主函數(shù):</p><p> (4)打開文件,保存記錄:</p><p> 6、屏幕操作函數(shù)(void stubent187())</p><p> (1)以一定格式輸出所想要的圖形:</p&
12、gt;<p><b> 四、主要源程序代碼</b></p><p> 定義變量:(對(duì)整個(gè)程序定義全局變量)</p><p> #include "stdio.h"</p><p> #include "conio.h"</p><p> #define ST
13、UDENT ID /*所有STUDENT都用ID來(lái)代替*/</p><p> typedef struct node /*定義結(jié)構(gòu)體*/</p><p> { char ming[50]; /*名字*/</p><p> char xing[50];
14、 /*性別*/</p><p> char nian[50]; /*年齡*/</p><p> int xuehao; /*學(xué)號(hào)*/</p><p> char xibie[50]; /*專
15、業(yè)*/</p><p> char sushe[50]; /*宿舍號(hào)*/</p><p> char jia[50]; /*家庭地址*/</p><p> struct node *next;</p><p> }ID;
16、 /*學(xué)生信息(變量名)*/</p><p> ID *head=NULL; /*定義一個(gè)頭指針*/</p><p> FILE *zhi; /*定義一個(gè)文件指針*/</p><p> 主菜單界面:(進(jìn)入屏幕界面的形式)</p><p> void
17、 stubent187() /*屏幕格式函數(shù)*/</p><p> { printf("****************************************\n");</p><p> printf("* 學(xué)生信息管理系統(tǒng) *\n");</p><p>
18、printf("* *\n");</p><p> printf("* 請(qǐng)選擇:1:查看; 2:添加; 3:刪除; *\n");</p><p> printf("* 4:修改; 0:退出系統(tǒng)
19、 *\n");</p><p> printf("* *\n");</p><p> printf("*******************************************\n");</p><p> print
20、f(">>>>>>>>>>>>>輸入 0~4 數(shù)字<<<<<<<<<<<<<\n");</p><p><b> return ;</b></p><p><b> }</b
21、></p><p> 查看學(xué)生信息記錄:(對(duì)以保存在磁盤文件的學(xué)生信息進(jìn)行查詢)</p><p> void chakan()</p><p> { /* 查看*/</p><p><b> ID *t;</b></p><p&g
22、t;<b> t=head;</b></p><p> t=(ID *)malloc(sizeof(ID)); /*為t開辟一個(gè)新單元*/</p><p> if((zhi=fopen("yihu1.txt","rb"))==NULL) printf("沒(méi)有此文件\n");</p>
23、<p><b> else</b></p><p> { printf("%10s%10s%10s%10s%10s%10s%10s\n","ming","xing","nian","xuehao","eng","sushe",&quo
24、t;jia"); /*輸出一個(gè)屏幕格式*/</p><p> while (!feof(zhi))</p><p> { fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",&t->ming,&t->xing,&t->nian,&t->xueha
25、o,&t->xibie,&t->sushe,&t->jia); /*讀取保存的文件數(shù)據(jù)輸入ASCLL字符:*/</p><p> printf("%10s%10s%10s%10d%10s%10s%10s\n",t->ming,t->xing,t->nian,t->xuehao,t->xibie,t->s
26、ushe,t->jia); /*以這形式輸出各個(gè)學(xué)生信息*/</p><p> t->next=(ID *)malloc(sizeof(ID));t=t->next;</p><p><b> }</b></p><p><b> };</b></p><p>&l
27、t;b> }</b></p><p> 添加學(xué)生信息記錄:()</p><p> void add()</p><p><b> {</b></p><p> char i; /*添加*/</p><p> I
28、D *t1,*t2;</p><p> t1=t2=NULL;</p><p> loop: t1=(ID *)malloc(sizeof(ID)); /*為t1開辟一個(gè)新單元*/</p><p> printf("請(qǐng)輸入姓名:");scanf("%s",&t1->ming);
29、 /* 姓名 */</p><p> printf("請(qǐng)輸入性別:");scanf("%s",&t1->xing); /* 性別 */</p><p> printf("請(qǐng)輸入年齡:");scanf("%s",&(t1->nian)); /* 年齡 */&l
30、t;/p><p> printf("請(qǐng)輸入學(xué)號(hào):");scanf("%d",&(t1->xuehao)); /* 學(xué)號(hào) */</p><p> printf("請(qǐng)輸入系別:");scanf("%s",&(t1->xibie)); /*系別*/</p>&l
31、t;p> printf("請(qǐng)輸入宿舍號(hào):");scanf("%s",&(t1->sushe)); /*宿舍號(hào)*/</p><p> printf("請(qǐng)輸入家庭地址:");scanf("%s",&(t1->jia)); /*家庭地址*/</p><p> t1->
32、next=NULL;</p><p> if (head==NULL) /*如果頭結(jié)點(diǎn)為空*/</p><p> { head=t1; /*t1指向頭結(jié)點(diǎn)*/</p><p><b> t2=t1;</b></p><p><b> }&
33、lt;/b></p><p><b> else {</b></p><p><b> t2=head;</b></p><p> while (t2->next!=NULL) t2=t2->next; /*沒(méi)有成立則指向下個(gè)結(jié)點(diǎn)*/</p><p> t2->n
34、ext=t1;</p><p> } getchar();</p><p> printf("是否繼續(xù)添加(Y/N):\n");</p><p> scanf("%s",&i); /*輸入Y/N*/</p><p> if(i=='y'||i=='Y
35、9;) </p><p> {clrscr(); goto loop; /* 清屏 在 循環(huán)*/</p><p><b> }</b></p><p> else {printf("是否保存此次添加(Y/N)\n");scanf("%s",&i);</p>
36、;<p> if(i=='y'||i=='Y') /*是否要保存*/</p><p> {baocun(); /*調(diào)用保存*/</p><p> clrscr(); /*清屏*/</p><p> stubent187();/*調(diào)用屏幕函數(shù)*/</p><p> p
37、rintf("保存成功");</p><p><b> }</b></p><p> else if(i=='n'||i=='N')</p><p><b> {</b></p><p> clrscr(); /*清屏*/<
38、;/p><p> stubent187();} /*調(diào)用屏幕函數(shù)*/</p><p><b> }</b></p><p><b> return ;</b></p><p><b> }</b></p><p> 刪除學(xué)生信息操作:
39、(對(duì)以存的學(xué)生信息進(jìn)行刪除)</p><p> void del()</p><p> { /*刪除*/</p><p> ID *A,*B; /*定義指針*/</p><p> char t,i;int xuehao; /*定義整型變量
40、與字符型變量*/</p><p><b> A=B=NULL;</b></p><p> if((zhi=fopen("yihu1.txt","a+"))==NULL) printf("沒(méi)有此信息文件\n");</p><p><b> else</b>&l
41、t;/p><p> { loop: printf("請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào):");scanf("%d",&xuehao);</p><p> while (!feof(zhi))</p><p> { fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",
42、&A->ming,&A->xing,&A->nian,&A->xuehao,&A->xibie,&A->sushe,&A->jia); /*讀取保存的文件數(shù)據(jù)輸入ASCLL字符:*/</p><p> if(A!=NULL && A->xuehao!=xuehao)</p>&l
43、t;p> A=A->next;</p><p> else break;</p><p><b> }</b></p><p> if (A->xuehao==xuehao)</p><p> { head=A->next;</p><p><b>
44、; free(*A);</b></p><p> printf("成功!\n");</p><p> printf("是否繼續(xù)刪除(Y/N)");scanf("%s",&i);</p><p> if(i=='y'||i=='Y')</p&g
45、t;<p> {clrscr(); goto loop;</p><p><b> }</b></p><p> if(i=='n'||i=='N')</p><p> printf("是否保存此次刪除(Y/N)\n");scanf("%s",&
46、;i);</p><p> if(i=='y'||i=='Y')</p><p><b> baocun();</b></p><p><b> else</b></p><p><b> clrscr();</b></p>
47、<p> stubent187();</p><p><b> }</b></p><p> else printf("無(wú)法找到此編號(hào)\n");</p><p><b> }</b></p><p><b> }</b></p&
48、gt;<p> 修改學(xué)生信息操作:(對(duì)保存的學(xué)生信息進(jìn)行修改)</p><p> void xiugai()</p><p> { /*修改*/</p><p> ID *t1,*t2; /*定義指針*/</p><p> in
49、t i;char xuehao; /*定義整型變量與字符型變量*/</p><p><b> t1=head;</b></p><p> if((zhi=fopen("yihu1.txt","a+"))==NULL) printf("沒(méi)有此信息文件\n");</p>&l
50、t;p> loop: printf("請(qǐng)輸入要修改的學(xué)號(hào):");scanf("%s",&xuehao); /* 輸入編號(hào)*/</p><p> while (!feof(zhi))</p><p> {fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",&
51、t1->ming,&t1->xing,&t1->nian,&t1->xuehao,&t1->xibie,&t1->sushe,&t1->jia); *讀取保存的文件數(shù)據(jù)輸入ASCLL字符:*/</p><p> if(t1!=NULL && t1->xuehao!=xuehao)</p>
52、;<p> t1=t1->next;</p><p> else break;</p><p><b> }</b></p><p> if (t1->xuehao==xuehao)</p><p> { fprintf(zhi,"%10s%10s%10s%10d%1
53、0s%10s%10s\n",t1->ming,t1->xing,t1->nian,t1->xuehao,t1->xibie,t1->sushe,t1->jia);</p><p> printf("輸入名字:");scanf("%s",&t1->ming); /*名字*/</p&g
54、t;<p> printf("輸入性別:");scanf("%s",&(t1->xing)); /*性別*/</p><p> printf("輸入年齡:");scanf("%s",&(t1->nian)); /*年齡*/</p>&l
55、t;p> printf("輸入學(xué)號(hào):");scanf("%s",&t1->xuehao); /*學(xué)號(hào)*/</p><p> printf("輸入系別:");scanf("%s",&(t1->xibie)); /*系別*/
56、 printf("輸入專業(yè):");scanf("%s",&(t1->sushe)); /* 宿舍號(hào) */ printf("輸入家庭地址:");scanf("%s",&(t1->jia)); /* 家庭地址*/</p>
57、<p> printf("成功!\n");</p><p> printf("是否繼續(xù)修改(Y/N)");scanf("%d",&i);</p><p> if(i=='y'||i=='Y')</p><p> {clrscr(); goto loo
58、p;</p><p><b> }</b></p><p> if(i=='n'||i=='N')</p><p> printf("是否保存此次修改(Y/N)\n");scanf("%c",&i);</p><p> if(i==&
59、#39;y'||i=='Y')</p><p><b> baocun();</b></p><p><b> else</b></p><p> clrscr(); /*清屏*/ </p><p> stubent187(); /*調(diào)用屏幕函數(shù)*/
60、</p><p><b> }</b></p><p> else printf("沒(méi)有此編號(hào)\n");</p><p><b> return;</b></p><p><b> }</b></p><p> 保存添加,
61、刪除,修改學(xué)生的信息:(操作過(guò)后是否保存)</p><p> baocun() /*保存*/</p><p><b> {</b></p><p> ID *t=head; /*定義指針*/</p><p> zhi=fopen("yi
62、hu1.txt","a+"); /*(讀寫 yihu.txt文本) */</p><p> while (t!=NULL){</p><p> fprintf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",t->ming,t->xing,t->nian,t->xuehao,t
63、->xibie,t->sushe,t->jia); /*以zhi為文件指針保存*/</p><p> t=t->next;</p><p><b> }</b></p><p> fclose(zhi); /*關(guān)閉此文件*/</p><p&g
64、t; printf("成功!\n"); </p><p><b> return ;</b></p><p><b> }</b></p><p> 主菜單操作:(選擇所需要的操作)</p><p> main() /*主函數(shù)*/</p
65、><p><b> {</b></p><p> int i; /*定義整形變量i*/</p><p> stubent187(); /*調(diào)用屏幕函數(shù)*/</p><p><b> while(1)</b></p><p><b>
66、{</b></p><p> scanf("%d",&i); /*輸入要執(zhí)行的操作*/</p><p><b> switch(i)</b></p><p> { case 1:chakan();break; /*調(diào)用查看函數(shù)*/</p><p>
67、 case 2:add();break; /*調(diào)用添加函數(shù)*/</p><p> case 3:del();break; /*調(diào)用刪除函數(shù)*/</p><p> case 4:xiugai();break; /*調(diào)用修改函數(shù)*/</p><p> case 0:exit(0); /*結(jié)束*/<
68、/p><p> default:printf("輸入錯(cuò)誤,請(qǐng)?jiān)诖溯斎隲n");continue;</p><p> } /*輸入不是0~4的,則返回*/</p><p><b> }</b></p><p><b> }</b></p>&l
69、t;p><b> ?、裨春瘮?shù)代碼:</b></p><p> void chakan()</p><p> { /* 查看*/</p><p><b> ID *t;</b></p><p><b> t=head;&
70、lt;/b></p><p> t=(ID *)malloc(sizeof(ID)); /*為t開辟一個(gè)新單元*/</p><p> if((zhi=fopen("yihu1.txt","rb"))==NULL) printf("沒(méi)有此文件\n");</p><p><b>
71、else</b></p><p> { printf("%10s%10s%10s%10s%10s%10s%10s\n","ming","xing","nian","xuehao","eng","sushe","jia"); /*輸
72、出一個(gè)屏幕格式*/</p><p> while (!feof(zhi))</p><p> { fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",&t->ming,&t->xing,&t->nian,&t->xuehao,&t->xibie,&a
73、mp;t->sushe,&t->jia); /*讀取保存的文件數(shù)據(jù)輸入ASCLL字符:*/</p><p> printf("%10s%10s%10s%10d%10s%10s%10s\n",t->ming,t->xing,t->nian,t->xuehao,t->xibie,t->sushe,t->jia);
74、 /*以這形式輸出各個(gè)學(xué)生信息*/</p><p> t->next=(ID *)malloc(sizeof(ID));t=t->next;</p><p><b> }</b></p><p><b> };</b></p><p><b> }</b>&
75、lt;/p><p> void add()</p><p><b> {</b></p><p> char i; /*添加*/</p><p> ID *t1,*t2;</p><p> t1=t2=NULL;</p>
76、<p> loop: t1=(ID *)malloc(sizeof(ID)); /*為t1開辟一個(gè)新單元*/</p><p> printf("請(qǐng)輸入姓名:");scanf("%s",&t1->ming); /* 姓名 */</p><p> printf("請(qǐng)輸入性別
77、:");scanf("%s",&t1->xing); /* 性別 */</p><p> printf("請(qǐng)輸入年齡:");scanf("%s",&(t1->nian)); /* 年齡 */</p><p> printf("請(qǐng)輸入學(xué)號(hào):");sc
78、anf("%d",&(t1->xuehao)); /* 學(xué)號(hào) */</p><p> printf("請(qǐng)輸入系別:");scanf("%s",&(t1->xibie)); /*系別*/</p><p> printf("請(qǐng)輸入宿舍號(hào):");scanf("%
79、s",&(t1->sushe)); /*宿舍號(hào)*/</p><p> printf("請(qǐng)輸入家庭地址:");scanf("%s",&(t1->jia)); /*家庭地址*/</p><p> t1->next=NULL;</p><p> if (head==NULL)
80、 /*如果頭結(jié)點(diǎn)為空*/</p><p> { head=t1; /*t1指向頭結(jié)點(diǎn)*/</p><p><b> t2=t1;</b></p><p><b> }</b></p><p><b> else {<
81、;/b></p><p><b> t2=head;</b></p><p> while (t2->next!=NULL) t2=t2->next; /*沒(méi)有成立則指向下個(gè)結(jié)點(diǎn)*/</p><p> t2->next=t1;</p><p> } getchar();</p&
82、gt;<p> printf("是否繼續(xù)添加(Y/N):\n");</p><p> scanf("%s",&i); /*輸入Y/N*/</p><p> if(i=='y'||i=='Y') </p><p> {clrscr(); goto l
83、oop; /* 清屏 在 循環(huán)*/</p><p><b> }</b></p><p> else {printf("是否保存此次添加(Y/N)\n");scanf("%s",&i);</p><p> if(i=='y'||i=='Y')
84、 /*是否要保存*/</p><p> {baocun(); /*調(diào)用保存*/</p><p> clrscr(); /*清屏*/</p><p> stubent187();/*調(diào)用屏幕函數(shù)*/</p><p> printf("保存成功");</p><p><
85、b> }</b></p><p> else if(i=='n'||i=='N')</p><p><b> {</b></p><p> clrscr(); /*清屏*/</p><p> stubent187();} /*調(diào)用屏幕函
86、數(shù)*/</p><p><b> }</b></p><p><b> return ;</b></p><p><b> }</b></p><p> void del()</p><p> {
87、 /*刪除*/</p><p> ID *A,*B; /*定義指針*/</p><p> char t,i;int xuehao; /*定義整型變量與字符型變量*/</p><p><b> A=B=NULL;</b></p><p> if((zhi=fopen
88、("yihu1.txt","a+"))==NULL) printf("沒(méi)有此信息文件\n");</p><p><b> else</b></p><p> { loop: printf("請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào):");scanf("%d",&xueha
89、o);</p><p> while (!feof(zhi))</p><p> { fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",&A->ming,&A->xing,&A->nian,&A->xuehao,&A->xibie,&A->s
90、ushe,&A->jia); /*讀取保存的文件數(shù)據(jù)輸入ASCLL字符:*/</p><p> if(A!=NULL && A->xuehao!=xuehao)</p><p> A=A->next;</p><p> else break;</p><p><b> }</b
91、></p><p> if (A->xuehao==xuehao)</p><p> { head=A->next;</p><p><b> free(*A);</b></p><p> printf("成功!\n");</p><p> p
92、rintf("是否繼續(xù)刪除(Y/N)");scanf("%s",&i);</p><p> if(i=='y'||i=='Y')</p><p> {clrscr(); goto loop;</p><p><b> }</b></p><
93、p> if(i=='n'||i=='N')</p><p> printf("是否保存此次刪除(Y/N)\n");scanf("%s",&i);</p><p> if(i=='y'||i=='Y')</p><p><b> ba
94、ocun();</b></p><p><b> else</b></p><p><b> clrscr();</b></p><p> stubent187();</p><p><b> }</b></p><p> else
95、 printf("無(wú)法找到此編號(hào)\n");</p><p><b> }</b></p><p><b> }</b></p><p> void xiugai()</p><p> { /*修改*/&l
96、t;/p><p> ID *t1,*t2; /*定義指針*/</p><p> int i;char xuehao; /*定義整型變量與字符型變量*/</p><p><b> t1=head;</b></p><p> if((zhi=fopen("yihu1
97、.txt","a+"))==NULL) printf("沒(méi)有此信息文件\n");</p><p> loop: printf("請(qǐng)輸入要修改的學(xué)號(hào):");scanf("%s",&xuehao); /* 輸入編號(hào)*/</p><p> while (!feof(zhi))<
98、/p><p> {fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",&t1->ming,&t1->xing,&t1->nian,&t1->xuehao,&t1->xibie,&t1->sushe,&t1->jia); *讀取保存的文件數(shù)據(jù)輸入ASCLL字符:
99、*/</p><p> if(t1!=NULL && t1->xuehao!=xuehao)</p><p> t1=t1->next;</p><p> else break;</p><p><b> }</b></p><p> if (t1->x
100、uehao==xuehao)</p><p> { fprintf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",t1->ming,t1->xing,t1->nian,t1->xuehao,t1->xibie,t1->sushe,t1->jia);</p><p> printf(&quo
101、t;輸入名字:");scanf("%s",&t1->ming); /*名字*/</p><p> printf("輸入性別:");scanf("%s",&(t1->xing)); /*性別*/</p><p> printf("輸入年齡:&
102、quot;);scanf("%s",&(t1->nian)); /*年齡*/</p><p> printf("輸入學(xué)號(hào):");scanf("%s",&t1->xuehao); /*學(xué)號(hào)*/</p><p> printf("輸入系別:");s
103、canf("%s",&(t1->xibie)); /*系別*/ printf("輸入專業(yè):");scanf("%s",&(t1->sushe)); /* 宿舍號(hào) */ printf("輸入家庭地址:")
104、;scanf("%s",&(t1->jia)); /* 家庭地址*/</p><p> printf("成功!\n");</p><p> printf("是否繼續(xù)修改(Y/N)");scanf("%d",&i);</p><p>
105、; if(i=='y'||i=='Y')</p><p> {clrscr(); goto loop;</p><p><b> }</b></p><p> if(i=='n'||i=='N')</p><p> printf("是否保
106、存此次修改(Y/N)\n");scanf("%c",&i);</p><p> if(i=='y'||i=='Y')</p><p><b> baocun();</b></p><p><b> else</b></p><p
107、> clrscr(); /*清屏*/ </p><p> stubent187(); /*調(diào)用屏幕函數(shù)*/</p><p><b> }</b></p><p> else printf("沒(méi)有此編號(hào)\n");</p><p><b> return;&l
108、t;/b></p><p><b> }</b></p><p> baocun() /*保存*/</p><p><b> {</b></p><p> ID *t=head; /*定義指針*/</p>
109、<p> zhi=fopen("yihu1.txt","a+"); /*(讀寫 yihu.txt文本) */</p><p> while (t!=NULL){</p><p> fprintf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",t->ming,t->
110、xing,t->nian,t->xuehao,t->xibie,t->sushe,t->jia); /*以zhi為文件指針保存*/</p><p> t=t->next;</p><p><b> }</b></p><p> fclose(zhi);
111、 /*關(guān)閉此文件*/</p><p> printf("成功!\n"); </p><p><b> return ;</b></p><p><b> }</b></p><p> main() /*主函數(shù)*/</p><
112、;p><b> {</b></p><p> int i; /*定義整形變量i*/</p><p> stubent187(); /*調(diào)用屏幕函數(shù)*/</p><p><b> while(1)</b></p><p><b> {</b&g
113、t;</p><p> scanf("%d",&i); /*輸入要執(zhí)行的操作*/</p><p><b> switch(i)</b></p><p> { case 1:chakan();break; /*調(diào)用查看函數(shù)*/</p><p> case 2:a
114、dd();break; /*調(diào)用添加函數(shù)*/</p><p> case 3:del();break; /*調(diào)用刪除函數(shù)*/</p><p> case 4:xiugai();break; /*調(diào)用修改函數(shù)*/</p><p> case 0:exit(0); /*結(jié)束*/</p>&
115、lt;p> default:printf("輸入錯(cuò)誤,請(qǐng)?jiān)诖溯斎隲n");continue;</p><p> } /*輸入不是0~4的,則返回*/</p><p><b> }</b></p><p><b> }</b></p><p>&l
116、t;b> 5、歸納總結(jié)</b></p><p> ①實(shí)訓(xùn)中遇到的問(wèn)題及解決方法:</p><p> 在這次的實(shí)訓(xùn)中,主要遇到的問(wèn)題是在修改第一個(gè)操作—查看時(shí),出現(xiàn)了一些亂碼,與規(guī)格不是所想實(shí)現(xiàn)的要求。后經(jīng)老師指導(dǎo)解決了此問(wèn)題,就是fprintf存文件數(shù)據(jù)后,需用fscanf來(lái)調(diào)用輸出文件數(shù)據(jù)。</p><p> ②設(shè)計(jì)中尚存的不足之處:&l
117、t;/p><p> 關(guān)于這次的程序,有許多不足,比如在查詢的方式中,只有單一的一個(gè)查詢方式;程序界面不夠美觀大方;刪除與修改的功能,沒(méi)有實(shí)現(xiàn)我所想編程的操作;</p><p><b> ③感想和心得體會(huì):</b></p><p> 通過(guò)這次課程設(shè)計(jì),我對(duì)C語(yǔ)言有了更深刻的了解,自身不僅對(duì)增強(qiáng)了程序的編寫能力,更鞏固了專業(yè)知識(shí),對(duì)程序的模塊化觀
118、念也又模糊逐漸變的清晰了。雖然在程序的運(yùn)行與調(diào)試過(guò)程中出現(xiàn)了很多錯(cuò)誤,但在通過(guò)反復(fù)地復(fù)習(xí)課本上的相關(guān)知識(shí)和在老師,同學(xué)的指導(dǎo)下,不停地修改與調(diào)試,我終于完成了這段程序。雖然程序沒(méi)有預(yù)想中的實(shí)現(xiàn)多功能。但在編程過(guò)程中,我認(rèn)識(shí)到了C語(yǔ)言的靈活性與嚴(yán)謹(jǐn)性,同一個(gè)功能可以由不同的語(yǔ)句來(lái)實(shí)現(xiàn)。編寫程序時(shí)要特別注意細(xì)節(jié)方面的問(wèn)題,一個(gè)小小的疏忽就能導(dǎo)致整個(gè)程序不能運(yùn)行。</p><p> 當(dāng)然我也認(rèn)識(shí)到了自己的不足之處,如
119、對(duì)鏈表相關(guān)知識(shí)的欠缺,程序的構(gòu)想不完好,文件運(yùn)用的不熟練等。因此在今后的學(xué)習(xí)中,應(yīng)多問(wèn)老師,多向同學(xué)學(xué)習(xí)。</p><p><b> 6、參考資料</b></p><p> [1] 譚浩強(qiáng). C程序設(shè)計(jì)(第三版). 清華大學(xué)出版社, </p><p> [2] 沈嵐嵐 學(xué)生成績(jī)管理系統(tǒng) 文件附件
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語(yǔ)言課程設(shè)計(jì)報(bào)告----學(xué)生信息管理系統(tǒng)
- 學(xué)生信息管理系統(tǒng)c語(yǔ)言課程設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)報(bào)告---學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告---學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告--學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生信息管理系統(tǒng)設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生信息管理系統(tǒng)設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--- 學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)——學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)---學(xué)生信息管理系統(tǒng)
- 學(xué)生信息管理系統(tǒng)-c語(yǔ)言課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)---學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生信息管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論