




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1系統(tǒng)的意義及其功能 本系統(tǒng)為學(xué)生證管理程序。系統(tǒng)任務(wù)描述:假設(shè)某校學(xué)生學(xué)生證基本信息主要包括:學(xué)號、姓名、所在系、班級等,本系統(tǒng)應(yīng)能對這些基本信息進(jìn)行管理,并要求具有以下功能:(1)通過鍵盤輸入某位學(xué)生的學(xué)生證信息。學(xué)生證包含的信息請參看自己的學(xué)生證;(2)給定學(xué)號,顯示某位學(xué)生的學(xué)生證信息;(3)給定某個班級的班號,顯示該班所有學(xué)生的學(xué)生證信息;(4)給定某位學(xué)生的學(xué)號,修改該學(xué)生的學(xué)生證信息;2系統(tǒng)的功能結(jié)構(gòu)圖以及調(diào)用關(guān)系學(xué)生證管理程序輸入學(xué)號輸入某班級的班號輸入某位學(xué)生的學(xué)號按學(xué)號排序或姓名排序來顯示該班所有學(xué)生證信息的學(xué)生證信息顯示該生學(xué)生證信息修改該生的學(xué)生證信息鍵入某位學(xué)生的學(xué)生
2、證信息3系統(tǒng)功能詳細(xì)分析學(xué)生證管理系統(tǒng)需要完成的功能主要有:從主函數(shù)進(jìn)入各個子函數(shù):子函數(shù)包括學(xué)生證信息的鍵入、查詢信息的功能、修改學(xué)生證信息的功能、退出系統(tǒng)。具體功能如下:3.1學(xué)生證信息的鍵入學(xué)生證信息的鍵入此程序是將學(xué)生證信息錄入文件開始主菜單學(xué)生證信息的鍵入輸入學(xué)生證信息是否繼續(xù)保存文件YN3.2 查詢信息的功能查詢記錄的主要功能是通過不同的查詢方式查詢學(xué)生的信息。先是進(jìn)入查詢界面,再選擇查詢的方式,選擇后將輸出該學(xué)生的信息。共分為兩種: 給定某個學(xué)生的學(xué)號,顯示該學(xué)生的學(xué)生證信息; 給定某個班級的班號,按學(xué)號排序來顯示該班所有學(xué)生的學(xué)生證信息; 按班級排序來顯示該班所有學(xué)生的學(xué)生證信
3、息;3.2.1 輸入學(xué)號,顯示該生的學(xué)生證信息學(xué)生證信息查詢此程序是通過輸入某位學(xué)生的學(xué)號,顯示該生的學(xué)生證信息。開始主菜單學(xué)生證信息查詢輸入學(xué)號顯示該生的學(xué)生證信息關(guān)閉文件是否繼續(xù)NY3.2.2 輸入班號,顯示該班所有學(xué)生的學(xué)生證信息學(xué)生證信息查詢此程序是通過輸入某班級的班號,然后選擇按學(xué)號排序或班級排序,最后顯示該班所有學(xué)生的學(xué)生證信息。開始主菜單學(xué)生證信息查詢輸入班號顯示該班所有學(xué)生的學(xué)生證信息關(guān)閉文件是否繼續(xù)NY按學(xué)號排序按班級排序3.3 修改學(xué)生證信息的功能修改信息功能修改信息的主要功能是通過輸入某位學(xué)生的學(xué)號來修改該生的學(xué)生證信息。先是進(jìn)入修改界面,再輸入學(xué)號,輸入后,將輸出該生的
4、學(xué)生證信息,再選擇是否修改此記錄,選擇是,則輸入修改的信息,并保存修改。開始主菜單修改學(xué)生證信息功能輸入學(xué)號顯示該生學(xué)生證信息是否修改寫入并保存文件YN4 運行界面主菜單界面學(xué)生證鍵入的界面?zhèn)€人學(xué)生證信息顯示界面顯示班級信息的選擇輸出方式的界面按學(xué)號排序顯示該班所有學(xué)生的學(xué)生證信息界面按姓名排序顯示該班所有學(xué)生的學(xué)生證信息界面顯示班級信息的退出界面修改學(xué)生證信息的界面5系統(tǒng)使用說明1、進(jìn)入程序時,先以菜單形式顯示所有命令,然后用戶通過菜單項選擇操作;例如:1 學(xué)生證信息的鍵入2 輸入學(xué)號,顯示該生學(xué)生證信息3 輸入班號,顯示該班所有學(xué)生的學(xué)生證信息4 給定學(xué)號,修改該生學(xué)生證信息5 退出系統(tǒng)請
5、選擇1/2/3/4/5:2、鍵入學(xué)生證信息時,按照所給定的格式輸入。3、查詢信息是按學(xué)生學(xué)號和班號的形式進(jìn)行查詢,填入學(xué)號后,則顯示出該生所有信息;選擇按班號查詢功能后,在選擇顯示輸出方式,分兩種:一種按學(xué)號排序;另一種是按姓名排序。選定后,再填入班號,則顯示出該班所有學(xué)生的學(xué)生證信息(按已選定的排序方式顯示)。4、修改信息是按輸入學(xué)號的形式進(jìn)行修改,填入后,則顯示出該生所有信息,然后詢問是否修改,若回答“y”(大小寫通用),則輸入新值,否則不作修改。6 C語言源程序代碼#include #include /用來使用清屏函數(shù)#include #include #include #define
6、LEN sizeof(struct STUcard)struct STUcard *creat();void viewperson();void viewclass();void number();void name();void change();struct STUcard *save();struct dateint year;int month;int day; /定義用來嵌套的結(jié)構(gòu)體struct STUcard int number; char name20; char sex10; char department20; char classnumber10; struct date
7、 timeofenter; /嵌套結(jié)構(gòu)體 char IDnumber30; struct date birthday; struct STUcard *next; /定義結(jié)構(gòu)體 void main()char c; int n=0; struct STUcard *head;char build; /創(chuàng)建文件FILE *fp;fp=fopen(XX.out,rb);if(fp=NULL)printf(文件不存在,請創(chuàng)建(Y or N)); scanf(%c,&build); if(build=Y) fp=fopen(XX.out,wb); else exit(0); do system(cls
8、); /清屏 printf(*n); printf( 1: 輸入學(xué)生證信息 n); printf( 2: 查找個人信息 n); printf( 3: 查找班級里所有學(xué)生的學(xué)生證信息 n); printf( 4: 修改學(xué)生證信息 n); printf( 5: 退出 n); printf(*n); printf( n); printf(請選擇輸入選項12345:); do c=getchar(); while(c!=1&c!=2&c!=3&c!=4&c!=5); getchar(); switch(c) case 1: head=creat(); break; case 2: viewperson
9、(head); break; case 3: viewclass(head); break; case 4: change(head); break; case 5: exit(0); break; printf( 按任意鍵返回主菜單:n); flushall(); getchar(); printf(%d,n); system(cls); while(1); int n;struct STUcard *creat() /錄入學(xué)生證信息函數(shù)struct STUcard *head,*p1,*p2;n=0;head=NULL;p1=p2=(struct STUcard *)malloc(LEN)
10、;printf(請按以下格式輸入學(xué)生證信息,注意 每個數(shù)據(jù)之間間隔一個空格!n以學(xué)號為00000000結(jié)束錄入,并且剩下的信息字符用“0”代替輸入 注意:輸入格式不變!:n);printf(學(xué)號 姓名 性別 院系 班級 入學(xué)時間(年 月 日) 身份證號 出生日期(年 月 日)n); scanf(%d %s %s %s %s %d %d %d %s %d %d %d,&p1-number,p1-name,p1-sex,p1-department,p1-classnumber,&p1-timeofenter.year,&p1-timeofenter.month,&p1-timeofenter.da
11、y,p1-IDnumber,&p1-birthday.year,&p1-birthday.month,&p1-birthday.day);while(p1-number!=00000000)n=n+1;if(n=1) head=p1;else p2-next=p1;p2=p1;p1=(struct STUcard *)malloc(LEN);scanf(%d %s %s %s %s %d %d %d %s %d %d %d,&p1-number,p1-name,p1-sex,p1-department,p1-classnumber, &p1-timeofenter.year,&p1-timeo
12、fenter.month,&p1-timeofenter.day,p1-IDnumber, &p1-birthday.year,&p1-birthday.month,&p1-birthday.day);p2-next=NULL;free(p1);save(head); /保存文件return(head); /把已錄入信息的鏈表頭指針返回給住函數(shù)void viewperson(struct STUcard * head) /查找個人信息函數(shù)int m,a=0;struct STUcard *p;printf(請輸入學(xué)號:);printf( n );scanf(%d,&m);p=head; /獲取
13、頭指針,以使用鏈表 while(p-next!=NULL) /判斷是否為空指針if(p-number=m) printf(學(xué)號:%dn姓名:%sn性別:%sn院系:%sn班級:%sn入學(xué)時間:%d年%d月%d日n身份證號:%sn出生日期:%d年%d月%d日n, p-number,p-name,p-sex,p-department,p-classnumber, p-timeofenter.year,p-timeofenter.month,p-timeofenter.day,p-IDnumber, p-birthday.year,p-birthday.month,p-birthday.day);p
14、rintf(n);a=a+1; p=p-next; /結(jié)點后移if(p-number=m)printf(學(xué)號:%dn姓名:%sn性別:%sn院系:%sn班級:%sn入學(xué)時間:%d年%d月%d日n身份證號:%sn出生日期:%d年%d月%d日n, p-number,p-name,p-sex,p-department,p-classnumber, p-timeofenter.year,p-timeofenter.month,p-timeofenter.day,p-IDnumber, p-birthday.year,p-birthday.month,p-birthday.day);printf(n);
15、a=a+1;printf(n);printf(共%d人n,a);if(a=0) printf( 對不起,查無此人!n);void viewclass(struct STUcard * head) /查找班級信息函數(shù)char c;void number();void name();do system(cls); /清屏 printf(*n); printf( 1: 按學(xué)號排序輸出 n); printf( 2: 按姓名排序輸出 n); printf( 3: 退出 n); printf(*n); printf( n); printf(請選擇輸入選項123:); do c=getchar(); whi
16、le(c!=1&c!=2&c!=3); getchar(); switch(c) case 1: number(head); break; case 2: name(head); break; case 3: exit(0); continue; printf( 按任意鍵返回上層菜單:n); flushall(); getchar(); system(cls); while(1); void number(struct STUcard *head) /按學(xué)號排序 char c10; int h1,a=0,i,j,k,w; char hname20; char hsex20; char hdep
17、artment20; char hclassnumber10; char hIDnumber30; struct date htimeofenter; struct date hbirthday; struct STUcard *p,*p2,*p3; p=head; p2=head; p3=p2-next; for(k=1;k+) /用來確定鏈表中共多少個結(jié)點 if(p-next!=NULL) p=p-next; else break; for(i=0;inext; for(j=0;jnumberp3-number) h1=p2-number; strcpy(hname,p2-name); s
18、trcpy(hsex,p2-sex); strcpy(hdepartment,p2-department); strcpy(hclassnumber,p2-classnumber); strcpy(hIDnumber,p2-IDnumber); htimeofenter=p2-timeofenter; hbirthday=p2-birthday; p2-number=p3-number; strcpy(p2-name,p3-name); strcpy(p2-sex,p3-sex); strcpy(p2-department,p3-department); strcpy(p2-classnumb
19、er,p3-classnumber); strcpy(p2-IDnumber,p3-IDnumber); p2-timeofenter=p3-timeofenter; p2-birthday=p3-birthday; p3-number=h1; strcpy(p3-name,hname); strcpy(p3-sex,hsex); strcpy(p3-department,hdepartment); strcpy(p3-classnumber,hclassnumber); strcpy(p3-IDnumber,hIDnumber); p3-timeofenter=htimeofenter; p
20、3-birthday=hbirthday; p2=p3; p3=p3-next; printf(請輸入班級:n); scanf(%s,&c); p=head; for(w=1;wclassnumber,c)=0) printf(學(xué)號:%dn姓名:%sn性別:%sn院系:%sn班級:%sn入學(xué)時間:%d年%d月%d日n身份證號:%sn出生日期:%d年%d月%d日n, p-number,p-name,p-sex,p-department,p-classnumber, p-timeofenter.year,p-timeofenter.month,p-timeofenter.day,p-IDnumbe
21、r, p-birthday.year,p-birthday.month,p-birthday.day);a=a+1; p=p-next; printf(n); printf(共%d人n,a); if(a=0) printf(對不起 無此班級); void name(struct STUcard *head) /按姓名排序 char c10; int h1,a=0,i,j,k,w; char hname20; char hsex20; char hdepartment20; char hclassnumber10; char hIDnumber30; struct date htimeofent
22、er; struct date hbirthday; struct STUcard *p,*p2,*p3; p=head; p2=head; p3=p2-next; for(k=1;k+) if(p-next!=NULL) p=p-next; else break; for(i=0;inext; for(j=0;jname,p3-name)0) h1=p2-number; strcpy(hname,p2-name); strcpy(hsex,p2-sex); strcpy(hdepartment,p2-department); strcpy(hclassnumber,p2-classnumbe
23、r); strcpy(hIDnumber,p2-IDnumber); htimeofenter=p2-timeofenter; hbirthday=p2-birthday; p2-number=p3-number; strcpy(p2-name,p3-name); strcpy(p2-sex,p3-sex); strcpy(p2-department,p3-department); strcpy(p2-classnumber,p3-classnumber); strcpy(p2-IDnumber,p3-IDnumber); p2-timeofenter=p3-timeofenter; p2-b
24、irthday=p3-birthday; p3-number=h1; strcpy(p3-name,hname); strcpy(p3-sex,hsex); strcpy(p3-department,hdepartment); strcpy(p3-classnumber,hclassnumber); strcpy(p3-IDnumber,hIDnumber); p3-timeofenter=htimeofenter; p3-birthday=hbirthday; p2=p3; p3=p3-next; printf(請輸入班級:n); scanf(%s,&c); p=head; for(w=1;
25、wclassnumber,c)=0) printf(學(xué)號:%dn姓名:%sn性別:%sn院系:%sn班級:%sn入學(xué)時間:%d年%d月%d日n身份證號:%sn出生日期:%d年%d月%d日n, p-number,p-name,p-sex,p-department,p-classnumber, p-timeofenter.year,p-timeofenter.month,p-timeofenter.day,p-IDnumber, p-birthday.year,p-birthday.month,p-birthday.day);a=a+1; p=p-next; printf(n); printf(共
26、%d人n,a); if(a=0) printf(對不起 無此班級); void change(struct STUcard * head) /修改信息int x; struct STUcard *p1,*p2; printf(輸入要修改學(xué)生的學(xué)號n); scanf(%d,&x); p1=head; while(p1-number!=x)&(p1-next!=NULL) p2=p1; p1=p1-next; if(p1-number=x) printf(請輸入需要修改的信息:n); printf(輸入學(xué)號:);scanf(%d,&p1-number);printf(輸入姓名:);scanf(%s
27、,p1-name);printf(輸入性別:);scanf(%s,p1-sex);printf(輸入院系:);scanf(%s,p1-department);printf(輸入班級:);scanf(%s,p1-classnumber); printf(輸入入學(xué)時間(年 月 日):); scanf(%d %d %d,&p1-timeofenter.year,&p1-timeofenter.month,&p1-timeofenter.day);printf(輸入身份證號:); scanf(%s,p1-IDnumber);printf(輸入出生日期(年 月 日):); scanf(%d %d %d,
28、&p1-birthday.year,&p1-birthday.month,&p1-birthday.day); printf(信息已修改);save(head); else printf(%d 找不到該學(xué)號!n,x);struct STUcard *save(struct STUcard *head) /_保存函數(shù)FILE *fp;struct STUcard *p;p=head;fp=fopen(XX.out,w+);if(fp=0)printf(不能打開文件); exit(0);while (p)fprintf(fp,學(xué)號:%dn姓名:%sn性別:%sn院系:%sn班級:%sn入學(xué)時間:%
29、d年%d月%d日n身份證號:%sn出生日期:%d年%d月%d日n, p-number,p-name,p-sex,p-department,p-classnumber, p-timeofenter.year,p-timeofenter.month,p-timeofenter.day,p-IDnumber, p-birthday.year,p-birthday.month,p-birthday.day);printf(n); p=p-next;printf(n文件保存成功!n,n);fclose(fp);return head; /返回后結(jié)點7心得體會通過這次的C語言程序設(shè)計,讓我意識到自己的基礎(chǔ)還不是太扎實,發(fā)現(xiàn)自己在編程方面還有些不足,有一些小小的錯誤不能避免。這次的設(shè)計培養(yǎng)了我發(fā)現(xiàn)問題、解決問題的基本能力,也讓自己的實際動手編程能力有一些提升,這對于我的學(xué)習(xí)有很大的幫助。將所學(xué)知識運用起來也是這次程序設(shè)計的成果,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 縱隔占位影像診斷
- 工廠承包貨柜方案簡單
- 原料檢驗面試題及答案
- 醫(yī)院感染病例報告制度與流程
- 腦卒中康復(fù)面試題及答案
- 貨物類投標(biāo)技術(shù)方案
- 首都機場考試題庫及答案
- 機構(gòu)對外宣傳方案模板
- 小兒結(jié)核病護(hù)理
- 酒店培訓(xùn)內(nèi)容課件
- 湖北省黃岡市2024-2025學(xué)年高一下學(xué)期期末質(zhì)量監(jiān)測數(shù)學(xué)試卷
- 撤資合同范本:投資撤資協(xié)議書
- 醫(yī)保drg付費課件培訓(xùn)
- 彩妝知識培訓(xùn)
- 羊水栓塞護(hù)理
- 云南省曲靖市宣威市民中2025屆高一化學(xué)第二學(xué)期期末檢測試題含解析
- 2024年寧夏銀川金鳳區(qū)社區(qū)專職工作者考試真題
- 2025至2030全球及中國帆船行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 北京海淀街道社區(qū)衛(wèi)生服務(wù)中心招聘筆試真題2024
- 新疆天富能源股份有限公司2024年度商譽減值測試資產(chǎn)評估報告
-
評論
0/150
提交評論