




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
程序設計實踐程序設計實踐程序設計實踐xxx公司程序設計實踐文件編號:文件日期:修訂次數(shù):第1.0次更改批準審核制定方案設計,管理制度蘇州科技學院二○一四~二○一五學年第二學期電子與信息工程學院課程設計報告書課程名稱:班級:學號:姓名:指導教師:二○一五年三月1.題目小型圖書信息管理系統(tǒng)2.功能 1、信息錄入,包括記錄的追加和插入;2、信息刪除;3、信息修改;4、信息排序和查詢; 5、信息的保存和裝載; 6、簡單的幫助。3.要求(1)整個系統(tǒng)均用C語言實現(xiàn);(2)利用指針、鏈表來實現(xiàn)圖書館的數(shù)據(jù)結(jié)構(gòu)設計;(3)系統(tǒng)具有輸入、顯示、查詢、刪除、排序、插入,保存、讀取基本功能;(4)系統(tǒng)的各個功能模塊都用函數(shù)的形式來實現(xiàn);(5)可以將圖書信息保存在文件中。(6)可以將圖書信息從文件中讀取出來。4.設計內(nèi)容整個系統(tǒng)除了主函數(shù)外,另外還有6個函數(shù),實現(xiàn)八大功能:輸入功能,查找功能,插入功能,保存功能,刪除功能,讀取功能。各個函數(shù)的詳細設計說明分別如下:主函數(shù)main()利用無限次循環(huán)for(;;)實現(xiàn)各函數(shù)的調(diào)用,系統(tǒng)根據(jù)輸入的數(shù)字選項來調(diào)用相應的函數(shù)。初始化函數(shù)book*create()這是一個無參函數(shù),它的作用是使鏈表初始化,使head的值為NULL。輸入函數(shù)Insert(book*head)這是一個無參函數(shù),用來執(zhí)行圖書信息的輸入。算法:先聲明一個首節(jié)點head,并將head->next設為NULL。每輸入一個數(shù)據(jù)就聲明一個新節(jié)點p,把p->next設為NULL,并且鏈接到之前列表的尾端。N-S流程圖如下:while(p->next!=NULL) 輸入圖書信息 INSERTSUCCESS 修改函數(shù)change(book*head)用于修改圖書信息。算法:輸入需修改圖書的書名,判斷是否有本書,若有,再進行修改。N-S流程圖如下:當輸入的圖書名存在 輸入新的圖書信息 Pd=1 當pd=0,沒有此書顯示記錄函數(shù)voidPrint(book*head)這是一個不返回值的有參函數(shù),將記錄的輸出。算法:先將p結(jié)點的指針指向第一個結(jié)點,將p結(jié)點的數(shù)據(jù)輸出,再將p結(jié)點的指針指向下一結(jié)點,將下一結(jié)點的數(shù)據(jù)輸出。重復執(zhí)行此步聚直到p指針指向NULL為止。N-S流程圖如下:p=head,使指向第一個結(jié)點 輸出p所指向的結(jié)點 p指向一下個結(jié)點 當p指的不是表尾查找記錄函數(shù)voidsearch(book*head)這是一個不返回值的有參函數(shù),形參為“鏈表頭的指針”,實現(xiàn)按書名對某書進行查找,并顯示所查找到的記錄。算法:采用線性查找法往下一個節(jié)點查找。輸入所要查找的圖書的名稱,設一個指針變量p,先指向第一個結(jié)點,當strcmp(p->name,name1)&&p!=NULL時,使p后移一個結(jié)點,如果p!=NULL,輸出p所指的結(jié)點。N-S流程圖如下:輸入要查找的學生的學號sp=head,使p指向第一結(jié)點當記錄的書名不是要找的,或指針不為空時 p=p->nextp!=NULL如果指針不為空 是 否 顯示沒有該 輸出p所指向的結(jié)點 圖書刪除記錄函數(shù)Delete(book*head)這是一個有參函數(shù),形參為“鏈表頭的指針”,先輸入要刪除的圖書的名稱,找到后進行刪除。算法:從p指向的第一個結(jié)點開始,檢查該結(jié)點中的bookname是否等于輸入的要求刪除的那個書名。如果相等就將該結(jié)點刪除,如不相等,就將p后移一個結(jié)點,再如此進行下去,直到遇到表尾為止。N-S流程圖如下:p=head 輸入入要刪除的圖書當(strcmp(p->bookname,temp)==0) pd=1p=p->next; p是要刪除的結(jié)點是 否刪除成功 未找到本書
調(diào)試分析在編寫完程序后,點擊編譯,顯示是1個錯誤。但是往上看的時候,卻是很多。改的時候發(fā)現(xiàn)有些是句子寫錯了,然后再看看書,上網(wǎng)查下,就改好了。還有2處是打錯字母了……最后0error(s),0warning(s)。但是在信息錄入的時候,輸入到pubtime后出錯,程序停止運行,仔細看了程序,才發(fā)現(xiàn)在輸入pubtime和price時,句子中&忘記打了……后面程序中也有幾處關于&的問題,還有是%d與%f寫錯了。能輸入信息后,在瀏覽和查詢時,輸出的信息和上面對應的項目不對應,還有一些是地址。然后輸入數(shù)據(jù),多次更改后,把數(shù)據(jù)對應了起來??偨Y(jié)通過這個作業(yè),我又對鏈表,指針等有了一些了解,能更好的運用。還上網(wǎng)查了一些資料,對這門課有了加強。當編寫完這個程序,并成功運行起來,我感覺到有一種成就感,我覺得這種感覺對學習是很有幫助的,能幫我在學習中找到樂趣。程序如下#include<>#include<>#include<>structbook{ charauthor[25]; charbookname[25]; charpublisher[25]; intpubtime; intinnum; floatprice; structbook*next;};structbook*create(){ structbook*head; head=(structbook*)malloc(sizeof(structbook)); head->next=NULL; returnhead;}voidSave(structbook*head){ structbook*p; FILE*fp; p=head; if((fp=fopen("","w+"))==NULL) { printf("cannotopenthisfile\n");exit(0); } fprintf(fp,"innumbooknameauthorpublisherpubtimeprice\n"); while(p->next!=NULL) { p=p->next; fprintf(fp,"%-6d%-10s%-10s%-10s%-10d%-8f",p->innum,p->bookname,p->author,p->publisher,p->pubtime,p->price); fclose(fp); printf("信息已保存!\n"); }}voidInsert(structbook*head){ structbook*s,*p; p=head; while(p->next!=NULL) { p=p->next; } s=(structbook*)malloc(sizeof(structbook)); printf("inputtheinnum:\n"); scanf("%d",&s->innum); printf("inputthebookname:\n"); scanf("%s",s->bookname); printf("inputtheauthorname:\n"); scanf("%s",s->author); printf("inputthepublisher:\n"); scanf("%s",s->publisher); printf("inputthepubtime:\n"); scanf("%d",&s->pubtime); printf("inputtheprice:\n"); scanf("%f",&s->price); printf("\n"); p->next=s; p=s; s->next=NULL; printf("INSERTSUCCESS!\n");} voidSearch(structbook*head){ structbook*p; charname1[20]; p=head; if(head==NULL||head->next==NULL) printf("libraryisempty!"); else printf("inputthename1:\n"); scanf("%s",name1); while(p->next!=NULL) { p=p->next; if(strcmp(p->bookname,name1)==0) { printf("found!\n"); printf("innum:%d\n",p->innum); printf("bookname:%s\n",p->bookname); printf("author:%s\n",p->author); printf("pubtime:%d\n",p->pubtime); printf("publisher:%s\n",p->publisher); printf("price:%f\n",p->price); } if(p->next==NULL) printf("\n查詢結(jié)束!"); }}voidPrint(structbook*head){ structbook*p; if(head==NULL||head->next==NULL) { printf("\n\t無記錄\n"); return; } p=head; printf("\n登錄號書名作者出版單位出版時間價格\n"); while(p->next!=NULL) { p=p->next; printf("%-d%-8s%-8s%-8s%-5d%-8f\n",p->innum,p->bookname,p->author,p->publisher,p->pubtime,p->price); }}voidchange(structbook*head){ structbook*p; intpd=0; chartemp[20]; p=head; printf("要修改的書名:"); scanf("%s",temp); while(p->next!=NULL) { p=p->next; if(strcmp(p->bookname,temp)==0) { printf("輸入登錄號碼: "); fflush(stdin); scanf("%d",&p->innum); printf("輸入書名: "); fflush(stdin); scanf("%s",p->bookname); printf("輸入作者名:"); fflush(stdin); scanf("%s",p->author); printf("輸入出版社:"); fflush(stdin); scanf("%s",p->publisher); printf("輸入出版時間:"); fflush(stdin); scanf("%d",&p->pubtime); printf("輸入價格:"); fflush(stdin); scanf("%d",&p->price); printf("\n"); pd=1; } } if(pd==0) { printf(" 沒有記錄 "); } return;}voidDelete(structbook*head){ structbook*s,*p; chartemp[20]; intpd; pd=0; p=s=head; printf("請輸入要刪除的書名!"); scanf("%s",temp); while(p!=NULL) { if(strcmp(p->bookname,temp)==0) { pd++; break; } p=p->next; } if(pd==1) { for(;s->next!=p;) { s=s->next; } s->next=p->next; free(p); printf("刪除成功!"); } else { printf("未找到本書"); } return;}intmain(void){ structbook*head; charchoice; head=NULL; for(;;) {
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北黃岡應急管理職業(yè)技術學院《國際商務策劃》2023-2024學年第二學期期末試卷
- Unit 5 Topic 2 Section C 教學設計 2024-2025學年仁愛科普版八年級英語下冊
- 比例的認識(教學設計)-2023-2024學年六年級下冊數(shù)學北師大版
- 慶陽職業(yè)技術學院《工業(yè)通風與除塵》2023-2024學年第二學期期末試卷
- 宣化科技職業(yè)學院《建筑風景速寫》2023-2024學年第二學期期末試卷
- 遼寧現(xiàn)代服務職業(yè)技術學院《食品生物化學(實驗)》2023-2024學年第二學期期末試卷
- 濟南2024年山東濟南市章丘區(qū)社區(qū)工作者招考10人筆試歷年參考題庫附帶答案詳解
- 信陽師范大學《語文課堂教學技能》2023-2024學年第二學期期末試卷
- 濟南護理職業(yè)學院《中西醫(yī)結(jié)合實驗診斷研究》2023-2024學年第二學期期末試卷
- 河南質(zhì)量工程職業(yè)學院《結(jié)構(gòu)化學C》2023-2024學年第二學期期末試卷
- 小兒急性中毒的處理與急救
- 涂裝工技能鑒定考試題庫匯總-下(多選、判斷題部分)
- 非遺傳統(tǒng)文化課件
- 橋梁施工常見問題及預防控制要點(PPT,46)
- 中俄文一般貿(mào)易合同范本
- 知情同意書核查要點課件
- 廣東省深圳市2021-2022學年高二下學期期末考試 語文 Word版含解析
- 專項施工方案專家論證意見回復表
- 《醫(yī)古文》教學全套課件580頁
- 水電廠計算機監(jiān)控系統(tǒng)改造技術要求
- 勝利油田壓驅(qū)技術工藝研究進展及下步工作方向
評論
0/150
提交評論