#include "stdio.h" #include "stdlib.h" /*常用子程序*/ #include "dos.h" /*Ms-dos和8086調用的一些常量和函數*/ #include "string.h" typedef struct student xiaofei /*定義消費情況*/ { int year; /*消費年份*/ int month; /*消費月份*/ int day; /*消費日*/ char xfproject[20]; /*消費項目*/ int money; /*消費金額*/ int danjia; /*消費單價*/ }; typedef struct student Information /*定義紀錄類型 */ { char name; /*姓名*/ char number /*學號*/ char sex; /*性別*/ int telephone numer; /*電話號碼*/ char address; /*住址*/ char email; /*電子郵件*/ struct xiaofei xf[20]; /*消費記錄*/ }; typedef struct node /*定義鏈表的節點結構*/ { struct Informationdata; struct node *next; } Node, *link; /*主函數*/ void main() { int stringinput; /*自定義字符串檢測函數*/ void enter(); /*函數輸入*/ void save(); /*函數保存*/ void zhuangzai(); /*函數的裝載*/ void search(); /*函數搜索*/ void add(); /*函數添加*/ void change(); /*函數修改*/ void del(); /*函數刪除*/ int tongji; /*函數統計*/ int tuichu /*退出函數*/ /*主體*/ link l; l=(Node *)malloc(sizeof(Node)); if(!l) { printf("\n沒有申請到內存!"); return; } l->next=NULL; system("cls"); /*清屏*/ while(1) { system("cls"); switch(menu_select()) { case 1: enter(l); break; case 2: save(l); break; case 3: zhuangzai(l); break; case 4: search(l); break; case 5: add(l); break; case 6: change(l); break; case 7: del(l); break; case 8: tongji(l); break; case 0: exit(0); break; } } int meunslect(); int i; { printf("\n\n******************我的管家婆財務處理系統*******************\n\n"); printf("\t\t********************0退出系統******************************\t\t"); printf("\t\t*******************1信息的錄入*****************************\t\t"); printf("\t\t******************2信息的保存******************************\t\t"); printf("\t\t******************3信息的裝載******************************\t\t"); printf("\t\t******************4信息的查詢******************************\t\t"); printf("\t\t******************5信息的添加******************************\t\t"); printf("\t\t******************6信息的修改******************************\t\t"); printf("\t\t******************7信息的刪除******************************\t\t"); printf("\t\t******************8信息的統計******************************\t\t"); printf("\t\t*******************9其他功能******************************\t\t"); printnf("\t\t**********************************************************\t\t"); printf("\t\t 設計人員: 型號:v1.0 日期:2014.06.23 \t\t"); printf("\t\t************************************************************\t\t"); } do{ printf("\n選擇菜單:"); scanf("%d",&i); } { while(i>=0 || i<10) return i; } /*退出系統*/ void tuichu() { printf("退出系統!歡迎下次登入"); exit(0); } /*錄入學生的消費信息*/ void enter(link l){ int i; Node *p,*q; q=1; while(1) { p=(Node *)malloc(sizeof(Noid)); if(!p) {printf("\n沒有申請到內存:"); return 0; } stringinput(p->data .number,2,"請輸入學號:"); /*輸入學號*/ { if(stringinput(p->number,2,0)==o) /*檢測輸入的學號*/ break; stringinput(p->.name,1,"輸入姓名:"); /*輸入姓名*/ stringinput(p->.sex,3,"男m,女f"); /*輸入性別*/ { if(stringinput(p->.sex[0]!=m || stringinput(p->.sex[o]!=f) break; } stringinput(p->telephonenumer,4,"輸入電話號碼"); /*輸入電話號碼*/ stringinput(p->address,5,"輸入地址”); stringinput(p->email,6,"輸入電子郵件"); /*輸入電子郵件*/ } /*輸入消費紀錄*/ printf("請你輸入消費紀錄,每筆紀錄年份爲0時退出\n"); for(i=0,i<=20,i++) printf("\t年份: "); scanf("%d,&(p->date.xf[i].year)); if(p->date.xf[i].year==0) break; printf("\t月份: "); scanf("%d",&(p->date.xf[i].month)); printf("\t日: "); scanf("%d",&(p->data .xf[i].day)); if(p->date.xf[i]month==2 && p->date.xf[i].day>30) break; printf("\t: "); stringinput(p->xfproject,20,"消費項目"); printf("\t金額:必須爲整數 "); scanf("%d",&(p->data .xf[i].money)); printf("\t單價: "); scanf("%d",&(p->data .xf[i].danjia)); /*檢查輸入的字符串是否符合要求*/ void stringinput(char *t,int lens,char *notice) { char n[50]; do { printf("notice"); scanf("%s",n); if(strlen(n)>lens) printf("\n輸入的字符串超長,請重新輸入\n"); } while(strlen(n)<lens) strcpy(t,n); }