雜志訂閱管理系統(tǒng)_第1頁
雜志訂閱管理系統(tǒng)_第2頁
雜志訂閱管理系統(tǒng)_第3頁
雜志訂閱管理系統(tǒng)_第4頁
雜志訂閱管理系統(tǒng)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 姓名:肖 虎 (DAVID X.H.) 專業(yè):巖土工程(工程學(xué)院) 學(xué)號(hào):20051002595 日期: 2007.09.05 我的班號(hào)是20,題目是22題,另外還選做了第18題。報(bào)告分四部分,第一部分為實(shí)習(xí)概述,第二部分為第22題的設(shè)計(jì)與分析,第三部分為第18題的設(shè)計(jì)與分析,第四部分兩個(gè)系統(tǒng)的原代碼。 第一部分 計(jì)算機(jī)語言只有通過不斷的實(shí)踐才能掌握和熟練運(yùn)用,所以學(xué)校的C語言實(shí)習(xí)非常有必要,不足之處是太遲了。通過這次實(shí)習(xí),我鞏固了C語言的語法和一些函數(shù),特別是對(duì)文本文件操作的函數(shù),領(lǐng)悟了模塊設(shè)計(jì)的基本思想。 我的一點(diǎn)建議。將IDE換成VC6.0,VC6.0編輯比較方便,支持剪貼,復(fù)制,粘貼

2、,有縮進(jìn)功能,寫代碼方便、美觀。 第二部分 Part : 題目大意:做一系統(tǒng),要求用文件保留用戶的信息(包括姓名,性別,地址,電話號(hào)碼,雜志單價(jià),訂閱數(shù),訂閱期限(以“YYYY.MM.DD”表示),提供以下的功能: 1,增加新訂戶,將用戶的信息寫入文件。 2,根據(jù)當(dāng)天的日期對(duì)文件查詢,刪除已到期的訂戶的文件信息。 3,統(tǒng)計(jì)本雜志的本月或任意時(shí)候的訂戶數(shù),并輸出訂戶的信息。Part : 需求分析:根據(jù)題目要求,由于訂戶信息放在文件中,所以應(yīng)提供文件的輸入,輸出,刪除等操作;在程序中需要瀏覽訂戶的信息,應(yīng)提供顯示、查找等操作;另外還應(yīng)提供用戶每步的輸入提示、輸入的日期的格式判斷及重輸功能、鍵盤式選

3、擇菜單實(shí)現(xiàn)功能等。Part : Part :注:原代碼在第四部分。2,增加訂戶模塊 注:原代碼在第四部分。3,刪除過期訂戶 注:原代碼在第四部分。在上圖中我假設(shè)當(dāng)前時(shí)間為20080808對(duì)文件中訂戶信息進(jìn)行更新。下面來看看保存有訂戶信息的文本文件中的數(shù)據(jù)情況。在上圖中我們可以看出所有的到期時(shí)間在20080808之前的訂戶的信息都被一段特殊的信息所代替。4,輸出所有信息注:原代碼在第四部分。在上圖中我輸出了在MSG.txt中的所有訂戶的信息。5,統(tǒng)計(jì)本月訂戶注:原代碼在第四部分。上圖中假設(shè)這個(gè)月是20080808。注意這個(gè)功能與刪除過期訂戶的差異,統(tǒng)計(jì)功能只是輸出文件中沒有過期的訂戶,而沒有在文

4、件中將過期的訂戶刪除,而刪除過期訂戶在文件中將過期的訂戶刪除。6,查詢用戶 注:原代碼在第四部分。以上是查詢姓名是"xiao"的訂戶的信息。 第三部分Part : 第十八題程序設(shè)計(jì)。 題目大意:有n個(gè)正整數(shù),將他們組成一排,組成一個(gè)最大的位數(shù)。程序輸入:N個(gè)整數(shù),程序輸出:N個(gè)數(shù)連接成的多位數(shù)。Part : 設(shè)計(jì)思路: 將所有的正整數(shù)用字符串的格式存儲(chǔ),用strcmp()函數(shù)將他們比較大小。將比較后大的先輸出,小的后輸出。這樣一來貌似已經(jīng)得到了想要得到的結(jié)果,但是這是不對(duì)的。舉個(gè)很簡(jiǎn)單的例子: 比如:有如下正整數(shù)散列,121 2 33 1006 12那么按照這個(gè)算法大小順序

5、應(yīng)該是:33 2 121 12 1006,輸出的數(shù)就是332121121006。其實(shí)它不是最大的,最大的數(shù)應(yīng)該是:332121211006。 這就是說,要對(duì)算法進(jìn)行修正,注意到在上面的散列中121與12 的順序?qū)Y(jié)果影響很大,因?yàn)?2 是121的子串,才會(huì)出現(xiàn)這種情況,那么可以這樣修正將strcmp()后的結(jié)果的順序,將序列中的第i個(gè)與第i+1個(gè)交換,比較交換后的序列組成的數(shù)與交換前的序列組成的數(shù)的strcmp()大小,如果大就將序列中的i與i+1個(gè)數(shù)真的交換,否則保持原順序。Part : 流程圖按照提示在屏幕上分別輸入5個(gè)正整數(shù),可以得到最大的組合。以下是輸入的121 2 33 1006 1

6、2。其中第一個(gè)數(shù)5表示有五個(gè)正整數(shù)。注:原代碼在第四部分。 第四部分第22題的原代碼:#include "stdio.h"#include "string.h"#include "stdlib.h"typedef struct msgchar name20;char sex10;char dialnumber11; int count; float price; float money; char date20;char readeraddr50;msgnode;void Start()printf("*n");p

7、rintf("* WRITEN BY DAVID X.H. OF CUG *n");printf("* *n");printf("* *n");printf("* DAVID X.H. ALL RIGHTS RESERVED *n");printf("*n");void TextOut()printf("ttwanna check message,press-0.nn"); printf("ttwanna ADD a new reader,press-1.nn&qu

8、ot;);printf("ttwanna update the message table,press-2.nn");printf("ttwanna output all the message ,press-3.nn");printf("ttwanna display readers this month. ,press-4.nn");printf("ttwanna exit,press-5.nn");int CheckDateMon(char * date) char chdate3; chdate0=date

9、5; chdate1=date6; chdate2='0' return atoi(chdate);int CheckDateDay(char * date)char chdate3;chdate0=date8;chdate1=date9; chdate2='0' return atoi(chdate);int AddReader()FILE *fp; msgnode ad; if(fp=fopen("MSG.txt","at")=NULL)printf("Cannot open the file or Cann

10、ot find the file.please check out .n"); getch(); return 0;printf("input start. _ n"); printf("please input the name: _ n"); scanf("%s",);printf("please input the sexmale/female: _ n"); scanf("%s",ad.sex);printf("please input the dial

11、number: _ n"); scanf("%s",ad.dialnumber); printf("please input the count: _ n"); scanf("%d",&ad.count); printf("please input the price: _ n"); scanf("%f",&ad.price); printf("please input the date: _ n"); scanf("%s",ad

12、.date); while(ad.date4!='.'| ad.date7!='.'| strlen(ad.date)!=10 |CheckDateMon(ad.date)>=13|CheckDateDay(ad.date)>=32)printf("the format is not right or the date is not existed.n "); printf("You should input the date like this 'YYYY.MM.DD'n");printf(&

13、quot;please input the date again: _ n"); scanf("%s",ad.date);printf("please input the address of reader: _ n"); scanf("%s",ad.readeraddr); fprintf(fp,"%15s %8s %13s %7d %7.2f %10.2f %13s %-50sn",,ad.sex,ad.dialnumber,ad.count,ad.price,ad.count*ad.p

14、rice,ad.date,ad.readeraddr); fclose(fp); return 1;int UpdateMsg(char *currdate)msgnode currnode,movenode ; int i=0,j=0; FILE *fp; if(fp=fopen("MSG.txt","rt+")=NULL)printf("%s n","Cannot open the file or Cannot find the file.please check out ."); return 0;i=fte

15、ll(fp); fscanf(fp,"%s%s%s%d%f%f%s%s" ,,currnode.sex,currnode.dialnumber,&currnode.count,&currnode.price,&currnode.money,currnode.date,currnode.readeraddr); j=ftell(fp);j=j-i;rewind(fp);while(!feof(fp)fscanf(fp,"%s%s%s%d%f%f%s%s" ,,currnode.se

16、x,currnode.dialnumber ,&currnode.count,&currnode.price,&currnode.money,currnode.date,currnode.readeraddr);if(feof(fp)break;if(strcmp(currdate,currnode.date)>0) fseek(fp,-j,1); fprintf(fp,"%15s %8s %13s %7d %7.2f %10.2f %13s %-50s" ,"NULL","NULL","NUL

17、L",0,0.0,0.0,"9999.99.99","NULL"); fseek(fp,2L,1); return 1;int OutputAll()FILE *fp; msgnode oa; int allcount=0; float allmoney=0; if(fp=fopen("MSG.txt","rt")=NULL)printf("Cannot open the file or Cannot find the file.please check out .n"); getch

18、();return 0; printf("%15s %8s %13s %7s %7s %10s %13s %-50sn","readername ","readsex ","number ","count ","price ","moneysum ","date ","readeraddress"); while(!feof(fp)fscanf(fp,"%s%s%s%d%f%f%s%s",oa.n

19、ame,oa.sex,oa.dialnumber,&oa.count,&oa.price,&oa.money,oa.date,oa.readeraddr);if(feof(fp)break; allcount+=oa.count; allmoney+=oa.money;if(strcmp(oa.sex,"NULL") printf("%15s %8s %13s %7d %7.2f %10.2f %13s %-50sn",,oa.sex,oa.dialnumber,oa.count,oa.price,oa.money,

20、 oa.date,oa.readeraddr); printf("%15s %8s %13s %7d %7.2f %10.2f %13s %-50sn","heji","-","-",allcount,"-",allmoney,"2007.09.04","-");return 1;int CheckReader(char *name)FILE *fp; int i,j; char ch; msgnode cr; if(fp=fopen("MSG.

21、txt","rt")=NULL)printf("Cannot open the file or Cannot find the file.please check out .");getch(); return 0;i=ftell(fp); fscanf(fp,"%s%s%s%d%f%f%s%s",,cr.sex,cr.dialnumber,&cr.count,&cr.price,&cr.money,cr.date,cr.readeraddr); j=ftell(fp); rewind(

22、fp); j=j-i;while(!feof(fp)fscanf(fp,"%s%s%s%d%f%f%s%s",,cr.sex,cr.dialnumber,&cr.count,&cr.price,&cr.money,cr.date,cr.readeraddr); i=ftell(fp);if(!strcmp(,name)printf("The reader you are checking is existed in the list.n");fseek(fp,-j,1); fscanf(fp,"

23、;%s%s%s%d%f%f%s%s" ,,cr.sex,cr.dialnumber,&cr.count ,&cr.price,&cr.money,cr.date,cr.readeraddr);if(feof(fp)break; printf("%15s %8s %13s %7d %7f %10f %13s %-50sn" ,,cr.sex,cr.dialnumber,cr.count ,cr.price,cr.money,cr.date,cr.readeraddr);return 1;int DisplayRea

24、der(char *date)FILE *fp; int i,j; msgnode cr; if(fp=fopen("MSG.txt","rt")=NULL)printf("Cannot open the file or Cannot find the file.please check out .");getch(); return 0;while(!feof(fp)fscanf(fp,"%s%s%s%d%f%f%s%s",,cr.sex,cr.dialnumber,&cr.count,&a

25、mp;cr.price,&cr.money,cr.date,cr.readeraddr);if(feof(fp)break;if(!strcmp("9999.99.99",cr.date)continue;if(strcmp(date,cr.date)<0 ) printf("%15s %8s %13s %7d %7f %10f %13s %-50sn" ,,cr.sex,cr.dialnumber,cr.count ,cr.price,cr.money,cr.date,cr.readeraddr);return 1;main

26、() char str30;int ch;Start();TextOut();scanf("%d",&ch);while(ch!=5)if(ch=0)printf("Please input the name you wanna index: _n");scanf("%s",str);if(CheckReader(str)printf("You have successfully index the reader!n"); TextOut();scanf("%d",&ch);co

27、ntinue ; if(ch=1)if(AddReader()printf("You have successfully add a reader!n");TextOut();scanf("%d",&ch);continue ;if(ch=2)printf("Please input the current date: _n");scanf("%s",str); if(UpdateMsg(str)printf("You have successfully update the list!n&quo

28、t;);TextOut();scanf("%d",&ch);continue ;if(ch=3) if(OutputAll()printf("You have successfully output the list!n");TextOut();scanf("%d",&ch);continue ;if(ch=4)printf("Please input the month you wanna display: _n");scanf("%s",str);if(DisplayReader(str)printf("You have successfully all the readers this month!n");TextOut();scanf("%d",&ch);continue ;else return;第18題原代碼:#include "stdio.h"#include "string.h"#include "stdlib.h"#define MAX 20void InitiateList(char

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論