/* 三个课程设计的程序,是临时帮别人写的,原来自己写的自己用的那个太复杂了, 现在自己有点晕,下面的是为了应付老师的,不很严密。 */
/* 图书管理 这个程序我给一个朋友写的C语言课程设计的作业, 我们化院的C设计题目好象几年都没有变,所以因 该能给你作个参考。(没有涉及到C++)
这是个"图书管理系统",没有用到指针。BC应该可 以通过调试,输入数据的时候一定注意数字的范围 和字串的长度。 */
#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;n<100;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())!=-1&&books[n].store>0) { printf("请输入借书证序号:"); scanf("%d",&s); printf("请输入可借天数:"); scanf("%d",&d); for(l=0;l<10;l++) { if(books[n].usr[l]==0) { books[n].usr[l]=s; books[n].days[l]=d; break; } } books[n].store--; } if(n!=-1&&books[n].store==0) printf("此书已经全部借出.\n"); return_confirm(); } /*上面是借书的函数,首先调用找书函数*/
void book_in(void) { int n,s,l; page_title("归还图书"); if((n=search_book())!=-1&&books[n].store<books[n].total) { printf("借阅者图书证列表:\n"); for(l=0;l<10;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;l<10;l++) { if(books[n].usr[l]==s) { books[n].usr[l]=0; books[n].days[l]=0; break; } } books[n].store++; } if(n!=-1&&books[n].store==books[n].total) printf("全部入藏.\n"); return_confirm(); }
void book_add(void) { int n; page_title("注册新书"); for(n=0;n<100;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; }
================================================================================================ /*泊车管理*/
#include<stdio.h> #include<conio.h> #include<stdlib.h>
int cars[16][3];
void car_park(void) { int n,m,o; for(n=0;n<16;n++) if(cars[n][0]==0) break; if(n==16) { printf("\n便道很拥挤.\n"); getch(); return; } printf("\n泊车-请输入车牌:"); scanf("%d",&o); for(m=0;m<16;m++) if(cars[m][0]==o) break; if(m!=16) { printf("\n此车已泊.\n"); getch(); return; } cars[n][0]=o; if(n<10) { printf("请输入当前时:"); scanf("%d",&cars[n][1]); printf("请输入当前分:"); scanf("%d",&cars[n][2]); return; } else printf("\n请先在便道上等候车位"); getch(); } void car_get() { int n,o,p,q,r; printf("\n取车-请输入车牌:"); scanf("%d",&o); for(n=0;n<16;n++) if(cars[n][0]==o) break; if(n==16) { printf("\n没有这个车牌.\n"); getch(); return; } printf("请输入当前时:"); scanf("%d",&p); printf("请输入当前分:"); scanf("%d",&q); r=(p*60+q)-(cars[n][1]*60+cars[n][1]); printf("停车%d分钟 合计%.2f元\n",r,r*0.05); for(r=n;r<15;r++) { cars[r][0]=cars[r+1][0]; cars[r][0]=cars[r+1][0]; cars[r][0]=cars[r+1][0]; } cars[9][1]=p; cars[9][2]=q; getch(); } void main(void) { int n; char x; mainloop: clrscr(); printf("停车场:\n"); for(n=0;n<10;n++) { if(cars[n][0]!=0) printf("[CAR %d] %d:%d\n",cars[n][0],cars[n][1],cars[n][2]); else printf("[===============]\n"); } printf("\n便道:\n"); for(n=10;n<15;n++) { if(cars[n][0]!=0) printf("[CAR %d ]",cars[n][0]); else printf("[- - - - - - -]"); } printf("\n\n泊车?取车?结束(1/2/3)\n"); x=getch(); if(x=='1') car_park(); if(x=='2') car_get(); if(x=='3') exit(0); goto mainloop; }
================================================================================================ /*学生成绩管理*/
/*Borland C下编译通过,调试过程中不要输入大数字*/ #include <stdio.h> #include <stdlib.h> #include <conio.h>
int INDEX[32]; struct STUDENT { int id,age,chinese,math,english; char name[21]; }students[32];
void page_title(char *menu_item) { clrscr(); printf(">>> 学 生 管 理 系 统 <<<\n\n- %s -\n\n",menu_item); }
void return_confirm(void) { printf("\n按任意键返回……\n"); getch(); }
void student_new(void) { int n; page_title("录入学生基本信息"); for(n=0;n<32;n++) if(students[n].id==0) break; printf("学号:"); scanf("%d",&students[n].id); printf("姓名:"); scanf("%s",&students[n].name); printf("年龄:"); scanf("%d",&students[n].age); return_confirm(); }
int search_id(void) { int n,i; printf("请输入学生学号:"); scanf("%d",&i); for(n=0;n<32;n++) { if(students[n].id==i&&students[n].id!=0) { printf("学号:%d\n",students[n].id); printf("姓名:%s\n",students[n].name); printf("年龄:%d\n",students[n].age); return n; } } printf("\n输入错误或学号不存在.\n"); return -1; }
void student_del(void) { int n; page_title("注销学生基本信息"); if((n=search_id())!=-1) students[n].id=0; printf("\n!该学生已注销.\n"); return_confirm(); }
void student_edit(void) { int n; page_title("编辑学生基本信息"); if((n=search_id())!=-1) { printf("\n请重新输入新信息:\n学号:"); scanf("%d",&students[n].id); printf("姓名:"); scanf("%s",&students[n].name); printf("年龄:"); scanf("%d",&students[n].age); } return_confirm(); }
void score_input(void) { int s,n,t; page_title("录入成绩"); printf("\n请用数字键选择科目\n1-语文 2-数学 3-英语\n"); scanf("%d",&s); for(n=0;n<32;n++) { if(students[n].id!=0) { printf("学号:%d 姓名:%s 成绩:",students[n].id,students[n].name); scanf("%d",&t); switch(s) { case 1 : students[n].chinese=t;break; case 2 : students[n].math=t;break; case 3 : students[n].english=t;break; } } } return_confirm(); }
void score_edit(void) { int n; page_title("修改成绩"); if((n=search_id())!=-1) { printf("语文:%d 数学:%d 英语:%d\n",students[n].chinese,students[n].math,students[n].english); printf("\n请重新输入成绩:\n语文:"); scanf("%d",&students[n].chinese); printf("数学:"); scanf("%s",&students[n].math); printf("英语:"); scanf("%d",&students[n].english); } return_confirm(); }
void sort_it(char nn) { int n,m,p,x,t[32]; for(n=0;n<32;n++) { switch(nn) { case '1' : t[n]=students[n].id;break; case '2' : t[n]=students[n].chinese;break; case '3' : t[n]=students[n].math;break; case '4' : t[n]=students[n].english;break; case '5' : t[n]=students[n].chinese+students[n].math+students[n].english;break; } } for(n=0;n<32;n++) { x=0; p=-1; for(m=0;m<32;m++) { if(t[m]>x) { x=t[m]; p=m; } } t[p]=-1; INDEX[n]=p; } }
void browser(void) { int n,x; char k; sort_it('1'); while(1) { page_title("浏览"); printf("按数字键选择排序方式或按 0 返回\n"); printf("学号-1\t姓名\t\t年龄\t语文-2\t数学-3\t英语-4\t总分-5\n"); for(n=0;n<32;n++) { if(INDEX[n]!=-1) { x=INDEX[n]; printf("%d\t%s\t",students[x].id,students[x].name); printf("%d\t%d\t",students[x].age,students[x].chinese); printf("%d\t%d\t",students[x].math,students[x].english); printf("%d\n",students[x].chinese+students[x].math+students[x].english); } } k=getch(); if(k<'6'&&k>'0') sort_it(k); else if(k=='0') break; else continue; } }
void main(void) { menu: page_title("操作选单"); printf("请用数字键选择操作\n\n"); printf("1 录入学生基本信息\n2 修改学生基本信息\n"); printf("3 注销学生基本信息\n\n4 录入成绩\n5 修改成绩\n\n"); printf("6 浏览...\n \n0 退出\n"); switch(getch()) { case '1' : student_new();break; case '2' : student_edit();break; case '3' : student_del();break; case '4' : score_input();break; case '5' : score_edit();break; case '6' : browser();break; case '0' : exit(0); } goto menu; }

|