首页

毕业论文

首页 毕业论文 问题

c语言毕业论文管理系统设计

发布时间:

c语言毕业论文管理系统设计

只差界面设计。。。 最难的就是界面设计其实,如果你只是了解C语言,那基本上在编程上,可以是相当于小学毕业。MFC界面设计的层次大概打个比方就是“高中”,现在看MFC,它的难度会远远超过你的想象。 速成的话。。。没有很好的办法,界面设计在学校里基本上是不可能会教的,因为这些都是商业机密技术,QQ的界面,360的界面,都是专业的UI库做的,这些库随便就是上百万的授权费。继续回答你:这样的一个界面上,你看着简单,但其实用到的控件很多,按钮,列表,表格等等,你要想用MFC写这样的一个界面,那你几乎得把MFC全部学完,夜以继日地看,我个人感觉需要一个月的时间。还有如果你是用MFC的话,那么你会发现,你写控制台用的C语言和MFC的C语言,会完全不一样,微软封装了很多的数据结构,甚至连函数调用都封装了,看起来很头疼的。

csdn上有一个,我看了下,非常好,不过要先注册才能下。

真是奇怪,管理软件为什么不用VF来写了。标准化的界面,就用VB好了,微软工程师 都用 这些的。造出来 的都是标准化窗口。

C++BUILDER的界面简单,是可视化的,比MFC编程效率高10倍

毕业论文管理系统c语言代码

我找的一个代码!试一下:c语言学生成绩管理系统#include "" #include "" #include "" 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->>>>>>>>); } Node* Locate(Link l,char findmess[],char nameornum[]) /* 该函数用于定位连表中符合要求的接点,并返回该指针 */ { Node *r; if(strcmp(nameornum,"num")==0) /* 按学号查询 */ { r=l->next; while(r!=NULL) { if(strcmp(r->)==0) return r; r=r->next; } } else if(strcmp(nameornum,"name")==0) /* 按姓名查询 */ { r=l->next; while(r!=NULL) { if(strcmp(r->)==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->)==0) { printf("=====>提示:学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!\n",num); printstart(); printc(); printe(s); printstart(); printf("\n"); return; } s=s->next; } p=(Node *)malloc(sizeof(Node)); strcpy(p->); printf("请你输入姓名:"); scanf("%s",p->); getchar(); printf("请你输入性别:"); scanf("%s",p->); getchar(); printf("请你输入c语言成绩:"); scanf("%d",&p->); getchar(); printf("请你输入数学成绩:"); scanf("%d",&p->); getchar(); printf("请你输入英语成绩:"); scanf("%d",&p->); getchar(); p->>>>; p->> / 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->); scanf("%s",p->); printf("请你输入新姓名(原来是%s):",p->); scanf("%s",p->); getchar(); printf("请你输入新性别(原来是%s):",p->); scanf("%s",p->); printf("请你输入新的c语言成绩(原来是%d分):",p->); scanf("%d",&p->); getchar(); printf("请你输入新的数学成绩(原来是%d分):",p->); scanf("%d",&p->); getchar(); printf("请你输入新的英语成绩(原来是%d分):",p->); scanf("%d",&p->); p->>>>; p->>; 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->>=pc->) pc=r; if(r->>=pm->) pm=r; if(r->>=pe->) pe=r; if(r->>=pt->) pt=r; if(r->>=pa->) pa=r; r=r->next; } printf("------------------------------统计结果--------------------------------\n"); printf("总分最高者:\t%s %d分\n",pt->>); printf("平均分最高者:\t%s %d分\n",pa->>); printf("英语最高者:\t%s %d分\n",pe->>); printf("数学最高者:\t%s %d分\n",pm->>); printf("c语言最高者:\t%s %d分\n",pc->>); 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->>=p->) 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; printf("\t\t\t\t学生成绩管理系统\n\t\t\t\t-------福建农业职业学院计应0501 黄欢(32号)\n"); 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; } } } /* *//* 学生成绩管理程序 编制一个统计学生考试分数的管理程序。 设学生成绩已以一个学生一个记录的形式存储在文件中, 每位学生记录包含的信息有:姓名,学号和各门功课的成绩。 程序具有以下几项功能:求出各门课程的总分,平均分,按姓名, 按学号寻找其记录并显示,浏览全部学生成绩和按总分由高到低显示学生信息等。 */ #include <> #define SWN 3 /* 课程数 */ #define NAMELEN 20 /* 姓名最大字符数 */ #define CODELEN 10 /* 学号最大字符数 */ #define FNAMELEN 80 /* 文件名最大字符数 */ #define BUFLEN 80 /* 缓冲区最大字符数 */ /* 课程名称表 */ char schoolwork[SWN][NAMELEN+1] = {"Chinese","Mathematic","English"}; struct record { char name[NAMELEN+1]; /* 姓名 */ char code[CODELEN+1]; /* 学号 */ int marks[SWN]; /* 各课程成绩 */ int total; /* 总分 */ }stu; struct node { char name[NAMELEN+1]; /* 姓名 */ char code[CODELEN+1]; /* 学号 */ int marks[SWN]; /* 各课程成绩 */ int total; /* 总分 */ struct node *next; /* 后续表元指针 */ }*head; /* 链表首指针 */ int total[SWN]; /* 各课程总分 */ FILE *stfpt; /* 文件指针 */ char stuf[FNAMELEN]; /* 文件名 */ /* 从指定文件读入一个记录 */ int readrecord(FILE *fpt,struct record *rpt) { char buf[BUFLEN]; int i; if(fscanf(fpt,"%s",buf)!=1) return 0; /* 文件结束 */ strncpy(rpt->name,buf,NAMELEN); fscanf(fpt,"%s",buf); strncpy(rpt->code,buf,CODELEN); for(i=0;imarks[i]); for(rpt->total=0,i=0;itotal+=rpt->marks[i]; return 1; } /* 对指定文件写入一个记录 */ writerecord(FILE *fpt,struct record *rpt) { int i; fprintf(fpt,"%s\n",rpt->name); fprintf(fpt,"%s\n",rpt->code); for(i=0;imarks[i]); return ; } /* 显示学生记录 */ displaystu(struct record *rpt) { int i; printf("\nName : %s\n",rpt->name); printf("Code : %s\n",rpt->code); printf("Marks :\n"); for(i=0;imarks[i]); printf("Total : %4d\n",rpt->total); } /* 计算各单科总分 */ int totalmark(char *fname) { FILE *fp; struct record s; int count,i; if((fp=fopen(fname,"r"))==NULL) { printf("Can't open file %s.\n",fname); return 0; } for(i=0;itotal<=v->total) { u=v; v=v->next; } if(v==h) h=p; else u->next=p; p->next=v; p=(struct node *)malloc(sizeof(struct node)); } free(p); fclose(fp); return h; } /* 顺序显示链表各表元 */ void displaylist(struct node *h) { while(h!=NULL) { displaystu((struct record *)h); printf("\n Press ENTER to continue...\n"); while(getchar()!='\n'); h=h->next; } return; } /* 按学生姓名查找学生记录 */ int retrievebyn(char *fname, char *key) { FILE *fp; int c; struct record s; if((fp=fopen(fname,"r"))==NULL) { printf("Can't open file %s.\n",fname); return 0; } c=0; while(readrecord(fp,&s)!=0) { if(strcmp()==0) { displaystu(&s); c++; } } fclose(fp); if(c==0) printf("The student %s is not in the file %s.\n",key,fname); return 1; } /* 按学生学号查找学生记录 */ int retrievebyc(char *fname, char *key) { FILE *fp; int c; struct record s; if((fp=fopen(fname,"r"))==NULL) { printf("Can't open file %s.\n",fname); return 0; } c=0; while(readrecord(fp,&s)!=0) { if(strcmp()==0) { displaystu(&s); c++; break; } } fclose(fp); if(c==0) printf("The student %s is not in the file %s.\n",key,fname); return 1; } main() { int i,j,n; char c; char buf[BUFLEN]; FILE *fp; struct record s; clrscr(); printf("Please input the students marks record file's name: "); scanf("%s",stuf); if((fp=fopen(stuf,"r"))==NULL) { printf("The file %s doesn't exit, do you want to creat it? (Y/N) ",stuf); getchar(); c=getchar(); if(c=='Y'||c=='y') { fp=fopen(stuf,"w"); printf("Please input the record number you want to write to the file: "); scanf("%d",&n); for(i=0;i

[cpp] view plaincopyprint?#include ""    #include"string"    /*定义学生结构体*/    struct Student    {         char ID[20];         char Name[20];         float Mark1;         float Mark2;         float Mark3;         float Average;    };      /*声明学生数组及学生数量*/    struct Student students[1000];    int num=0;         /*求平均值*/    float Avg(struct Student stu)    {         return ()/3;    }         /*通过学号返回数组下标*/    int Student_SearchByIndex(char id[])    {         int i;         for (i=0;i

.......论文.....源程序...... 一般不会有人给```

粗略看了下,上面的差不多了。

毕业论文管理系统c语言源代码

没问题,有全套!

纯手工。望采纳!!#include <>#include <>#include<>#define MENU_NUM 7#define N 3typedef struct s1{ char no[11]; /*学号由10个字符组成*/ char name[15]; /*学生姓名*/ float score[N]; /*各门课成绩*/ float sum; /*总分*/ float average; /*平均分*/ int order; /*名次*/ struct s1 *next; /*指向后继结点的指针*/}STUDENT; /*定义结构体类型*/STUDENT * head=NULL;void InputData( STUDENT * ptr );void PrintMenu( );int Menu_Select( );void Init( );void create( );void print( ) ;void Delete( );void append();void computer();main(){ int key; while(1) { key=Menu_Select(); switch(key) { case 0: Init(); //初试化链表。也就是若链表不为空则释放链表中所有数据,将head置为空(NULL) break; case 1: create(); //创建链表,输入数据 break; case 2: Delete(); //删除一个指定学号的记录数据 break; case 3: print(); //打印链表中所有数据 break; case 4: computer(); //计算链表中所有人的总分和平均分 break; case 5: append(); //追加一个数据到链表的尾部 break; case 6: Init(); //释放链表 exit(0); } };}void PrintMenu( ){ int i; char * menu[]={ "0. Init list", "1. Enter list", "2. Delete a record from list", "3. Print list", "4. Compute the score", "5. Insert record to list", "6. Quit" }; printf("\n\n"); for (i=0;inext;//ptr指向下一个结构数据 free(p);//释放p所指向的结构数据的内存 p=ptr;//将p指向ptr所指向的数据 } head=NULL;//将head指向NULL}void create( ) //创建单链表{ STUDENT *pt, *pth=NULL; //定义两个指针变量:pt指向即将申请新的数据内存,pth指向当前数据 while(1) { pt=(STUDENT *)malloc(sizeof(STUDENT));//让pt指向新申请的内存空间 InputData(pt);//输入数据,存放到pt所指向的结构数据。注意让pt的next指向NULL if (strcmp(pt->no,"@")==0) { free(pt);//释放pt所指向的内存空间 break;//退出循环 } else if (head==NULL) { pth=pt; head=pt;//将头指针head和pth指向pt } else { pth->next=pt; //将pth的next指向pt; pth=pt; //将pth指向pt; } };}void print( ) //打印单链表中所有数据{ int i=0; STUDENT *p;//第一个指针p p=head;//将p指向head printf("\n"); printf("******************************STUDENT******************************\n"); printf("|rec|no | name | sc1| sc2| sc3| sum | ave |order|\n"); printf("|---|----------|----------------|----|----|----|------|-----|-----|\n"); //打印表头 while (p!=NULL) { printf("|%3d|%10s|%-16s|%|%|%|%|%|%5d|\n", ++i,p->no,p->name,p->score[0],p->score[1],p->score[2], p->sum,p->average,p->order); //打印p所指向的结构中的所有数据。注意打印数据间的分隔线 p=p->next;//将p指向p的下一个结构数据 } printf("********************************END********************************\n");//打印表尾}void Delete( ) //删除一个记录{ STUDENT *p,*pth;//定义两个指针p,pth char no[11];//定义一个整数no(用来存储输入的学号) printf("intput delete no\n"); scanf("%s",no);//用输入语句输入一个学号存储到no中 p=head;pth=head;//将p和pth都指向头指针 if (strcmp(p->no,no)==0) //也就是若头指针指向的数据需要删除 { head=head->next;//将head指针指向head的下一个数据; free(p);//释放p所指向的数据 } else { p=p->next;//将p指向p的下一个数据 while ( p!=NULL) { if (strcmp(p->no,no)==0) //找到了要删除的数据 { pth->next=p->next;//将pth的next指向p的next free(p);//释放p break;//退出循环 } else { pth=pth->next;//将pth指向pth的next 或 将pth指向p p=p->next;//将p指向p的next } } }}void append(){ STUDENT *p,*pth;//定义两个指针变量p,pth pth=head;//将pth指向head while ( pth->next!=NULL) { pth=pth->next;//ptr指向ptr的next } p=(STUDENT *)malloc(sizeof(STUDENT));//将p指向新申请的内存空间 InputData(p);p->next=NULL;//数据数据存储到p所指向的内存空间,注意将p的next置为NULL pth->next=p;//将ptr的next指向p}void InputData( STUDENT *ptr ){ int i; printf("enter no:"); scanf("%s",ptr->no); if (strcmp(ptr->no,"@")==0 ) return; printf("enter name:"); scanf("%s",ptr->name); for(i=0;i<3;i++) { printf("shuru chengji\n"); scanf("%f",&ptr->score[i]); } ptr->sum=0; ptr->average=0; ptr->order=0; ptr->next=NULL;}void computer(){ STUDENT *p; p=head; for(;p;p=p->next) { p->sum=p->score[0]+p->score[1]+p->score[2]; p->average=(p->score[0]+p->score[1]+p->score[2])/3; }}请采纳。

只差界面设计。。。 最难的就是界面设计其实,如果你只是了解C语言,那基本上在编程上,可以是相当于小学毕业。MFC界面设计的层次大概打个比方就是“高中”,现在看MFC,它的难度会远远超过你的想象。 速成的话。。。没有很好的办法,界面设计在学校里基本上是不可能会教的,因为这些都是商业机密技术,QQ的界面,360的界面,都是专业的UI库做的,这些库随便就是上百万的授权费。继续回答你:这样的一个界面上,你看着简单,但其实用到的控件很多,按钮,列表,表格等等,你要想用MFC写这样的一个界面,那你几乎得把MFC全部学完,夜以继日地看,我个人感觉需要一个月的时间。还有如果你是用MFC的话,那么你会发现,你写控制台用的C语言和MFC的C语言,会完全不一样,微软封装了很多的数据结构,甚至连函数调用都封装了,看起来很头疼的。

鄙视 鄙视

关于C语言客户管理系毕业论文

C51语言应用编程的若干问题

摘 要   简要介绍了Franklin C51交叉编译器的特点,较详细地讨论了C51语言程序设计的基本技巧及其与汇编语言程序的混合编程、中断处理过程等实际问题,并给出了相应的处理程序。

关键词   Franklin    C51编译器    汇编语言    结构化设计    模块    中断

--------------------------------------------------------------------------------

在研制单片机应用系统时,汇编语言是一种常用的软件工具。它能直接操作硬件,指令的执行速度快。但其指令系统的固有格式受硬件结构的限制很大,且难于编写与调试,可移植性也差。随着单片机硬件性能的提高,其工作速度越来越快,因此在编写单片机应用系统程序时,更着重于程序本身的编写效率。而Franklin C51交叉编译器是专为80C51系列单片机设计的一种高效的C语言编译器,使用它可以缩短开发周期,降低开发成本,而且开发出的系统易于维护,可靠性高,可移植性好,即使在代码的使用效率上,也完全可以和汇编语言相比,因此目前它已成为开发80C51系列单片机的流行工具。

1 C51语言程序设计的基本技巧

C语言是一种高级程序设计语言,它提供了十分完备的规范化流程控制结构。因此采用C51语言设计单片机应用系统程序时,首先要尽可能地采用结构化的程序设计方法,这样可使整个应用系统程序结构清晰,易于调试和维护。对于一个较大的程序,可将整个程序按功能分成若干个模块,不同的模块完成不同的功能。对于不同的功能模块,分别指定相应的入口参数和出口参数,而经常使用的一些程序最好编成函数,这样既不会引起整个程序管理的混乱,还可增强可读性,移植性也好。

在程序设计过程中,要充分利用C51语言的预处理命令。对于一些常用的常数,如TRUE,FALSE,PI以及各种特殊功能寄存器,或程序中一些重要的依据外界条件可变的常量,可采用宏定义"#define"或集中起来放在一个头文件中进行定义,再采用文件包含命令"#include"将其加入到程序中去。这样当需要修改某个参量时,只须修改相应的包含文件或宏定义,而不必对使用它们的每个程序文件都作修改,从而有利于文件的维护和更新。现举例说明如下:

例1 对于不同的单片机晶振,程序取不同的延时时间,而且可根据外界条件的变化修改延时时间的长短。对于这样的程序,可利用宏定义和条件编译来实现。程序如下:

#define     flag 1

#ifdef     flag==1

#define  fosc  6M

delay=10;

#elif     flag = = 0

#define   fosc    8M

delay=12;

#else

#define    fosc   12M

delay=20;

#endif

main()

{

for(I=0;I

}

这样源程序不作任何修改就可适用于不同时钟频率的单片机系统,并可根据情况的不同取不同的delay值,完成不同的目的。

2 C51语言与汇编语言程序的混合编程

C51编译器能对C语言源程序进行高效率的编译,生成高效简洁的代码,在绝大多数场合采用C语言编程即可完成预期的目的。但有时为了编程直观或某些特殊地址的处理,还须采用一定的汇编语言编程。而在另一些场合,出于某种目的,汇编语言也可调用C语言。在这种混合编程中,关键是参数的传递和函数的返回值。它们必须有完整的约定,否则数据的交换就可能出错。下面就以力源公司的10位串行A/D转换器TLC1549 为例说明C语言程序与汇编语言程序的调用。

图1 TLC1549管脚图

1549的管脚图和时序图分别如图1和图2所示,假定DATA OUT接,  接,CLOCK接。

1549的具体特性请查阅有关资料。

图2 TLC1549时序图

例2 C语言程序与汇编语言程序的调用,其子程序如下:

PUBLIC AD     ;入口地址

SEG_AD SEGMENT CODE;程序段

RSEG SEG_AD

USING 0

AD:  MOV R6,#00

MOV R7,#00

SETB 

ACALL DELAY

CLR 

ACALL DELAY

MOV R0,#10

RR0: SETB 

NOP

CLR 

DJNZ R0,RR0

ACALL DELAY

MOV 30H,R6     ;A/D转换的高

;两位保存在R6中

ACALL CIR

MOV R6,30H

SETB 

NOP

CLR 

MOV 30H,R6

ACALL CIR

MOV R6,30H

MOV R0,#8     ;A/D转换的低

;8位保存在R7中

RR2: SETB 

NOP

CLR 

MOV 30H,R7

ACALL CIR

MOV R7,30H

DJNZ R0,RR2

RET

CIR: CLR C

MOV C,

MOV A,30H

RLC A

MOV 30H,A

RET

END

在以上程序中,函数的返回值为一无符号整型数,根据调用规则,返回值的高位必须在R6中,低位在R7中,这样才可保证数据的传递不出错。另外,在调用过程中,必须注意寄存器的入栈。这样在以后用到A/D转换时,在C语言中调用汇编语言子程序AD()即可。

3 C51中断处理过程

C51编译器支持在C源程序中直接开发中断过程,因此减轻了使用汇编语言的繁琐工作,提高了开发效率。中断服务函数的完整语法如下:

void函数名(void)[模式]

[再入]interrupt n [using r]

其中n(0~31)代表中断号。C51编译器允许32个中断,具体使用哪个中断由80C51系列的芯片决定。r(0~3)代表第r组寄存器。在调用中断函数时,要求中断过程调用的函数所使用的寄存器组必须与其相同。"再入"用于说明中断处理函数有无"再入"能力。C51编译器及其对C语言的扩充允许编程者对中断所有方面的控制和寄存器组的使用。这种支持能使编程者创建高效的中断服务程序,用户只须在C语言下关心中断和必要的寄存器组切换操作。

例3 设单片机的fosc=12MHz,要求用T0的方式1编程,在脚输出周期为2ms的方波。

用C语言编写的中断服务程序如下:

#include <>

sbit P1_0=P1^0;

void timer0(void)interrupt 1 using 1 {

/*T0中断服务程序入口*/

P1_0=!P1_0;

TH0=-(1000/256);      /*计数初值重装*/

TL0=-(1000%256);

}

void main(void)

{

TMOD=0x01;     /*T0工作在定时器方式1*/

P1_0=0;

TH0=-(1000/256);     /*预置计数初值*/

TL0=-(1000%256);

EA=1;            /*CPU开中断*/

ET0=1;           /*T0开中断*/

TR0=1;           /*启动T0*/

do{}while(1);

}

在编写中断服务程序时必须注意不能进行参数传递,不能有返回值。

4 结论

C51编译器不但可以缩短单片机控制系统的开发周期,而且易于调试和维护。此外,C51语言还有许多强大的功能,如提供丰富的库函数供用户直接调用,完整的编译控制指令为程序调试提供必要的符号信息等等。总之,C51语言是广大单片机开发人员的强有力的工具。

.......论文.....源程序...... 一般不会有人给```

只差界面设计。。。 最难的就是界面设计其实,如果你只是了解C语言,那基本上在编程上,可以是相当于小学毕业。MFC界面设计的层次大概打个比方就是“高中”,现在看MFC,它的难度会远远超过你的想象。 速成的话。。。没有很好的办法,界面设计在学校里基本上是不可能会教的,因为这些都是商业机密技术,QQ的界面,360的界面,都是专业的UI库做的,这些库随便就是上百万的授权费。继续回答你:这样的一个界面上,你看着简单,但其实用到的控件很多,按钮,列表,表格等等,你要想用MFC写这样的一个界面,那你几乎得把MFC全部学完,夜以继日地看,我个人感觉需要一个月的时间。还有如果你是用MFC的话,那么你会发现,你写控制台用的C语言和MFC的C语言,会完全不一样,微软封装了很多的数据结构,甚至连函数调用都封装了,看起来很头疼的。

机顶盒上游戏开发可以么,也是用C语言写的目 录第一章 绪论 机顶盒的产生背景 机顶盒的发展及其现状 游戏模块设计的必要性 模块设计需要解决的问题 3第二章 系统开发环境及相关技术介绍 XX-XX硬件平台 XX操作系统 内核 任务机制 消息队列 信号量 C语言的特点 7第三章 开发流程 功能需求分析 可行性分析 模块设计 编码 测试 11第四章 系统设计 游戏模块接口设计 游戏的初始化 游戏的按键读取和转化 游戏的暂停、恢复和退出 游戏算法设计 推箱子游戏设计 俄罗斯方块游戏设计 黑白棋游戏设计 14结 论 16谢 辞 17参 考 文 献 18附录 推箱子游戏源程序 19

美发店管理系统c毕业论文

数据库会用吧,装个mysql,以及mysql客户端,然后把上面的那几个客户,分别建表,查几天测试数据,然后那个管理类连接数据库,然后操作就可以啦,没有c需要环境,不然给你写一个

只差界面设计。。。 最难的就是界面设计其实,如果你只是了解C语言,那基本上在编程上,可以是相当于小学毕业。MFC界面设计的层次大概打个比方就是“高中”,现在看MFC,它的难度会远远超过你的想象。 速成的话。。。没有很好的办法,界面设计在学校里基本上是不可能会教的,因为这些都是商业机密技术,QQ的界面,360的界面,都是专业的UI库做的,这些库随便就是上百万的授权费。继续回答你:这样的一个界面上,你看着简单,但其实用到的控件很多,按钮,列表,表格等等,你要想用MFC写这样的一个界面,那你几乎得把MFC全部学完,夜以继日地看,我个人感觉需要一个月的时间。还有如果你是用MFC的话,那么你会发现,你写控制台用的C语言和MFC的C语言,会完全不一样,微软封装了很多的数据结构,甚至连函数调用都封装了,看起来很头疼的。

顾客忠诚理念在饭店管理中的应用 摘要]现代饭店企业销售的最基本的要素,不是那些看得见的产品,而是那些看不见的企业经营者的理念和思想。本文阐述了现代饭店 一种全新的理念,即顾客忠诚理念,从不同角度,不同层次论述了培养顾客忠诚的意义,探讨了饭店培养顾客忠诚的策略。 [关键词]顾客忠诚;个性化服务;par t et o法则;内部顾客 随着商品经济的不断发展、完善,市场竞争逐渐加剧升 级,饭店企业的经营理念和管理思想也在随之变化和升华, 于是产生了“CL”理念,即顾客忠诚理念。 1顾客忠诚的内涵 顾客忠诚的基本含义 所谓“顾客忠诚”指的是企业以满足顾客的需求和期望 为目标,有效消除和预防顾客的抱怨和投诉,不断提高顾客 满意度,在企业与顾客之间建立起一种相互信任相互依赖 的“质量价值链”。 这个理念侧重于企业的长远利益,注重于将近期利益 与长远利益相结合,并通过现有的顾客群去影响和带动潜 在的顾客,使他们在消费企业的产品与服务的过程中,对企 业产生一定的感情,进而爱上企业、离不开企业。 有人曾经多次进行了相同内容的实验:首先对实验者 进行调查分类,把认为可口可乐味道好的人分为A组,把认 为百事可乐味道好的人分为B组,然后让两组实验者盲饮 可口可乐和百事可乐,结果发现:很少有人能准确区分两种 可乐的差异。这个实验表明:实验者声称的味道好,不是来 自产品本身,而是来自品牌信任;不是来自生理感受,而是 来自心理偏爱。其实,这就是顾客忠诚。 顾客忠诚的具体体现 顾客忠诚是许多特性的综合体,同时也代表了顾客的 一种承诺,并反应在态度与行为上,具体表现在: 愿意再度购买消费者一旦对饭店的产品或服务形成 了一定的忠诚感,就会持续不断地购买,并且在购买的过程 中呈现出购买次数多、挑选的时间短以及对价值的敏感度 低等特点。 向同一企业购买其它产品与服务一般来说,饭店企 业总是靠为数不多的产品与服务来树立自己的品牌形象, 所以企业的品牌一旦形成,就会产生“品牌效应”,带动相关 产品的销售。比如说,消费者对某家饭店的餐饮服务比较满 意,认为价格合理,服务周到且很有人情味,那么相应地就 认为这家饭店的客房服务也一定如此,从而带动客房产品 的销售。 愿意将此企业推荐给其他人当今是个市场经济的社 会,“酒香不怕巷子深”的年代早己过去,饭店企业要把自己 的产品、服务推销出去就必须加大宣传、促销的力度。可以 说,消费者的口碑效应胜过任何的广告与公关的作用,正因 如此,饭店企业都十分重视这一信息来源的作用,纷纷以优 质产品,温馨的服务来赢得消费者的口碑,发挥其影响潜在 购买者决策的作用。如一家酒店在宾客意见簿的扉页上写 下这样耐人寻味的语言:“如果您满意,请告诉您的亲朋好 友;如果您不满意,请告诉我们,我们将努力做得更好,一直 到您满意。” 拒绝采用其他竞争者的同性质产品顾客在购买的过 程中,如果对竞争者的产品毫无兴趣,拒绝采用其同性质的 产品,说明对本企业的忠诚度高。反之,对竞争者的产品有一 定的兴趣,或者兴趣很浓的话,说明对本企业的忠诚度低。 2培养顾客忠诚的意义 忠诚的顾客是成功企业最宝贵的财富,值得企业花气力 与心思来维系。著名的parteto法则,即80/20原则,企业 80%的利润来自20%忠诚顾客。 20世纪90年代美国贝恩咨询公司有位著名的营销专 家和哈佛大学著名的教授通过一系列研究表明,企业从 10%最重要顾客那里获得的利润比从10%次要顾客那里获 得的利润多5-10倍。他们的调查还发现,忠诚的顾客每增 加5%,企业的利润可增加25%-90%。对饭店企业来讲,培 养忠诚顾客的意义主要表现在以下几个方面: 有利于降低市场开发费用 任何企业的产品和服务都必须被市场所接受,否则这 个企业就不可能生存下去,而市场开发的费用一般是很高 昂的。由于饭店产品与服务的相对固定性,建立顾客忠诚更 有特殊意义。如能达到引导顾客多次反复购买,从而可大大 降低市场开发费用。由于老顾客重复购买次数多,对企业忠 诚度高,这一部分市场不必花气力去开拓,据美国管理协会 估计,保住一个老顾客的费用只相当于吸引一个新顾客费 用的1/6,①54而且忠诚的顾客为企业做有利的口头宣传, 影响其他顾客的购买行为,可为企业扩展潜在的市场需求, 有效的降低广告费用,减少启动性费用。 有利于增加饭店经营利润 愈来愈多的饭店企业认识到建立一批忠诚顾客是企业 的依靠力量和宝贵财富。顾客会长期购买企业的产品和服 务,他们愿意支付较高的价格,这对企业来说有利可图。 有利于增加饭店的竞争力 饭店企业之间的竞争,主要在于争夺顾客。实施CL战 略,不仅可以有效地防止原有顾客转移,而且有助于饭店赢 取正面口碑,树立良好形象。借助忠诚顾客的影响,还有助 于化解不满顾客的抱怨,扩大忠诚顾客的队伍,使饭店企业 走上良性循环发展之路。企业的顾客一旦对企业形成偏好 与忠诚,就很难为其它企业的产品或服务所打动,无形中可 减少企业的竞争压力。 以可口可乐公司为例,公司百年不败的秘诀就是拥有 一大批忠诚的顾客。1985年,当可口可乐公司决定改变其配 方,增添新口味的可乐时,遭到了消费者的强烈抗议,在美 国的许多地方,一些消费者甚至走上街头游行示威,抗议可 口可乐公司剥夺了他们消费老可乐的权力,强烈要求恢复 老可乐的生产,更多的消费者则大量的囤积老可乐,造成老 可乐的严重缺货,由此可以看出,可口可乐与消费者之间的 深厚感情,这也是可口可乐公司全心全意致力于顾客忠诚 培养的结果。所以,可口可乐公司的老总才敢说,即使有一 天可口可乐公司毁于一旦,但我们凭可口可乐这块牌子,可 以走进任何一家银行,依靠贷款在一夜之间东山再起。这就 说明了只有忠诚的顾客才能成就不败的企业。 3饭店业如何培养忠诚顾客 企业要想获得长久的生存与发展,不仅要得到顾客,更 重要的是保持与扩大顾客,在不断提高顾客满意度的基础 上建立顾客忠诚。为此,饭店企业应该将培养顾客忠诚作为 企业的一项根本性的战略任务,要长抓不懈。下面从饭店产 品售前准备阶段、服务购买阶段和后续服务三个层面分别 探讨培育忠诚顾客的策略。 产品宣传阶段的策略 从旅游者购买旅游产品过程看,获取旅游者的注意力 是最为关键的一步,旅游营销显得更为重要。旅游企业可以 运用各种宣传技巧,采用整合营销、网络营销等多种营销策 略来吸引顾客眼球。但应明确广告促销是为了更有效地向 人们传递真实的旅游信息,以更好地发挥信息的吸引和激 发作用。在广告宣传时要实事求是,只有真实可靠才能建立 信誉。旅游宣传最好应留有余地。留有适当余地,可以避免 顾客产生过高的旅游期望。顾客通过亲身体验之后,以顾客 期望服务与感知服务相比,由于有预料之外的收获,心情更 愉快,对旅游服务更满意并做出较高评价,同时对旅游宣传 产生更加信赖的态度。这有利于顾客忠诚度的培育。 产品销售即服务“关键时刻”阶段的策略 由于饭店业产品特点的特殊性,服务接触自顾客决定 购买服务开始,一直伴随着顾客消费的整个过程,对服务质 量感知的形成具有非常重要的影响。此阶段是使顾客满意, 进而成为忠诚顾客尤为重要的阶段。旅游企业应尽力保证 每一环节都能提供优质服务。此外,对关键的服务环节应当 设计特定的程序进行控制,对可量化进行评价的服务应设 立标准执行时间,以此保证满意的服务效果。还要对每一环 节中创造高质的前台活动所需要的后台支持予以考虑。 提供个性化服务 企业应在标准服务、优质服务中体现特色服务,这样才 能凸显自己的优势,才能增强顾客信任感,让顾客满意,并 成为忠诚顾客。要提供特色服务,应从顾客的需求、兴趣爱 好着手。一方面,要建立顾客档案。饭店企业平时应细心观 察,记录挖掘每次服务接触中得到的顾客信息。记录力求翔 实,不仅应记录顾客的姓名、经济收入等基本信息,还应记 录每次消费情况、爱好和特殊需求、个人习惯等信息。另一 方面,关注顾客需求变化。由于社会服务行业水平的提高, 加上顾客消费的日趋成熟化和理性化,顾客期望处于动态 变化之中。旅游企业作为一个竞争日趋激烈的行业,服务交 付水平和承诺水平不断提高,顾客的适当服务期望也在不 断增长。为了预先适应市场变化,应付被市场淘汰的危机, 旅游企业应持续关注市场,通过对行业的监控,与顾客的系 统沟通、对竞争对手的关注,留意预示顾客需求、喜好、购买 动机等重要因素变化的征兆。旅游企业可以掌握顾客适当 服务期望的变化。旅游企业必须不断提高服务水准,并通过 服务创新引导顾客期望,尤其是应建立个性化服务的实施 体系,为顾客提供特色服务,以增强旅游企业参与服务竞争 的实力,尽量减少顾客跳槽现象的发生。 与顾客进行沟通 饭店通过与顾客进行经常的对话,加强与他们的联系, 就可以在问题发生时处于一个有利的地位上。饭店积极地发 起沟通以及对顾客发起的沟通迅速地表示关心,都传达了一 种合作的感情,而这又是顾客经常希望却又很少得到的。与 顾客进行有效的沟通,有助于在服务问题发生时减少或避免 顾客的挫折感,从而使顾客树立对企业的信任和容忍。 重视内部顾客 顾客的购买行为是一个在消费中寻求尊重的过程,而 员工在经营中的参与程度和积极性,很大程度上影响着顾 客满意度。现在有的饭店以高薪聘人,却留不住人,主要是 饭店管理者忽视员工满意度的建设,缺乏人情味的管理,使 员工不能让顾客满意。哈佛大学的一项调查研究表明:员工 满意度每提高3个百分点,顾客满意度就提高5个百分点。 里兹.卡尔顿大酒店以其杰出的服务闻名于世,成功基于一 条简单的哲理:要照顾好顾客,首先必须照顾好那些照顾客 人的人,感到满意的职员会提供高质量的服务价值。世界最 豪华饭店公司“四季集团”的主席夏奕斯有一句名言:“我们 怎样对待自己的员工,他们就会以同样的尊重回报我们的 客人。这始终是四季成功的驱动力!”②60饭店企业应把员 工看成内部顾客,视为上帝,从物质方面、精神方面尽力满 足他们的需要。企业应贯彻“以人为本”的管理理念,高度重 视企业文化建设,建立有效的绩效评估机制,为员工创造公 平竞争的环境,让员工积极参与管理,给员工适当的授权。 对于优秀员工,根据其需求、愿望和贡献给予相应的奖励, 如升迁、奖金、免费相关培训等。让那些以全部热情投入工 作的优秀员工获得荣誉,受到激励,从而增强他们对企业的 忠诚度。只有员工忠诚了,才有顾客的忠诚。 产品后续服务阶段的策略 许多饭店企业错误地认为产品销售出去了便可万事大 吉。殊不知,只因售后服务工作没做好,使许多“头回客”成为 永远的“头回客”,“回头客”也越来越少。因此,售后的服务工 作不应忽视。 饭店业在服务中要完全避免接待过程中的工作失误显 然是不太现实的,然而如何通过“补救性服务”及时发现并 妥善解决问题却是每个饭店的必修课,这里面容不得半点 的松弛和懈怠,即使是客人已经离店了,也不能有半点敷 衍。里兹·卡尔顿饭店的总裁,曾创造了“1-10-100”的服务 补救法则,认为出现服务失误后,当场补救可能要使企业支 出1美元,第二天去补救时的费用会是10美元,以后再去 补救的费用会上升100美元.这是对服务补救经济意义的最 好诠释.因此,饭店企业必须借助不间断的服务监控系统,及 时发现服务失误,及时、有效地解决服务失误,并从质量问 题和服务补救中吸取经验教训。 总之,饭店企业如果能够做好上述几项工作,就一定能 牢牢地把握住顾客,使顾客成为自己酒店的忠诚者。 注释: ①朱承强:《现代饭店管理》,高等教育出版社,2003年版,第 54页。 ②朱承强:《现代饭店管理》,高等教育出版社,2003年版,第 60页。 参考文献: [1]付钢业.现代饭店服务质量管理[M].广州:广东旅游出版社, 2005. [2]郑凤萍.旅游企业如何培养忠诚顾客[J].北方经贸,2004. [3][美]卡尔·阿尔布瑞契特,让·詹母克.服务经济:让顾客价值 回到企业舞台中心[M].唐果,译.北京:中国社会科学出版社,2004. [4]王晖,于岩平.旅游企业客户关系管理[M].北京:旅游教育出 版社,2005. [5]陈觉.餐饮服务要点及案例评析[M].沈阳:辽宁科技出版社, 2004. [6]刘丽文.服务运营管理[M].北京:清华大学出版社,2004. [7]孟宪军,刘颖.旅行社如何做好顾客的吸引与维系[J].辽宁师 范大学学报(社会科学版),2002(3).记得采纳啊

相关百科

热门百科

首页
发表服务