包含c語言課程設計教室管理系統的詞條

本文目錄一覽:

c語言課程設計–班級檔案管理系統

//****************************************************************************

//**** 說明:密碼所在的文件位於c盤,文件名為1.txt。

//**** 學生基本信息最好保存在C盤,文件名為student.txt。

//****************************************************************************

#include stdio.h

#include stdlib.h

#include string.h

#include conio.h

#define N 3

struct student

{

char name[10];

char no[10];

char sex;

int age;

char bnote[100];

};

void print(bool menu)//打印基本信息

{

if (!menu)

{

printf(“學生基本信息錄入 ,press 1\n”);

}

else

{

printf(“學生基本信息顯示 ,press 2\n”);

printf(“學生基本信息保存 ,press 3\n”);

printf(“學生基本信息刪除 ,press 4\n”);

printf(“學生基本信息修改 ,press 5\n”);

printf(“學生基本信息查詢 ,press 6\n”);

}

printf(“退出學生信息系統 ,press 7\n”);

}

bool Check(char pas[6])//密碼驗證

{

FILE *fp;

char ch;

char a[7]={” “};

int i = 0;

if ((fp=fopen(“c:\\1.txt”,”r”))==NULL)

{

printf(“打開文件失敗!\n”);

exit(0);

}

ch=fgetc(fp);

while (ch!=EOFi6)

{

a[i] = ch;

ch=fgetc(fp);

i++;

}

a[6] = ‘\0’;

if (!strcmp(pas,a))

{

return true;

}

else

{

printf(“密碼錯誤\n”);

return false;

}

fclose(fp);

}

void GetInfo(struct student *arr,int n)//學生基本信息錄入

{

for (int i = 0;in;i++)

{

printf(“輸入學生的基本信息:name no sex age bnote\n”);

scanf(“%s %s %c %d %s”,arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].bnote);

}

}

void Display(struct student* arr,int n)//學生基本信息顯示

{

printf(“學生信息: Name NO Sex age Note\n”);

for (int i = 0;in;i++)

{

printf(“%15s%15s%15c%15d%15s\n”,arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].bnote);

}

}

void Save(struct student* arr,int n)//學生基本信息保存,保存在c:\\student.txt

{

FILE * fp;

fp= fopen(“c:\\student.txt”,”w+”);

if (fp == NULL)

{

printf(“文件不存在!\n”);

exit(0);

}

fwrite(arr,sizeof(struct student)*n,n,fp);

fclose(fp);

}

void Modfiy(struct student* arr,int n)//學生基本信息修改

{

char number[10];

bool flag=false;

char pass[6];

printf(“請輸入密碼:\n”);

scanf(“%s”,pass);

if (Check(pass))

{

printf(“修改學生信息:\n”);

printf(“請輸入學號:\n”);

scanf(“%s”,number);

for (int i =0;in;i++)

{

if (!strcmp(number,arr[i].no))

{

printf(“infor: name no sex age note\n”);

printf(“%12s%12s%12c%12d%12s\n”,arr[i].name,arr[i].no,

arr[i].sex,arr[i].age,arr[i].bnote);

printf(“please input information:\n”);

scanf(“%s%s%c%d%s”,arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].bnote);

Save(arr,n);

flag = true;

}

}

if (flag == false)

{

printf(“該學生不存在!:\n”);

}

}

}

void Delete(struct student* arr,int n)//學生基本信息刪除

{

char number[10];

bool flag=false;

printf(“Delete information:\n”);

printf(“please input the no:\n”);

scanf(“%s”,number);

for (int i =0;in;i++)

{

if (!strcmp(number,arr[i].no))

{

strcpy(arr[i].name,” “);

strcpy(arr[i].no,” “);

strcpy(arr[i].bnote,” “);

arr[i].sex = ‘ ‘;

arr[i].age = 0;

Save(arr,n);

flag = true;

}

}

if (flag == true)

{

printf(“該學生不存在!:\n”);

}

}

void Search(struct student* arr,int n)//學生基本信息查詢

{

int temp,i;

bool flag=false;

printf(“—————通過學號查詢,press 1————-\n”);

printf(“—————通過姓名查詢,press 2———–\n”);

printf(“—————通過性別查詢,press 3————\n”);

printf(“—————通過年齡查詢,press 4————\n”);

printf(“—————退出,press 5 ————\n”);

scanf(“%d”,temp);

switch (temp)

{

case 1://按照學號查詢

{

char num[10];

printf(“請輸入學號:\n”);

scanf(“%s”,num);

for ( i =0;in;i++)

{

if (!strcmp(num,arr[i].no))

{

printf(“%12s%12s%12c%12d%12s\n”,arr[i].name,arr[i].no,

arr[i].sex,arr[i].age,arr[i].bnote);

flag = true;

}

}

if (!flag)

{

printf(“該學生不存在.\n”);

}

}

break;

case 2://按照名字查詢

{

char num[10];

printf(“please input name:\n”);

scanf(“%s”,num);

for ( i =0;in;i++)

{

if (!strcmp(num,arr[i].name))

{

printf(“%12s%12s%12c%12d%12s”,arr[i].name,arr[i].no,

arr[i].sex,arr[i].age,arr[i].bnote);

flag = true;

}

}

if (!flag)

{

printf(“該學生不存在.\n”);

}

}

break;

case 3://按照性別查詢

{

char ch;

printf(“請輸入性別:\n”);

//scanf(“%c”,ch);

ch = getch();

for ( i =0;in;i++)

{

if (ch == arr[i].sex)

{

printf(“%12s%12s%12c%12d%12s\n”,arr[i].name,arr[i].no,

arr[i].sex,arr[i].age,arr[i].bnote);

flag = true;

}

}

if (!flag)

{

printf(“t該學生不存在.\n”);

}

}

break;

case 4://按照年齡查詢

{

char num_age;

printf(“請輸入年齡:\n”);

scanf(“%d”,num_age);

for ( i =0;in;i++)

{

if (num_age == arr[i].age)

{

printf(“%12s%12s%12c%12d%12s\n”,arr[i].name,arr[i].no,

arr[i].sex,arr[i].age,arr[i].bnote);

flag = true;

}

}

if (!flag)

{

printf(“該學生不存在.\n”);

}

}

break;

default:

break;

}

}

void main()

{

struct student arr[N];

char ps[6];

bool flag =false;

printf(“請輸入密碼:\n”);

scanf(“%s”,ps);

flag = Check(ps);

if (flag)

{

int select;

print(false);

scanf(“%d”,select);

while (0select select 7 )

{

switch (select)

{

case 1:

GetInfo(arr,N);

print(true);

break;

case 2:

Display(arr,N);

print(true);

break;

case 3:

Save(arr,N);

print(true);

break;

case 4:

Delete(arr,N);

print(true);

break;

case 5:

Modfiy(arr,N);

print(true);

break;

case 6:

Search(arr,N);

print(true);

break;

default:

break;

}

printf(“請選擇:\n”);

scanf(“%d”,select);

}

}

}

C語言課程設計,多媒體教室管理系統

只作為參考,網上太難找,只能自己去改咯!

#include “stdio.h”

#include “stdlib.h”

#include “string.h”

int shoudsave=0; /* */

struct student

{

char num[10];/* 學號 */

char name[20];

char sex[4];

int cgrade;

int mgrade;

int egrade;

int totle;

int ave;

char neartime[10];/* 最近更新時間 */

};

typedef struct node

{

struct student data;

struct node *next;

}Node,*Link;

void menu()

{

printf(“********************************************************************************”);

printf(“\t1登記學生資料\t\t\t\t\t2刪除學生資料\n”);

printf(“\t3查詢學生資料\t\t\t\t\t4修改學生資料\n”);

printf(“\t5保存學生資料\t\t\t\t\t0退出系統\n”);

printf(“********************************************************************************\n”);

}

void printstart()

{

printf(“———————————————————————–\n”);

}

void Wrong()

{

printf(“\n=====提示:輸入錯誤!\n”);

}

void Nofind()

{

printf(“\n=====提示:沒有找到該學生!\n”);

}

void printc() /* 本函數用於輸出中文 */

{

printf(” 學號\t 姓名 性別 英語成績 數學成績 C語言成績 總分 平均分\n”);

}

void printe(Node *p)/* 本函數用於輸出英文 */

{

printf(“%-12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n”,p-data.num,p-data.name,p-data.sex,p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.totle,p-data.ave);

}

Node* Locate(Link l,char findmess[],char nameornum[]) /* 該函數用於定位連表中符合要求的接點,並返回該指針 */

{

Node *r;

if(strcmp(nameornum,”num”)==0) /* 按學號查詢 */

{

r=l-next;

while(r!=NULL)

{

if(strcmp(r-data.num,findmess)==0)

return r;

r=r-next;

}

}

else if(strcmp(nameornum,”name”)==0) /* 按姓名查詢 */

{

r=l-next;

while(r!=NULL)

{

if(strcmp(r-data.name,findmess)==0)

return r;

r=r-next;

}

}

return 0;

}

void Add(Link l) /* 增加學生 */

{

Node *p,*r,*s;

char num[10];

r=l;

s=l-next;

while(r-next!=NULL)

r=r-next; /* 將指針置於最末尾 */

while(1)

{

printf(“請你輸入學號(以’0’返回上一級菜單:)”);

scanf(“%s”,num);

if(strcmp(num,”0″)==0)

break;

while(s)

{

if(strcmp(s-data.num,num)==0)

{

printf(“=====提示:學號為’%s’的學生已經存在,若要修改請你選擇’4 修改’!\n”,num);

printstart();

printc();

printe(s);

printstart();

printf(“\n”);

return;

}

s=s-next;

}

p=(Node *)malloc(sizeof(Node));

strcpy(p-data.num,num);

printf(“請你輸入姓名:”);

scanf(“%s”,p-data.name);

getchar();

printf(“請你輸入性別:”);

scanf(“%s”,p-data.sex);

getchar();

printf(“請你輸入c語言成績:”);

scanf(“%d”,p-data.cgrade);

getchar();

printf(“請你輸入數學成績:”);

scanf(“%d”,p-data.mgrade);

getchar();

printf(“請你輸入英語成績:”);

scanf(“%d”,p-data.egrade);

getchar();

p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade;

p-data.ave=p-data.totle / 3;

/* 信息輸入已經完成 */

p-next=NULL;

r-next=p;

r=p;

shoudsave=1;

}

}

void Qur(Link l) /* 查詢學生 */

{

int sel;

char findmess[20];

Node *p;

if(!l-next)

{

printf(“\n=====提示:沒有資料可以查詢!\n”);

return;

}

printf(“\n=====1按學號查找\n=====2按姓名查找\n”);

scanf(“%d”,sel);

if(sel==1)/* 學號 */

{

printf(“請你輸入要查找的學號:”);

scanf(“%s”,findmess);

p=Locate(l,findmess,”num”);

if(p)

{

printf(“\t\t\t\t查找結果\n”);

printstart();

printc();

printe(p);

printstart();

}

else

Nofind();

}

else if(sel==2) /* 姓名 */

{

printf(“請你輸入要查找的姓名:”);

scanf(“%s”,findmess);

p=Locate(l,findmess,”name”);

if(p)

{

printf(“\t\t\t\t查找結果\n”);

printstart();

printc();

printe(p);

printstart();

}

else

Nofind();

}

else

Wrong();

}

void Del(Link l) /* 刪除 */

{

int sel;

Node *p,*r;

char findmess[20];

if(!l-next)

{

printf(“\n=====提示:沒有資料可以刪除!\n”);

return;

}

printf(“\n=====1按學號刪除\n=====2按姓名刪除\n”);

scanf(“%d”,sel);

if(sel==1)

{

printf(“請你輸入要刪除的學號:”);

scanf(“%s”,findmess);

p=Locate(l,findmess,”num”);

if(p)

{

r=l;

while(r-next!=p)

r=r-next;

r-next=p-next;

free(p);

printf(“\n=====提示:該學生已經成功刪除!\n”);

shoudsave=1;

}

else

Nofind();

}

else if(sel==2)

{

printf(“請你輸入要刪除的姓名:”);

scanf(“%s”,findmess);

p=Locate(l,findmess,”name”);

if(p)

{

r=l;

while(r-next!=p)

r=r-next;

r-next=p-next;

free(p);

printf(“\n=====提示:該學生已經成功刪除!\n”);

shoudsave=1;

}

else

Nofind();

}

else

Wrong();

}

void Modify(Link l)

{

Node *p;

char findmess[20];

if(!l-next)

{

printf(“\n=====提示:沒有資料可以修改!\n”);

return;

}

printf(“請你輸入要修改的學生學號:”);

scanf(“%s”,findmess);

p=Locate(l,findmess,”num”);

if(p)

{

printf(“請你輸入新學號(原來是%s):”,p-data.num);

scanf(“%s”,p-data.num);

printf(“請你輸入新姓名(原來是%s):”,p-data.name);

scanf(“%s”,p-data.name);

getchar();

printf(“請你輸入新性別(原來是%s):”,p-data.sex);

scanf(“%s”,p-data.sex);

printf(“請你輸入新的c語言成績(原來是%d分):”,p-data.cgrade);

scanf(“%d”,p-data.cgrade);

getchar();

printf(“請你輸入新的數學成績(原來是%d分):”,p-data.mgrade);

scanf(“%d”,p-data.mgrade);

getchar();

printf(“請你輸入新的英語成績(原來是%d分):”,p-data.egrade);

scanf(“%d”,p-data.egrade);

p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade;

p-data.ave=p-data.totle/3;

printf(“\n=====提示:資料修改成功!\n”);

shoudsave=1;

}

else

Nofind();

}

void Disp(Link l)

{

int count=0;

Node *p;

p=l-next;

if(!p)

{

printf(“\n=====提示:沒有資料可以顯示!\n”);

return;

}

printf(“\t\t\t\t顯示結果\n”);

printstart();

printc();

printf(“\n”);

while(p)

{

printe(p);

p=p-next;

}

printstart();

printf(“\n”);

}

void Tongji(Link l)

{

Node *pm,*pe,*pc,*pt,*pa; /* 用於指向分數最高的接點 */

Node *r=l-next;

if(!r)

{

printf(“\n=====提示:沒有資料可以統計!\n”);

return ;

}

pm=pe=pc=pt=pa=r;

while(r!=NULL)

{

if(r-data.cgrade=pc-data.cgrade)

pc=r;

if(r-data.mgrade=pm-data.mgrade)

pm=r;

if(r-data.egrade=pe-data.egrade)

pe=r;

if(r-data.totle=pt-data.totle)

pt=r;

if(r-data.ave=pa-data.ave)

pa=r;

r=r-next;

}

printf(“——————————統計結果——————————–\n”);

printf(“總分最高者:\t%s %d分\n”,pt-data.name,pt-data.totle);

printf(“平均分最高者:\t%s %d分\n”,pa-data.name,pa-data.ave);

printf(“英語最高者:\t%s %d分\n”,pe-data.name,pe-data.egrade);

printf(“數學最高者:\t%s %d分\n”,pm-data.name,pm-data.mgrade);

printf(“c語言最高者:\t%s %d分\n”,pc-data.name,pc-data.cgrade);

printstart();

}

void Sort(Link l)

{

Link ll;

Node *p,*rr,*s;

ll=(Link)malloc(sizeof(Node)); /* 用於做新的連表 */

ll-next=NULL;

if(l-next==NULL)

{

printf(“\n=====提示:沒有資料可以排序!\n”);

return ;

}

p=l-next;

while(p)

{

s=(Node*)malloc(sizeof(Node)); /* 新建接點用於保存信息 */

s-data=p-data;

s-next=NULL;

rr=ll;

while(rr-next!=NULL rr-next-data.totle=p-data.totle)

rr=rr-next;

if(rr-next==NULL)

rr-next=s;

else

{

s-next=rr-next;

rr-next=s;

}

p=p-next;

}

free(l);

l-next=ll-next;

printf(“\n=====提示:排序已經完成!\n”);

}

void Save(Link l)

{

FILE* fp;

Node *p;

int flag=1,count=0;

fp=fopen(“c:\\student”,”wb”);

if(fp==NULL)

{

printf(“\n=====提示:重新打開文件時發生錯誤!\n”);

exit(1);

}

p=l-next;

while(p)

{

if(fwrite(p,sizeof(Node),1,fp)==1)

{

p=p-next;

count++;

}

else

{

flag=0;

break;

}

}

if(flag)

{

printf(“\n=====提示:文件保存成功.(有%d條記錄已經保存.)\n”,count);

shoudsave=0;

}

fclose(fp);

}

void main()

{

Link l;/* 連表 */

FILE *fp; /* 文件指針 */

int sel;

char ch;

char jian;

int count=0;

Node *p,*r;

l=(Node*)malloc(sizeof(Node));

l-next=NULL;

r=l;

fp=fopen(“C:\\student”,”rb”);

if(fp==NULL)

{

printf(“\n=====提示:文件還不存在,是否創建?(y/n)\n”);

scanf(“%c”,jian);

if(jian==’y’||jian==’Y’)

fp=fopen(“C:\\student”,”wb”);

else

exit(0);

}

printf(“\n=====提示:文件已經打開,正在導入記錄……\n”);

while(!feof(fp))

{

p=(Node*)malloc(sizeof(Node));

if(fread(p,sizeof(Node),1,fp)) /* 將文件的內容放入接點中 */

{

p-next=NULL;

r-next=p;

r=p; /* 將該接點掛入連中 */

count++;

}

}

fclose(fp); /* 關閉文件 */

printf(“\n=====提示:記錄導入完畢,共導入%d條記錄.\n”,count);

while(1)

{

menu();

printf(“請你選擇操作:”);

scanf(“%d”,sel);

if(sel==0)

{

if(shoudsave==1)

{ getchar();

printf(“\n=====提示:資料已經改動,是否將改動保存到文件中(y/n)?\n”);

scanf(“%c”,ch);

if(ch==’y’||ch==’Y’)

Save(l);

}

printf(“\n=====提示:你已經退出系統,再見!\n”);

break;

}

switch(sel)

{

case 1:Add(l);break; /* 增加學生 */

case 2:Del(l);break;/* 刪除學生 */

case 3:Qur(l);break;/* 查詢學生 */

case 4:Modify(l);break;/* 修改學生 */

case 5:Save(l);break;/* 保存學生 */

case 9:printf(“\t\t\t==========幫助信息==========\n”);break;

default: Wrong();getchar();break;

}

}

}

/* */

C語言課程設計圖書館管理系統加講解

#include stdio.h

#include stdlib.h

#include conio.h

struct BOOK

{

int id,usr[10],total,store,days[10];

char name[31],author[21];

}books[100];

/*上面是結構體的定義,用於存放書籍及借書的信息。*/

void page_title(char *menu_item)

{

clrscr();

printf(” 圖 書 管 理 系 統 \n\n- %s -\n\n”,menu_item);

}

/*上面是打印頁眉的函數,同時通過參數menu_item,可以顯示當前的狀態。*/

void return_confirm(void)

{

printf(“\n按任意鍵返回……\n”);

getch();

}

/*上面是返回前請求確認的函數,以便在返回前觀察結果*/

int search_book(void)

{

int n,i;

printf(“請輸入圖書序號:”);

scanf(“%d”,i);

for(n=0;n100;n++)

{

if(books[n].id==i)

{

printf(“書名:%s\n”,books[n].name);

printf(“作者:%s\n”,books[n].author);

printf(“存數:%d of “,books[n].store);

printf(“%d\n”,books[n].total);

return n;

}

}

printf(“\n輸入錯誤或無效圖書序號.\n”);

return -1;

}

/*上面的函數是在數組中找到圖書號匹配的記錄,顯示其信息並返

回數組下標,如果找不到相應記錄則提示錯誤並返回-1。*/

void book_out(void)

{

int n,s,l,d;

page_title(“借閱圖書”);

if((n=search_book())!=-1books[n].store0)

{

printf(“請輸入借書證序號:”);

scanf(“%d”,s);

printf(“請輸入可借天數:”);

scanf(“%d”,d);

for(l=0;l10;l++)

{

if(books[n].usr[l]==0)

{

books[n].usr[l]=s;

books[n].days[l]=d;

break;

}

}

books[n].store–;

}

if(n!=-1books[n].store==0) printf(“此書已經全部借出.\n”);

return_confirm();

}

/*上面是借書的函數,首先調用找書函數*/

void book_in(void)

{

int n,s,l;

page_title(“歸還圖書”);

if((n=search_book())!=-1books[n].storebooks[n].total)

{

printf(“借閱者圖書證列表:\n”);

for(l=0;l10;l++)

if (books[n].usr[l]!=0)

printf(“[%d] – %d天\n”,books[n].usr[l],books[n].days[l]);

printf(“請輸入借書證序號:”);

scanf(“%d”,s);

for(l=0;l10;l++)

{

if(books[n].usr[l]==s)

{

books[n].usr[l]=0;

books[n].days[l]=0;

break;

}

}

books[n].store++;

}

if(n!=-1books[n].store==books[n].total)

printf(“全部入藏.\n”);

return_confirm();

}

void book_add(void)

{

int n;

page_title(“註冊新書”);

for(n=0;n100;n++)

if(books[n].id==0) break;

printf(“序號:”);

scanf(“%d”,books[n].id);

printf(“書名:”);

scanf(“%s”,books[n].name);

printf(“作者:”);

scanf(“%s”,books[n].author);

printf(“數量:”);

scanf(“%d”,books[n].total);

books[n].store=books[n].total;

return_confirm();

}

void book_del(void)

{

int n;

page_title(“註銷舊書”);

if((n=search_book())!=-1) books[n].id=0;

printf(“該書已註銷.\n”);

return_confirm();

}

void main(void)

{

menu: page_title(“操作選單”);

printf(“請用數字鍵選擇操作\n\n”);

printf(“1 借閱圖書\n2 歸還圖書\n\n”);

printf(“3 註冊新書\n4 註銷舊書\n\n”);

printf(“\n0 退出\n”);

switch(getch())

{

case ‘1’ : book_out();break;

case ‘2’ : book_in();break;

case ‘3’ : book_add();break;

case ‘4’ : book_del();break;

case ‘0’ : exit(0);

}

goto menu;

}

{

int n;

page_title(“廣?症慕”);

if((n=search_book())!=-1) books[n].id=0;

printf(“乎慕廝廣?.\n”);

return_confirm();

}

void main(void)

{

menu: page_title(“荷恬僉汽”);

printf(“萩喘方忖囚僉夲荷恬\n\n”);

printf(“1 処堋夕慕\n2 拷珊夕慕\n\n”);

printf(“3 廣過仟慕\n4 廣?症慕\n\n”);

printf(“\n0 曜竃\n”);

switch(getch())

{

case ‘1’ : book_out();break;

case ‘2’ : book_in();break;

case ‘3’ : book_add();break;

case ‘4’ : book_del();break;

case ‘0’ : exit(0);

}

goto menu;

}

自己看

求C語言課程設計(教務信息管理系統)

/*————-1————-*/

#includebios.h

#includedos.h /*頭文件*/

#includeconio.h

#includectype.h

#includeprocess.h

#includestdlib.h

#includestdio.h

#includestring.h

#define NULL 0

#define ESC 0x001b /* 退出 */

#define F1 0x3b00 /* 查看幫助信息,調用HelpMassage()函數 */

#define F2 0x3c00 /*輸入學生成績*/

#define F3 0x3d00 /*按學號查找*/

#define F4 0x3e00 /*按姓名查找*/

#define F5 0x3f00 /*列出所有學生成績*/

#define F6 0x4000 /*統計*/

struct stuType /*定義結構體變量*/

{

char NO[11]; /*學號長度為10*/

char XM[10];

char AGE[2]; /*年齡長度為2*/

float CJ[4]; /*包含4門成績*/

};

/*————-2————-*/

int JY_NO(char *stu_num,FILE *fp) /*檢驗學號的正確性*/

{ struct stuType stud;

int NO;

char *p=stu_num;

if(strcmp(stu_num,”#”)==0) return 1; /*若輸入”#”返回真值,不再循環輸入*/

while(*p!=’\0′) /*學號必須是數字,否則返回重新輸入*/

{ NO=(int)*p;

if(NO48||NO57)

{ puts(“\t\tUndefined SN!Please input again!\n”);/*非法學號!請重新輸入!*/

return 0;

}

else p++; /*指針加1*/

}

if(strlen(stu_num)!=10) /*若學號長度不為10,則返回重新輸入*/

{ puts(“\t\tLength of SN Error!\n”);/*學號長度不對*/

return 0;

}

if(getchar()!=’\n’) /*若學號後面的字符不是回車符,則學號長度大於10*/

{ printf(“\t\tThe length of SN should more than 10!Please input again!\n”);/*學號長度大於10個,請重新輸入*/

do{}while(getchar()!=’\n’); /*用getchar接收多餘的字符*/

return 0;

}

else

{

rewind(fp); /*使文件指針指向頭*/

while(!feof(fp)) /*若文件指針未到結尾,就繼續執行下面的循環,feof遇到文件結束符返回非零值,否則返回0*/

{ fread(stud,sizeof(struct stuType),1,fp); /*讀取一定長度的數據*/

if(strcmp(stu_num,stud.NO)==0) /*學號的唯一性*/

{ printf(“\t\t Repeat SN,Please input again!\n”);/*學號重複!請重新輸入*/

printf(“\t\tThe Record of this student:\n”);/*該學生成績如下*/

printf(“\t\tChinese:%.1f\n”,stud.CJ[0]);/*語文*/

printf(“\t\tMath:%.1f\n”,stud.CJ[1]);/*數學*/

printf(“\t\tEnglish:%.1f\n”,stud.CJ[2]);/*英語*/

printf(“\t\tTotal:%.1f\n”,stud.CJ[3]);/*總評*/

return 0;

}

}

}

return 1;

}

/*————-3————-*/

int JY_NO2(char *stu_num) /*檢驗學號*/

{ int NO;

char *p=stu_num;

if(strcmp(stu_num,”#”)==0)return 1; /*若輸入“#”,則返回真值結束*/

if(strlen(stu_num)!=10) /*學號長度不為10*/

{ puts(“\t\tLength of SN Error!\n”);/*學號長度不對*/

return 0;

}

while(*p!=’\0′) /*學號必須用數字,若包含有字母,或其它字符則返回假值重新輸入*/

{ NO=(int)*p;

if(NO48||NO57)

{ puts(“\t\tUndefined SN!Please input again!\n”);/*非法學號!請重新輸入*/

return 0;

}

else p++; /*指針加1*/

}

if(getchar()!=’\n’) /*檢驗學號長度是否大於10,並把多餘的字符去掉*/

{ printf(“\t\tThe length of SN should more than 10!Please input again!\n”);/*學號長度大於10個,請重新輸入*/

do{}while(getchar()!=’\n’);

return 0;

}

return 1;

}

/*————-4————-*/

int JY_XM(char *stu_XM) /*檢驗姓名*/

{ int PD;

char *p;

p=stu_XM;

while(*p!=’\0′) /*姓名只能用英文*/

{

PD=(int)*p;

if(PD0)

{ puts(“\t\tName should use English, Please input again!\n”);/*姓名只能用英文請重新輸入*/

return 0;

}

else p++; /*使指針加1,指向下一漢字*/

}

if(getchar()!=’\n’) /*姓名長度不得大於5個*/

{ printf(“\t\tThe length of Name is more than 5, Please input again!\n”);/*姓名長度大於5個請重新輸入*/

do{}while(getchar()!=’\n’);

return 0;

}

return 1; /*字符串全為漢字返回真*/

}

/*————-5————-*/

int JY_AGE(float stu_AGE) /*年齡只能在0~100之間*/

{

if(stu_AGE0||stu_AGE100)

{ printf(“\t\tInput Error! Record should between 0~100!\n”);/*輸入錯誤,成績只能在0~100之間*/

return 0;

}

return 1;

}

/*————-6————-*/

int JY_CJ(float stu_CJ) /*學生成績只能在0~100之間*/

{

if(stu_CJ0||stu_CJ100)

{ printf(“\t\tInput Error! Record should between 0~100!\n”);/*輸入錯誤,成績只能在0~100之間*/

return 0;

}

return 1;

}

/*————-7————-*/

void CreatFile() /*輸入文件*/

{ FILE *fp;

struct stuType stu,stu0={“”,””,}; /*對stu0xianfuzhi*/

fp=fopen(“stu.dat”,”wb+”); /*打開或創建一個二進制文件,打開時將原來的內容刪除*/

if(fp==NULL)

{ printf(“\t\tFile opens Error!\n\t\t\tPress Anykey back…”);/*文件打開失敗,按任意鍵返回*/

getch();

return;

}

else

{ while(1)

{ stu=stu0;

do{ printf(“\n\t\tPlease input SN:”); /*輸入學號並檢驗其正確性*/

scanf(“%10s”,stu.NO);

}while(!JY_NO(stu.NO,fp));

if(strcmp(stu.NO,”#”)==0)break;

do{ printf(“\n\t\tPlease input Name:”); /*輸入姓名並檢驗其正確性*/

scanf(“%10s”,stu.XM);

}while(!JY_XM(stu.XM));

do{ printf(“\n\t\tPlease input age:”); /*輸入年齡績並檢驗其正確性*/

scanf(“%f”,stu.AGE);

}while(!JY_AGE(stu.AGE[0]));

do{ printf(“\n\t\tPlease input record of Chinese:”); /*輸入成績並檢驗其正確性*/

scanf(“%f”,stu.CJ[0]);

}while(!JY_CJ(stu.CJ[0]));

do{ printf(“\n\t\tPlease input record of Math:”); /*同上*/

scanf(“%f”,stu.CJ[1]);

}while(!JY_CJ(stu.CJ[1]));

do{ printf(“\n\t\tPlease input record of English:”);

scanf(“%f”,stu.CJ[2]);

}while(!JY_CJ(stu.CJ[2]));

do{ printf(“\n\t\tPlease input record of Total:”);

scanf(“%f”,stu.CJ[3]);

}while(!JY_CJ(stu.CJ[3]));

fwrite(stu,sizeof(struct stuType),1,fp); /*寫文件*/

}

}

fclose(fp); /*關閉文件*/

}

/*————-8————-*/

void Search_Xuehao() /*按學號查詢*/

{ FILE *fp;

int flag;

struct stuType stu,stud;

fp=fopen(“stu.dat”,”rb”);

if(fp==NULL) /*若文件打不開則輸出下面的信息*/

{ printf(“\t\tFile opens Error!\n\t\t\tPress Anykey back…”);

getch();

return;

}

else

{ do{ puts(“\n\t\tPress\”#\” or search”);

do{ printf(“\t\tPlease input the SN what you want:”);

scanf(“%10s”,stu.NO);

}while(!JY_NO2(stu.NO));

if(strcmp(stu.NO,”#”)==0)break; /*若輸入“#”則結束循環*/

flag=0;

rewind(fp);

while(fread(stud,sizeof(struct stuType),1,fp)) /*檢查文件指針結束*/

{ if(strcmp(stu.NO,stud.NO)==0) /*比較學號*/

{ puts(“\t\tThe Record of this student:”);

printf(“\t\tSN:%s\n”,stud.NO);

printf(“\t\tName:%s\n”,stud.XM);

printf(“\t\tAGE:%.1f\n”,stud.AGE[0]);

printf(“\t\tChinese:%.1f\n”,stud.CJ[0]);

printf(“\t\tMath:%.1f\n”,stud.CJ[1]);

printf(“\t\tEnglish:%.1f\n”,stud.CJ[2]);

printf(“\t\tTotal:%.1f\n”,stud.CJ[3]);

flag=1; /*記錄學號是否查到*/

}

}

if(flag==0)puts(“\t\tUndefined SN”);

}while(strcmp(stu.NO,”#”)!=0);

}

fclose(fp); /*關閉文件*/

}

/*————-9————-*/

void Search_Xingming() /*按姓名查找*/

{ FILE *fp;

int flag=0;

struct stuType stu,stud;

fp=fopen(“stu.dat”,”rb”);

if(fp==NULL)

{ printf(“\t\tFile opens Error!\n\t\tPress Anykey back…”);

getch();

return;

}

else

{ do{

do{ printf(“\t\tPlease input the Name of the Student what you want:”);

scanf(“%10s”,stu.XM);

}while(!JY_XM(stu.XM));

rewind(fp); /*文件指針指向頭*/

while(fread(stud,sizeof(struct stuType),1,fp))

{ if(strcmp(stu.XM,stud.XM)==0) /*比較姓名是否相同*/

{ puts(“\t\tThe name of the Student is:”);

printf(“\t\tSN:%s\n”,stud.NO);

printf(“\t\tName:%s\n”,stud.XM);

printf(“\t\tAGE:%.1f\n”,stud.AGE[0]);

printf(“\t\tChinese:%.1f\n”,stud.CJ[0]);

printf(“\t\tMath:%.1f\n”,stud.CJ[1]);

printf(“\t\tEnglish:%.1f\n”,stud.CJ[2]);

printf(“\t\tTotal:%.1f\n”,stud.CJ[3]);

flag=1; /*記錄姓名是否被查到*/

}

}

if(flag==0)puts(“\n\t\tUndefined Name!”);

puts(“\t\tContinue?(y–yes,Else key back)?”);

}while(getch()==’y’);

}

fclose(fp);

/* puts(“\t\tPress Anykey to continue…”);*/

/* getch();*/

}

/*————-10————-*/

int ListFile(void) /*輸出文件,列出所有學生成績*/

{ FILE *fp;

int REC=0; /*記錄學生人數*/

struct stuType stu;

fp=fopen(“stu.dat”,”rb”);

if(fp==NULL)

{ printf(“\t\tFile opens Error!\n\t\tPress Anykey back…”);

getch();

return 1;

}

else{ printf(“\t\tRecords of the Students:\n”);

printf(“\t\tSN\t\tName\tChinese\tMath\tEnglish\tTotal\n”);

rewind(fp);

while(fread(stu,sizeof(struct stuType),1,fp))

{ /*每讀取一個長度的數據就輸出*/

printf(“\t\t%s”,stu.NO);

printf(“\t%s”,stu.XM);

printf(“\t%.1f”,stu.AGE);

printf(“\t%.1f”,stu.CJ[0]);

printf(“\t%.1f”,stu.CJ[1]);

printf(“\t%.1f”,stu.CJ[2]);

printf(“\t%.1f”,stu.CJ[3]);

printf(“\n”);

REC++;

if(REC%20==0) /*20個學生成績,停一下*/

{ printf(“\t\tPress Anykey to continue…\n”);

getch();

}

}

}

fclose(fp); /*關閉文件*/

printf(“\t\tContinue…”);

getch();

}

/*————-11————-*/

void Statistics() /*統計及格和優秀人數*/

{ FILE *fp;

int REC=0,unpass[4]={0},good[4]={0}; /*REC–記錄個數,即人數,unpass–重修人數,good–優秀人數*/

float highest[4]={0},score[4]={0}; /*highest–最高分,score–總分*/

struct stuType stu;

fp=fopen(“stu.dat”,”rb”);

if(fp==NULL)

{ printf(“\t\tFile opens Error!\n\t\tPress Anykey back…”);

getch();

return;

}

else { rewind(fp);

while(fread(stu,sizeof(struct stuType),1,fp))

{ REC++;

score[0]=score[0]+stu.CJ[0]; /*語文*/

if(stu.CJ[0]=60)unpass[0]++;

if(stu.CJ[0]=80)good[0]++;

if(highest[0]stu.CJ[0])highest[0]=stu.CJ[0];

score[1]=score[1]+stu.CJ[1]; /*數學*/

if(stu.CJ[1]=60)unpass[1]++;

if(stu.CJ[1]=80)good[1]++;

if(highest[1]stu.CJ[1])highest[1]=stu.CJ[1];

score[2]=score[2]+stu.CJ[2]; /*英語*/

if(stu.CJ[2]=60)unpass[2]++;

if(stu.CJ[2]=80)good[2]++;

if(highest[2]stu.CJ[2])highest[2]=stu.CJ[2];

score[3]=score[3]+stu.CJ[3]; /*總評*/

if(stu.CJ[3]=60)unpass[3]++;

if(stu.CJ[3]=80)good[3]++;

if(highest[3]stu.CJ[3])highest[3]=stu.CJ[3];

}

if(REC==0) /*可以防止記錄為0是REC作除數而造成的錯誤*/

{ printf(“\t\tYou did’t input the Name!Press Anykey back…”);

getch();

return;

}

else{

printf(“\t Chinese\t Math\t English\tTotal\n”); /*輸出統計信息*/

printf(“\tAverage: %.1f\t %.1f\t %.1f\t\t%.1f\n”,score[0]/REC,score[1]/REC,score[2]/REC,score[3]/REC);

printf(“\tTop record: %.1f\t %.1f\t %.1f\t\t%.1f\n”,highest[0],highest[1],highest[2],highest[3]);

printf(“\tNumber of good students: %d\t\t %d\t %d\t\t %d\n”,good[0],good[1],good[2],good[3]);

printf(“\tNumber of unpassed students:%d\t\t %d\t %d\t\t %d\n”,unpass[0],unpass[1],unpass[2],unpass[3]);

}

}

fclose(fp);

printf(“\n\t\t\tPress Anykey to continue…”);

getch();

}

/*————-12————-*/

void HelpMessage()

{ clrscr();

printf(“\n\n\n\n\n chi xi tong shi lao shi suo bu zhi zuoye bianzhi ercheng,gai xitong juyou cunchu xuesheng shuju,an xuehao,xingming chaxun,liechu xuesheng chengji he tongjigongneng.\n \n shiyongfangfa:xitong shulu shuju hou,jiangzai dangqian muluzhong jianli yige mingwei stu.dat wenjian,yongyubaocun shulu de shuju.xuehao shulu zhineng yong shuzi shulu qie xuehao zhineng shi10wei.xingming shulu fuhe zhongguoren de xingming,zhineng yong zhongwen pinying,qie zuichangwei5 ge hanzhi.\n chi chenxu zai Turbo C2.0xia yunxing tongguo \n\n “);

getch();

}

/*————-13————-*/

int GetKey(void) /*此函數返回一個按鍵的數值*/

{ int key;

key=bioskey(0); /*bioskey為調用BIOS鍵盤接口*/

if(key8) /*位移*/

{

key=key0x00ff;

}

return key; /*返回按鍵*/

}

/*————-14————-*/

void main()

{ int key;

struct date d; /*定義時間結構體*/

getdate(d); /*讀取系統日期並把它放到結構體d中*/

clrscr(); /*清除屏幕*/

printf(“\n\n\n\n\n”);

printf(“\t ========================================================\n”); /*版本信息*/

printf(“\n”);

printf(“\t\t The System of Students Records Management 1.0 \n”);

printf(“\n”);

printf(“\n”);

printf(“\t\t Builder: XG042-WZM YS HYF WQ \n”);

printf(“\t\t Teacher:Song Zheyuan\n”);

printf(“\t\t Time:2005\\7\\5 \n”);

printf(“\n”);

printf(“\t ========================================================\n”);

printf(“\t\t\tPress Anykey to continue…”);

/*while(!kbhit());*/

getch(); /*從鍵盤讀取一個字符,但不顯示於屏幕*/

system(“cls”); /*調用DOS的清屏函數,TC中可用clrscr代替*/

while(1) /*主菜單*/

{

printf(“\n\n\n\n\n”);

printf(“\t **************************************************\n”);

printf(“\t **\t **\n”);

printf(“\t **\tF1 –Help **\n”);

printf(“\t **\t **\n”);

printf(“\t **\tF2 –Data Input Save **\n”);

printf(“\t **\t **\n”);

printf(“\t **\tF3 –Search by SN **\n”);

printf(“\t **\t **\n”);

printf(“\t **\tF4 –Search by Name **\n”);

printf(“\t **\t **\n”);

printf(“\t **\tF5 –Contents Input **\n”);

printf(“\t **\t **\n”);

printf(“\t **\tF6 –Count Students Number(PassedGood) **\n”);

printf(“\t **\t **\n”);

printf(“\t **\tESC–Quit the System **\n”);

printf(“\t **\t **\n”);

printf(“\t **************************************************\n”);

printf(“\n\t Please select…\t\t%d\\%d\\%d\n\n”,d.da_year,d.da_mon,d.da_day); /*提示信息,並顯示當前系統日期*/

key=GetKey(); /*調用自定義函數,讀取一個鍵*/

switch(key)

{

case F1: HelpMessage(); break;

case F2: CreatFile(); break;

case F3: Search_Xuehao(); break;

case F4: Search_Xingming();break;

case F5: ListFile(); break;

case F6: Statistics(); break;

case ESC:exit(1); break;

/*default: puts(“\t\t\tWrong SN input!”);

printf(“\t\t\tPress Anykey back…”);

getch();*/

}

clrscr(); /*每執行完一項功能後,自動清屏*/

}

}

課程設計 C語言學籍管理系統!!!

給你看個我寫的班費管理系統,跟你這個比較類似,你改下就好了

#includeiostream

#includestring

#includevector

#include fstream

#includesstream

using namespace std;

class student

{

public:

student(string ,string ,string ,string );

string getSex(){return _sex;};

string getName(){return _name;};

string getID(){return _id;};

string getmoney(){return _money;};

void setMoney(string a){_money=a;};

void deleted(){_id=”deleted”;_name=”deleted”;_sex=”deleted”;_money=”deleted”;};

void setName(string);

void save();

void print();

private:

string _id;

string _name;

string _sex;

string _money;

string _total;

};

student::student(string id, string name, string sex,string money)

{

_id=id;_name=name;_sex=sex;

_money=money;

}

void student::save()

{

ofstream outf;

outf.open(“myfile.txt”,ios::app);

outf_id

“\t” _name

“\t”_sex

“\t”_moneyendl;

outf.close();

}

void student::print()

{

cout_id

“\t\t” _name

“\t\t”_sex

“\t\t”_moneyendl;

}

void printMenu(void)

{

cout”————-class fee management system————–“endl;

cout”| |”endl;

cout”| author:XY |”endl;

cout”| |”endl;

cout”|—————————————————-|”endl;

cout”| |”endl;

cout”| 1.Increase the student records |”endl;

cout”| 2.Delete student records |”endl;

cout”| 3.The total of class fee |”endl;

cout”| 4.search the class fee |”endl;

cout”| 5.view all class fee |”endl;

cout”| 6.add one class fee |”endl;

cout”| 0.exit |”endl;

cout”| |”endl;

cout”——————————————————“endl;

cout”make your choice:”endl;

}

void addstudent();//添加學生信息

void delstudent();//刪除學生信息

void selstudent();//查詢學生信息

void selall();//查詢所有信息

void total();//班費總額

void addmoney();//增加某個學生的班費(實為更新操作)

bool isinfile=false;//判斷是否讀取過txt

vectorstudent stu;//全局對象student

int main()

{

int order=0;

printMenu();

cinorder;

while(order!=0)

{

switch(order)

{

case 1:addstudent();printMenu();cinorder;break;

case 2:delstudent();printMenu();cinorder;break;

case 3:total();printMenu();cinorder;break;

case 4:selstudent();printMenu();cinorder;break;

case 5:selall();printMenu();cinorder;break;

case 6:addmoney();printMenu();cinorder;break;

default:break;

}

}

coutendl;

cout”——————————————————“endl;

cout”thank you for using the system~”endl;

cout”——————————————————“endl;

}

void infile()//讀取txt

{

if (isinfile==false)

{

stu.clear();

string tmp_id,tmp_name,tmp_sex,tmp_money;

int time =0;

string lines,field;

ifstream infile(“myfile.txt”);

while (getline (infile, lines))

{

istringstream stream(lines);

while(streamfield)

{

switch(time)

{

case 0:tmp_id = field;time=1;break;

case 1:tmp_name = field;time=2;break;

case 2:tmp_sex = field;time=3;break;

case 3:tmp_money = field;time=0;

stu.push_back(student(tmp_id,tmp_name,tmp_sex,tmp_money));break;

}

}

}

isinfile==true;

infile.close();

}

}

void addstudent()

{

string tmp_id;

string tmp_name;

string tmp_sex;

string tmp_money;

cout”Insert–ID:”;

cintmp_id;

cout”Insert–Name:”;

cintmp_name;

cout”Insert–Sex:”;

cintmp_sex;

cout”Insert–Money:”;

cintmp_money;

student(tmp_id,tmp_name,tmp_sex,tmp_money).save();

cout”save success!”endl;

isinfile=false;

}

void selall()

{

infile();

if (stu.size()==0)

{

cout”ERR:—-No data in the system!”endl;

}

else

{

vectorstudent::iterator iter=stu.begin();

vectorstudent::iterator iter_end=stu.end();

coutendl;

cout”——————————————————“endl;

cout”id name sex money”endl;

for(;iter!=iter_end;iter++)

{

(*iter).print();

}

cout”——————————————————“endl;

}

coutendl;

}

void delstudent()

{

infile();

string search_name;

string search_id;

cout”delete—-id:”endl;

cinsearch_id;

cout”delete—-name:”endl;

cinsearch_name;

bool isFind=false;

if (stu.size()==0)

{

cout”ERR:—-No data in the system!”endl;

}

else

{

vectorstudent::iterator iter=stu.begin();

vectorstudent::iterator iter_end=stu.end();

for(;iter!=iter_end;iter++)

{

if( (*iter).getName()==search_name(*iter).getID()==search_id)

{

isFind=true;

stu.erase(iter);

}

}

//重新將刪除後的集合寫入txt

vectorstudent::iterator iter1=stu.begin();

vectorstudent::iterator iter1_end=stu.end();

ofstream outf;

outf.open(“myfile.txt”);

for(;iter1!=iter1_end;iter1++)

{

outf(*iter1).getID()

“\t”(*iter1).getName()

“\t”(*iter1).getSex()

“\t”(*iter1).getmoney()endl;

}

outf.close();

cout”delete success!”endl;

}

if(!isFind)

{

cout”Can’t find this student!”endl;

}

coutendl;

}

void total()

{

infile();

if (stu.size()==0)

{

cout”ERR:—-No data in the system!”endl;

}

else

{

vectorstudent::iterator iter=stu.begin();

vectorstudent::iterator iter_end=stu.end();

cout”——————————————————“endl;

cout”id name sex money”endl;

for(;iter!=iter_end;iter++)

{

(*iter).print();

}

cout”——————————————————“endl;

}

coutendl;

}

void selstudent()

{

infile();

string search;

cout”search—-id or name:”endl;

cinsearch;

bool isFind=false;

if (stu.size()==0)

{

cout”ERR:—-No data in the system!”endl;

}

else

{

vectorstudent::iterator iter=stu.begin();

vectorstudent::iterator iter_end=stu.end();

cout”——————————————————“endl;

cout”id name sex money”endl;

for(;iter!=iter_end;iter++)

{

if( (*iter).getName()==search||(*iter).getID()==search)

{

isFind=true;

(*iter).print();

}

}

cout”——————————————————“endl;

}

if(!isFind)

{

cout”Can’t find this student!”endl;

}

coutendl;

}

void addmoney()

{

infile();

string search;

string update;

cout”search—-id or name:”endl;

cinsearch;

bool isFind=false;

if (stu.size()==0)

{

cout”ERR:—-No data in the system!”endl;

}

else

{

vectorstudent::iterator iter=stu.begin();

vectorstudent::iterator iter_end=stu.end();

cout”id name sex money”endl;

for(;iter!=iter_end;iter++)

{

if( (*iter).getName()==search||(*iter).getID()==search)

{

(*iter).print();

isFind=true;

cout”update—-new class fee:”endl;

cinupdate;

(*iter).setMoney(update);

}

}

//重新將修改後的集合寫入txt

vectorstudent::iterator iter1=stu.begin();

vectorstudent::iterator iter1_end=stu.end();

ofstream outf;

outf.open(“myfile.txt”);

for(;iter1!=iter1_end;iter1++)

{

outf(*iter1).getID()

“\t”(*iter1).getName()

“\t”(*iter1).getSex()

“\t”(*iter1).getmoney()endl;

}

outf.close();

cout”update success!”endl;

}

if(!isFind)

{

cout”Can’t find this student!”endl;

}

coutendl;

}

c語言課程設計 圖書管理系統

高級語言程序設計(2)課程設計

   

一 程序設計說明書

【設計題目】 圖書館借閱管理

【問題描述】圖書館,適合用C++面向對象的功能來描述。圖書館管理系統分為借書、還書、圖書管理和讀者服務等四個部分。設計一個讀者類Reader,記錄每個讀者基本信息;讀者庫類Rdatabase,記錄所有讀者信息;圖書類Book, 記錄每本書的基本信息;圖書庫類Bdatabase, 記錄所有圖書信息。

【基本要求】

1讀者庫類RDatabase中,其構造函數中,將read.txt文件中所有讀入讀者記錄rede[]中。處理完畢,在析構函數中將read[]中的所有未刪記錄寫入到read.txt中。

2圖書庫類BDatabase中,其構造函數中,將book.txt文件中所有讀入圖書記錄book[]中。處理完畢,在析構函數中將book[]中的所有未刪記錄寫入到book.txt中。

3 利用構造函數完成讀者和圖書數據初始化,完成內存分配。程序結束前,析構函數完成所申請的堆內存空間。

4 編寫主函數,對所編寫的矩陣類進行全面測試。要求用戶界面採用菜單方式。測試中需要讀者和圖書數據通過I/O流從磁盤文件讀入,同時顯示在屏幕上。得到的數據通過I/O流寫入磁盤文件保存,同時顯示在屏幕上。

5 源程序中要有充分的注釋,報告中要有詳細的流程圖和文字材料。

【類的設計】

該程序包含了四個類,如下:

1.Reader類,有讀者的基本管理功能,具有以下私有數據:

int tag;//刪除標記 1:已刪;0:未刪

int no;//讀者編號

char name[10];//讀者姓名

int borbook[Maxbor];//所借圖書

2.讀者庫類Rdatabase, 具有以下私有數據:

int top;//讀者記錄指針

Reader read[Maxr];//讀者記錄

3.圖書庫類Book,有一本圖書的基本功能,有以下私有數據:

int tag;//刪除標記 1:已刪;0:未刪

int no;//圖書編號

char name[20];//書名

int onshelf;//是否在架 1在架 0已借

4.圖書庫類BDatabase,有以下私有數據:

int top;//圖書記錄指針

Book book[Maxb];//圖書記錄

【特殊函數的設計說明】

構造函數

1.Reader類中構造函數Reader(),初始化函數;

2.讀者庫類RDatabase中,其構造函數Rdatabase(),將read.txt文件中所有讀入讀者記錄rede[]中。

3.Book類中構造函數Book(),初始化函數;

4.圖書庫類BDatabase中,其構造函數中,將book.txt文件中所有讀入圖書記錄book[]中。

 

拷貝構造函數

Reader類中的拷貝構造函數將getname()的返回值讀者姓名拷貝到setname()中,Book類中的拷貝構造函數將getname()函數的返回值圖書名拷貝到圖書名設置函數setname()中。

 

析構函數

1.讀者庫類RDatabase中,其析構函數~Rdatabase(),將read[]中的所有未刪記錄寫入到read.txt中;

2.圖書庫類BDatabase中,其析構函數~Bdatabase(),將book[]中的所有未刪記錄寫入到book.txt中。

 

運算符重載

重載了“=”,當比較讀者編號和圖書編號時,重載;重載位運算符“〈〈”和“〉〉”等。

 

【主要函數算法流程圖】

 

【程序的使用方法】

1.進入操作頁面,按提示操作;

2.首先,新增圖書和讀者信息,之後就可以對以存在的信息進行操作;

3.操作當中,可以隨時增加,更改和刪除圖書或讀者信息;

4.當選擇退出時,進行清屏。

 

二 程序上機調試報告

【語法錯誤及其排除】

1.在敲程序時,有很多拼寫錯誤,例好多處把Readdata()誤打Readdate();結束的分號,在不同的輸入法狀態下輸入,這些小錯誤剛開始很難發現,不過有了經驗,就很容易了。

2.創建新的構造函數時,使用出現了錯誤。重載構造函數要注意函數的訪問權限,結果就不會出現錯誤。

【算法錯誤及其排除】

1.讀者類中借書操作函數中,採用循環語句時判斷讀者已借圖書量時for(int i=0;iMaxbor;i++)誤寫為for(int i=1;iMaxbor;i++),使循環發生錯誤。

2.指針使用錯誤,指針b和r混淆,導致編譯錯誤得到“error C2660: ‘retbook’ : function does not take 1 parameters”錯誤報告。

三 程序測試結果

【收穫及體會】

除了課堂外,課程設計是最能學到東西的,最考驗人的。在做課程設計這段時間,時刻都感覺自己有好多不懂,要學的太多了!經過這次課程設計,讓我對C++這門語言有了更深的認識,操作能力有了提高。要想得到敲的代碼運行出來後的滿足感,需要耐心細心,毅力以及充沛的體力。只有經過多次編輯,多次編譯,再多次運行,才能編寫出更好的程序,有時候需要多次的更正才達到所要的運行結果。學習編程,需要多揣摩,實踐,實踐,再實踐,編程技能才能更上一層樓,此外還得多向高手請教!

【源程序代碼】

//********************

//圖書館借閱管理

//班級:

//學號:

//姓名:

//********************

#includeiostream.h

#includeiomanip.h

#includestring.h

#includefstream.h

const int Maxr=1000;//最多的讀者

const int Maxb=10000;//最多的圖書

const int Maxbor=8;//每位讀者最多借8本書

class Reader //讀者類

{

int tag;//刪除標記 1已刪;0未刪

int no;//讀者編號

char name[10];//讀者姓名

int borbook[Maxbor];//所借圖書

public :

Reader(){}//構造函數

char *getname(){return name;}//獲取讀者姓名

int gettag(){return tag;}//獲取刪除標記

int getno(){return no;}//獲取讀者編號

void setname(char na[])//設置讀者姓名

{

strcpy(name,na);

}

void delbook(){tag=1;}//設置刪除標記

void addreader(int n,char *na)//增加讀者

{

tag=0;

no=n;

strcpy(name,na);

for(int i=0;iMaxbor;i++)

borbook[i]=0;

}

void borrowbook(int bookid)//借書操作

{

for(int i=0;iMaxbor;i++)

{

if(borbook[i]==0)

{

borbook[i]=bookid;

}

}

}

int retbook(int bookid)//還書操作

{

for(int i=0;iMaxbor;i++)

{

if (borbook[i]==bookid)

{

borbook[i]=0;

return 1;

}

}

return 0;

}

void disp()//輸出讀者信息

{

coutsetw(5)nosetw(10)name”借書編號:”;

for(int i=0;i,Maxbor;i++)

if(borbook[i]!=0)

coutborbook[i]endl;

}

};

 

class RDatabase//讀者庫類

{

int top;//讀者記錄指針

Reader read[Maxr];//讀者記錄

public:

RDatabase()//構造函數,將reader.txt讀到read[]中

{

Reader s;

top=-1;

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

while(1)

{

file.read((char*)s,sizeof(s));

if(!file)break;

top++;

read[top]=s;

}

file.close();

}

void clear()//刪除所有讀者信息

{

top=-1;

}

int addreader(int n,char *na)//添加讀者,檢查是否已存在

{

Reader *p=query(n);

if(p==NULL)

{

top++;

read[top].addreader(n,na);

return 1;

}

return 0;

}

Reader*query(int readerid)//按編號查找

{

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

if(read[i].getno()==readeridread[i].gettag==0)

return read[i];

return NULL;

}

void disp()//刪除讀者所有信息

{

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

read[i].disp();

}

void readerdata();//讀者庫維護

~RDatabase()//析構函數,將read[]寫入reader.txt文件中

{

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

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

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

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

file.close();

}

};

void RDatabase::readerdata()

{

int choice=1;

char rname[20];

int readerid;

Reader*r;

while(choice!=0)

{

cout”讀者服務 1新增 2更該 3刪除 4查找 5顯示 6全刪 0退出”endl;

cinchoice;

switch(choice)

{

case 1:

cout”請輸入讀者編號:”;

cinreaderid;

cout”讀入讀者姓名:”;

cinrname;

addreader(readerid,rname);

break;

case 2:

cout”請輸入讀者編號:”;

cinreaderid;

r=query(readerid);

if(r==NULL)

{

cout”讀者不存在”endl;

break;

}

cout”請輸入新讀者姓名:”;

cinrname;

r-setname(rname);

break;

case 3:

cout”請輸入讀者編號:”;

cinreaderid;

r=query(readerid);

if(r==NULL)

{

cout”讀者不存在”endl;

break;

}

r-delbook();

break;

case 4:

cout”請輸入讀者編號:”;

cinreaderid;

r=query(readerid);

if(r==NULL)

{

cout”該讀者編號不存在”endl;

break;

}

case 5:

disp();

break;

case 6:

clear();

break;

}

}

}

 

class Book//圖書類

{

int tag;//刪除標記 1:已刪;0:未刪

int no;//圖書編號

char name[20];//書名

int onshelf;//是否在架 1在架 0已借

public:

Book(){}

char*getname(){return name;}//獲取讀者姓名

int getno(){return no;}//獲取圖書編號

int gettag(){return tag;}//獲取刪除標記

void setname(char na[])//設置書名

{

strcpy(name,na);

}

void delbook(){tag=1;}//刪除圖書

void addbook(int n,char*na)//增加圖書

{

tag=0;

no=n;

strcpy(name,na);

onshelf=1;

}

int borrowbook()//借書操作

{

if(onshelf==1)

{

onshelf=0;

return 1;

}

return 0;

}

void retbook()//還書操作

{

onshelf=1;

}

void disp()//輸出圖書

{

coutsetw(6)nosetw(18)namesetw(10)(onshelf==1?”在架”:”已借”)endl;

}

};

 

class BDatabase//圖書庫類

{

int top;//圖書記錄指針

Book book[Maxb];//圖書記錄

public:

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

{

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(p==NULL)

{

top++;

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

return 1;

}

cout”新增成功!”endl;

}

Book*query(int bookid)//查找圖書

{

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

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

return NULL;

}

void bookdata();//圖書庫維護

void disp()

{

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

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

book[i].disp();

}

~BDatabase()//析構函數,將book[]寫入book.txt文件中

{

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()

{

int choice;

char bname[40];

int bookid;

Book *b;

while(choice!=0)

{

cout”圖書管理 1新增 2更該 3刪除 4查找 5顯示 6全刪 0退出”endl;

cinchoice;

switch(choice)

{

case 1:

cout”輸入圖書編號:”;

cinbookid;

cout”輸入圖書書名:”;

cinbname;

addbook(bookid,bname);

break;

case 2:

cout”輸入圖書編號:”;

cinbookid;

b=query(bookid);

if(b==NULL)

{

cout”該圖書不存在”endl;

break;

}

cout”輸入新書名:”;

cinbname;

b-setname(bname);

cout”更名成功!”endl;

break;

case 3:

cout”輸入圖書編號:”;

cinbookid;

b=query(bookid);

if(b==NULL)

{

cout”該圖書不存在!”endl;

break;

}

b-delbook();

break;

case 4:

cout”請輸入圖書編號:”;

cinbookid;

b=query(bookid);

if(b==NULL)

{

cout”該書不存在!”endl;

break;

}

b-disp();

break;

case 5:

disp();

break;

case 6:

clear();

break;

}

}

}

 

void main()

{

int choice=1,bookid,readerid;

RDatabase ReaderDB;

Reader *r;

BDatabase BookDB;

Book *b;

while(choice!=0)

{

cout” 1借書      “endl;

cout” 2還書      “endl;

cout” 3圖書維護  “endl;

cout” 4讀者維護  “endl;

cout” 0離開      “endl;

cinchoice;

switch(choice)

{

case 1:

cout”借書,請輸入讀者編號:”;

cinreaderid;

cout”圖書編號:”;

cinbookid;

r=ReaderDB.query(readerid);

if(r==NULL)

{

cout”哈哈,借書成功!”;

break;

}

b=BookDB.query(bookid);

if(b==NULL)

{

cout”不存在該書!”endl;

break;

}

if(b-borrowbook()==0)

{

cout”該書已借”endl;

break;

}

r-borrowbook(b-getno());

break;

cout”借書成功!”endl;

case 2:

cout”還書,請輸入讀者編號:”;

cinreaderid;

cout”請輸入圖書編號;”;

cinbookid;

r=ReaderDB.query(readerid);

if(r==NULL)

{

cout”不存在該讀者!”endl;

break;

}

b-retbook();

r-retbook(b-getno());

break;

cout”還書成功!”endl;

case 3:

BookDB.bookdata();

break;

case 4:

ReaderDB.readerdata();

break;

}

}

}

【輸出結果】

1借書

2還書

3圖書管理

4讀者服務

0退出

3

圖書管理 1新增 2更該 3刪除 4查找 5顯示 6全刪 0退出

1

輸入圖書編號:1111

輸入圖書書名:武林外傳

新增成功!

圖書管理 1新增 2更該 3刪除 4查找 5顯示 6全刪 0退出

1

輸入圖書編號:2222

輸入圖書書名:今夜無眠

新增成功!

圖書管理 1新增 2更該 3刪除 4查找 5顯示 6全刪 0退出

1借書

2還書

3圖書管理

4讀者服務

0退出

4

讀者服務 1新增 2更該 3刪除 4查找 5顯示 6全刪 0退出

1

請輸入讀者編號:001

讀入讀者姓名:周強

讀者服務 1新增 2更該 3刪除 4查找 5顯示 6全刪 0退出

1借書

2還書

3圖書管理

4讀者服務

0退出

1

借書,請輸入讀者編號:001

圖書編號:1111

哈哈,借書成功! 1借書

2還書

3圖書管理

4讀者服務

0退出

2

還書,請輸入讀者編號:001

請輸入圖書編號;1111

還書成功!

1借書

2還書

3圖書管理

4讀者服務

0退出

3

圖書管理 1新增 2更該 3刪除 4查找 5顯示 6全刪 0退出

2

輸入圖書編號:2222

輸入新書名:金庸全集

更名成功!

Press any key to continue

這樣可以么?

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/187891.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-28 06:25
下一篇 2024-11-28 06:25

相關推薦

  • 銀行資金管理系統總結

    銀行資金管理系統是銀行日常業務運營的核心支撐系統,主要負責處理銀行的資金流動、結算、清算等業務。本文將從功能特點、技術架構、安全性以及未來發展趨勢等多個方面對銀行資金管理系統進行詳…

    編程 2025-04-29
  • Python數據處理課程設計

    本文將從多個方面對Python數據處理課程設計進行詳細闡述,包括數據讀取、數據清洗、數據分析和數據可視化四個方面。通過本文的學習,讀者將能夠了解使用Python進行數據處理的基本知…

    編程 2025-04-29
  • 北化教務管理系統介紹及開發代碼示例

    本文將從多個方面對北化教務管理系統進行介紹及開發代碼示例,幫助開發者更好地理解和應用該系統。 一、項目介紹 北化教務管理系統是一款針對高校學生和教職工的綜合信息管理系統。系統實現的…

    編程 2025-04-29
  • Python員工管理系統

    Python員工管理系統是一款基於Python語言開發的企業級應用軟件,它可以幫助企業高效地管理員工信息,提高管理效率和工作質量。下面我們將從多個方面對該系統進行詳細闡述。 一、系…

    編程 2025-04-28
  • Python課程設計題目用法介紹

    Python是一門高級、面向對象的編程語言,廣泛應用於Web應用程序開發、人工智能、數據科學、自動化測試等領域。Python基礎課程學習是每個Python學習者必須經歷的階段,而P…

    編程 2025-04-27
  • Python 進度管理系統

    本文將從多個方面詳細闡述 Python 進度管理系統,包括如何使用 Python 進行進度管理系統的開發以及管理、優化等方面的問題。 一、系統開發 為了開發一個完善的進度管理系統,…

    編程 2025-04-27
  • 製作一個簡單的管理系統的成本及實現

    想要製作一個簡單的管理系統,需要進行技術選型、開發、測試等過程,那麼這個過程會花費多少錢呢?我們將從多個方面來闡述製作一個簡單的管理系統的成本及實現。 一、技術選型 當我們開始思考…

    編程 2025-04-27
  • Python管理系統設計報告

    本文將從系統設計、數據存儲、界面設計、安全性等多個方面,詳細闡述Python管理系統的設計,為讀者提供完整且系統的解決方案。 一、系統設計 Python管理系統的設計需要考慮到系統…

    編程 2025-04-27
  • Spark課程設計:病人處理數據

    本文將從以下幾個方面詳細闡述Spark課程設計,主題為病人處理數據。 一、數據讀取和處理 val path = “/path/to/data/file” val sc = new …

    編程 2025-04-27
  • 單片機課程設計心得體會

    單片機課程設計體驗,不僅能夠讓我們初步掌握單片機基本概念,更能夠讓我們在實踐中加深對學習內容的理解和實際操作能力的提升。在此過程中,我總結了以下幾方面的經驗和體會。 一、選擇合適的…

    編程 2025-04-27

發表回復

登錄後才能評論