久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

C語言程序設計考試系統

時間:2019-05-12 20:13:53下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《C語言程序設計考試系統》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《C語言程序設計考試系統》。

第一篇:C語言程序設計考試系統

《C語言程序設計》考試系統

C language progamme design examination system

馬國富

劉波

(安陽工學院 計算機工程系,河南 安陽455000)

Ma GuoFu,liu bo

(Department of Computer Engineering,Anyang Institute of Technology,Anyang 455000)

一:摘要

這一考試系統是一種計算機輔助教學軟件,它包括教學模式,練習模式,考試模式。采用調用數據庫的方式打開,可以實現隨機選題和指定選題,而不是固定的試題。解決了由于教材更新和題庫更新導致教學軟件過時。大大提高了軟件的利用價值,打破了教學軟件內容的固化,其次三種工作模式極大地拓寬了軟件的使用范圍,不再是單一的教師教學軟件或學生考試軟件。可根據教學需要靈活地選擇不同模式,同時少作修改即可用于其它課程。

系統解決了在多媒體教學中出現的模式僵化,內容固化的問題。更新教學內容只需建立一個新的數據源實現連接即可。

Abstract

The test system of the principle is a Computer extended education software, and this course is also the compulsory course in High etc.school.This system include Teaching mode.Practice mode Examination mode.You can use database open the examination database That is to say the content is up to you or at random.It is the revolution of test system This is the main reason we develop it.二:關鍵詞

考試系統、多媒體技術、數據源、連接數據庫

keyword examination system、multimedia technology、data soure、connection of database 三:課題研究的意義和目的

安陽工學院計科系畢業論文 2 3.1研究意義

現在,多媒體技術日趨成熟,多媒體系統以其能輸出精彩的圖形和圖像、美妙的聲音、動感的畫面贏得了用戶和社會各界廣泛的關注和應用。如果把按傳統考試方式同現代化的多媒體技術相結合,并且用多媒體著作工具及其它多媒體技術,編制一套符合高校考試需求的系統及其配套的多媒體教學軟件,利用多媒體技術生動、直觀、形象展示信息的特點,輔助教師授課和學生進行考試,尤其對部分有限制性的實驗環節,可利用活動視頻技術進行展示,這將會解決一系列目前存在的問題。總之,該課題是在計算機輔助教學及考試上進行的一次積極有意義的嘗試,為其他實踐性較強的課程進行多媒體輔助教學開辟一條新的路子,具有一定的理論和現實意義。

3.2目 的

傳統的考試手段主要依靠有紙試卷,幾乎沒有可重用性。本課題將實現:用計算機輔助考試系統,把多媒體生動、直觀的顯示出來,使學生不再將考試視為一種枯燥無味的東西,提高了考試效果,使學生在一種愉悅的心情中進行考試,把枯燥的重復變為充滿樂趣、具有啟發性的考試過程,使學生能比較全面的學習知識,掌握技能,達到素質教育的要求。

四:系統流程圖設計

4.1 初始化流程設計

在使用Authorware創建任何多媒體項目的時候,都應該先設置當前項目文件的窗口大小,將其設置為“800×600”,然后選擇“演示居中屏幕”,同時取消對“顯示標題欄”和“顯示菜單欄”復選框的選擇。

4.2 主界面的設計

本界面采用了Photoshop7.0圖形圖像處理軟件來繪制。為了避免界面的單調和呆板,用蒙版和濾鏡技術加以美化。該界面把Photoshop中的圖層技術、圖層蒙版技術、文字效果及濾鏡等功能完美的結合了起來。并且在底部設置了一個Flash動畫,增加視覺效果。

4.3背景音樂的交互控制

該多媒體教學以MIDI作為背景音樂,背景音樂的交互控制包括背景音樂的隨機選曲播放、停止等功能,另外當該教學程序處于活動狀態時,能夠隨時調整背景音樂和講解聲音的大小及比例,讓使用者在一種輕松悅耳的環境中考試(調出WINDOWS的音量控制實現),還能夠暫停背景音樂,當再次進入活動狀態時則能重新播放背景音樂。

為了充分考慮用戶計算機的不同配置情況,首先利用BUDAPI.U32的BASOUNDCARD函數判斷用戶機器是否已經安裝了聲卡,如果已經安裝則執行背景音樂播放,否則不允許播放任何背景音樂操作.安陽工學院計科系畢業論文 3 程序如下:

IF BASOUNDCARD()THEN MIDI:=1 TEST(MIDI,MIDILOOP(FILELOCATION^”MUSICMUSIC-”^RANDOM(1,5,1)^”.MID”),STOPMIDI())END IF 軟件中的背景音樂交互控制是通過交互響應來實現的。在程序執行過程中,用戶始終可以通過按鈕控制背景音樂的播放與暫停。在計算圖標“播放音樂”后添加一交互圖標并命名為“音樂控制”,并在交互圖標右邊添加三個計算分支。設置“STOP/PLAY”分支為按鈕響應交互,其功能是實現對背景音樂的控制。由于在整個程序執行過程中它都是有效的,因此須設置其為永久按鈕,即選擇“PERPETUAL”屬性選項,同時設置“ACTIVE IF”條件為:BASOUNDCARD(),即檢測到用戶沒有安裝聲卡的情況下該按鈕及響應分支無效。

4.4內容的導航設計

該多媒體教學涉及內容繁多,不僅包括文本、圖片、聲音和動畫,而且還有其它多媒體工具與Authorware 配合,同時,還把視頻文件導入,以增加實用性。為使用戶操作簡單方便,設計了合理的教學內容導航。主文件與各章節之間的導航設計根據結構規劃中的該章節內容的欄目劃分,在流程設計中為這些欄目設計了導航,如圖1為主程序內容導航的設計流程圖。

圖1 主程序內容導航

這樣的流程設計使整個主程序結構清晰,可讀性強。由于該文件結構是主-分結構,即主文件調用各章節模塊文件的方式,因此在主文件的章節內容中實際存放的是一個起鏈接橋梁作用的調用腳

安陽工學院計科系畢業論文 4 本,而具體的考試試題題型內容則放在各章節的模塊文件內。

4.5各模塊的內容流程設計

圖中的考試模式、練習模式、教學模式及退出系統這四部分主要程序流程圖如下圖

2、圖

3、圖

4、圖5所示。

圖2

安陽工學院計科系畢業論文 5

圖3

圖4

圖5

安陽工學院計科系畢業論文 6 看每題的回答情況.最后回到選題主界面,并把學生所做的答案成績保存到數據庫中。

當用戶在主界面中,選擇了“考試模式”后,系統就會進入到登錄界面系統會提示輸入用戶名和密碼,當輸入后,點擊“確定”后,系統將會進入到題型選擇界面。在提示框中輸入用戶名和密碼,我們點擊“確定”后,就會進入到正式的單選題型界面中,選擇“單選題”單擊。

C語言程序設計考試系統的選擇題從數據庫中取出選擇題,在一個界面上顯示。利用三個熱區域交互按鈕“上一題”“下一題,”“完成”,按鈕和四個熱區域設置計算圖標用來記錄學生所選擇的答案。在學生選擇“完成”后,彈出學生做題的情況界面,然后回到選題主界面,并把學生所做的答案成績保存到數據庫中。

5.1“未命名”用來擦除以前的圖像

5.1.1 打開“未命名”的屬性,進入“未命名”的屬性窗口。

5.1.2在“屬性窗口”中單擊擦除標簽在設置過渡效果進行設置 5.1.3單擊“確定”按鈕

5.2 設置“單選界面”插入一個圖像

5.2.1雙擊“單選界面”圖標進入顯示圖標窗口

5.2.2單擊 繪圖工具箱 圖標進行繪制一個和窗口矩形一樣大的矩形

5.2.3設置矩形的顏色為“綠色”

5.2.4單擊顯示圖標窗口的關閉按鈕,關閉保存對“單選界面”的設置 5.3 設置交互“進入”

5.3.1在交互圖標的右邊拖放一個群組“單選” 5.3.2設置單選的熱區為“按鈕“ 5.3.3單擊確定后,雙擊“選擇”。

5.3.3.1“未命名”用來擦除上次運行的圖形 5.3.3.2在“打開數據庫”的輸入如下源程序:

安陽工學院計科系畢業論文 7 hint0:=“您的數據庫沒有連接上......”--顯示連接數據庫的信息 title:=“數據庫連接....” ODBChandle:=ODBCOpen(WindowHandle,“",”database“,”“,”“)--得到數據源

getrecord:=”select count(sequence)from erigister“--得到記錄的個數 record:=ODBCExecute(ODBChandle,getrecord)if ODBChandle=0 then--測試連接數據庫是否連接成功 MessageBox(WindowHandle,hint0,title,17)end if ODBCClose(ODBChandle)ODBChandle:=ODBCOpen(WindowHandle,”“,”database“,”“,”“)if ODBChandle=0 then MessageBox(WindowHandle,hint0,title,17)end if sqlstring1:=”select ssdb from erigister where sequence=“^record^”“-從表中選擇單選庫表題 ssdatabase:=ODBCExecute(ODBChandle,sqlstring1)getrecord:=”select count(sequence)from “^ssdatabase^”“ record:=ODBCExecute(ODBChandle,getrecord)--ssdb數據庫的記錄個數,以便產生隨機數 sssum:=0 number1:=1 sui:=[] sui[1]:=Random(1,record,1)--下面程序用來產生一個隨機數不能出現相同的題目 i:=2 repeat while i<=record flag:=0 repeat while flag=0 sui[i]:=Random(1,record,1)flag1:=0 repeat with p:=1 to i-1 if sui[i]=sui[p] then flag1:=1 end repeat if flag1=0 then flag:=1 end repeat i:=i+1 end repeat

5.3.3.3 在“做選擇的背景”顯示圖標中設計單選題的界面如上圖5.4 5.3.3.4 在“數據庫的操作”中輸入如下代碼:在這里,我們就要實現對數據庫的隨機讀取和跟蹤答案的長短來選擇界面

x:=0 ran:=sui[number1] result:=”“ record1:=Number(record)

安陽工學院計科系畢業論文 8 record:=record1--得到記錄的個數

sqlstring1:=”select topic from “^ssdatabase^” where sequence=“^ran^”“分別得到選擇題各項 sqlstring2:=”select a from “^ssdatabase^” where sequence=“^ran^”“ sqlstring3:=”select b from “^ssdatabase^” where sequence=“^ran^”“ sqlstring4:=”select c from “^ssdatabase^” where sequence=“^ran^”“ sqlstring5:=”select d from “^ssdatabase^” where sequence=“^ran^”“ sqlstring6:=”select result from “^ssdatabase^” where sequence=“^ran^”“ get1:=ODBCExecute(ODBChandle,sqlstring1)--get1得到選擇題目內容 get2:=ODBCExecute(ODBChandle,sqlstring2)--get2得到選擇項A內容 get3:=ODBCExecute(ODBChandle,sqlstring3)--get3得到選擇項B內容 get4:=ODBCExecute(ODBChandle,sqlstring4)--get4得到選擇項C內容 get5:=ODBCExecute(ODBChandle,sqlstring5)--get5得到選擇項D內容 get6:=ODBCExecute(ODBChandle,sqlstring6)--get6得到選擇題的答案 inputa:=1--用來設置熱區域的激活條件

5.3.3.5 空“操作”用來設置跳轉標志

5.3.3.6

在交互圖標右邊拖入四個熱區域

在計算圖標中從左到右的四個計算圖標中輸入: result:=”A“ result:=”b“ result:=”c“ result:=”d"在交互屬性中設置激活條件為inputa=1: ,鼠標指針設置為標準鼠標指針,其它的為默認設置.其中result變量用來記錄用戶所選的答案.5.3.3.7拖一個交互圖標“未命名”在它的右邊拖兩個計算圖標為“上一題”和“下一題”,再拖一個群組“完成”放在“下一題”右邊,設置熱區為按鈕。在“上一題”的激活條件中輸入number1>1,鼠標指針設置為:標準的鼠標指針。在“下一題”的激活條件中輸入:number1

六 結束語

根據對教師上課時課堂練習的分析,開發出該考試系統,主要是能夠方便課堂練習,同時還可用于期中期末測試,該系統主要是針對《C語言程序設計》課程來設計的。對該系統做簡單修改,即可用于其它課程。

參考文獻

專著:王嘉寧 朱雋著 《Photoshop7.0中文版新概念百例》[M] 中國水利水電出版社 2004年4月 專著:龔祥國主編 《Photoshop圖像處理實用教程》[M] 科學出版社 2002年 2月

專著: 王龍 金海主編 《Flash MX實戰入門新概念》[M] 中國水利水電出版社 2005年5月 專著: 李恒著《Authorware 6.0多媒體實例大制作》[M] 冶金工業出版社 2002 年4月 專著: 袁海東著《Authorware 7.0教程 》[M] 電子工業出版社 2004年9月 專著: 郝蕾蕾著 《Authorware課件制作》[M] 中國水利水電出版社 2001年7月

第二篇:C語言程序設計考試大綱

《C語言程序設計》考試大綱

Ⅰ考試性質

普通高等學校本科插班生招生考試是由專科畢業生參加的選拔性考試。高等學校根據考生的成績,按已確定的招生計劃,德、智、體全面衡量,擇優錄取。因此,本科插班生考試應有較高的信度、效度、必要的區分度和適當的難度。

本大綱適用于所有需要參加《C語言程序設計》考試的各專業考生。Ⅱ考試內容

總體要求:考生應按本大綱的要求了解或理解“C語言程序設計”中的數據類型、運算符與表達式、順序結構、選擇結構、循環控制、數組、函數、指針、預處理命令、結構體與共用體、文件的基本概念。熟練掌握程序設計的基本方法和C語言本身的語法、語句和使用方法。掌握一般問題的分析思路、數據存儲結構表達及建立在存儲結構之上的程序設計方法,具備初步運用C語言解決問題的程序設計能力;能熟練地閱讀、理解和編制簡單的C程序;具備進一步學習計算機各專業后續課程的能力和基礎。

一、數據類型、運算符與表達式

⒈ 考試內容

⑴關鍵字與標識符的概念:關鍵字的含義,標識符的定義,常量和變量的分類。

⑵數據類型:數據類型的含義、特點,不同類型常量的表達,不同類型變量的定義、賦初值方法。

⑶運算符:各類運算符的含義、優先級,各類表達式的表示方法、運算特點、值的類型和計算方法,各類公式的表達式描述和各類表達式的混合運算。

⒉ 考試要求

⑴理解關鍵字與標識符的概念、應用特點,理解數據類型的含義和常量、變量的分類。⑵掌握各數據類型的含義、特點,不同類型常量的表達,不同類型變量的定義和賦初值方法。

⑶熟練掌握各類運算符的含義、優先級,各類表達式的表示方法、運算特點、值的類型和計算方法。能夠進行各類公式的表達式描述和各類表達式的混合運算。

二、順序結構程序設計 ⒈ 考試內容

⑴輸入輸出:常用的輸入輸出函數,基本的輸入輸出格式。⑵賦值語句:賦值語句功能和表達方法。

⑶順序程序設計:編寫順序結構語句及程序。

⒉ 考試要求

⑴了解數據輸入輸出的概念以及在C語言中的實現方法。

⑵掌握賦值語句表達方法;掌握兩組輸入輸出函數的格式、表達方式和使用功能、特點。

⑶熟練掌握順序程序設計的思想和編程方法,能夠熟練編寫簡單問題的程序并上機調試。

三、選擇結構程序設計 ⒈ 考試內容

⑴條件的表達方式:算術表達式、關系表達式、邏輯表達式,各種運算結果的表達與判別。

⑵條件語句:if語句、if~else語句、else~if結構以及switch和break語句的使用方法。⑶選擇結構程序設計:編寫帶有選擇結構的語句及程序。⒉ 考試要求

⑴掌握問題中條件的表達方式(關系表達式、邏輯表達式)和運算結果。

⑵熟練掌握編程中條件的描述方法(用不同格式的if語句或switch語句)和使用方法,能夠進行各種條件下的問題的程序設計。

四、循環程序設計 ⒈ 考試內容

⑴循環語句: while、do~while和for語句的格式、循環條件的設置以及在循環結構中使用break和continue語句。

⑵循環程序設計:編寫帶有循環結構語句及程序。

⒉ 考試要求

⑴了解循環的概念,解決語句重復執行的方法。

⑵理解各種實現循環的語句的執行過程、執行步驟和相關參數量的變化情況,理解break和continue的使用形式和理由。

⑶掌握循環語句的格式和應用特點,掌握循環程序設計的方法。

五、數組 ⒈ 考試內容

⑴數組的概念:數組的概念、一維數組和二維數組。

⑵數組的使用:數組的定義、數組的初始化、數組元素的引用,數組的一般編程方法。⒉ 考試要求

⑴了解數組的基本概念。

⑵掌握不同類別數組的特點,掌握數組的定義、初始化和數組元素引用方法;掌握數組的實際應用方式、特點和程序設計方法。

六、函數 ⒈ 考試內容

⑴函數:函數定義的格式,包括類型、參數及返回值。⑵存儲類別:存儲類別的含義、使用方法。

⑶函數的運用:定義函數、調用函數、遞歸函數。⒉ 考試要求

⑴理解一般問題的解決方法和程序的結構化、模塊化設計思想,理解函數的調用方法,理解變量的數據類型、存儲類別,理解內部函數與外部函數的含義。

⑵掌握函數定義的一般格式,掌握形式參數的表達方式,函數返回值類型和返回值的表達方式,掌握函數調用的方法、特點和不同調用形式(嵌套調用、遞歸調用),掌握局部變量、全局變量的定義方法和聲明形式。

七、指針 ⒈ 考試內容

⑴指針概念:指針的概念,指針的類型、指針的分類。

⑵指針的運用:運用指針處理變量、數組、字符串、函數等。⒉ 考試要求

⑴理解指針的概念、特點,理解指針的分類、指針的數據類型描述。

⑵掌握指針的含義、不同類型指針與所指變量、數組、字符串、函數等的內在聯系。

八、預處理命令 ⒈ 考試內容

⑴預處理概念:宏的含義,文件包含的含義。

⑵預處理的運用:無參宏和有參宏,系統頭文件的加載。⒉ 考試要求

⑴理解預處理的含義和理由,理解文件包含的含義和宏的含義。⑵區分宏與函數的異同點;掌握文件包含命令的使用方法。

九、結構體與共用體 ⒈ 考試內容

⑴結構體與共用體的概念:結構體的含義,共用體的含義。

⑵結構體與共用體的運用:結構體與共用體的類型聲明、初始化和引用。⒉ 考試要求

⑴了解C語言基本類型與構造類型的含義,了解類型聲明與變量等定義的區別。

⑵掌握結構體、共用體、枚舉類型的聲明方法和相應變量等的定義、初始化、引用方法。

十、文件 ⒈ 考試內容

⑴文件的概念:文件的定義、分類和特點。

⑵文件的基本操作:文件打開與關閉、文件讀/寫操作,出錯檢測。⒉ 考試要求

⑴了解文件的含義、分類和特點。

⑵理解文件指針的使用方法,掌握文件打開與關閉、文件讀寫、文件定位和出錯檢測函數的使用方法。

⑶掌握不同問題使用文件的定義和操作方法。Ⅲ 考試形式及試卷結構

一、考試形式

閉卷、筆試。考試時間為120分鐘,試卷滿分為100分。

二、試卷內容比例

數據類型、運算符與表達式

約占10% 順序結構程序設計、選擇結構程序設計、循環程序設計、數組

約占60% 函數、指針

約占15% 預處理命令、結構體與共用體、文件

約占15%

三、試卷題型比例 正誤判斷題

占10% 單項選擇題

占40% 綜合題(包括寫程序結果、改正程序錯誤和程序填空等)

占30% 編程題

占20%。

四、試卷難易度比例

試題按其難度分為容易、中等題、難題,三種試題分值的比例為4:4:2 Ⅳ.題型示例

一、正誤判斷題(每題1分,共10分)1. 算法就是程序。

二、單項選擇題(每題2分,共40分)1.下列數據中,為字符常量的是________。A)'My' B)“B” C)Yours D)'K'

三、綜合題(每題10分,共30分)1.閱讀程序寫結果

#include

#define NULL 0

struct student{

long num;

float score;

struct student *next;

};

void main()

{

struct student a,b,c,*head, *p;

a.num=1;a.score=90.0;

b.num=2;b.score=95.0;

c.num=3;c.score=70.0;

head=&a;

a.next=&b;

b.next=&c;

c.next=NULL;

p=head;

do {

printf(“%d %5.1fn”,p->num,p->score);

p=p->next;

} while(p!=NULL);}

四、編程題(每題10分,共20分)

1.計算1至10000之間不能被3或5整除的整數之和。Ⅴ.參考書目

《C程序設計》(第三版),譚浩強編,清華大學出版社,2005年7 月 第3版。

第三篇:C語言程序設計——飛機訂票系統

C語言程序設計——飛機訂票系統

代碼如下:”

#include“stdio.h” #include“stdlib.h” #include“string.h”

#defineLENsizeof(structplane)#defineMAX 10;structplane { char destination[12];char num[10];char time[12];int price;int amount;};typedefstructplanePLANE;PLANE a[100];void menu();void input();void search();void preserve();void planeadd();void delplane();

void main(){ system(“cls”);menu();} void menu(){ char *menu[] = { ************** 歡迎進入飛機訂票系統*************,“ a:輸入航線 ”,“ b:查詢航線 ”,“ c:退訂票系統 ”,“ d:追加航線 ”,“ e:刪除航線 ”,“ f: 退出 ”,“****************************************************” };int i;char NO;int quit = 0;do

{

system(“cls”);

for(i = 0;i<9;i++)

printf(“n%s”, menu[i]);

printf(“n請輸入服務代碼a,b,c,d,e或fn”);

NO = getchar();

switch(NO)

{

case'a': input();break;

case'b': search();break;

case'c': preserve();break;

case'd': planeadd();break;

case'e': delplane();break;

case'f': quit = 1;break;

} } while(!quit);}

void input(){ int i, n;FILE *fp;system(“cls”);if((fp = fopen(“D:file”, “wb”))== NULL){

printf(“error!n”);exit(0);} printf(“n請輸入航班總數n:”);scanf(“%d”, &n);printf(“n請按下面提示輸入航班信息:起點站:沈陽”);for(i = 0;i

printf(“nt請輸入終點:”);

scanf(“%s”, a[i].destination);

printf(“t 航班班次:”);

scanf(“%s”, a[i].num);

printf(“t 時間:”);

scanf(“%s”, a[i].time);

printf(“t 票價:”);

scanf(“%d”, &a[i].price);

printf(“t機票總數:”);

scanf(“%d”, &a[i].amount);

fwrite(&a[i], sizeof(PLANE), 1, fp);} fclose(fp);}

void search(){ int i, j = 0, k = 101;char str[12];FILE *fp;PLANE b[5];if((fp = fopen(“D:file”, “rb”))== NULL){

printf(“error!n”);

exit(0);} printf(“n請輸入航班號:”);scanf(“%s”, str);while(fread(&b[j], LEN, 1, fp)!= 0)

j++;for(i = 0;i

if(strcmp(b[i].num, str)== 0)

{

printf(“沈陽至%s 航班號:%s 時間:%s 票價:%d 剩余票數:%dn”, b[i].destination, b[i].num, b[i].time, b[i].price, b[i].amount);

k = i;

} if(k == 101)

printf(“對不起,沒有您需要的航線。”);fclose(fp);system(“pause”);}

void preserve(){ int a = 0, i = 0, k, m, n, x;char str[12];PLANE preserve[10];FILE *fp;if((fp = fopen(“D:file”, “rb”))== NULL){

printf(“error!n”);

exit(0);} printf(“請輸入航班號:”);scanf(“%s”, str);while(fread(&preserve[i], LEN, 1, fp)!= 0){

if(strcmp(preserve[i].num, str)== 0)

printf(“沈陽至%s 航班號:%s 時間:%s 價格:%d 剩余票數:%d”, preserve[i].destination, preserve[i].num, preserve[i].time, preserve[i].price, preserve[i].amount);

k = i;

i++;} fclose(fp);printf(“n請輸入訂退票代碼:0-訂票 1-退票”);scanf(“%d”, &m);if(m == 0){

printf(“沈陽至%s 航班號:%s 時間:%s 價格:%d元剩余票數:%d”, preserve[k].destination, preserve[k].num, preserve[k].time, preserve[k].price, preserve[k].amount);

printf(“n請輸入訂票總數n:”);

scanf(“%d”, &n);

x = preserve[k].price*n;

printf(“n應付款%d元”, x);

preserve[k].amount = preserve[k].amount1;

del = 1;

printf(“n成功刪除信息!!”);} if(del == 0)

{ printf(“系統中不存在要刪除的信息!”);menu();} else { if((fp = fopen(“D:file”, “wb+”))== NULL);{printf(“文件有錯誤不能打開!”);

exit(0);

} } for(i = 0;i

fwrite(&delplane[i], LEN, 1, fp);

fclose(fp);} }

第四篇:C語言程序設計圖書管理系統

C語言程序設計

實驗報告

題 目: 圖書管理管理系統 院 系: 信息科技學院 專 業: 姓 名: 學 號:

指導教師: 楊呈勇 日 期: 09-09-18 問題定義 …………………………………………………………………………..3 2 系統設計 ……………………………………………………………………3 2.1 總體設計………………………………………………………………………………4

2.2 詳細設計………………………………………………………………………………4 2.2.1 借書模塊 ……… ………………………………………………… 4 2.2.2 圖書維護………………………………………………………………………… 5 ① 新增記錄 …………………………………………………………………… 5 ② 更改系統…………………………………………….………………… 6 ③刪除系統 …………………………………………… 6 ④ 查找系統……………………………………………….………………….6 ⑤ 顯示系統 ………………………………………………………………….7 3 系統實現 ………………………………………………………………………10 3.1 編碼 ………………………………………………………………………8 3.1.1 程序預處理 ……….……………………………………………………………9 3.1.2 主函數main()……….……………………………………………………….9 4 系統維護 ………………………………………………………………………16 5 歸納總結 ………………………………………………………………………16 5.1 開發經驗 ………………………………………………………………………16 5.2 實訓中遇到的問題及解決方法 ………………………………………………16 5.3 設計中的不足之處……………………………………………………………………16 5.4 感想和心得體會 ……………………………………………………………………16

圖書管理系統

本題目設計目的是訓練學生的基本編程能力,了解管理信息系統的開發流程,熟悉C語言的文件和單鏈表的各種基本操作。本程序中涉及結構體、單鏈表、文件及各種語句的運用如for();switch();if….else等方面的知識。通過本程序的訓練,使學生能對C語言的文件操作有一個更深刻的了解,初步掌握鏈表的一些結構及構成。掌握利用單鏈表存儲結構實現對學生成績管理的原理,為進一步開發出高質量的管理信息系統打下堅實的基礎。

1、問題定義

圖書信息包括:編號、書名、作者名、分類號、出版單位、出版時間、庫存數量,價格等。試設計一圖書信息管理系統,使之能提供以下功能:(1)系統以菜單方式工作

(2)圖書信息錄入功能(圖書信息用文件保存)(3)圖書信息瀏覽功能(4)圖書信息查詢功能

查詢方式:可以按書名,按作者名,按出版單位,按出版時間進行查詢。(5)圖書信息的刪除與修改

在問題定義階段要考慮題目的可行性和需求分析,接下來進入開發階段,完成系統設計和系統實現的任務。

2、系統設計 2.1 總體設計

采用模塊化的程序設計方法,即將較大的任務按照一定的原則分為一個個較小的任務,然后分別設計各個小任務。需要注意的是劃分出來的模塊應該相對獨立但又相關,且容易理

解。可以用模塊化層次結構圖(即模塊圖)來分析其任務的劃分,一般從上到下進行,最上面一層是主模塊,下面各層是其上一層模塊的逐步細化描述。

圖2.1

圖書管理系統功能模塊圖

? ? ? ? 本圖書管理系統要求采用單鏈表實現,如圖2.1所示,它由如下四大功能模塊組成: 借書模塊。通過輸入讀者的編號和圖書的編號,查找到要該借的書,完成借書這一項任務

還書模塊。通過輸入讀者的編號和圖書的編號,查找到要該還的書,完成還書這一項任務

圖書維護模塊。完成對圖書信息的維護。在此圖書管理系統中,它實現了對圖書信息的新曾、更改、刪除、查找和顯示操作,并將追加后的數據存入源數據文件。讀者維護模塊。一是實現對讀者記錄的存盤,即將讀者信息寫入數據文件中;

2.2 詳細設計

2.2.1 借書模塊

通過輸入讀者的信息和要借的書的編號。系統顯示相應的內容,若該文件中沒有數據,系統會提示單鏈表為空,沒有任何讀者記錄或圖書操作,此時,用戶應選擇調用create()函數,進行讀者記錄的輸入,即完成在單鏈表1中添加記錄的操作。值得一提的是,這里的字符串和數值的輸入分別采用了函數來實現,在函數中完成輸入數據任務,并對數據進行條件判斷,直到滿足條件為止,這樣一來,大大減少了代碼的重復和冗余,符合模塊化程序設計的特點。

2.2.2 還書模塊

還書模塊主要實現了在單鏈表中按讀者和圖書的編號查找滿足相關條件的借書記錄。在

用戶選擇4,調用查詢函數search()中,為指向保存了讀者信息的單鏈表的首地址的指針變量。為了遵循模塊化編程的原則,我們將在單鏈表中進行的指針定位操作,設計一個

int retbook(int bookid)

{

for(int i=0;i

{

if(borbook[i]==bookid)

{

borbook[i]=0;

return 1;

}

}

return 0;

}

//讀出讀者信息

void disp()

{

cout << setw(5)<< no <

for(int i=0;i

if(borbook[i]!=0)

cout << borbook[i] << “|”;

cout << “]”<

}

};

若沒有該記錄,則顯示無此記錄,返回到上一操作。

2.2.3 圖書維護模塊

此模塊主要實現了對圖書記錄的新增、更改、刪除、查找和顯示操作。因為圖書記錄是以單鏈表的結構形式存儲的,所以這些操作都在單鏈表中完成。下面分別介紹著4個功能模塊。

①新增記錄。該操作需要對單鏈表中目標節點的數據域中的值進行追加新增要輸入圖書的編號和書名,int addbook(int n,char *na)

{

Book *p=query(n);

if(NULL==p)

{

top++;

book[top].addbook(n,na);

return 1;

}

return 0;

}

②更改系統。該操作可以將原本錯誤的圖書記錄更改,將之改為正確的記錄。首先輸入原來的記錄的圖書的編號,在此之后輸入新的記錄的書名。

③刪除系統。該操作可以將原本記錄得圖書信息,在不用之后選擇將此刪除的一種方法,在彈出的窗口輸入原來的圖書的編號,就可以將之刪除。

④ 查找系統。該操作可以幫助讀者快速找到將要借的圖書,只要輸入圖書的編號,如果有這本書,就將顯示出。反之就會顯示不存在。Book *query(int bookid)

{

for(int i=0;i<=top;i++)

if(book[i].getno()==bookid &&book[i].gettag()==0)

{

return &book[i];

}

return NULL;

}

⑤顯示系統。該操作可以顯示出圖書現在的信息。cout << “輸入圖書編號:”<

cin >> bookid;

cout << “輸入圖書書名:”<

cin >> bname;

addbook(bookid,bname);

break;

case '2':

cout << “輸入圖書編號:”<

cin >> bookid;

b=query(bookid);

if(b==NULL)

{

cout << “ 該圖書不存在 ”<

break;

}

cout << “輸入新的書名:”<

cin >> bname;

b->setname(bname);

break;

case '3':

cout <<“ 讀入圖書編號:”<

cin >> bookid;

b=query(bookid);

if(b==NULL)

{

cout <<“ 該圖書不存在” << endl;

break;

}

b->delbook();

break;

case '4':

cout << “ 讀入圖書編號:”<

cin >> bookid;

b=query(bookid);

if(b==NULL)

{

cout <<“ 該圖書不存在”<< endl;

break;

}

b->disp();

break;

case '5':

disp();

break;

case '6':

clear();

break;

default:cout<<“輸入錯誤,請從新輸入:”;

}

}

}cout << “輸入圖書編號:”<

cin >> bookid;

cout << “輸入圖書書名:”<

cin >> bname;

addbook(bookid,bname);

break;

case '2':

cout << “輸入圖書編號:”<

cin >> bookid;

b=query(bookid);

if(b==NULL)

{

cout << “ 該圖書不存在 ”<

break;

}

cout << “輸入新的書名:”<

cin >> bname;

b->setname(bname);

break;

case '3':

cout <<“ 讀入圖書編號:”<

cin >> bookid;

b=query(bookid);

if(b==NULL)

{

cout <<“ 該圖書不存在” << endl;

break;

}

b->delbook();

break;

case '4':

cout << “ 讀入圖書編號:”<

cin >> bookid;

b=query(bookid);

if(b==NULL)

{

cout <<“ 該圖書不存在”<< endl;

break;

}

b->disp();

break;

case '5':

disp();

break;

case '6':

clear();

break;

default:cout<<“輸入錯誤,請從新輸入:”;

}

}

} cout << “輸入圖書編號:”<

cin >> bookid;

cout << “輸入圖書書名:”<

cin >> bname;

addbook(bookid,bname);

break;

case '2':

cout << “輸入圖書編號:”<

cin >> bookid;

b=query(bookid);

if(b==NULL)

{

cout << “ 該圖書不存在 ”<

break;

}

cout << “輸入新的書名:”<

cin >> bname;

b->setname(bname);

break;

case '3':

cout <<“ 讀入圖書編號:”<

cin >> bookid;

b=query(bookid);

if(b==NULL)

{

cout <<“ 該圖書不存在” << endl;

break;

}

b->delbook();

break;

case '4':

cout << “ 讀入圖書編號:”<

cin >> bookid;

b=query(bookid);

if(b==NULL)

{

cout <<“ 該圖書不存在”<< endl;

break;

}

b->disp();

break;

case '5':

disp();

break;

case '6':

clear();

break;

default:cout<<“輸入錯誤,請從新輸入:”;

}

}

3、系統實現 3.1 編碼

3.1.2 主函數main()include

#include

#include

//輸入/輸出文件流類

#include

using namespace std;

//最多的讀者

const int Maxr=100;

//最多的圖書

const int Maxb=100;

//每位讀者最多借五本書

const int Maxbor=5;

//圖書庫類,實現對圖書的維護,查找,刪除等

class BDatabase

{

private:

//圖書記錄指針

int top;

//圖書記錄

Book book[Maxb];

public:

//構造函數,將book.txt讀到book[]中

BDatabase()

{

Book b;

top=-1;

fstream file(“book.txt”,ios::in);

while(1)

{

file.read((char *)&b,sizeof(b));

if(!file)break;

top++;

book[top]=b;

}

file.close();

}

//全刪

void clear()

{

top=-1;

}

//增加圖書

int addbook(int n,char *na)

{

Book *p=query(n);

if(NULL==p)

{

top++;

book[top].addbook(n,na);

return 1;

}

return 0;

}

//查找圖書

Book *query(int bookid)

{

for(int i=0;i<=top;i++)

if(book[i].getno()==bookid &&book[i].gettag()==0)

{

return &book[i];

}

return NULL;

}

//圖書庫維護

void bookdata();

void disp()

{

for(int i=0;i<=top;i++)

if(book[i].gettag()==0)

book[i].disp();

}

//析構函數,將book[]寫到book.txt文件中

~BDatabase()

{

fstream file(“book.txt”,ios::out);

for(int i=0;i<=top;i++)

if(book[i].gettag()==0)

file.write((char *)&book[i],sizeof(book[i]));

file.close();

}

};

void BDatabase::bookdata()

{

char choice;

char bname[40];

int bookid;

Book *b;

while(choice!='0')

{

cout <<“nnnttt圖 書 維 護 ”<

cout<<“tt1 新 增n tt2 更 改ntt3 刪 除ntt4 查 找ntt5 顯 示ntt6 全 刪ntt0 退 出”<

cin >> choice;

switch(choice)

{

case '1':

cout << “輸入圖書編號:”<

cin >> bookid;

cout << “輸入圖書書名:”<

cin >> bname;

addbook(bookid,bname);

break;

case '2':

cout << “輸入圖書編號:”<

cin >> bookid;

b=query(bookid);

if(b==NULL)

{

cout << “ 該圖書不存在 ”<

break;

}

cout << “輸入新的書名:”<

cin >> bname;

b->setname(bname);

break;

case '3':

cout <<“ 讀入圖書編號:”<

cin >> bookid;

b=query(bookid);

if(b==NULL)

{

cout <<“ 該圖書不存在” << endl;

break;

}

b->delbook();

break;

case '4':

cout << “ 讀入圖書編號:”<

cin >> bookid;

b=query(bookid);

if(b==NULL)

{

cout <<“ 該圖書不存在”<< endl;

break;

}

b->disp();

break;

case '5':

disp();

break;

case '6':

clear();

break;

default:cout<<“輸入錯誤,請從新輸入:”;

}

}

}

//main()函數的實現,程序的主界面的引導

int main()

{

char choice;

int bookid,readerid;

RDatabase ReaderDB;

Reader *r;

BDatabase BookDB;

Book *b;

while(choice!='0')

{

cout <

cout <<“ttt1 借 書nnttt2 還 書 nnttt3 圖 書 維 護nnttt4 讀 者 維 護nnttt0 離 開”<

cin >> choice;

switch(choice)

{

case '1':

cout <<“ 借書 讀者編號:”;

cin >>readerid;

cout <<“ 圖書編號: ”;

cin >>bookid;

//按編號查找

r=ReaderDB.query(readerid);

if(NULL==r)

{

cout <<“ 不存在該讀者,不能借書”<< endl;

break;

}

b=BookDB.query(bookid);

if(b==NULL)

{

cout <<“ 不存在該圖書,不能借書”<< endl;

break;

}

if(b->borrowbook()==0)

{

cout << “ 該圖書已借出,不能借書”<< endl;

break;

}

r->borrowbook(b->getno());

break;

case '2':

cout<<“還書n 讀者編號:”;

cin >>readerid;

cout << “ 圖書編號:”;

cin >>bookid;

r=ReaderDB.query(readerid);

if(r==NULL)

{

cout <<“ 不存在該讀者,不能還書” << endl;

break;

}

b=BookDB.query(bookid);

if(b==NULL)

{

cout <<“ 不存在該圖書,不能還書” <

break;

}

b->retbook();

r->retbook(b->getno());

break;

case '3':

BookDB.bookdata();

break;

case '4':

ReaderDB.readerdata();

break;

default:cout<<“輸入錯誤,請從新輸入:”;

4、系統維護

經測試與調試確認軟件無錯時,開發就告一段落,這時可以交付軟件供用戶使用,但是在軟件的使用過程中還會面臨更加漫長的工作,即軟件維護。一般維護的工作有:更改使用中發現的錯誤;為適應實際環境而對程序進行修改;為滿足新的需求而對程序作必要的改進等等。

5、歸納總結 5.1 開發經驗

通過對本題目的開發,體會到要掌握以下幾點內容。

? 大程序的設計風格。按“自頂向下,逐步細化,模塊化”的方法進行程序設計。? 編寫主函數,并進行測試與調試。當被調函數又需要調用其他函數時,也要遵循逐步細化的原則。C語言提供豐富的庫函數,編程序時要善于使用庫函數,避免不必要的勞動。? 定義函數時,應選好參數的個數和數據類型。? 文件使用方法。文件使用完畢后應及時關閉。

5.2 實訓中遇到的問題及解決方法

在實訓過程中,我遇到許多的問題,比如有些語句有語法錯誤,表達式不正確,或缺少}或;等。或者是沒有宏定義,申明某些變量。這些都比較容易解決。通過查閱課本和請教同學,在經過WIN-TV編譯,知道哪有錯誤就改一下就行。比較嚴重的是,我的代碼在求解平均成績和總分時沒有錄入,且亂碼。自已改了很久,也在網上查詢但是都不行。最后在老師的幫助下及查閱有關資料,把代碼改出來了。

5.3 設計中尚存的不足之處

關于這次的程序,也有挺多不足的地方。首先,我覺得程序還不夠完善,比如沒有排序前和排序后的學生記錄輸出結果顯示和有些程序功能沒有滿足所給題目要求及好幾項都沒有顯示出學生具體的信息,甚至有些地方有點亂;其次,有些地方好像功能有點重復了,且編寫的代碼有重復;最后,就是該程序界面不夠美觀大方,有些文件不能鏈接。

5.4 感想和心得體會

通過這次實訓,我感觸甚深,要把所學的理論知識運用于解決實際問題不僅要付出艱辛的勞動,還得要有科學的方法和堅持不懈的努力。加上我們只是學了一個學期的c語言,我們所學的知識還不足以獨立編寫程序代碼。但是我認為只要我們認真的去學去做,我們會受益非淺。這次實訓讓我進一步理解了“編程是什么”,“如何去編程”,“編程的目的又是什么”,??發現自己的知識竟是如此貧乏,頓時感到了壓力的存在,從而也激發了我的學習熱情。它會成為我今后不斷進取、永不懈怠的動力。

在整個實訓過程中,老師給了我很大的幫助,使我由不了解怎樣運用鏈表到逐漸懂得鏈表的結構及初步掌握鏈表結構。還重新復習了一些語句的使用,比如for(0;switch();if….elser();結構體的使用;枚舉等。而且我能夠堅持虛心的向老師以及同學請教問題。它使我明白了虛心好學的重要性,更讓我懂得了如何跟老師同學去相處、去溝通。沒有老師和同學們的無私幫助,我不可能圓滿完成這次實訓任務。非常感謝幫助過我的所有老師和同學們,在此,謹向他們一并表示感謝!我開始喜歡這個程序設計了,尤其覺得它是很有挑戰性的,是對知識點扎實程度的考察,也是對個人能力的考察,還是對個人化毅力的考驗。它讓我明白做任何事都不應該輕易放棄。這樣的課程設計,既有利于教學,又可以教會學生書本以外的很多知識。現在我對它越來越感興趣,今后我會更加關注C語言程序,把C語言學好。希望老師以后多多指導,給予一定的幫助!

第五篇:C語言程序設計學生通訊錄管理系統

#include “stdio.h” #include “stdlib.h” #include “string.h” #include “conio.h” #include “stdlib.h” #define null 0 struct record { char name[20];char phone[20];char adress[40];char postcode[10];char e_mail[30];}student[500];struct LinkList { struct record US;struct LinkList *next;}a;struct LinkList *head=null;int num=0;FILE *fp;int menu_select();int adduser();int list();int search();int display();int add();int listbyname();int dele();int save();int exit();

void main(){

system(“cls”);for(;;){ switch(menu_select()){ case 0:adduser();break;case 1:list();break;case 2:search();break;case 3:add();break;case 4:dele();break;case 5:save();break;case 6:exit(0);} } } menu_select(){ char s[80];int a;printf(“*_* press any key enter menu!*_* n”);getch();system(“cls”);printf(“tt********************MENU*********************nn”);printf(“tt 0.輸入記錄n”);printf(“tt 1.顯示記錄 n”);printf(“tt 2.按姓名查找n”);printf(“tt 3.插入記錄 n”);printf(“tt 4.刪除記錄n”);printf(“tt 5.記錄保存文件n”);printf(“tt 6.Quitn”);printf(“tt***********************************************n”);do{ printf(“n Enter you choice(0~11):”);scanf(“%s”,s);a=atoi(s);} while(a<0||a>11);return a;}

adduser(){ printf(“ntt**************** 請輸入用戶信息 ****************n”);printf(“ntt輸入姓名:”);scanf(“%s”,&student[num].name);printf(“ntt輸入電話號碼:”);scanf(“%s”,&student[num].phone);printf(“ntt輸入地址:”);scanf(“%s”,&student[num].adress);printf(“ntt輸入郵編:”);scanf(“%s”,&student[num].postcode);printf(“ntt輸入e-mail:”);scanf(“%s”,&student[num].e_mail);num++;printf(“ntt是否繼續添加?(Y/N):”);if(getch()=='y')adduser();return(0);} list(){ int i;system(“cls”);if(num!=0){ printf(“ntt*************** 以下為通訊錄所有信息************”);for(i=0;i

printf(“ntt姓名: %s”,student[i].name);printf(“ntt電話: %s”,student[i].phone);printf(“ntt地址: %s”,student[i].adress);printf(“ntt郵編: %s”,student[i].postcode);printf(“ntte-mail:%s”,student[i].e_mail);printf(“tt”);if(i+1

add(){ int i;if((fp=fopen(“student.bin”,“wb”))==NULL){ printf(“ntt文件打開失敗”);} for(i=0;i

save(){ int j;FILE*fp;fp=fopen(“student.txt”,“w”);if(fp==NULL)printf(“can't open the file.”);if(num!=0){ for(j=0;j

fwrite(student,sizeof(student),1,fp);} } printf(“保存成功!”);fclose(fp);return(0);}

下載C語言程序設計考試系統word格式文檔
下載C語言程序設計考試系統.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    C語言職工工資管理系統程序設計報告[合集]

    C語言課程設計報告題目 小型職工工資管理系統專業班級2016級通信工程本科1班組別通信第二組學生姓名院 (系)信息工程系指導教師(職稱) 完成時間 2017年5月31日課程設計任務書 題......

    C語言程序設計

    1. Problem A: Hello world! Description Xiao_ming有兩個哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放學回家,父母分別跟他們打招呼。 Input 無 Output 請輸出: Hello Da_min, He......

    C 語言程序設計

    《C 語言程序設計》主要在計算機軟件、計算機網絡、計算機應用、通信技術、智能電子、電子信息工程、多媒體以及核工程與核技術等專業中開設,是電子信息類、機械類等工科專業......

    經典C語言程序設計例題

    經典C語言程序設計例題 【程序1】 題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少? 1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組......

    第一章 C語言程序設計

    第一章 C語言程序設計 考試形式:試卷(全國統一 4月第二個星期六9月倒數第二個星期六) 筆試: 滿分100分60分及格 時間:90分鐘內容: 70分 C語言知識30分 公共基礎 選擇題:60分 前......

    C語言程序設計心得體會

    C語言程序設計心得體會在這為期半個月的時間內,通過我們小組各成員之間的相互討論和合作,我們完成了學生信息管理系統的程序設計,更值得高興的是我們的程序得到了大家的喜愛,在......

    語言程序設計練習題 2

    匯編語言程序設計練習題 一、單項選擇題:在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內。錯選、多選或未選均無分。 1.CPU要訪問的某一......

    C語言程序設計策劃書

    信息工程學院學生會科技部 關于舉辦信息工程學院C語言程序設計大賽的策劃書 一、活動背景: 隨著計算機技術的快速發展,計算機程序語言的多樣化,C語言已經使用的越來越廣泛,C語言......

主站蜘蛛池模板: 香蕉av777xxx色综合一区| 欧美亚洲日本国产综合在线| 新香蕉少妇视频网站| 久久天天躁夜夜躁狠狠85| 国产成人免费无码av在线播放| 国产熟妇另类久久久久久| 男女啪啪免费观看网站| 亚洲精品无码高潮喷水a片软| 国产成人精品久久综合| 国产精品露脸视频观看| 奇米777四色精品综合影院| 无码人妻精品一区二区三区99仓本| 精品无人乱码高清| 高清无码爆乳潮喷在线观看| 欧美日韩国产精品自在自线| 99精品国产高清一区二区| 国产精品久久久久久福利| 老女老肥熟国产在线视频| 亚洲国产av玩弄放荡人妇| 国产精品区一区第一页| 蜜桃麻豆www久久囤产精品| 四虎永久在线精品免费一区二区| 欧美大浪妇猛交饥渴大叫| 免费精品人在线二线三线区别| 边做饭边被躁bd苍井空图片| 人妻少妇无码精品视频区| 国产精品成人久久电影| 久久精品国产9久久综合| 国产福利姬喷水福利在线观看| 无码专区 人妻系列 在线| 狠狠色噜噜狠狠狠狠7777米奇| 中国女人内谢69xxxx| 亚洲日韩爆乳中文字幕欧美| 人妻少妇边接电话边娇喘| 国产精品久久久久久久久久免费看| 久久伊人精品波多野结衣| 亚洲欧洲成人精品av97| 久久久噜噜噜久久中文字幕色伊伊| 97久久久综合亚洲久久88| 国产亚洲人成在线播放| 久九九久视频精品免费|