




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、程序設計課程設計報告課題名稱: 學生籍貫信息記錄簿專業(yè) 計算機科學與技術(shù)(軟件工程)學生姓名 班級學號指導教師完成日期 一 課程設計的目的-1二 設計內(nèi)容與要求-1三 主要技術(shù)指標及特點-13.0 信息描述(注:用流程圖表示)-13.1 創(chuàng)建信息鏈表并以磁盤文件保存;-23.2 讀取磁盤文件并顯示輸出所有學生的籍貫信息;-33.3 按學號或姓名查詢其籍貫;-53.4 按籍貫查詢并輸出該籍貫的所有學生;-93.5 能添加、刪除和修改學生的籍貫信息;-113.6 顯示輸出江蘇籍和非江蘇籍學生的信息并可分別存盤。-16四 設計小結(jié)-17五 程序源代碼-18六 參考文獻-29 一 課程設計的目的1.
2、加深對C語言程序設計課程知識的理解,掌握C語言應用程序的開發(fā)方法和步驟; 2. 進一步掌握和利用C語言進行課程設計的能力;3. 進一步理解和運用結(jié)構(gòu)化程序設計的思想和方法;4. 初步掌握開發(fā)一個小型實用系統(tǒng)的基本方法;5. 學會調(diào)試一個較長的程序的基本方法;6. 學會利用流程圖或N-S圖表示算法;7. 掌握書寫課程設計開發(fā)文檔的能力(書寫課程報告)。二設計內(nèi)容與要求 編制一個學生籍貫信息記錄簿,每個學生信息包括:學號、姓名、籍貫。具體功能要求如下: 1創(chuàng)建信息鏈表并以磁盤文件保存;2讀取磁盤文件并顯示輸出所有學生的籍貫信息;3按學號或姓名查詢其籍貫;4按籍貫查詢并輸出該籍貫的所有學生;5能添加
3、、刪除和修改學生的籍貫信息;6顯示輸出江蘇籍和非江蘇籍學生的信息并可分別存盤。 三.主要技術(shù)指標及特點 3.0 信息描述 (注:用流程圖表示)籍貫信息記錄簿建立鏈表錄入信息顯示信息查詢信息編輯信息分類管理主函數(shù)添加信息刪除信息修改信息3.1 創(chuàng)建信息鏈表并以磁盤文件保存;/*建立鏈表*/struct hj long number; char name10,address50; struct hj *next;/*文件操作函數(shù)*/FILE *fp;void openfile(char xx20) fp=fopen(xx,"ab+"); if(fp=NULL) fp=fopen
4、(xx,"wb");/*主函數(shù)*/int main(int argc, char* argv) begin: int t; system("cls"); printf("n 歡迎使用戶籍管理系統(tǒng)nnnnn"); printf(" 一 錄入學生籍貫信息nn"); printf(" 二 查編學生籍貫信息nn"); printf(" 三 刪除學生籍貫信息nn"); printf(" 四 退出程序nn"); printf(" 請您選擇:");m
5、m: scanf("%d",&t); switch(t) case 1: hjnew();break; case 2: hjselect();break; case 3: hjde();break; case 4:exit(0); default:printf("n 錯誤的選擇,請重新選擇:"); goto mm; goto begin; return 0; 3.2 讀取磁盤文件并顯示輸出所有學生的籍貫信息;void allselect(char a8)/全部查詢 int n=0;int k=0; system("cls");
6、 printf("n 歡迎使用戶籍管理系統(tǒng)n"); printf("n 籍貫方式信息nnn"); struct hj *p;struct hj *q=NULL,*head=NULL; fp=fopen(a,"rb"); if(fp=NULL) printf("n對不起,沒有記錄無法查詢!"); goto xxxx; rewind(fp); while(!feof(fp) n+; p=(struct hj *)malloc(sizeof(struct hj); fread(p,sizeof(struct hj),1,
7、fp); if(n=1) head=p; else q->next=p; q=p;q->next=NULL; struct hj *h1,*p2,*q3,*r4,*s5; h1=p2=(hj *)malloc(sizeof(struct hj); p2->next=head; while(p2->next!=NULL) q3=p2->next; r4=p2; while(q3->next!=NULL) if(q3->next->number<p2->next->number) r4=q3; q3=q3->next; if(
8、r4!=p2) s5=r4->next; r4->next=s5->next; s5->next=p2->next; p2->next=s5; p2=p2->next; head=h1->next->next; free(h1); p=head; while(p!=NULL&&n>0) n-; printf("n學號=%ld 姓名=%s",p->number,p->name); printf("n地址=%s",p->address); p=p->next;
9、 xxxx: printf("n顯示完畢n返回上級菜單退出程序n請 選 擇 :");xxx: scanf("%d",&n); switch(n) case 1:break; case 2:exit(0); default:printf("n錯誤的選擇,請重新選擇:"); goto xxx; void hjselect(void)/查詢編輯信息函數(shù) cxbegin: int a; system("cls"); printf("n 歡迎使用戶籍管理系統(tǒng)n"); printf("n
10、查詢編輯信息nnn"); printf("n 一 按學號方式查詢n"); printf("n 二 按姓名方式查詢n"); printf("n 三 按籍貫方式查詢n"); printf("n 四 顯示全部信息n"); printf("n 五 返回上級菜單n"); printf("n 請 選 擇 查 詢 方 式:");cxmm: scanf("%d",&a); switch(a) case 1: hjxmselect();goto cxbeg
11、in;break; case 2: hjxhselect();goto cxbegin;break; case 3: hjjgselect();goto cxbegin;break; case 4: allselect("hj.txt");goto cxbegin;break; case 5: break; default:printf("n錯誤的選擇,請重新選擇:"); goto cxmm; 3.3 按學號或姓名查詢其籍貫;/*查詢函數(shù)*/void hjxmselect(void) /按學號方式查詢函數(shù)ssmmx: int n=0; long hh;
12、system("cls"); printf("n 歡迎使用戶籍管理系統(tǒng)n"); printf("n 查詢編輯信息n"); printf("n 提示輸入0返回上級菜單nnn"); printf(" 請您輸入學號:"); scanf("%ld",&hh); if(hh!=0) struct hj *p; struct hj *q=NULL,*head=NULL; fp=fopen("hj.txt","rb"); if(fp=NULL
13、) printf("n沒有記錄,請輸入記錄然后再查詢!"); getch(); goto jjx; while(!feof(fp) n+; p=(struct hj *)malloc(sizeof(struct hj); fread(p,sizeof(struct hj),1,fp); if(n=1) head=p; else q->next=p; q=p; q->next=NULL; p=head; while(p!=NULL) if(p->number=hh) int a; printf("n 結(jié) 果 學號=%ld 姓名=%s",p
14、->number,p->name); printf("n 地址=%s",p->address); printf("nn 操 作 更改數(shù)據(jù) 刪除數(shù)據(jù) 查詢其他數(shù)據(jù) 返回上頁 退出程序nn 請您選擇操作:");ssmx: scanf("%d",&a); switch(a) void hjedit(struct hj *headd,struct hj *pp); void hjdelete(struct hj *headdd,struct hj *ss); case 1: hjedit(head,p); goto
15、ssmmx;break; case 2: hjdelete(head,p); goto ssmmx;break; case 3: goto ssmmx; case 4: goto jjx; case 5:exit(0); default:printf("n 錯誤的選擇,請重新選擇:"); goto ssmx; else p=p->next; int iiii=0; printf("n 沒有此記錄 1.重新查詢 2.返回上一頁 3.退出程序!"); printf("n 請選擇:");qqqq: scanf("%d&quo
16、t;,&iiii); switch(iiii) case 1: goto ssmmx; case 2: goto jjx; case 3: exit(0); default: printf("n 錯誤的選擇,請重新選擇:"); goto qqqq; goto jjx; jjx:;void hjxhselect(void)/按姓名方式查詢函數(shù)ssmm: int n=0; char hh10; system("cls"); printf("n 歡迎使用戶籍管理系統(tǒng)n"); printf("n 查詢編輯信息n")
17、; printf("n 提示輸入0返回上級菜單nnn"); printf(" 請您輸入姓名:"); scanf("%s",hh); if(strcmp(hh,"0")!=0) struct hj *p; struct hj *q=NULL,*head=NULL; fp=fopen("hj.txt","rb"); if(fp=NULL) printf("n沒有記錄,請輸入記錄然后再查詢!"); getch(); goto jjj; while(!feof(f
18、p) n+; p=(struct hj *)malloc(sizeof(struct hj); fread(p,sizeof(struct hj),1,fp); if(n=1) head=p; else q->next=p; q=p; q->next=NULL; p=head; while(p!=NULL) if(strcmp(p->name,hh)=0) int a; printf("n 結(jié) 果 學號=%ld 姓名=%s ",p->number,p->name); printf("n 地址=%s",p->addres
19、s); printf("nn 操 作 更改數(shù)據(jù) 刪除數(shù)據(jù) 查詢其他數(shù)據(jù) 返回上頁 退出程序nn 請您選擇操作:");ssm: scanf("%d",&a); switch(a) void hjedit(struct hj *headd,struct hj *pp); void hjdelete(struct hj *headdd,struct hj *ss); case 1: hjedit(head,p); goto ssmm;break; case 2: hjdelete(head,p); goto ssmm;break; case 3: go
20、to ssmm; case 4: goto jjj; case 5:exit(0); default:printf("n 錯誤的選擇,請重新選擇:"); goto ssm; else p=p->next; int iii=0; printf("n 沒有此記錄 1.重新查詢 2.返回上一頁 3.退出程序!"); printf("n 請選擇:");qqq: scanf("%d",&iii); switch(iii) case 1: goto ssmm; case 2: goto jjj; case 3:
21、exit(0); default: printf("n 錯誤的選擇,請重新選擇:"); goto qqq; goto jjj; jjj: ;3.4 按籍貫查詢并輸出該籍貫的所有學生;void hjjgselect(void)/按籍貫方式查詢yyy: int i; system("cls"); printf("n 歡迎使用戶籍管理系統(tǒng)n"); printf("n 籍貫方式查詢信息nnn"); printf("n 一 顯示所有信息n"); printf("n 二 顯示江蘇籍所有信息n&qu
22、ot;); printf("n 三 顯示其它籍所有信息n"); printf("n 四 自定義查詢信息n"); printf("n 五 返回上級菜單n"); printf("n 六 退出程序n"); printf("nn 請選擇:"); scanf("%d",&i); switch(i) void zdyselect(void); void allselect(char a8); case 1:allselect("hj.txt"); goto y
23、yy;break; case 2: allselect("schj.txt"); goto yyy;break; case 3: allselect("qthj.txt"); goto yyy;break; case 4: zdyselect(); case 5: break; case 6: exit(0); void zdyselect(void) ssmmz: int n=0,j=0; char hh10; system("cls"); printf("n 歡迎使用戶籍管理系統(tǒng)n"); printf(&quo
24、t;n 自定義查詢信息nnn"); printf(" 請您輸入地址關(guān)鍵字:"); scanf("%s",hh); if(strcmp(hh,"0")!=0) struct hj *p; struct hj *q=NULL,*head=NULL; fp=fopen("hj.txt","rb"); if(fp=NULL) printf("n 沒有記錄,請輸入記錄然后再查詢!"); getch(); goto jjz; while(!feof(fp) n+; p=(str
25、uct hj *)malloc(sizeof(struct hj); fread(p,sizeof(struct hj),1,fp); if(n=1) head=p; else q->next=p; q=p; q->next=NULL; p=head; while(p!=NULL) if(strstr(p->address,hh)!=NULL) int a; j+; printf("n 結(jié) 果 學號=%ld 姓名=%s ",p->number,p->name); printf("n 地址=%s",p->address)
26、; printf("nn 操 作 更改數(shù)據(jù) 刪除數(shù)據(jù) 查詢下一條數(shù)據(jù) 返回上頁 退出程序nn 請您選擇操作:");ssmz: scanf("%d",&a); switch(a) void hjedit(struct hj *headd,struct hj *pp); void hjdelete(struct hj *headdd,struct hj *ss); case 1: hjedit(head,p); goto ssmmz;break; case 2: hjdelete(head,p); goto ssmmz;break; case 3:
27、p=p->next;continue; case 4: goto jjz; case 5:exit(0); default:printf("n 錯誤的選擇,請重新選擇:"); goto ssmz; p=p->next; else p=p->next; if(j=0) printf("nnn沒有匹配的記錄 按任意鍵繼續(xù)!"); getch(); fclose(fp); goto ssmmz; else int xx; printf("nn查詢完畢! 繼續(xù)查詢 返回上一級菜單 退出程序"); printf("n
28、請選擇:"); scanf("%d",&xx); if(xx=2) goto jjz; else if(xx=3) exit(0); goto ssmmz;jjz: ; 3.5 能添加、刪除和修改學生的籍貫信息;/*錄入信息函數(shù)*/void hjnew(void) system("cls"); int n=0; long xnumber; char xname10; char xaddress50; struct hj *head; struct hj *x1,*x2; head=NULL; x2=NULL; printf("
29、n 歡迎使用戶籍管理系統(tǒng)n"); printf("n 錄入信息n"); printf("n 提示輸入0返回上級菜單nnn"); printf("n 請輸入學號【15字內(nèi)】:"); scanf("%ld",&xnumber); if(xnumber=0) goto haha; printf("n 請輸入姓名【10字內(nèi)】:"); scanf("%s",xname); printf("n 請輸入籍貫【25字內(nèi)】:"); scanf("
30、%s",xaddress); while(xnumber!=0) n+; x1=(struct hj *)malloc(sizeof(struct hj); x1->number=xnumber; strcpy(x1->name,xname); strcpy(x1->address,xaddress); if(n=1) head=x1; else x2->next=x1; x2=x1; printf("n 請輸入學號【15字內(nèi)】:"); scanf("%ld",&xnumber); if(xnumber=0) b
31、reak; printf("n 請輸入姓名【10字內(nèi)】:"); scanf("%s",xname); printf("n 請輸入籍貫【25字內(nèi)】:"); scanf("%s",xaddress); x2->next=NULL; x1=head; while(x1!=NULL) openfile("hj.txt"); char d5="江蘇" fwrite(x1,sizeof(struct hj),1,fp); fclose(fp); if(strstr(x1->a
32、ddress,d)!=NULL) openfile("schj.txt"); fwrite(x1,sizeof(struct hj),1,fp); fclose(fp); else openfile("qthj.txt"); fwrite(x1,sizeof(struct hj),1,fp); fclose(fp); x1=x1->next; haha:;void hjde(void)/刪除界面函數(shù)cxxbegin: int a; system("cls"); printf("n 歡迎使用戶籍管理系統(tǒng)n");
33、 printf("n 刪除信息nnn"); printf("n 一 按學號方式刪除n"); printf("n 二 按姓名方式刪除n"); printf("n 三 按籍貫方式刪除n"); printf("n 四 刪除全部信息n"); printf("n 五 返回上級菜單n"); printf("n 請 選 擇 刪 除 方 式:");cxxmm: scanf("%d",&a); int i=0; switch(a) case 1:
34、 hjxmselect();goto cxxbegin;break; case 2: hjxhselect();goto cxxbegin;break; case 3: zdyselect();goto cxxbegin;break; case 4: fp=fopen("hj.txt","wb"); if(fp!=NULL) i+; fp=fopen("schj.txt","wb"); if(fp!=NULL) i+; fp=fopen("qthj.txt","wb"); i
35、f(fp!=NULL) i+; if(i=3) printf("n 全部數(shù)據(jù)已經(jīng)刪除!敲任意鍵繼續(xù)"); getch(); goto cxxbegin;break; case 5: break; default:printf("n錯誤的選擇,請重新選擇:"); goto cxxmm; /=刪除函數(shù)接口=void hjdelete(struct hj *headdd,struct hj *ss) struct hj *q; char d5="江蘇" if(headdd=ss) headdd=headdd->next; goto g
36、ogo; q=headdd; while(q!=NULL) if(q->next->number=ss->number) break; q=q->next; q->next=ss->next;gogo: q=headdd; fp=fopen("hj.txt","wb"); while(q!=NULL) fwrite(q,sizeof(struct hj),1,fp); q=q->next; fclose(fp); q=headdd; fp=fopen("schj.txt","wb&q
37、uot;); while(q!=NULL) if(strstr(q->address,d)!=NULL) fwrite(q,sizeof(struct hj),1,fp); q=q->next; fclose(fp); q=headdd; fp=fopen("qthj.txt","wb"); while(q!=NULL) if(strstr(q->address,d)=NULL) fwrite(q,sizeof(struct hj),1,fp); q=q->next; fclose(fp);/=編輯函數(shù)接口=void hjedit
38、(struct hj *headd,struct hj *pp) int n=0; struct hj *p,*p1,*p2; char d5="江蘇" printf("n 輸 入 學號="); scanf("%ld",&pp->number); printf("n 姓名="); scanf("%s",pp->name); printf("n 地址="); scanf("%s",pp->address); p=headd; fp=
39、fopen("hj.txt","wb"); while(p!=NULL) fwrite(p,sizeof(struct hj),1,fp); p=p->next; fclose(fp); p1=headd; fp=fopen("schj.txt","wb"); while(p1!=NULL) if(strstr(p1->address,d)!=NULL) fwrite(p1,sizeof(struct hj),1,fp); p1=p1->next; fclose(fp); p2=headd; fp
40、=fopen("qthj.txt","wb"); while(p2!=NULL) if(strstr(p2->address,d)=NULL) fwrite(p2,sizeof(struct hj),1,fp); p2=p2->next; fclose(fp);3.6 顯示輸出江蘇籍和非江蘇籍學生的信息并可分別存盤。 void hjjgselect(void)/按籍貫方式查詢yyy: int i; system("cls"); printf("n 歡迎使用戶籍管理系統(tǒng)n"); printf("
41、n 籍貫方式查詢信息nnn"); printf("n 一 顯示所有信息n"); printf("n 二 顯示江蘇籍所有信息n"); printf("n 三 顯示其它籍所有信息n"); printf("n 四 自定義查詢信息n"); printf("n 五 返回上級菜單n"); printf("n 六 退出程序n"); printf("nn 請選擇:"); scanf("%d",&i); switch(i) void z
42、dyselect(void); void allselect(char a8); case 1:allselect("hj.txt"); goto yyy;break; case 2: allselect("schj.txt"); goto yyy;break; case 3: allselect("qthj.txt"); goto yyy;break; case 4: zdyselect(); case 5: break; case 6: exit(0); 四設計小結(jié)課程設計是培養(yǎng)學生綜合運用所學知識、發(fā)現(xiàn)、提出、分析和解決實際問題
43、,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程。隨著科學技術(shù)的發(fā)展,當今計算機存活在世界的每一個角落。因此,作為二十一世紀的大學生來說,掌握計算機開發(fā)技術(shù)是非常正要的。對于此次課程設計,感慨頗多。的確,從拿到題目到完成整個編程,從理論到實踐,在兩周時間里,可以學到很多很多的東西,同時不僅可以鞏固以前所學過的知識,還學到了許多書本上沒有的知識。通過這次課程設計,我懂得了理論與實踐相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識和實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正的提高自己的實際動手能力和獨立思考的能力,才能真正的為社會服務。在設計過程中,可以說是困難重
44、重,畢竟很久沒有接觸過C語言了,很多基礎(chǔ)知識都忘記了,難免會遇到各種各樣的問題,比如scanf每加&或缺少之類的小錯誤都要花很長時間找出來,另外對文件的讀寫等操作以前一直不大清楚,這次課程設計中包含了許多對文件的操作,使我對文件操作的能力有了很大的提高。正所謂:溫故而知新!兩周的課程設計結(jié)束了,期間遇到了很多問題,這次設計在老師和同學的指導與幫助下、查閱資料以及借鑒網(wǎng)上原有的同類程序代碼得以完成。 我也意識到自己掌握的知識還很缺陷,在以后的課程學習中,我要更加認真仔細,全面地了解相關(guān)知識。 五.程序代碼#include "dos.h"#include "s
45、tdio.h"#include "stdlib.h"#include "conio.h"#include "math.h"#include "string.h" /*建立鏈表*/struct hj long number; char name10,address50; struct hj *next;/*文件操作函數(shù)*/FILE *fp;void openfile(char xx20) fp=fopen(xx,"ab+"); if(fp=NULL) fp=fopen(xx,"
46、wb");/*錄入信息函數(shù)*/void hjnew(void) system("cls"); int n=0; long xnumber; char xname10; char xaddress50; struct hj *head; struct hj *x1,*x2; head=NULL; x2=NULL; printf("n 歡迎使用戶籍管理系統(tǒng)n"); printf("n 錄入信息n"); printf("n 提示輸入0返回上級菜單nnn"); printf("n 請輸入學號【15字內(nèi)】:"); scanf("%ld",&xnumber); if(xnumber=0) goto haha; printf("n 請輸入姓名【10字內(nèi)】:"); scanf(&quo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國集線器行業(yè)前景規(guī)劃及投資潛力分析報告
- 2025-2030年中國鑄造扣件市場發(fā)展現(xiàn)狀及前景趨勢分析報告
- 2025-2030年中國蠔油醬行業(yè)需求規(guī)模及發(fā)展趨勢預測報告
- 2025-2030年中國草柳編制工藝品市場運營狀況及投資規(guī)劃研究報告
- 2025-2030年中國自動支票打字機專用色帶行業(yè)運行態(tài)勢及發(fā)展戰(zhàn)略分析報告
- 2025-2030年中國羥丙基甲基纖維素行業(yè)十三五規(guī)劃與發(fā)展策略分析報告
- 2025-2030年中國純棉內(nèi)衣市場運營狀況及發(fā)展前景分析報告
- 2025-2030年中國科技地產(chǎn)行業(yè)競爭現(xiàn)狀及投資戰(zhàn)略研究報告
- 2025-2030年中國硫酸氧釩行業(yè)風險評估規(guī)劃研究報告
- 2025-2030年中國真空凍干蔬菜行業(yè)運行狀況及發(fā)展趨勢預測報告
- 質(zhì)譜儀產(chǎn)品商業(yè)計劃書
- 課件:舉手意識課件講解
- 中考體育培訓合同
- 基金應知應會專項考試題庫(證券類190題)附有答案
- 固定式、車載式、便攜式反無人機實施方案
- 陜西省2024年高中學業(yè)水平合格考數(shù)學試卷試題(含答案)
- 美術(shù)基礎(chǔ)試題庫含答案
- 鄉(xiāng)村研學旅行方案
- 《養(yǎng)老機構(gòu)認知障礙照護專區(qū)設置與服務規(guī)范》
- DLT 5630-2021 輸變電工程防災減災設計規(guī)程-PDF解密
- 輸電線路安全施工培訓
評論
0/150
提交評論