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

語言程序設計課程設計指導書

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

第一篇:語言程序設計課程設計指導書

匯編語言程序設計課程設計指導書

一、課程設計的目的

本課程設計是《匯編語言程序設計》課程的后繼教學環節,其宗旨是使學生通過對一個較大型的、綜合性的應用程序進行閱讀、修改、添加功能等工作,對匯編語言程序設計有更進一步的認識,提高編程技巧和閱讀理解復雜程序的能力。

二、課程設計的任務要求

根據所給的“Reader.asm”應用程序框架,在此基礎上修改和添加功能。1.基本任務: ?

? ? ? 認真閱讀“Reader.asm”源程序,理解程序每一條指令在程序中的作用; 用→、←鍵在窗口內左右移動文本;

用PgDn,PgUp鍵上下快速移動文本(每次移半幀); 設計專用鍵放大、縮小窗口,改變窗口位置。

2.擴展任務: ? ? 對文本內的Tab字符(ASCII碼09H)進行處理:遇到Tab鍵,下一個字符顯示在下一個表站開始處(每個6個字符一個表站);

設置狀態行,顯示當前文件名、文本位置(仿垂直滾動條)。

3.自行設計的其它任務:

三、課程設計報告的內容

1.課程設計題目名稱、班級號、學號、學生姓名和課程設計起止日期(封面);

2.上海應用技術學院課程設計任務書(下發)3.課程設計目的和要求;

4.課程設計任務內容; 5.詳細設計說明; 6.軟件使用說明; 7.課程設計總結;

8.附錄:1 參考文獻 2 程序清單(電子版)。

四、課程設計詳細設計說明及其它要求

1.2.3.4.5.6.分析原“Reader.asm”程序結構:每個模塊說明,較大模塊程序流程圖; 對你已經實現的功能做詳細的說明,并附上流程圖及部分程序清單; 自己對該“文件閱讀器”的進一步設想;

對于有設想但最終未實現的功能的大致編程思路的闡述; 論述在設計過程中遇到的并且對你具有啟發性的問題; 交課程設計報告手寫版,源程序交電子版。

五、評分標準

1.根據平時出勤情況和設計時的工作情況;

2.根據課程設計程序的完成情況,必須有可運行的軟件。3.根據課程設計報告的質量。課程設計報告不能抄襲,抄襲判為不及格。4.在題目要求之外附加具有實用性的功能。

六、課程設計工作進度計劃

星期一:課程設計介紹,源程序閱讀理解,功能設計,程序編寫。星期二:功能設計,程序編寫。

星期三:程序編寫與調試,課程設計報告撰寫。星期四:程序編寫與調試,課程設計報告撰寫。

星期五:程序最終修改,課程設計報告撰寫,提交報告并答辯。

七、主要參考資料

[1]楊文顯.匯編語言程序設計簡明教程.北京:電子工業出版社,2005

八、附錄

《文本閱讀器》匯編語言源程序清單

;Title: Assemble Program “Reader.asm”

;Read a file from disk, display it?s contents on screen;Move the content on screen by up/down arrow keys;========================== MYDAT SEGMENT MAXLEN DW 1000;最大行數 INDEX DW 1000 DUP(?);行索引 LENCT DW 0;實際行數 CURLINE DW 0;當前頁第一行行數 CCOUNT DW ?;文件總字符數

TOP DB 5;窗口左上角行數 LEFT DB 5;窗口左上角列數 WS DW 60;窗口寬度 HS DW 15;窗口高度 FG DB 17H;文字屬性 FGB DB 1FH;窗口邊框屬性

MSG1 DB 'File:$';輸入文件名提示 MSG2 DB 'File open error!$';打開文件出錯時提示 MSG3 DB 'File read error!$';讀文件出錯時提示 FILENA DB 80,?,80 DUP(?);輸入文件名緩沖區

;定義功能鍵和相應的處理程序

;每個功能定義兩個數據:掃描碼,處理程序入口地址;該數據由DOSUB子程序使用

KEYSUB DW 48H, SUB1 , 50H, SUB2, 0

MYDAT ENDS

;==========================

BUFFER SEGMENT PARA DB 65535 DUP(?);文件緩沖區,文件最大為64K BUFFER ENDS

;==========================

SSEG SEGMENT STACK ?STACK?;堆棧段

DW 100 DUP(?)SSEG ENDS

;==========================

;宏定義 DISPINIT: 設置顯示器顯示方式 DISPINIT MACRO MOV AX,0003H;文本方式 25x80 INT 10H ENDM;----------;宏定義 PROMPT: 顯示字符串 PROMPT MACRO OUTMSG LEA DX, OUTMSG MOV AH, 09H;INT 21H;ENDM;--------;宏定義KRYIN: 從鍵盤讀入一個字符 KEYIN MACRO MOV AH,0;讀鍵

INT 16H;AH中為掃描碼

ENDM;==========================;代碼段開始 CODE SEGMENT

ASSUME CS: CODE, DS: MYDAT, ES: BUFFER, SS: SSEG

START: MOV AX, MYDAT;裝載DS,ES MOV DS, AX MOV AX, BUFFER MOV ES, AX

DISPINIT;顯示方式初始化

CALL READFILE;讀入文件

JC DONE

CALL CLIST;初始化索引行

CALL CLSCREEN;清屏

CALL CREWIN;創建窗口

CALL SHOWCUR;顯示當前頁

NEXT: KEYIN;進入主程序: 讀鍵盤

CALL COMMAND;命令分析與處理

JNC NEXT;非x鍵繼續循環

DONE: CALL CLSCREEN;清屏

MOV AX, 4C00H INT 21H;退出

;-------;子程序READFILE: 提示并讀入文件名,將文件讀入緩沖區 READFILE PROC PROMPT MSG1;CALL SIN;讀入文件名

MOV AX, 3D00H MOV DX, OFFSET FILENA+2 INT 21H;打開文件(讀)JC GETERR1;打開文件出錯轉GETERR1 PUSH DS PUSH ES POP DS;將DS指向文件緩沖區段

MOV BX, AX;BX=文件號

MOV AH, 3FH;讀文件 MOV CX, 0FFFFH;讀入最多64K-1 MOV DX, 0;DS: DX指向文件緩沖區

INT 21H POP DS JC GETERR2;讀入文件出錯轉GETERR2 MOV CCOUNT, AX;實際讀入字符數存入CCOUNT中

CLC JMP GETFILEXIT

GETERR1: PROMPT MSG2;讀入文件出錯處理

KEYIN STC JMP GETFILEXIT;

GETERR2: PROMPT MSG3;打開文件出錯處理

KEYIN STC

GETFILEXIT: RET

READFILE ENDP;-------;輸入文件名子程序 SIN PROC MOV AH, 0AH MOV DX, OFFSET FILENA INT 21H;輸入文件名

XOR CH, CH MOV CL, FILENA+1;取文件名長度

LEA BX, FILENA+2 ADD BX, CX;計算字符串結尾地址

MOV BYTE PTR [BX], 0;在字符串尾部加0 RET SIN ENDP;-------;索引行初始化子程序 CLIST PROC MOV CX, CCOUNT JCXZ CSTX;文件為空結束

MOV SI,0;文件緩沖區字符指針

MOV DI,0;索引行指針

MOV DX,0;行數計數

MOV INDEX[DI], 0 INC DX;假設文件至少有一行 CST1: CMP WORD PTR ES:[SI], 0A0DH;判斷是否為回車換行符

JNZ CST2;不是行結束,轉CST2 INC DX;行數加一

ADD SI, 2;跳過回車換行符

ADD DI, 2;索引行指針加一

MOV INDEX[DI], SI;指向本行開始地址

CMP DX, MAXLEN JNC CST4;是否超過最大行,超過轉CST4,結束

JMP CST3;CST2: INC SI;文件緩沖區字符指針指向下一字符 CST3: LOOP CST1;CST4: MOV LENCT, DX;保存行數到LENCT中 CSTX: RET CLIST ENDP;-------;清屏子程序

CLSCREEN PROC MOV AX, 0600H;清屏

MOV CX, 0 MOV DH, 50 MOV DL, 79 MOV BH, 07H INT 10H RET CLSCREEN ENDP;------;顯示當前頁子程序 SHOWCUR PROC MOV DH, 0;窗口最頂行

MOV SI, CURLINE;取當前頁第一行行數

MOV CX, HS;窗口的第一行和最后一行為邊框,SUB CX, 2;所以能夠顯示內容的高度為窗口高度減二 SC1:

CALL SHOWLINE;顯示一行

INC DH;窗口下一行

INC SI;文件下一行

MOV AX, LENCT;CMP SI, AX;文件是否顯示完

JNC SC2;顯示完則轉SC2 LOOP SC1 JMP SC1X SC2: JCXZ SC1X;該頁顯示滿則結束

;該頁沒有顯示滿,則用空行填滿該頁 SC3: PUSH CX PUSH DX CALL SHOWSPLINE;顯示空行

POP DX POP CX INC DH LOOP SC3 SC1X: RET SHOWCUR ENDP;------;顯示一行子程序

;輸入:SI=顯示行行號;DH=窗口中的行號 SHOWLINE PROC PUSH CX PUSH SI PUSH DX PUSH AX

ADD DH, TOP;INC DH;實際行數=窗口左上角行數+DI+1 MOV DL, LEFT;INC DL;實際列數=窗口左上角列數+1 CALL VADD;

MOV CX, WS;窗口的第一列和最后一列是邊框,SUB CX, 2;所以能夠顯示內容的寬度為窗口寬度減二

SHL SI, 1;行索引為字類型,所以乘二

MOV SI, INDEX[SI];取該行第一個字符在文件緩沖區的地址

PUSH DS MOV AX, 0B800H MOV DS, AX;DS指向顯示緩沖區段地址 SL1: MOV AX, ES:[SI] CMP AX, 0A0DH JZ SL2;如果是回車換行,則該行結束

MOV DS: [DI], AL;顯示一個字符 ADD DI, 2;INC SI;取下一個字符

LOOP SL1;JCXZ SLX;該行正好顯示完,則結束,否則用空格填滿

SL2: MOV BYTE PTR DS:[DI], ' ';該行沒有顯示滿,則用空格填滿

ADD DI, 2 LOOP SL2

SLX: POP DS

POP AX POP DX POP SI POP CX

RET SHOWLINE ENDP;--------;顯示空行子程序

;輸入:DI=窗口中的行號 SHOWSPLINE PROC;

MOV AX, HS;SUB AX, 2;CMP DH, AL;顯示的空行是否超出最低行

JNC SSLX;如果是,則轉SSLX ADD DH, TOP;INC DH;實際行數=窗口左上角行數+DI+1 MOV DL, LEFT;INC DL;實際列數=窗口左上角列數+1 CALL VADD;

MOV CX, WS;窗口的第一列和最后一列是邊框,SUB CX, 2;所以能夠顯示內容的寬度為窗口寬度減二

PUSH DS MOV AX, 0B800H MOV DS, AX SSL1: MOV BYTE PTR DS:[DI], ' ' ADD DI, 2 LOOP SSL1 POP DS SSLX: RET SHOWSPLINE ENDP;-------;創建窗口子程序 CREWIN PROC PUSH ES MOV AX, 0B800H;顯示緩沖區地址為B800:0 MOV ES, AX;

MOV DH, TOP MOV DL, LEFT;窗口左上角行列數

MOV CX, HS;窗口高度(行數)CW1: PUSH DX;CALL VADD;計算地址

PUSH CX;MOV CX, WS;窗口寬度(列數)

MOV AL, FG;取屬性 CW2: MOV BYTE PTR ES:[DI], ' ';送空白字符

INC DI;MOV BYTE PTR ES:[DI], AL;送屬性

INC DI;LOOP CW2;

POP CX POP DX INC DH;行數加一

LOOP CW1

CALL DRAWB;畫邊框

POP ES RET CREWIN ENDP;-;畫邊框子程序 DRAWB PROC PUSH DX PUSH CX PUSH BX PUSH AX MOV BL, FGB MOV DH, TOP MOV DL, LEFT CALL VADD

;畫左上角角框

MOV BYTE PTR ES:[DI], 0C9H INC DI MOV BYTE PTR ES:[DI], BL INC DI

;畫第一行邊框

MOV CX, WS SUB CX,2 DB1: MOV BYTE PTR ES:[DI], 0CDH INC DI MOV BYTE PTR ES:[DI], BL INC DI LOOP DB1

;畫右上角角框

MOV BYTE PTR ES:[DI], 0BBH INC DI MOV BYTE PTR ES:[DI], BL

;畫第二行到倒數二行左右邊框

MOV DH, TOP MOV DL, LEFT INC DH MOV CX, HS SUB CX, 2 DB2: PUSH DX CALL VADD MOV BYTE PTR ES:[DI], 0BAH INC DI MOV BYTE PTR ES:[DI], BL DEC DI MOV AX, WS DEC AX SHL AX, 1 ADD DI, AX MOV BYTE PTR ES:[DI], 0BAH INC DI MOV BYTE PTR ES:[DI], BL POP DX INC DH LOOP DB2;取邊框屬性;窗口左上角行列數;計算地址;角框╔;因為去掉了左右角框,所以寬度減二;上下邊框═;角框╗;從第二行開始;第一行和最后一行沒有左右邊框,;所以高度減二;;計算左邊框地址;左右邊框║;;;;計算右邊框地址;;下一行;

;畫左下角角框

MOV DH, TOP;MOV DL, LEFT;MOV AX, HS;DEC AX;ADD DH, AL;左下角行數=右上角行數+窗口高度-1 CALL VADD MOV BYTE PTR ES:[DI], 0C8H;角框╚

INC DI MOV BYTE PTR ES:[DI], BL INC DI

;畫最低行邊框

MOV CX, WS;SUB CX, 2;因為去掉了左右角框,所以寬度減二 DB3: MOV BYTE PTR ES:[DI], 0CDH;上下邊框═

INC DI MOV BYTE PTR ES:[DI], BL INC DI LOOP DB3

;畫右下角角框

MOV BYTE PTR ES:[DI], 0BCH;角框╝

INC DI MOV BYTE PTR ES:[DI], BL

POP AX POP BX POP CX POP DX

RET DRAWB ENDP;------;計算窗口內某行列位置對應顯存地址;輸入:DH=行 DL=列;輸出:DI為顯存地址 VADD PROC MOV AL, 80;MUL DH;XOR DH, DH;ADD AX, DX;行數×80+列數

SHL AX, 1;乘2,因為每個字符占兩個字節

MOV DI, AX RET VADD ENDP;--------;命令分析子程序 COMMAND PROC CMP AH, 2DH;2DH為x鍵的掃描碼

JNZ COM1;不是x鍵,轉COM1 STC;值x鍵標志

RET COM1: CALL DOSUB;轉命令散轉子程序

CLC RET COMMAND ENDP;--;命令散轉子程序 DOSUB PROC MOV AL, AH MOV AH, 0;將鍵掃描碼放入AX中

MOV BX, OFFSET KEYSUB;BX指向KEYSUB DOSUB1: CMP WORD PTR [BX], 0 JZ DOSUBX;KEYSUB表查完,即沒有找到轉DOSUBX CMP AX, [BX] JZ DOSUB2;找到掃描碼轉DOSUB2 ADD BX, 4 JMP DOSUB1;DOSUB2: ADD BX, 2 MOV BX, [BX];取處理程序入口地址

JMP BX;轉處理程序 DOSUBX: RET

;SUB1和SUB2均為功能鍵處理程序;處理完后應使用JMP DOSSUBX結束

;上箭頭鍵處理程序 SUB1: CMP CURLINE, 0 JZ SUB1X;已到第一行,結束

DEC CURLINE;向上一行

CALL SHOWCUR;顯示當前頁 SUB1X: JMP DOSUBX

;下箭頭鍵處理程序 SUB2: MOV AX, LENCT DEC AX DEC AX;至少顯示一行

CMP AX, CURLINE;已到最后一行

JZ SUB2X INC CURLINE;向下一行

CALL SHOWCUR;顯示當前頁 SUB2X: JMP DOSUBX

DOSUB ENDP;--------

CODE ENDS

;========================= END START

第二篇:C語言程序設計課程設計指導書

課程設計指導書

課程名稱: C語言程序設計

班次: 自動化2016-01,02,03班

設計任務:

整個課程設計一共提供了10個題目,編號為1~10。按學號尾數進行選題設計。

課程設計目的

1、進一步掌握利用C語言進行程序設計的能力;

2、進一步理解和運用結構化程序設計的思想和方法;

3、初步掌握開發一個小型實用系統的基本方法;

4、學會調試一個較長程序的基本方法;

5、學會利用流程圖表示算法;

5、學習撰寫課程設計報告;

第一部分:課題描述(一共10個課題)

課題1:圖書管理系統

在磁盤上創建3個txt文件,命名book.txt,borrow.txt和reader.txt,分別存儲圖書、借閱和讀者的信息,每本圖書的基本信息有編號、書名、作者、出版日期、金額、類別、在館數量等。借閱基本信息有:編號、書名、金額、借書證號、借書日期、到期日期、罰款金額等。讀者信息包括借書證號、姓名、班級、學號、類別等。創建圖書管理系統,該系統運行時在控制臺中顯示菜單界面進行鍵盤輸入操作,模擬借閱圖書的管理過程。

系統功能包括以下方面: A、圖書信息管理

圖書按類別進行管理,常見類別有書籍、期刊、報刊等,在該模塊中又包含添加、刪除、修改、查詢等操作,操作結果打印在控制臺中。

字段包含:書名,編號,類別,存放地點,入庫時間

B、借閱信息管理

圖書借閱模擬操作,包括以下功能:借出,歸還和續借等操作,對超期圖書進行罰款金額顯示。另外可以設置罰金數額和最大借閱數量和時間等參數。

字段包含:書名,編號,借閱者,借出時間,歸還時間,借閱狀態,超期時間,最大借閱數

C、讀者信息管理

讀者分為教師和學生兩大類等級:教師和學生的最大圖書借閱數量和時間有所不同,并可對添加、掛失和查詢讀者信息。

字段包含:讀者姓名,讀者類別,可借閱時間,可借閱數量,系統操作過程中能夠正確讀取和更新文件,并進行正常的圖書、借閱和讀者管理操作。

課題2:個人通訊錄管理系統

在磁盤上建立1個communication.txt文件,作為讀取和存儲的通訊錄,該系統運行時在控制臺中顯示菜單界面進行鍵盤輸入操作,模擬通訊錄的操作過程。

系統功能包括以下方面:

A、通訊錄的每位聯系人信息有姓名、單位、固定電話、移動手機、分類(如同事、朋友、同學、家人等)、EMAIL、QQ等。

B、輸入、查找、刪除、修改聯系人信息功能。

C、顯示功能:能夠顯示所有聯系人信息(大于10條的分屏顯示),或按分類進行顯示。D、分類操作:可以按分類信息進行同一類的聯系人操作,比如顯示、刪除和查找操作。E、(選作)可以加載聯系人頭像并進行顯示,可用字符拼圖或讀取已有的黑白圖片文件。系統操作過程中能夠正確讀取和更新文件,并進行正常的通訊錄聯系人操作。

課題3:職工工資管理系統

在計算機中建立相應的數據結構,利用程序實現工資的輸入、查詢、增、刪、改、統計、輸出等操作。

1、設計一個能夠記錄公司員工工資的數據結構(比如包括:員工號,姓名,基本工資,補貼金額,獎勵金額,扣除金額、實發工資等)、文件(文件作為工資數據的保存介質)。注:,其中實發工資=基本工資+補貼金額+獎勵金額-扣除金額

2、應用文件保存工資管理數據。

3、新增:能將所有輸入的員工工資數據保存到文件中,并可選擇繼續輸入或退出。

4、查找:輸入員工的員工號,并在文件中查找

? 若找到,則顯示該員工的工資詳情 ? 否則提示未找到。? 無論查找成功否,應還可選擇繼續查找或退出。

5、刪除:輸入員工的員工號,并在文件中查找

? 若找到,提示是否確定刪除

? 若選擇是,則刪除文件中該員工信息 ? 若選擇否,則取消,? 否則提示無此員工信息

? 無論查找成功否,應還可選擇繼續查找或退出。

6、修改:輸入員工的員工號,并在文件中查找

? 若找到,顯示該員工的所有信息,并可進行輸入。完成后將現輸入的內容覆蓋原內容保存到文件中。

? 否則提示無此員工信息

? 無論查找成功否,應還可選擇繼續查找或退出。

7、統計:分類匯總并輸出所有員工的基本工資、補貼金額、獎勵金額、扣除金額、實發工資的總金額和平均金額。如:

基本工資、補貼金額、獎勵金額、扣除金額、實發工資

總和 12000 1300 1400 1500 13200 平均 1200 130 140 150 1320 人數: 10

8、退出:退出程序

課題4:自動售貨機系統

某公司請你為其生產的自動售貨機編寫軟件。這種無人值守自動售貨機販賣價值為A、B、C的三種商品,價格分別為2元,3元和6元。顧客投入10元的紙幣,然后選擇購買3種商品之一,自動售貨機吐出商品,并且找給用戶零錢。如果商品已經賣完,或者無法找零,則給出用戶一個提示,商品已售完,并且退還紙幣。

自然,你的售貨機用戶希望盡可能地給用戶找零,以免流失顧客。為了調查用戶的喜好,希望得到三種商品的每日消費數據,由此來調整貨柜中三種貨物的存貯量。你的程序將實現以下功能:

庫存查詢:檢索當前三種商品的儲存量 商品上架:為三種商品增加或者減少儲量

銷售查詢:分別統計今天每種商品的銷售量和銷售額 會計查詢:打印當天的往來帳目以及剩余零鈔數目

結算功能:取出今天所有的10元紙幣,并且分別設置零鈔的數目

銷售界面:顧客投入紙幣,選擇商品,獲得商品和零錢;或者直接顯示錯誤并退還紙幣 【題目要求】

(1)為各項操作功能設計一個菜單。應用程序運行后,先顯示這個菜單,然后操作員通過菜單項選擇希望進行的操作項目;

(2)你的售貨機用戶不希望每一位顧客都有權限執行以上功能,因此一旦進入銷售界面,就不應當退回到系統界面,但是應允許顧客反復購買,前一個顧客購買完畢后應停留在銷售界面里允許下一個顧客操作。直到某位特殊的顧客(超級顧客)輸入特殊的商品代號(密碼)方可回到主控界面。

(3)計算機安排的找零算法應該合理,不要出現某一種零錢找光的情況。同時顧客也不喜歡 明明有5元零鈔,卻被找給5個一元的零鈔。盡量滿足這兩個要求。

(3)、要求以上功能分別用函數實現。并要求用C語言的文件操作語句將以上所有結果保存在文件goods.txt。

【輸入/輸出要求】

(1)應用程序運行后,先顯示一個菜單,然后用戶根據需要選擇相應的操作項目。進入每個操作后,根據程序的提示輸入相應的信息;

(2)要求用戶輸入數據時,要給出清晰、明確的提示信息,包括輸入的數據內容、格式及結束方式等。

根據題目要求,運用所學知識,完成設計和實現工作,并按照書寫規范,撰寫課程設計報告。

課題5:銷售管理系統

某公司有四個銷售員(編號:1-4),負責銷售五種產品(編號:1-5)。每個銷售員都將當天出售的每種產品各寫一張便條交上來。每張便條包含內容:

1)銷售員的代號

2)產品的代號

3)這種產品的當天的銷售額

每位銷售員每天可能上繳0-5張便條。假設,收集到了上個月的所有便條,編寫一個處理系統,讀取上個月的銷售情況(在磁盤上創建一個txt文件記錄上個月的銷售信息),進行如下處理。

1)計算上個月每個人每種產品的銷售額。

2)按銷售額對銷售員進行排序,輸出排序結果(銷售員代號)

3)統計每種產品的總銷售額,對這些產品按從高到底的順序,輸出排序結果(需輸出產品的代號和銷售額)

4)輸出統計報表

銷售統計報表

產品代號

銷售之和 銷售員號 1 2 3 4 5 每種產品之和 總和

5)可以按產品代號查詢,也可以按銷售員號查詢。

課題6: 車票管理系統一車站每天有n個發車班次,每個班次都有一班次號(1、2、3?n),固定的發車時間,固定的路線(起始站、終點站),大致的行車時間,固定的額定載客量。如

班次 發車時間 起點站 終點站 行車時間 額定載量 已定票人數 1 8:00 郫縣 廣漢 2 45 30 2 6:30 郫縣 成都 0.5 40 40 3 7:00 郫縣 成都 0.5 40 20 4 10:00 郫縣 成都 0.5 40 2 ?

(一)功能要求:用c語言設計一系統,能提供下列服務:(1)錄入班次信息(信息用文件保存),可不定時地增加班次數據(2)瀏覽班次信息,可顯示出所有班次當前狀總(如果當前系統時間超過了某班次的發車時間,則顯示“此班已發出”的提示信息)。

(3)查詢路線:可按班次號查詢 ,可按終點站查詢(4)售票和退票功能

A:當查詢出已定票人數小于額定載量且當前系統時間小于發車時間時才能售票,自動更新已售票人數

B:退票時,輸入退票的班次,當本班車未發出時才能退票,自動更新已售票人數

課題

7、單項選擇題標準化考試系統

在磁盤上創建一個test.txt文件,使用記事本打開后先寫入40道單選題和相應的選項和正確答案。再編寫一個單項選擇題標準化考試系統,該系統功能要求: 字段:題干,備選答案,標準答案

A、用文件保存試題庫。(每個試題包括題干、4個備選答案、標準答案)。B、試題錄入、修改和刪除。

C、試題抽取:每次從試題庫中可以隨機抽出N道題(N由鍵盤輸入)。D、考生答題:用戶抽取N道試題進行答題,鍵盤輸入每道題的答案。

E、自動判卷:系統可根據用戶答案與標準答案的對比實現判卷并給出成績。

系統操作過程中能夠正確讀取和更新試題文件,并進行正常的試題管理、抽取、答題和判卷操作,該過程在控制臺中顯示,人機交互方便。

課題8:醫院門診候診的隊列管理程序

要求采用先來先就診的排隊方式(就診順序與掛號單編號無關),假設掛號時編碼是連續的,但由于同一個門診科目有3個診室,其中35(含35)歲以上的在第一診室,35歲以下男患者進第二診室,其它的進第三診室,程序啟動后顯示下列菜單:

字段:掛號單號,患者姓名,年齡,性別,分診室號,【實現提示】 1--掛號 2--叫號 3--分診室

4--顯示各診室隊列信息

5--統計當天就診的患者情況(要求按性別進行統計和按任意年齡區段進行統計)6--結束程序

選1時,提示用戶在一行內輸入姓名及掛號單編號;

選2時,顯示排在隊列中第一位患者姓名、掛號單編號,并將其從掛號序列中刪除 選3時,進行診室分配

選4時,按隊列順序顯示個診室排隊人的姓名、掛號單編號及所在診室 選5時,進行兩種統計方法的選擇,并進行必要的統計計算 選6時,退出程序的運行

要求1~5中每一個步驟完成后都能重新顯示此選擇菜單

課題9:成績管理系統

現有學生成績信息,內容如下

姓名 學號 語文 數學 英語 張明明 01 67 78 82 李成友 02 78 91 88 張輝燦 03 68 82 56 王露 04 56 45 77 陳東明 05 67 38 47 ?.......?

請用C語言編寫一系統,實現學生信息管理,軟件的功能要求如下:(1)信息維護:

要求:學生信息數據要以文件的形式保存,能實現學生信息數據的維護。此模塊包括子模塊有:增加學生信息、刪除學生信息、修改學生信息(2)信息查詢:

要求:查詢時可實現按姓名查詢、按學號查詢(3)成績統計:

要求:A輸入任意的一個課程名(如數學)和一個分數段(如60--70),統計出在此分數段的學生情況。

(4)排序:能對用戶指定的任意課程名,按成績升序或降序排列學生數據并顯示排序結果

課題10:停車場管理系統設計

1.有一個兩層的停車場, 每層有6個車位, 當第一層車停滿后才允許使用第二層.(停車場可用一個二維數組實現, 每個數組元素存放一個車牌號)每輛車的信息包括車牌號, 層號, 車位號, 停車時間共4項.其中停車時間按分鐘計算

2.假設停車場初始狀態為第一層已經停有4輛車, 其車位號依次為1—4 , 停車時間依次為20, 15, 10 , 5.即先將這四輛車的信息存入文件”car.dat”中(數組的對應元素也要進行賦值)3.停車操作: 當一輛車進入停車場時, 先輸入其車牌號, 再為它分配一個層號和一個車位號(分配前先查詢車位的使用情況, 如果第一層有空則必須停在第一層), 停車時間設為5 , 最后將新停入的汽車的信息添加文件”car.dat”中, 并將在此之前的所有車的停車時間加5.4.收費管理(取車): 當有車離開時, 輸入其車牌號, 先按其停車時間計算費用, 每5分鐘0.2元.(停車費用可設置一個變量進行保存), 同時從文件”car.dat”中刪除該車的信息, 并將該車對應的車位設置為可使用狀態(即二維數組對應元素清零).按用戶的選擇來判斷是否要輸出停車收費的總計.5.輸出停車場中全部車輛的信息.6.退出系統.字段:車牌號,樓層號,車位號,入庫時間,出庫時間,停車時間,停車費用

第二部分:基礎訓練

若感覺直接完成所選課題很困難,可以嘗試先完成基礎訓練。完成基礎訓練,有一定的編程基礎后,在完成所選課題。

第一步: 定義一個結構體類型,用來表示學生的各種屬性。定義一個學生結構體變量,從鍵盤輸入各個分量的值,然后從屏幕輸出該結構體變量的各個分量。學生結構體類型定義如下:

typedef struct _CStudent { char szName[20];/* 學生姓名 */ char nNumber[10] /* 學號 */ int nAge;/* 年齡 */ char cSex;/* 性別,約定 ?m? 代表女,?f?代表男 */ char szAddress[20];/* 家庭地址 */ double dDataStruct;/* 數據結構成績 */ double dMath;/* 數學成績 */ double dEnglish;/* 英語成績 */ }CStudent;

第二步:

定義一個結構體類型,用來表示學生的各種屬性。定義一個含3個元素的學生結構體變量數組,從鍵盤輸入3個同學的信息,然后從屏幕輸出該結構體變量數組各成員的值。

建議:定義兩個函數,一個用于從鍵盤輸入一個學生結構體變量的各個分量的值,另一個把一個學生結構體變量的值輸出到屏幕。函數原型可以如下:

void input(CStudent* p)/* 從鍵盤輸入 */ void output(CStudent* p)/* 向屏幕輸出 */

第三步:

從鍵盤輸入一個學生的信息,然后以文本方式寫入文件。定義另一個學生結構體變量,用于從文件讀出數據,然后把數據顯示到屏幕。

第四步:

定義一個含3個元素的學生結構體數組,從鍵盤輸入3個同學的信息,以文本方式把這些數據寫入文件。

第五步:

將課題4寫入文件的數據全部讀出,輸出到屏幕。

附錄一:

本設計中需要清屏。說明如下:

格式:

system(“cls”)包含頭文件: stdlib.h

附錄二:控制臺程序選擇菜單的完成

#include #include

int main(){ int choice1 = 1, choice2;

do {

printf(“歡迎使用學生成績管理系統n”);

printf(“請選擇程序功能n”);

printf(“

1、數據錄入n”);

printf(“

2、數據查詢n”);

printf(“

3、輸出所有同學信息n”);

printf(“

4、退出程序n”);

scanf(“%d”, &choice1);

switch(choice1)

{

case 1:

printf(“數據錄入n”);

/*編寫數據錄入程序*/

printf(“返回上級菜單請按n退出程序請按n”);

scanf(“%d”, &choice1);

break;

case 2:

printf(“

1、按學號查詢n”);

printf(“

2、按姓名查詢n”);

scanf(“%d”, &choice2);

switch(choice2)

{

case 1:

printf(“按學號查詢n”);

/*編寫按學號查詢程序*/

break;

case 2:

printf(“按姓名查詢n”);

/*編寫按姓名查詢程序*/

break;

}

printf(“返回上級菜單請按n退出程序請按n”);

scanf(“%d”, &choice1);

break;

case 3:

printf(“輸出所有同學信息n”);

/*編寫輸出所有同學信息程序*/

printf(“返回上級菜單請按n退出程序請按n”);

scanf(“%d”, &choice1);

break;

case 4:

break;

}

system(“cls”);}while(choice1!= 4);

printf(“程序結束n”);return 0;}

附錄三:關于菜單的處理技術舉例 #include #include

int menu_select();/*主菜單函數*/ /******主函數開始*******/ main(){ int i;Salary sal[M];/*定義結構體數組*/ int length;/*保存記錄長度*/ clrscr();/*清屏*/ for(;;)/*無限循環*/ { switch(menu_select())/*調用主菜單函數,返回值整數作開關語句的條件*/ { case 1:length=enter(sal);break;/*輸入記錄*/ case 2:list(sal);break;/*顯示全部記錄*/ case 3:search(sal,name);break;/*按姓名查找顯示記錄*/ case 4:length=delete(sal);break;/*刪除記錄*/ case 5:length=add(sal);break;/*插入記錄*/ case 6:save(sal);break;/*保存文件*/ case 7:length=load(sal);break;/*讀文件*/ case 8:display(sal);break;/*按序號查找顯示記錄*/ case 9:sort(sal);break;/*排序成新文件*/ case 10:copy(sal);break;/*數據備份*/ case 0:exit(0);/*如返回值為0則程序結束*/ } } } /*菜單函數,函數返回值為整數,代表所選的菜單項*/ menu_select(){ char s[80];int c;gotoxy(1,25);/*將光標定為在第25行,第1列*/ printf(“press any key enter menu......n”);/*提示按任意鍵進入菜單選擇*/ getch();/*讀入任意字符*/ clrscr();/*清屏*/ gotoxy(1,1);printf(“********************MENU*********************nn”);printf(“ 1.Enter a recordn”);printf(“ 2.List the filen”);printf(“ 3.Search record on namen”);printf(“ 4.Delete a recordn”);printf(“ 5.Add record n”);printf(“ 6.Save the filen”);printf(“ 7.Load the filen”);printf(“ 8.Display record on ordern”);printf(“ 9.Sort to a new filen”);printf(“ 10.Copy to a new file n”);printf(“ 0.Quitn”);printf(“***********************************************n”);do{ printf(“n Enter you choice(0~10):”);/*提示輸入選項*/ scanf(“%d”,&c);/*輸入選擇項*/ }while((c>10)||(c<0));/*選擇項不在0~11之間重輸*/ return c;/*返回選擇項,主程序根據該數調用相應的函數*/ }

附錄四:關于頭文件的使用

/******頭文件(.h)***********/ #include “stdio.h” /*I/O函數*/ #include “stdlib.h” /*標準庫函數*/ #include “string.h”/*字符串函數*/ #include “ctype.h” /*字符操作函數*/ #define M 50 /*定義常數表示記錄數*/ typedef struct /*定義數據結構*/ { char name[20];/*姓名*/ char no[10];/*員工編號*/ char units[30];/*部門*/ char post[10];/*職稱*/ ?? }Salary;/******以下是函數原型*******/ int enter(SALARY t[]);/*輸入記錄*/ void list(SALARY t[]);/*顯示全部記錄*/ void search(SALARY t[],char name[]);/*按姓名查找顯示記錄*/ int delete(SALARY t[]);/*刪除記錄*/ int add(SALARY t[],int n);/*插入記錄*/ void save(SALARY t[]);/*記錄保存為文件*/ int load(SALARY t[]);/*從文件中讀記錄*/ void display(SALARY t[]);/*按序號查找顯示記錄*/ void sort(SALARY t[]);/*排序成新文件*/ void copy(SALARY t[]);/*數據備份*/ int menu_select();/*主菜單函數*/

附錄五:關于文件的使用

要將信息永久保存,可采用磁盤文件的形式來存儲數據。C語言提供了豐富的文件操作函數。從文件編碼的方式來看,文件可分為ASCII碼文件和二進制碼文件兩種。ASCII文件也稱為文本文件,這種文件在磁盤中存放時每個字符對應一個字節,用于存放對應的ASCII碼。例如,數5678的存儲形式為:

ASC碼:00110101 00110110 00110111 00111000

十進制碼: 5 共占用4個字節。ASCII碼文件可在屏幕上按字符顯示,例如源程序文件就是ASCII文件,用DOS命令TYPE可顯示文件的內容。由于是按字符顯示,因此能讀懂文件內容。

二進制文件是按二進制的編碼方式來存放文件的。例如,數5678的存儲形式為: 00010110 00101110只占二個字節。二進制文件雖然也可在屏幕上顯示,但其內容無法讀懂。C系統在處理這些文件時,并不區分類型,都看成是字符流,按字節進行處理。輸入輸出字符流的開始和結束只由程序控制而不受物理符號(如回車符)的控制。因此也把這種文件稱作“流式文件”。在C語言中,文件操作都是由庫函數來完成的。

文件打開函數fopen fopen函數用來打開一個文件,其調用的一般形式為: 文件指針名=fopen(文件名,使用文件方式)其中,“文件指針名”必須是被說明為FILE 類型的指針變量,“文件名”是被打開文件的文件名。“使用文件方式”是指文件的類型和操作要求。“文件名”是字符串常量或字符串數組。例如: FILE *fp;fp=(“file a”,“r”);其意義是在當前目錄下打開文件file a,只允許進行“讀”操作,并使fp指向該文件。

又如:FILE *fphzk;fphzk=(“c:hzk16',”rb“)其意義是打開C驅動器磁盤的根目錄下的文件hzk16,這是一個二進制文件,只允許按二進制方式進行讀操作。兩個反斜線“ ”中的第一個表示轉義字符,第二個表示根目錄。使用文件的方式共有12種,下面給出了它們的符號和意義。

文件使用方式

意 義

“rt”

只讀打開一個文本文件,只允許讀數據 “wt”

只寫打開或建立一個文本文件,只允許寫數據 “at”

追加打開一個文本文件,并在文件末尾寫數據 “rb”

只讀打開一個二進制文件,只允許讀數據 “wb”

只寫打開或建立一個二進制文件,只允許寫數據 “ab”

追加打開一個二進制文件,并在文件末尾寫數據 “rt+”

讀寫打開一個文本文件,允許讀和寫 “wt+”

讀寫打開或建立一個文本文件,允許讀寫

“at+”

讀寫打開一個文本文件,允許讀,或在文件末追加數據 “rb+”

讀寫打開一個二進制文件,允許讀和寫 “wb+”

讀寫打開或建立一個二進制文件,允許讀和寫

“ab+”

讀寫打開一個二進制文件,允許讀,或在文件末追加數據

fclose函數

調用的一般形式是: fclose(文件指針); 例如:fclose(fp);正常完成關閉文件操作時,fclose函數返回值為0。如返回非零值則表示有錯誤發生。文件的讀寫對文件的讀和寫是最常用的文件操作。

讀字符串函數fgets函數

fgets函數的功能是從指定的文件中讀一個字符串到字符數組中,函數調用的形式為: fgets(字符數組名,n,文件指針); 其中的n是一個正整數。表示從文件中讀出的字符串不超過 n-1個字符。在讀入的最后一個字符后加上串結束標志'

主站蜘蛛池模板: 国产69久久精品成人看| 国产又色又爽又黄的免费| 人人妻在人人| 久99视频精品免费观看福利| 亚洲成av人片一区二区| 女人被狂躁c到高潮视频| 久久久人妻| 日韩乱码人妻无码中文字幕视频| 免费国精产品wnw2544| 亚洲国产成人精品av在线| 亚洲高清aⅴ日本欧美视频| 欧美成aⅴ人高清怡红院| 特级毛片内射www无码| 暖暖 在线 日本 免费 中文| 人妻精品久久久久中文字幕| 九色九九九老阿姨| 久久婷婷国产剧情内射白浆| 五月丁香六月综合缴清无码| 亚洲成av人片不卡无码手机版| 国产免费看又黄又大又污的胸| 欧洲精品无码一区二区三区在线播放| 国产成人精品三级在线影院| 国产三级三级三级av精品| 伊人久久大香线蕉av网站| 熟妇人妻系列aⅴ无码专区友真希| 亚洲人成77在线播放网站| 10000拍拍拍18勿入免费看| 性色av闺蜜一区二区三区| yy111111少妇无码影院| 18禁h免费动漫无码网站| 天天夜碰日日摸日日澡性色av| 亚洲区小说区激情区图片区| 国产欧美精品一区二区色综合| 国产亚洲精品久久19p| 国产内射老熟女aaaa∵| 欧美人与禽2o2o性论交| 中国浓毛少妇毛茸茸| 国产大屁股喷水视频在线观看| 激情欧美成人小说在线视频| 国产精品亚洲一区二区无码| 日韩欧美一区二区三区免费观看|