C語言課程設計報告 飯卡管理程序
《C語言課程設計報告 飯卡管理程序》由會員分享,可在線閱讀,更多相關《C語言課程設計報告 飯卡管理程序(37頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 C語言課程設計報告 飯卡管理程序 完成日期:2009年12月 【題目描述】 該程序為飯卡管理程序,具有下列功能: (1) 錄入某位持卡人的基本信息。教師:職工號、姓名、院系、金額;學生:學號、姓名、院系、金額;隨機分配一個密碼,分配一個卡號。 (2) 給定卡號,顯示此卡的基本信息; (3) 給定卡號,修改密碼或查詢密碼; (4) 給定卡號,修改持卡人信息; (5) 給定卡號,查詢余額或加錢; (6) 給定卡號,輸入密碼后,若余額充足即可消費; (7) 掛失處理;給定卡
2、號或職工號(學號)等信息進行掛失處理,掛失處理后能查到該卡號,但顯示“該卡已掛失”信息。 (8) 刪除處理;給定卡號或職工號(學號),對該卡進行刪除處理;刪除處理后無法找到該卡號。 (9) 提供一些統(tǒng)計各類信息的功能。可統(tǒng)計當前教師、學生持卡人數(shù);當前已掛失卡卡號;當前卡中余額少于10元的卡號,并顯示其余額。 【用戶文檔】 l 應用程序功能詳細說明 1、進入操作菜單。按照菜單提示選擇需要的操作。選擇0~9號,若超出該范圍,系統(tǒng)將提示警告信息,且切回到主菜單。若需退出系統(tǒng)選擇0。每項操作執(zhí)行完畢,將出現(xiàn)是否返回原菜單的提示信息,選擇是將返回主菜單,選擇否將返回該項操作的選擇菜單。 2
3、、錄入持卡人信息:該程序可分別管理教師學生各100人。持卡人分教師卡和學生兩種,進入錄入界面后,用戶按菜單選擇卡的類別。之后按照程序提示的文本格式及長度要求,按順序依次輸入教師號(學生號)、姓名、院系及金額。超出允許的范圍,系統(tǒng)可能出現(xiàn)運行錯誤。 3、 查詢飯卡基本信息:進入查詢界面,輸入卡號,即可顯示持卡人的卡號、姓名、教師號(學生號)、院系、卡上金額。若輸入卡號不存在,系統(tǒng)將提示卡號錯誤。 4、 修改或查詢密碼:進入密碼編輯界面,輸入卡號,將會顯示出命令選擇菜單。根據(jù)提示選擇希望進行的操作。密碼修改成功后,系統(tǒng)會給出密碼修改成功信息。若輸入卡號不存在,系統(tǒng)將提示卡號錯誤。 5、 修改
4、個人信息:進入修改界面輸入卡號,系統(tǒng)將逐項詢問是否要修改該項信息,選擇是即可修改,選擇否,將跳轉到下一條信息修改。修改信息的格式及長度要求與錄入相同。若輸入卡號不存在,系統(tǒng)將提示卡號錯誤。 6、 飯卡加錢或查詢余額:進入余額操作界面,輸入卡號,根據(jù)屏幕提示選擇需要的操作。加錢成功后系統(tǒng)會顯示成功操作信息。若輸入卡號不存在,系統(tǒng)將提示卡號錯誤。 7、 處理消費信息:進入消費界面,按照提示輸入卡號以及消費金額,系統(tǒng)會提示輸入密碼。若密碼正確,則顯示消費成功信息,并從賬戶中扣除相應余額,若密碼錯誤,系統(tǒng)將警告密碼錯誤,并返回主菜單。若消費金額超出余額范圍,則系統(tǒng)提示余額不足信息,消費不成功并返回
5、主菜單。若輸入卡號不存在,系統(tǒng)將提示卡號錯誤。 8、 掛失:進入掛失界面,根據(jù)系統(tǒng)提示選擇輸入卡號或輸入教師號(學生號)進行操作。若正確輸入相應卡號系統(tǒng)將確認是否掛失,選擇是則掛失成功。掛失后若進行以上各項操作以及刪除操作,系統(tǒng)均將提示已掛失信息,并無法進行操作。若輸入卡號不存在,系統(tǒng)將提示卡號錯誤。 9、 刪除:進入刪除界面,根據(jù)菜單提示選擇輸入卡號還是教師號(學生號),輸入相應號碼,系統(tǒng)將詢問是否要刪除該號碼。選擇是,則提示該卡刪除成功,選擇否,將返回主菜單。若輸入的號碼不存在,系統(tǒng)將提示號碼錯誤并返回主菜單。刪除后,該卡在系統(tǒng)中將不能被查出。 10、 統(tǒng)計其他信息:進入統(tǒng)計界面,根
6、據(jù)菜單選擇需要進行哪項統(tǒng)計。選擇1,將統(tǒng)計出當前教師及學生的持卡人數(shù);選擇2,將統(tǒng)計出當前所有掛失卡卡號;選擇3,將統(tǒng)計出當前卡中余額不足10元的卡號及相應余額。 l 應用程序運行環(huán)境的要求 或Win-tc環(huán)境下均可運行。 l 應用程序的安裝與啟動方法 將程序源代碼置入或Win-tc中,運行程序?;蛑苯与p擊運行.exe格式的可執(zhí)行文件運行該程序。 l 程序的界面、交互方式和操作方法 以下是程序運行后的主菜單操作界面。按照系統(tǒng)的詢問,選擇需要的操作。程序運行過程中輸入命令完畢需鍵入回車鍵確認。 l 輸入數(shù)據(jù)類型、格式和內(nèi)容限制 教師及學生的個人信息屬于結構體型數(shù)據(jù); 菜單選擇項
7、:整型數(shù)據(jù),只可輸入系統(tǒng)提供的選項代號; 確認選項:字符型數(shù)據(jù),大小寫均可,只可輸入Y或N; 教師號(學生號):整型數(shù)據(jù),只可輸入介于1000至9999間的整型數(shù)據(jù); 姓名:字符型一維數(shù)組,姓氏與名字之間用空格隔開,少于20個字符; 院系:字符型一維數(shù)組,院與系之間可用空格隔開,少于50個字符; 金額:單精度實型數(shù)據(jù),精確到分,可輸入介于至間的數(shù)據(jù); 卡號、密碼:整型數(shù)據(jù),介于1000至9999之間隨機產(chǎn)生。 l 應用程序運行中,用戶需要使用的交互命令名稱、功能和格式的詳細解決和示例 1) 數(shù)字選擇交互命令。以菜單為例,在操作界面中選下需要的操作所對應的數(shù)字,按回車鍵,即可進入
8、相應的操作界面。 2) Y、N選擇交互命令。 當系統(tǒng)詢問否是,選擇Y,鍵入回車即為是,選擇N鍵入回車即為否。如上圖,選擇Y回車,即返回主菜單;選擇N回車即不返回主菜單,繼續(xù)執(zhí)行該項操作。 【技術文檔】 l 程序整體結構以及各模塊功能描述 程序整體分為10個模塊。分別為: 1) 菜單模塊 函數(shù)原型:void displayMenu();函數(shù)功能:顯示并輸出主菜單;無返回值。 2) 注冊信息模塊 函數(shù)原型:void registing(tea T[],stu S[]);函數(shù)功能:輸入持卡人基本信息;無返回值。 i——持卡人身份選項,用于選擇持卡
9、人身份; x——用于記錄程序中中的字符量。 3) 查詢模塊 函數(shù)原型:void searchInfo(tea T[],stu S[]);函數(shù)功能:查詢持卡人基本信息;無返回值。 number——卡號,用于輸入卡號并在程序中查找該卡號; flag—用于判斷該函數(shù)—操作是否完畢; i——教師循環(huán)控制變量; j——學生循環(huán)控制變量。 4) 密碼操作模塊 函數(shù)原型:void editpassword(tea T[],stu S[]);函數(shù)功能:查詢或修改密碼;無返回值。 c——功能選項,用于選擇修改密碼還是查詢密碼; number——卡號
10、,用于輸入卡號并在程序中查找該卡號; flag—用于判斷該函數(shù)—操作是否完畢; i——教師循環(huán)控制變量; j——學生循環(huán)控制變量。 5) 信息修改模塊 函數(shù)原型:void editinfo(tea T[],stu S[]);函數(shù)功能:修改持卡人個人信息;無返回值。 number——卡號,用于輸入卡號并在程序中查找該卡號; flag—用于判斷該函數(shù)—操作是否完畢; i——教師循環(huán)控制變量; j——學生循環(huán)控制變量; decide——用于確定是否進行該項操作。 6) 余額操作模塊 函數(shù)原型:void e
11、ditmoney(tea T[],stu S[]);函數(shù)功能:飯卡加錢或查詢余額;無返回值。 c——功能選項,用于選擇加錢還是查詢余額; number——卡號,用于輸入卡號并在程序中查找該卡號; flag—用于判斷該函數(shù)—操作是否完畢; i——教師循環(huán)控制變量; j——學生循環(huán)控制變量; money——用于記錄函數(shù)中要操作的錢數(shù)。 7) 消費模塊 函數(shù)原型:void editmealinfo(tea T[],stu S[]);函數(shù)功能:處理消費信息;無返回值。 number——
12、卡號,用于輸入卡號并在程序中查找該卡號; money——金額,用于輸入需要消費的金額; flag—用于判斷該函數(shù)—操作是否完畢; i——教師循環(huán)控制變量; j——學生循環(huán)控制變量; password——函數(shù)中用于記錄密碼。 8) 掛失模塊 函數(shù)原型:void reportloss(tea T[],stu S[]);函數(shù)功能:賬戶掛失注冊;無返回值。 c——功能選項,用于選擇輸入卡號還是教師號(學生號); i——教師循環(huán)控制變量; j——學生循環(huán)控制變量; number——號碼,用于輸入號碼并在程序中查找是卡號還是教師號(學生號); dec
13、ide——確認選擇,用于確認是否確實要掛失; flag—用于判斷該函數(shù)—操作是否完畢。 9) 刪除模塊 函數(shù)原型:void deleterecord(tea T[],stu S[]);函數(shù)功能:刪除賬戶;無返回值。 c——功能選項,用于選擇輸入卡號還是教師號(學生號); number——號碼,用于輸入號碼并在程序中查找是卡號還是教師號(學生號); tn——教師卡數(shù),用于程序中記錄教師卡數(shù)量; sn——學生卡數(shù),用于程序中記錄學生卡數(shù)量; i——教師循環(huán)控制變量; j——學生循環(huán)控制變量; k——循環(huán)控制變量,用于使教師及學生卡號注銷的循環(huán)中; decid
14、e——確認選擇,用于確認是否確實要掛失; flag—用于判斷該函數(shù)—操作是否完畢。 10) 統(tǒng)計模塊 函數(shù)原型:void countotherinfo(tea T[],stu S[]);函數(shù)功能:統(tǒng)計持卡人數(shù)、統(tǒng)計掛失卡信息、統(tǒng)計余額不足卡信息;無返回值。 i——教師循環(huán)控制變量; j——學生循環(huán)控制變量; c——功能選項,用于程序中選擇想要統(tǒng)計的內(nèi)容。 l 各模塊的主要算法和數(shù)據(jù)結構解釋 1)主函數(shù) 結束 開始 執(zhí)行對應函數(shù) choice=1~9 清屏 return0 choice!=0
15、 N Y N Y 開始 2) 菜單模塊 輸出主菜單 結束 3)信息注
16、冊模塊 結束 輸入學生信息 輸入教師信息 開始 i==2 i==1 N Y N Y
17、
4)信息查詢模塊
flag==0
結束
提示號碼錯誤
j++
輸出學生信息
number==scnumber
j 18、
N
Y
N
輸出教師信息
Y
19、 N
Y
N
Y
N
Y
N
Y
20、
5)密碼操作模塊
結束
輸出號碼錯誤
輸出密碼
輸入新密碼
開始
c==2
flag==0
c==1
N
Y
N
21、 Y
N
Y
6)信息修改模塊
flag==0
結束
提示號碼錯誤
j++
輸入學生信息
number==scnumber
j 22、0→j
flag==0
i++
number==tcnumber
i 23、
N
Y
N
Y
N
Y
24、 N
Y
7)余額操作模塊
c==1
開始
N
c==2
輸入卡號
Y
Y
25、 Y
輸入卡號
輸出加錢金額
輸出卡中余額
flag==0
結束
輸出號碼錯誤
26、 N
Y
8)消費模塊
flag==0
結束
提示號碼錯誤
j++
輸入消費金額及密碼
number==scnumber
j 27、 N
Y
N
輸入消費金額及密碼
Y
N
Y
28、 N
Y
N
Y
N
Y
9)掛失模塊
結束
loss=1
輸入學生號或教師號
c==2
輸入卡號
loss 29、=1
開始
c==1
N
Y
N
Y
10)統(tǒng)計模塊
輸出余額不足卡卡號及余額
卡號
結束
輸出掛失卡
卡號
輸出教師 30、卡及學生卡數(shù)量
開始
c==3
c==2
c==1
N
Y
N
Y 31、
N
Y
l 選用的測試數(shù)據(jù)及測試結果
信息注冊測 32、試結果如下:
信息查詢測試結果如下:
密碼修改測試結果如下:
密碼查詢測試結果如下:
信息修改測試結果如下:
加錢測試結果如下:
查詢余額測試結果如下:
消費測試結果如下:
掛失測試結果如下:
刪除測試結果如下:
輸入號碼錯誤測試結果如下:
掛失后查詢基本信息測試結果如下:
l 程序運行環(huán)境以及有關信息
該程序在windows XP操作系統(tǒng)中運行成功,在此環(huán)境下運行或Win-tc寫入源代碼均可?;蛑苯舆\行.exe格式的可執(zhí)行文件。
l 程序源代 33、碼清單
#include 34、20]; /*學生姓名數(shù)組*/
char scollege[50]; /*學生院系數(shù)組*/
float smoney; /*學生卡余額*/
int spassword; /*學生卡密碼*/
int sloss; /*學生卡掛失變量*/
}stu;
typedef struct teacher{ /*定義教師卡數(shù)據(jù)結構*/
int tnumber; /*教師號*/
int tcnumber; /*教師卡號*/
char tname[20]; /*教師姓名數(shù)組*/
char tcollege[50]; / 35、*教師院系數(shù)組*/
float tmoney; /*教師卡余額*/
int tpassword; /*教師卡密碼*/
int tloss; /*教師卡掛失變量*/
}tea;
void displayMenu(void); /*列菜單函數(shù)*/
void registing(tea T[],stu S[]); /*注冊函數(shù)*/
void searchInfo(tea T[],stu S[]); /*信息查找函數(shù)*/
void editpassword(tea T[],stu S[]); /*密碼修改或查詢函數(shù)*/
void ed 36、itinfo(tea T[],stu S[]); /*信息修改函數(shù)*/
void editmoney(tea T[],stu S[]); /*加錢或查詢余額函數(shù)*/
void editmealinfo(tea T[],stu S[]); /*就餐信息處理函數(shù)*/
void reportloss(tea T[],stu S[]); /*掛失函數(shù)*/
void deleterecord(tea T[],stu S[]); /*賬戶刪除函數(shù)*/
void countotherinfo(tea T[],stu S[]); /*統(tǒng)計函數(shù)*/
/******主函數(shù)** 37、****/
main() {
stu S[100]; /*學生結構體數(shù)組*/
tea T[100]; /*教師結構體數(shù)組*/
int choice;
char x;
randomize(); /*初始化隨機數(shù)發(fā)生器*/
displayMenu(); /*顯示菜單*/
scanf("%d",&choice); /*輸入函數(shù)選擇*/
while(choice!=0){
switch(choice){
case 1: {
do{
38、 registing(T,S); /*信息注冊*/
printf("Do you want to return to the menu?(Y or N):");
getchar(); /*輸入是否返回主菜單*/
scanf("%c",&x);
}while(x=='N'||x=='n');
break;
}
ca 39、se 2: {
do{
searchInfo(T,S); /*信息查找*/
printf("Do you want to return to the menu?(Y or N):");
getchar();
scanf("%c",&x);
}while(x=='N'||x=='n');
break;
40、 }
case 3: {
do{
editpassword(T,S); /*密碼修改或查詢*/
printf("Do you want to return to the menu?(Y or N):");
getchar();
scanf("%c",&x);
}while(x=='N'||x=='n');
41、 break;
}
case 4: {
do{
editinfo(T,S); /*信息修改*/
printf("Do you want to return to the menu?(Y or N):");
getchar();
scanf("%c",&x);
}while(x=='N'||x== 42、'n');
break;
}
case 5: {
do{
editmoney(T,S); /*飯卡加錢或查詢余額*/
printf("Do you want to return to the menu?(Y or N):");
getchar();
scanf("%c",&x);
43、 }while(x=='N'||x=='n');
break;
}
case 6: {
do{
editmealinfo(T,S); /*處理就餐信息*/
printf("Do you want to return to the menu?(Y or N):");
getchar();
scanf("% 44、c",&x);
}while(x=='N'||x=='n');
break;
}
case 7: {
do{
reportloss(T,S); /*掛失*/
printf("Do you want to return to the menu?(Y or N):");
getchar();
45、 scanf("%c",&x);
}while(x=='N'||x=='n');
break;
}
case 8: {
do{
deleterecord(T,S); /*刪除*/
printf("Do you want to return to the menu?(Y or N):");
ge 46、tchar();
scanf("%c",&x);
}while(x=='N'||x=='n');
break;
}
case 9: {
do{
countotherinfo(T,S); /*統(tǒng)計*/
printf("Do you want to return to the menu?(Y or N):"); 47、
getchar();
scanf("%c",&x);
}while(x=='N'||x=='n');
break;
}
default :
printf("warning:wrong choice!Please enter the right choice.\n"); /*提示錯誤信息*/
break;
}
48、 clrscr(); /*清屏*/
displayMenu();
scanf("%d",&choice);
}
return 0;
}
/******主菜單******/
void displayMenu(){
printf("\n====================MENU===================\n");
printf("Input personal information................1\n"); /*輸入個人信息*/
printf("The bas 49、ic information of the card.........2\n"); /*飯卡基本信息*/
printf("Change or inquire the password............3\n"); /*修改或查詢密碼*/
printf("Change personal information...............4\n"); /*修改個人信息*/
printf("Inquire balance or add money..............5\n"); /*查詢余額或加錢*/
printf("Manage the di 50、ning information.............6\n"); /*處理就餐信息*/
printf("Report the loss of the card...............7\n"); /*掛失*/
printf("Delate process............................8\n"); /*刪除*/
printf("Count other information...................9\n"); /*統(tǒng)計其他信息*/
printf("Exit........................ 51、..............0\n"); /*退出*/
printf("===========================================\n");
printf("Please choose the service you want:(0~9)"); /*請選擇需要的服務*/
}
/********賬戶注冊********/
void registing(tea T[],stu S[]){
int i; /*身份變量*/
char x; /*姓名*/
clrscr(); /*清屏*/
printf("==== 52、======system of registing==========\n");
printf("Please choose your position\n");
printf("1--teacher\n");
printf("2--student\n");
printf("Please input your choice (1 or 2):");
scanf("%d",&i);
if(i==1){ /*選擇教師*/
printf("Please input your teacher number(4 numbers):");
sca 53、nf("%d",&T[tn].tnumber); /*輸入教師號*/
printf("Please input name(less than 20 letters):(Wang Ming)");
scanf("%c",&x); /*輸入姓名*/
gets(T[tn].tname);
printf("Please input college information(less than 50 integers):(mechanic electricity)\n");
gets(T[tn].tcollege); /*輸入院系*/
54、 printf("Please input the money(0.00~5000.00):");
scanf("%f",&T[tn].tmoney); /*輸入金額*/
T[tn].tcnumber=random(8999)+1000; /*隨機分配卡號*/
printf("The card number is:%d\n",T[tn].tcnumber); /*輸出卡號*/
T[tn].tpassword=random(8999)+1000; /*隨機分配密碼*/
printf("The password is:%d\n",T 55、[tn].tpassword); /*輸出密碼*/
T[tn].tloss=0; /*初始化掛失變量*/
tn++; /*教師卡數(shù)累加*/
}
else if(i==2){ /*選擇學生*/
printf("Please input your school number(less than 4 numbers):");
scanf("%d",&S[sn].snumber); /*輸入學生號*/
printf("Please input name(less than 20 integers):(Wang Ming)");
56、 scanf("%c",&x); /*輸入姓名*/
gets(S[sn].sname);
printf("Please input college information(less than 50 integers):(mechanic electricity)\n");
gets(S[sn].scollege); /*輸入院系*/
printf("Please input the money(0.00~5000.00):");
scanf("%f",&S[sn].smoney); /*輸入金額*/
S[sn].s 57、cnumber=random(8999)+1000; /*隨機分配卡號*/
printf("The card number is:%d\n",S[sn].scnumber); /*輸出卡號*/
S[sn].spassword=random(8999)+1000; /*隨機分配密碼*/
printf("The password is:%d\n",S[sn].spassword); /*輸出密碼*/
S[sn].sloss=0; /*初始化掛失變量*/
sn++; /*學生卡數(shù)累加*/
}
}
/******* 58、*信息查找********/
void searchInfo(tea T[],stu S[]){
int number,flag=0; /*number記錄卡號、flag記錄查找是否結束*/
int i,j; /*i為控制教師的循環(huán)變量、j為控制學生的循環(huán)變量*/
clrscr(); /*清屏*/
printf("========system of inquiring personal information========\n");
printf("Please enter your card number(4 numbers):");
59、 scanf("%d",&number); /*輸入卡號*/
for(i=0;i 60、*提示掛失信息*/
}
else{
printf("========information========\n"); /*輸出教師基本信息*/
printf("CardNumber: %d\n",T[i].tcnumber);
printf("Name: %s\n",T[i].tname);
printf("Teacher number: %d\n",T[i].tnumber);
printf("College: %s\n",T[i].tcollege);
61、 printf("Money: %4.2f\n",T[i].tmoney);
flag=1;
break;
}
}
}
if(flag==0){
for(j=0;j 62、e office to restart it.\n");
flag=1; /*提示掛失信息*/
}
else{
printf("========information========\n"); /*輸出學生基本信息*/
printf("CardNumber: %d\n",S[j].scnumber);
printf("Name: %s\n",S[j].sname);
63、 printf("School number: %d\n",S[j].snumber);
printf("College: %s\n",S[j].scollege);
printf("Money: %4.2f\n",S[j].smoney);
flag=1;
break;
}
}
}
}
if(flag==0){ /*若未找到該卡號*/
printf("========warning========\n"); /*提示 64、卡號錯誤*/
printf("This is a wrong number.\n");
}
}
/*密碼查詢或修改*/
void editpassword(tea T[],stu S[]){
int number,flag=0; /*number記錄卡號、flag記錄掛失程序是否完成*/
int i,j,c; /*i為控制教師的循環(huán)變量、j為控制學生的循環(huán)變量、c為命令選擇變量*/
clrscr(); /*清屏*/
printf("========system of changing/inquiring password====== 65、==\n");
printf("Please enter the card number:");
scanf("%d",&number); /*輸入卡號*/
printf("1--change the password\n"); /*修改密碼*/
printf("2--inquire the password\n"); /*查詢密碼*/
printf("Please choose the service you want:(1 or 2)");
scanf("%d",&c); /*選擇需要的操作*/
if(c==1){ /*選擇修改 66、密碼*/
for(i=0;i
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。