C语言课程设计:通讯录管理系统
/* * main_tongxunlu.c * * Created on: 2011-6-21 * Author: zhanglujin */#include#include#include#includestruct record{ char name[20]; //姓名 char phone[12]; //电话 char adress[50]; //地址 char postcode[8]; //邮政编码 char e_mail[20]; //电子邮件。
}student[100]; //假设最大数为100.//定义全局变量num,表示已经输入的人数 。
int num; //这里使用数组解决通讯录的问题,实际上使用链表更好。
int menu_select(){ char s[80]; int a;/*定义整形变量*/ system("cls"); printf("\t\t***********欢迎进入通讯管理界面********\n\n"); printf("\t\t\t0. 输入记录\n"); printf("\t\t\t1. 显示记录\n"); printf("\t\t\t2. 按姓名查找\n"); printf("\t\t\t3. 按电话号码查找\n"); printf("\t\t\t4. 插入记录 \n"); printf("\t\t\t5. 按姓名排序\n"); printf("\t\t\t6. 删除记录\n"); printf("\t\t\t7. Quit\n"); printf("\t\t***********************************************\n\n"); do{ printf("Enter you choice(0~7):"); scanf("%s",s); a=atoi(s); } while (a7); return a;}int adduser(){ printf("\t\t\t**************** 请输入用户信息 ****************\n"); printf("\t\t\t输入姓名:\n"); scanf("%s",student[num].name); printf("\t\t\t输入电话号码:\n"); scanf("%s",student[num].phone); printf("\t\t\t输入地址:\n"); scanf("%s",student[num].adress); printf("\t\t\t输入邮编:\n"); scanf("%s",student[num].postcode); printf("\t\t\t输入e-mail:\n"); scanf("%s",student[num].e_mail); num++; printf("\t\t\t是否继续添加?(Y/N):\n"); if(getch()=='y' || getch()=='Y') adduser(); return(0);}void list(){ int i; system("cls"); if(num!=0) { printf("\t\t\t*************** 以下为通讯录所有信息************\n"); for (i=0;i { printf("\t\t\t姓名:%s\n",student[i].name); printf("\t\t\t电话:%s\n",student[i].phone); printf("\t\t\t地址:%s\n",student[i].adress); printf("\t\t\t邮编:%s\n",student[i].postcode); printf("\t\t\te-mail:%s\n",student[i].e_mail); if(i+1 { system("pause"); } } printf("\t\t\t************************************************\n"); } else printf("\t\t\t通讯录中无任何纪录\n"); printf("\t\t\t按任意键返回主菜单:\n"); getch(); //这里是无回显的输入字符,你输入的字符不会显示在屏幕上。
return;}int searchbyname(){ int mark=0; int i; printf("\t\t\t***************** 按姓名查找 *******************\n"); char name[20]; printf("\t\t\t请输入姓名:\n"); scanf("%s",name); for(i=0;i { if (strcmp(student[i].name,name)==0) { printf("\t\t\t************* 以下是您查找的用户信息 ***********\n"); printf("\t\t\t姓名: %s",student[i].name); printf("\t\t\t电话: %s",student[i].phone); printf("\t\t\t地址: %s",student[i].adress); printf("\t\t\te-mail:%s",student[i].e_mail); printf("\t\t\t************************************************\n"); mark++; if((i+1) { printf("\t\t\t是否继续查找相同名字的用户信息:(y/n)\n"); if(getch()=='y' || getch()=='Y') { continue; } else return(0); } else { printf("\t\t\t按任意键返回主菜单"); getch(); return(0); } } } if(mark == 0) { printf("\t\t\t没有相同姓名的用户纪录\n"); printf("\t\t\t按任意键返回主菜单\n"); getch(); return(0); } return 0;}int searchbyphone(){ int mark=0; int i; printf("\t\t\t****************** 按电话查找 ******************\n"); char phone[10]; printf("\t\t\t请输入电话号码:\n"); scanf("%s",phone); for(i=0;i { if (strcmp(student[i].phone,phone)==0) { printf("\t\t\t************** 以下是您查找的用户信息 **********\n"); printf("\t\t\t姓名: %s",student[i].name); printf("\t\t\t电话: %s",student[i].phone); printf("\t\t\t地址: %s",student[i].adress); printf("\t\t\te-mail:%s",student[i].e_mail); printf("\t\t\t************************************************\n"); printf("\t\t\t按任意键返回主菜单\n"); mark++; getch(); return(0); } } if (mark==0) { printf("\t\t\t没有改用户的信息\n"); printf("\t\t\t按任意键返回主菜单\n"); getch(); return(0); } return(0);}void deletebyphone(){ int i,j; int deletemark=0; char phone[20]; printf("\t\t\t请输入要删除用户电话号码:\n"); scanf("%s",phone); if(num==0) { printf("\t\t\t对不起,文件中无任何纪录\n"); printf("\t\t\t按任意键返回主菜单\n"); getch(); return; } for (i=0;i { if (strcmp(student[i].phone,phone)==0) { printf("\t\t\t以下是您要删除的用户纪录:\n"); printf("\t\t\t姓名: %s",student[i].name); printf("\t\t\t电话: %s",student[i].phone); printf("\t\t\t地址: %s",student[i].adress); printf("\t\t\te-mail:%s",student[i].e_mail); printf("\t\t\t是否删除?(y/n)"); if (getch()=='y' || getch()=='Y') { for (j=i;j student[j]=student[j+1]; num--; deletemark++; printf("\t\t\t删除成功"); printf("\t\t\t是否继续删除?(y/n)"); if (getch()=='y' || getch()=='Y') deletebyphone(); return; } else return; } continue; } if (deletemark==0) { printf("\t\t\t没有该用户的纪录"); printf("\t\t\t是否继续删除?(y/n)"); if(getch()=='y' || getch()=='Y') deletebyphone(); return; } return;}void deletebyname(){ int a=0; int findmark=0; int j; int deletemark=0; int i; char name[20]; printf("\t\t\t请输入要删除用户姓...
如何设计一个系统用户管理系统的c语言课程设计设系统用户信息(用...
我做好发给你了,注意接收] --------------------------------------------------------//#include #include #include #include #include #define OK 1 #define TRUE 1 #define FALSE 0 #define ERROR 0 #define OVERFLOW -2 #define PR printf typedef int status; typedef struct airline { char line_num[8];//航班号 char plane_num[8];//飞机号 char end_place[20];//目的的 int total;//座位总数 int left;//剩余座位 struct airline *next;//下一个结点 }airline; typedef struct customer { char name[9];//顾客名 char line_num[8];//航班号 int seat_num;//座位号 struct customer *next;//下一个结点 }customer; airline *init_airline() { //初始化链表 airline *l; l=(airline*)malloc(sizeof(airline)); if(l==NULL) { exit(0); } l->next=NULL; return l; } customer * init_customer(){//初始化链表 customer *l; l=(customer*)malloc(sizeof(customer)); if(l==NULL){ exit(0); } l->next=NULL; return l; } status insert_airline(airline **p,char *line_num,char *plane_num,char *end_place,int total,int left){//airline链表插入操作 airline *q; q=(airline*)malloc(sizeof(airline)); strcpy(q->line_num , line_num); strcpy(q->plane_num , plane_num); strcpy(q->end_place , end_place); q->total =total; q->left =left; q->next=NULL; (*p)->next=q; (*p)=(*p)->next; // PR("insert %d ,%dis succssed!\n",e,bl); return OK; } status insert_customer(customer **p,char *name,char *line_num,int seat){//customer链表插入操作 customer *q; q=(customer*)malloc(sizeof(customer)); /* { PR("内存分配失败\n"); return OVERFLOW; }*/ strcpy(q->name , name); strcpy(q->line_num , line_num); q->seat_num =seat; q->next=NULL; (*p)->next=q; (*p)=(*p)->next; // PR("insert %d ,%dis succssed!\n",e,bl); return OK; } airline *modefy_airline(airline *l,char *line_num)//修改airline链表中的数据 { airline *p; p=l->next ; for(;p!=NULL;p=p->next ) { if(strcmp(line_num,p->line_num )==0) { p->left ++; // PR("modefy %s\n",p->line_num ); return l; } } PR("没有这个航班,无法完成修改任务!\n"); return 0; } status delete_airline(airline *h,char *line_num)//删除航班 { airline *p,*pr; pr=h; p=pr->next ; while(p!=NULL) { if(strcmp(line_num,p->line_num )==0) { pr->next =p->next ; PR("删除 %s 航班\n",p->line_num ); return OK; } pr=pr->next ; p=pr->next ; } PR("无此航班,无法删除!\n"); return ERROR; } status delete_customer(customer *h,char *line_num)//删除顾客 { customer *p,*pr; pr=h; p=pr->next ; while(p!=NULL) { if(strcmp(line_num,p->line_num )==0) { pr->next =p->next ; } pr=pr->next ; p=pr->next ; } // PR("无此航班,无法删除!\n"); return OK; } status delete_cus(customer *h,airline *l,char *name)//顾客退票 { customer *p,*pr; char line_num[8]; // qr=h; pr=h; p=pr->next ; // PR("开始删除\n"); while(p!=NULL) { if(strcmp(name,p->name )==0) { strcpy(line_num,p->line_num ); l=modefy_airline(l,line_num); pr->next =p->next ; PR("顾客 %s 退票成功!\n",p->name ); return OK; } pr=pr->next ; p=pr->next ; } PR("无此顾客,无法退票!\n"); return ERROR; } status save_airline(airline *l)//保存airline.dat { FILE *fp_airline; char ch='#'; airline *p=l->next ; char filename[]="c:\\airline.dat"; if((fp_airline=fopen(filename,"wb"))==NULL) { printf("can not open file to write:%s\n",filename); return ERROR; } for(;p!=NULL;p=p->next ) { // printf("%s,%s,%s,%d,%d\n",p->line_num ,p->plane_num ,p->end_place ,p->total ,p->left ); fprintf(fp_airline,"%s,%s,%s,%d,%d%c\n",p->line_num ,p->plane_num ,p->end_place ,p->total ,p->left ,ch); } fclose(fp_airline); return OK; } status save_customer(customer *l)//保存顾客信息 customer.dat { FILE *fp_customer; char ch='#'; customer *p=l->next ; char filename[]="c:\\customer.dat"; if((fp_customer=fopen(filename,"wb"))==NULL) { printf("can not open file to write:%s\n",filename); return ERROR; } for(;p!=NULL;p=p->next ) { // PR("%s,%s,%d\n",p->name ,p->line_num ,p->seat_num ); fprintf(fp_customer,"%s,%s,%d%c",p->name ,p->line_num ,p->seat_num ,ch); } fclose(fp_customer); return OK; } int changStrInt(char *ch)//把字符串转化为整型 { int a=1,b=0,c=0,i; for (i=strlen(ch)-1;i>=0;i--) { if (ch[i]47) { b=a*(ch[i]-48); a=a*10; c=c+b; } else { PR("%c 不合法,无法将此字符串转化为整形!\n",ch[i]); return 0; } // printf("the c is %d\n",c); } return c; } status insert_air(airline *l,char *line_num,char *plane_num,char *end_place,int total,int left){//airline链表插入操作 airline *q; q=(airline*)malloc(sizeof(airline)); strcpy(q->line_num , line_num); strcpy(q->plane_num , plane_num); strcpy(q->end_place , end_place); q->total =total; q->left =left; q->next=l->next ; l->next=q; // PR("insert %d ,%dis succssed!\n",e,bl); return OK; } status insert_cus(customer *l,char *name,char *line_num,int seat){//customer链表插入操作 customer *q; ...
大一C语言课程设计
#include#include#include #include#define MAX 80 void input(); void sort(); void average(); void find(); void total(); int now_no=0; struct student { int no; char name[20]; char sex[4]; float score1; float score2; float score3; float sort; float sum; }; struct student stu[MAX],*p; void main()/*主函数*/ { int as; /*一下为功能选择模块*/ do { printf("\n\t\t\t欢迎使用学生成绩管理系统\n"); printf("\n\t\t\t\t1.信息输入(INPUT)\n\t\t\t\t2.总分统计(COUNT)\n\t\t\t\t3.总分排序(SORT)\n\t\t\t\t4.查询(QUERY)\n"); printf("\t\t\t\t选择功能选项:"); fflush(stdin); scanf("%d",&as); switch(as) { case 1:system("cls");input();break; case 2:system("cls");total();break; case 3:system("cls");sort();break; case 4:system("cls");find();break; default:break; } }while(1); /*至此功能选择结束*/ } void input()/*原始数据录入模块*/ { int i=0; char ch; do { printf("\t\t\t\t1.录入学员信息\n输入第%d个学员的信息\n",i+1); printf("\n输入学生学号:"); scanf("%d",&stu[i].no); fflush(stdin); printf("\n输入学员姓名:"); fflush(stdin); gets(stu[i].name); printf("\n输入学员性别:"); fflush(stdin); gets(stu[i].sex); printf("\n输入学员成绩(FOX):"); fflush(stdin); scanf("%f",&stu[i].score1); printf("\n输入学员成绩(C):"); fflush(stdin); scanf("%f",&stu[i].score2); printf("\n输入学员成绩(ENGLISH):"); fflush(stdin); scanf("%f",&stu[i].score3); printf("\n\n"); i++; now_no=i; printf("是否继续输入?(Y/N)"); fflush(stdin); ch=getch(); system("cls"); } while(ch!='n'&&ch!='N'); system("cls"); } void sort()/*排序数据函数*/ { struct student temp; int i,j; char as; for(i=0;i { stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3; } for(i=1;i { for(j=1;j { if(stu[j-1].sum { temp=stu[j]; stu[j]=stu[j-1]; stu[j-1]=temp; } } } do{ for(i=0;i { printf("\t\t\t班级学员信息列表\n"); printf("\t学号\t姓名\t性别\tFOX成绩\tC成绩\tENG成绩\t总分\n"); for(i=0;i printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum); } printf("\t\t按任意键返回主菜单."); fflush(stdin); as=getch(); } while(!as); system("cls"); } void find()/*查询函数*/ { int i,str; char as; do { printf("输入要查询的学生学号:"); fflush(stdin); scanf("%d",&str); for(i=0;i if(stu[i].no==str) { printf("\t学号\t姓名\t性别\tFOX成绩\tC成绩\tENG成绩\n"); printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3); } printf("\t\t按任意键返回主菜单."); fflush(stdin); as=getch(); } while(!as); system("cls"); } void total()/*求总分*/ { int i; char as; for(i=0;i { stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3; } do{ for(i=0;i { printf("\t\t\t班级学员信息列表\n"); printf("\t学号\t姓名\t性别\tFOX成绩\tC成绩\tENG成绩\t总分\n"); for(i=0;i printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum); } printf("\t\t按任意键返回主菜单."); fflush(stdin); as=getch(); } while(!as); system("cls"); }
c语言课程设计总结
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在是生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握计算机开发技术十分重要的。
我的题目是文章处理系统的设计,对于我们这些新手来说,这是很大的考验,我一千次一万次的问自己,怎么才能找到课堂所学与实际应用的最佳结合点?怎么才能让自己的程序在篇幅上简单,在使用价值上丰富?怎样让自己的业余更靠近专业?怎样让自己的计划更具有序性,而不会忙无一用?机会是老师,学校,以及无数代教育工作者给的,而能力是自己的,耐性是需要的。
经过自己的琢磨,听取了师姐,师兄们的建议,还查阅了很多书籍,才做到了心中有数,才了解了C语言课程设计的真正用意——培养自学能力,养成程序编辑的好习惯。
我从来不相信车到山前必有路的说法,认为那只是懒惰者自寻懒惰的借口,我要积极,要把握,要努力。
回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在郭老师的辛勤指导下,终于游逆而解。
同时,在郭老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。
在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,先有我的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。
老天不会让我太过顺利,他在这最后的时刻设置的障碍,是要考验我的能力,他要置我于死地?在这个问题的解决上,我打了退堂鼓,我不能忍受长时间的无功而反,时间正在消磨我的意志。
没有了柳暗花明的一天,那么我怎么能说经受住了考验?谢谢老师的那句话,她说:人力有所不能及,然而,人的精神是不会败倒的。
我鼓起勇气,到处问,到处查资料,黄天不负有心人,在一篇文章上,终于看到了我所特别要求的函数,我实现了组合是关键的理论。
不得不说这是精神的胜利,是永不言败的精神让我的程序重见天日。
谢谢给我指点迷津的老师。
6月11日,我们的课程设计结束了,但是它留给我的印象是不可磨灭的。
无论我以后会不会涉及到C语言程序编译的研究,我想,我至少掌握了一种系统的研究方法,我们学习的目的就在于运用,我们运用这种研究方法的时候会很多,我最后要感谢课程设计,它的确教会我很多。
另外,虚机团上产品团购,超级便宜
完整的c语言学生管理系统课程设计
《c语言课程设计》是清华大学出版社2009-7-1出版的图书,作者是王新,孙雷。
本书是一本实践型教材,书中从实用的角度出发,结合具体的应用实例,将c语言程序设计中使用的基本数据结构、算法和技巧进行了综合,并对如何运用C语言进行绘图做了介绍,有助于进一步提高学生程序设计能力。
全书共分三个部分:基本数据结构应用,综合应用,图形界面部分;共有12个训练题目。
C语言课程设计 贪吃蛇
2.1程序功能介绍贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。
2.2程序整体设计说明一个游戏要有开始部分,运行部分,结束部分(实际上开始部分与运行部分是一体的)。
2.2.1设计思路这个程序的关键是表示蛇的图形以及蛇的移动。
用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。
移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。
如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时由于没有庆平的原因,原来蛇的位置和新蛇的位置差一个单位,所以看起来社会多一节身体,所以将蛇的最后一节用背景色覆盖。
食物的出现和消失也是画矩形块和覆盖矩形块2.2.2数据结构设计及用法说明 开始部分:游戏是运行在图形模式下的,所以第一步一定是初始化图形模式,接着要有开始的界面,就像书有封面一样,我设置了一个游戏的标题画面,除了游戏标题画面我还设置了一个欢迎画面。
标题画面以后,还要为游戏的运行部分作初始化,包括绘制游戏运行时的背景,对游戏某些重 要变量的初始化。
运行部分:作为游戏的核心部分,这里包括的函数比较多,也就是模块比较多,首先让我模拟一下贪吃蛇的游戏模式:某个世界上突然出现一条蛇,它很短,它的运动神经异常,它没法停止自己的多动症在它的世界里就只有食物,它很饿,也很贪吃;同样在不明原因的情况下,食物从天而降,可惜的是没有落到嘴边;饥饿的主人公,不管它有没有毒,也不问食物的来历,径直向食物爬去;它吃到食物啦,它超出想象的同化能力让食物很快的成为自己身体的一部分,它的身子变长啦。
当它吃到第一颗食物时,上帝有给它第二颗,于是它吃了第二颗,于是又变长了,于是又有第三颗……它的身子是一直的加长,它不管自己过长身体的麻烦——转身不便,继续吃下去,现在它是直接把巴张大,好让食物有个绿色通道。
但是在某天的下午,它咬到了自己,它才想起自己是一条毒蛇,于是晕死过去(不是毒死);又或者它往食物冲锋的时候,它失去控制,撞到了墙上。
第一轮循环:第一步,出现食物;第二步,蛇不停运动;第三步,检查蛇是撞到自己或墙壁;由第四步起游戏有两条支线(A、B):A :第四步,蛇没有碰到自己或墙壁,蛇继续前进,绘制蛇的动作;第五步,判断蛇是否吃到食物,如果蛇吃到食物,身子变长,原来的食物消失;第六步,让玩家输入控制指令,让蛇在下一轮循环的第二步改变运动方向;第七步,第二轮循环的第一步,重复第一轮的步骤;B:第四步,蛇碰到自己或墙壁,终止游戏。
结束部分:游戏结束时,显示“GAME OVER”,已经是约定俗成的规律了,我的游戏也不例外。
除了游戏结束画面外,我还设置了一个游戏退出画面,“善始善终”嘛。
有了上述的大致划分,我把整个程序划分成(13+2)个模块(其实就是函数)2.2.3程序结构(流程图)图2.1流程图依据所需要处理的任务要求,规划输入数据和输出结果,决定存放数据的数据结构。
C语言中数据结构集中体现在数据类型上,因此在进行C语言程序设计时,应统筹规划程序中所使用的变量,数组,指针等,以及它们的类型等。
这点是很重要的,如果在此期间选择不合适的变量或者数组,将来修改就十分困难。
现在分析一下贪吃蛇游戏中的元素,继而得出与它们对应的在程序中的描述:蛇:基本描述:长度,颜色,位置。
对应数据与数据类型:长度—虽然可以用坐标表示,但是这样的话,运算量将很大,所以换算成较大的单位—节数,以固定长度的每节描述;坐标--整型;颜色--整型; 位置--X,Y坐标。
增加的描述:蛇运动的方向,蛇的生命。
对应数据与数据类型:这些描述是为了与程序的按键的输入部分与判断游戏结束部分相联系而设的。
方向只有四个方向:上下左右。
可以设置与之对应的四个整型数:3、4、2、1。
生命就只有两种情况:死或生,对应0或1。
食物: 基本描述:颜色,位置。
对应数据与数据类型:由于颜色设成固定的,所以不再讨论。
位置—X、Y坐标。
增加的描述:食物的存在。
对应数据与数据类型:这是为了避免重复出现食物而设置的,与绘制食物的函数有联系。
只有两个值:0或1(没有食物或有食物)其他的元素:墙,由于它在显示上是作为背景而存在的,所以并没有什么说明实际的墙壁就是四条直线组成的边框,由坐标描述。
还需要的变量:键盘键入的键值(作为全局变量,整型);经常要使用的循环变量;自定义的填充图案;说明文字的字符数组;游戏的记分;游戏的速度(蛇的速度)。
图2.2蛇的不停运动的关键算法的流程图2.2.4各模块的功能及程序说明主要模...
C语言课程设计-- 仓库管理系统
#include#include#include#include#define max 32int ifempty=0;//标志,判断链表是无否为空typedef struct dnode /* 定义双向链表结构体 */ { int number; /* 货物编号 */ char name[max]; /* 货物名称 */ int counter; /* 货物数量 */struct dnode *prior, *next;/* 定义两指针,分别指向其前驱和后继 */}dlnode; dlnode *create(dlnode *L);dlnode *input(dlnode *L);dlnode *output(dlnode *L);dlnode * outnum(dlnode *L);dlnode * outname(dlnode *L);dlnode *current(dlnode *L);void search(dlnode *L);void print(dlnode *L);void searchnum(dlnode *L);void searchname(dlnode *L);void display(dlnode *L) ;void main(){ int x; dlnode *L; if(!(L=(dlnode *)malloc(sizeof(dlnode)))) //分配空间 { printf("\n"); exit(1); } create(L);///调用函数,创建头节点 while(1) {////////////////////////主菜单/////////////////////////// printf(" ============================\n"); printf(" 1. 货物出库和入库\n"); printf(" 2. 查找货物表\n"); printf(" 3. 显示仓库货物表\n"); printf(" 4. 输出到文件\n"); printf(" 0. 退出\n"); printf(" =============================\n"); printf(" 选择0--3:"); scanf("%d",&x); switch(x) { case 2:search(L);break;//调用查找函数 case 1:current(L);break;//调用入库出库函数 case 3:display(L);break;//调用显示输出函数 case 4:print(L);break;//调用打印函数 case 0:printf("\n bye!see you!\n"); getchar();getchar();exit(0);//退出程序 default:printf("\n Enter erreor!please input 0--4!"); getchar();getchar(); } }}dlnode *create(dlnode *L)//创建链表头节点{ printf(" 欢迎使用我的仓库管理系统"); getchar(); ifempty=0; ///////初始化头节点的值//////// L->next=NULL;L->prior=NULL; L->number=L->counter=0; strcpy(L->name," "); return L;}void search(dlnode *L) ///查找的主要菜单{ int y; if(ifempty==0) { printf("没有输入货物!\n"); getchar();getchar(); return; } else { while(1) { printf("=====================\n"); printf("1.按编号查询\n"); printf("2.按货物名称查询\n"); printf("0.返回上一层\n"); printf("====================\n"); printf("选择0--2:"); scanf("%d",&y); switch(y) { case 1:searchnum(L);break;//调用按编号查找的函数 case 2:searchname(L);break;//调用按名称查找的函数 case 0:return;//返回 default:printf("enter error!Please input 0--2!\n\n"); getchar();getchar();printf("\n\n"); } } }}void searchnum(dlnode *L)///按编号查找的函数{ int num,flag=0;//flag为是否找到的标志 dlnode *head=L; if(ifempty==0) { printf("没有货物被输入\n"); getchar();getchar(); return; } printf("输入你要查找的货物编号:\n"); scanf("%d",&num); while((L=L->next)!=head) { if(L->number==num) { flag=1;//flag为1时表示找到 printf("找到指定编号货物 \n"); printf("\n编号:%d\n",L->number); printf("名称:%s\n",L->name) ; printf("数量:%d\n\n",L->counter); } } if(flag==0)//flag为0时表示没有找到 printf("没有找到指定编号货物,请查看是否还有货物。
\n"); getchar();getchar();}void searchname(dlnode *L)//按名称查找的函数{ int flag=0;//flag为是否找到的标志 char na[32]; dlnode *head=L; if(ifempty==0) { printf("没有货物被输入\n"); getchar();getchar(); return; } printf("输入你要查找的货物名称\n"); scanf("%s",&na); while((L=L->next)!=head) { if(strcmp(L->name,na)==0) { flag=1;//flag为1时表示找到 printf("找到指定名称货物 \n"); printf("\n编号:%d\n",L->number); printf("名称:%s\n",L->name) ; printf("数量:%d\n\n",L->counter); } } if(flag==0)//flag为0时表示没有找到 printf("没有找到指定编号货物,请查看是否还有货物。
\n\n"); getchar();getchar();}dlnode *current(dlnode *L)//货物出库入库函数{ int y; while(1) { printf("========================\n"); printf(" 1.货物入库\n"); printf(" 2.货物出库\n"); printf(" 0.返回上一层\n"); printf("========================\n"); printf(" 选择0--2:"); scanf("%d",&y); switch(y) { case 1:input(L);break;//调用入库函数 case 2:output(L);break;//调用出库函数 case 0:return(L);//返回上一层 default:printf("enter error!Please input 0--2!"); getchar();getchar(); printf("\n\n"); } }}dlnode *input(dlnode *L)//定义入库函数{ dlnode *in,*head; head=in=(dlnode *)malloc(sizeof(dlnode));//分配空间 head=L; printf("\n请输入货物数据:\n"); printf("编号:");scanf("%d",&in->number); printf("名称:");scanf("%s",&in->name); printf("数量:");scanf("%d",&in->counter); if(L->next==NULL) //如果只有头节点, { //把刚输入的in节点 L->next=in; //跟在头节点后面 L->prior=in; // in->next=L; // in->prior=L; // ifempty++; //ifempty加1 } else {//如果当前L的下一个节点不是头节点 while((L=L->next)!=head) {//如果输入的数大于L->number,则插到L的前面 if(L->numbernumber) { in->next=L; in->prior=L->prior; L->prior->next=in; L->prior=in; ifempty++; //ifempty加1 r...
聆听花语77432373