第一篇:c语言实现机票管理系统源代码
/*
1、用户和管理员及航班信息请以英文字母或数字输入*/ /*
2、管理员账户为:boss,密码为:123。保存在txt文件中,需要修改请于程序中修改*/ /*
3、部分文件读写为二进制读写,所以打开文件时会看到乱码*/
#include
void zhujiemian();//主界面函数
void verify();//用户及管理员登录选择 void loginmanager();//管理员登录 void loginuser();//用户登录
void loginflightm();//管理员登录机票系统 void loginflightu();//用户登录机票系统 void creatfile();//创建用户信息模块
void saveuser();//用户信息保存模块程序
void input();//输入航班信息
void print();//输出航班信息
void save();//保存航班信息
void read();//读取航班信息
void paixu();// 对所有航班按航班号排序 void search();//查找航班信息
void dingpiao();//订票信息
struct users
//管理员/用户信息结构体,管理员可以修改航班信息 {
char Name[20];//管理员/用户姓名
char sexual[10];//用户性别
char ps[8];
// 用户密码
int age;
//用户年龄
long Number;
//用户身份证号码
int power;
//power为1是管理员登录,为0是用户登录 }user[N],up,mg;//up为键盘输入用户信息,user[N]为文件保存的用户信息,mg为管理员结构体
int n;//所有用户个数,初始化为0 struct air //航班信息结构体
{
int num;
//航班号
char start[20];//出发地
char over[20];//目的地
char time[10];//时间
int count;
//票数
int prize;
//票价 }s[N],fnew;int i;
int m=0;//所有航班个数 #define
PRINT “%-d%12s%12s%10s%12d%10dn”,s[i].num,s[i].start,s[i].over,s[i].time,s[i].count,s[i].prize //定义输出格式
void main()//主函数 { zhujiemian();} void zhujiemian()//主界面函数 { int j;
printf(“#=====#n”);
printf(“#
欢迎进入机票管理系统
#n”);printf(“#
1、登录系统
#n”);printf(“#
2、新用户注册
#n”);printf(“#
0、退出
#n”);
printf(“#=====#n”);printf(“请在1-2中选择以回车键结束:nn”);
scanf(“%d”,&j);
switch(j)
{
case 1:verify();//进入机票系统
break;
case 2:creatfile();//进入用户注册系统
break;
case 0:;
break;
} }
void verify()//验证用户及管理员信息模块 { int j;system(“cls”);printf(“#=====#n”);printf(“#
1、管理员登录
#n”);printf(“#
2、用户登录
#n”);printf(“#
0、返回主界面
#n”);
printf(“#=====#n”);scanf(“%d”,&j);
switch(j)
{
case 1:loginmanager();//进入管理员登录界面
break;case 2:loginuser();//进入用户登录界面
break;case 0: system(“cls”);
zhujiemian();//进入主界面
break;
} }
/********管理员登录确定函数**********/ void loginmanager(){ FILE * fp=NULL;//定义文件指针
char DataFile[20]=“manager.txt”;//存储管理员信息的文件名
int i=0,j=1;
char relogin;
//是否重新登录
int success=0;
//登录成功的标志
printf(“n---管理员登录---n”);
fp=fopen(DataFile,“r”);if(fp==NULL)//如果当前文件不存在,初始化根用户名为boss,密码为123,权限为管理员
{
printf(“首次使用该系统!n”);
printf(“管理员账户为:boss 密码为:123n”);
fp=fopen(DataFile,“a”);//以追加方式打开文件
user[0].Number=0;
strcpy(user[0].Name,“boss”);
strcpy(user[0].sexual,“male”);
user[0].age=22;
user[0].power=1;
strcpy(user[0].ps,“123”);
fwrite(&user[0],sizeof(user),1,fp);
fclose(fp);
} else fclose(fp);again: printf(“请输入管理员姓名:”);
scanf(“%s”,up.Name);//输入用户名
up.Name[19]=' ';
printf(“请输入管理员密码:”);
fflush(stdin);
for(i=0;i<7;i++)//输入密码,以*在屏幕显示 { up.ps[i]=getch();
up.ps[i+1]=' ';//字符要以' '结尾
if(up.ps[i]=='b')
{
i--;
up.ps[i]=' ';//清除前一个字符
i--;//接收前一个字符
printf(“b ”);
printf(“b”);
continue;
}
if(up.ps[i]=='r')
{
up.ps[i]=' ';
break;
}
printf(“*”);}
fp=fopen(DataFile,“rt”);
if(fp==NULL)// 打开文件失败时提示
{
printf(“n打开 %s 失败!按任意键结束程序n”,DataFile);
perror(“Open file fail”);
getchar();
return;
}
if((fp=fopen(“manager.txt”,“r”))==NULL)//打开文件,并判断是否出错
{
printf(“n出错,请检查文件是否存在,按任意键返回主菜单n”);//打印出错提示getchar();
} else
fread(&mg,sizeof(struct users),1,fp);//从文件中读取信息
fclose(fp);//关闭文件
if(strcmp(mg.Name,up.Name)==0&&strcmp(mg.ps,up.ps)==0)
{
success=1;
}
if(success==1)//登录成功
{
printf(“n登录成功,按任意键进入机票调整系统!n”);
getchar();
loginflightm();
}
else//未登录成功
{
fflush(stdin);//清除输入缓冲区中的字符
printf(“n用户名或密码错误!重新输入请按y,退出请按n:n”);
relogin=getchar();
if(relogin=='y'||relogin=='Y')
{
getchar();
goto again;
}
else
{
verify();
exit(0);
}
} }
/********用户登录函数**********/ void loginuser(){ FILE *fp=NULL,*fp1;//定义文件指针
char DataFile[20]=“yonghu.txt”;//存储管理员信息的文件名
int i=0,j=0;
char relogin;
//是否重新登录
int success=0;
//登录成功的标志
printf(“n---用户登录---n”);
fp=fopen(DataFile,“r”);
//读取文件中数据
if((fp1=fopen(“howmanyusers.txt”,“a”))==NULL)//读写方式打开文件,若文件不存在,则n=0
{
//printf(“创建文件失败!nn”);//打印出错提示
n=0;//getchar();
//continue;}
else {
fp1=fopen(“howmanyusers.txt”,“r”);
fscanf(fp1, “%d”,&n);//读取fp1中的用户个数
} fclose(fp1);
if((fp=fopen(“yonghu.txt”,“r”))==NULL)//打开文件,并判断是否出错
{
fp1=fopen(“howmanyusers.txt”,“w+”);//以写方式打开
fprintf(fp1,“%d”,0);//打开用户文件失败,则输入用户个数0到fp1 fclose(fp1);printf(“n目前没有用户信息,请按ENTER键返回主菜单先进行注册!n”);getchar();getchar();system(“cls”);zhujiemian();}
for(i=0;i } fclose(fp);//关闭文件 //输入数据与文件中用户比对 again: printf(“请输入用户姓名:”); scanf(“%s”,up.Name);//输入用户名 up.Name[19]=' '; printf(“请输入用户密码:”); fflush(stdin); for(i=0;i<7;i++)//输入密码,以*在屏幕显示 { up.ps[i]=getch(); up.ps[i+1]=' ';//字符要以' '结尾 if(up.ps[i]=='b') { i--; up.ps[i]=' ';//清除前一个字符 i--;//接收前一个字符 printf(“b ”); printf(“b”); continue; } if(up.ps[i]=='r') { up.ps[i]=' '; break; } printf(“*”);} for(i=0;i { if(strcmp(user[i].Name,up.Name)==0&&strcmp(user[i].ps,up.ps)==0) { success=1; break; } } if(success==1)//登录成功 { printf(“n登录成功,按任意键进入机票调整系统!n”); getchar(); loginflightu(); } else //未登录成功 { fflush(stdin);//清除输入缓冲区中的字符 printf(“n用户名或密码错误!重新输入请按y,退出请按n:n”); relogin=getchar(); if(relogin=='y'||relogin=='Y') { getchar(); goto again; } else { verify(); exit(0); } } } void saveuser(struct users[])//用户信息保存模块程序 { FILE *fp,*fp1;//定义文件指针 if((fp=fopen(“yonghu.txt”,“a”))==NULL)//打开文件并判断是否出错 { } } printf(“创建文件失败!nn”);//打印出错提示 getchar();return; if((fp1=fopen(“howmanyusers.txt”,“w+”))==NULL)//打开文件并判断是否出错 { printf(“创建文件失败!nn”);//打印出错提示 getchar(); return;} for(i=0;i { printf(“向文件输入数据失败!nn”);} } fprintf(fp1,“%d”,n);//输入用户个数到fp1 fclose(fp);//关闭文件 fclose(fp1);//关闭文件 void creatfile()//增加用户信息模块 { FILE *fp=NULL,*p=NULL,*fp1; char DataFile[20]=“yonghu.txt”;//存储用户信息的文件名 //int a[100]; int i=0,k=1,count=0; fp=fopen(DataFile,“r”); system(“cls”);//清屏 if(fp==NULL)//如果当前文件不存在,提示打开文件失败 { fp1=fopen(“howmanyusers.txt”,“w+”);//以写方式打开 fprintf(fp1,“%d”,0);//打开用户文件失败,则输入用户个数0到fp1 fclose(fp1); printf(“n不存在%s,正在创建!n”,DataFile); fp=fopen(DataFile,“a”); creatfile();} if((fp1=fopen(“howmanyusers.txt”,“a”))==NULL)//读写方式打开文件,若文件不存在,则n=0 { n=0;} else { fp1=fopen(“howmanyusers.txt”,“r”); fscanf(fp1, “%d”,&n);//读取fp1中的用户个数 } fclose(fp1);for(i=0;i fread(&user[i],sizeof(struct users),1,fp);//从文件中读取信息 } fclose(fp);//关闭文件 //如果成功打开文件,则提示输入用户相关信息 printf(“请输入用户信息n”); fflush(stdin); while(k) { //printf(“n输入身份证号码注意身份证号码不能为0!n”); printf(“请输入身份证号码:”); scanf(“%ld”,&up.Number); i=0;//再次初始化i为0 //判断身份证号是否存在while(i { if(user[i].Number==up.Number) { printf(“该身份证号码已被使用过!n请重新输入身份证号:”); scanf(“%ld”,&up.Number); i=0; //continue; } else i++;} //经循环对比后,i的值仍和n相等,将新注册的信息加入数组末位 user[i].Number=up.Number;printf(“姓名:”);scanf(“%s”,&user[i].Name);user[i].Name[19]=' ';printf(“性别:”);scanf(“%s”,&user[i].sexual);printf(“用户密码:”);scanf(“%s”,&user[i].ps);printf(“年龄:”);scanf(“%d”,&user[i].age); n++;//用户数目增加 printf(“是否继续注册?是:选1,否:选0;”); scanf(“%d”,&k);} saveuser(user);//保存用户信息 fclose(fp);//在屏幕上显示文件内容 system(“cls”);printf(“数据已经成功保存到%s中n”,DataFile);getchar(); printf(“按任意键返回主界面!n”); getchar(); system(“cls”); zhujiemian();//返回主界面 } void loginflightm()//管理员登录机票系统 { int j;do { system(“cls”); printf(“ ★----------------您好,欢迎进入自动化飞机订票系统!---★n”); printf(“==================================n”); printf(“ **---------------☆ 1.输入航班信息 ☆---------------------------**nn” “ **------------☆ 2.浏 览 航 班 信 息 ☆-----------------------**nn” “ **--------☆ 3.查 找 航 班 信 息 -☆--------------------**nn” “ **-----------☆ 4.对航班按航班票价排序---☆-----------------------**nn” “ **--------------☆ 5.订 票 信 息-☆-------------------------**nn” “ **------------------☆ 0.退出 -☆-----------------------------**nn” “ **-----------------------☆ ☆---------------------------------**nn” “ **-------------------------☆----------------------------------**nn” “ **-----------------------☆ ☆----------------------------------**nn”); printf(“==================================n”); printf(“请在0-5中选择以回车键结束:nn”); scanf(“%d”,&j); switch(j) { case 1: input();//调用输入模块 break;case 2: system(“cls”); print();//调用打印模块 break; case 3: search();//调用查找模块 break; case 4: paixu();//调用排序模块 break; case 5: dingpiao();//调用订票模块 break; case 0:; break; } }while(j!=0);//判断结束 printf(“按任意键返回主界面n”);system(“cls”);zhujiemian();}//登录函数结束 void loginflightu()//用户登录机票系统 { int j;do { system(“cls”); printf(“ ★----------------您好,欢迎进入自动化飞机订票系统!---★n”); printf(“==================================n”); printf(“ **------------☆ 1.浏 览 航 班 信 息 ☆-----------------------**nn” “ **--------☆ 2.查 找 航 班 信 息 -☆--------------------**nn” “ **-----------☆ 3.对航班按航班票价排序---☆-----------------------**nn” “ **--------------☆ 4.订 票 信 息-☆-------------------------**nn” “ **------------------☆ 0.退出 -☆-----------------------------**nn” “ **-----------------------☆ ☆---------------------------------**nn” “ **-------------------------☆----------------------------------**nn” “ **-----------------------☆ ☆----------------------------------**nn”); printf(“==================================n”); printf(“请在0-5中选择以回车键结束:nn”); scanf(“%d”,&j); switch(j) { case 1: system(“cls”); print();//调用打印模块 break;case 2: search();//调用查找模块 break;case 3: paixu();//调用排序模块 break;case 4: dingpiao();//调用订票模块 break;case 0:; break;} }while(j!=0);//判断结束 printf(“按任意键返回主界面n”);system(“cls”);zhujiemian();}//登录函数结束 void input()//输入航班信息模块,管理员操作 { int i=0,k=1;read();printf(“请依次输入航班信息(航班号,起始站,终点站,起飞时间,机票数,票价):nn”);//打印提示信息 printf(“------------n”); //fflush(stdin); while(k) { } } printf(“请输入航班号:n”); scanf(“%d”,&fnew.num);//读取航班号 i=0;//再次初始化i为0 //判断航班是否已经存在while(i if(s[i].num==fnew.num) { } printf(“该航班已经存在!n请重新输入:”); scanf(“%d”,&fnew.num); i=0; //continue;} else i++;//经循环对比后,i的值仍和n相等,将新注册的信息加入数组末位 s[i].num=fnew.num;printf(“请输入起始站:n”); scanf(“%s”,s[i].start);//读取起始站 printf(“请输入终点站:n”); scanf(“%s”,s[i].over);//读取终点站 printf(“请输入时间:n”); scanf(“%s”,s[i].time);//读取时间 printf(“请输入余票数(机票数为0结束输入):n”,m); scanf(“%d”,&s[i].count);//读取机票数 printf(“请输入机票票价:n”,m); scanf(“%d”,&s[i].prize);//读取机票票价 m++;//所有航班信息个数 // printf(“第%d个信息已经输完是否继续?按1-9任意数字继续,按0结束”,m); //scanf(“%d”,&y); printf(“是否继续添加航班?是:选1,否:选0;”);scanf(“%d”,&k);if(k==0) { } save();//将结构体信息存盘 system(“cls”);print();//输出输入的航班信息 break;void save()//航班信息保存模块程序 { FILE *fp,*fp1;//定义文件指针 if((fp=fopen(“flight.txt”,“wb”))==NULL)//打开文件并判断是否出错 { } printf(“创建文件失败!nn”);//打印出错提示 getchar(); return;} if((fp1=fopen(“howmanyflights.txt”,“wb”))==NULL)//打开文件并判断是否出错 { printf(“创建文件失败!nn”);//打印出错提示 getchar(); return;} for(i=0;i if(fwrite(&s[i],sizeof(struct air),1,fp)==0)//向文件写入数据,并判断是否出错 printf(“向文件输入数据失败!nn”);fprintf(fp1,“%d”,m);fclose(fp);//关闭文件 fclose(fp1);//关闭文件 void read()//从文件读取航班信息模块 { FILE *fp,*fp1;//定义文件指针 fp=fopen(“flight.txt”,“r”); //system(“cls”);//清屏 if(fp==NULL)//如果当前文件不存在,提示打开文件失败 { fp1=fopen(“howmanyflights.txt”,“w+”);//以写方式打开 fprintf(fp1,“%d”,0);//打开用户文件失败,则输入用户个数0到fp1 fclose(fp1); printf(“n不存在flight.txt,正在创建!n”); fp=fopen(“flight.txt”,“a”); printf(“创建完成!n”); system(“cls”); read(); //perror(“Open file fail”); //getch(); } if((fp1=fopen(“howmanyflights.txt”,“rb”))==NULL)//读写方式打开文件,若文件不存在,则m=0 { //printf(“创建文件失败!nn”);//打印出错提示 m=0;} else { fp1=fopen(“howmanyflights.txt”,“r”); fscanf(fp1, “%d”,&m);//读取fp1中的用户个数 } fclose(fp1);for(i=0;i fread(&s[i],sizeof(struct air),1,fp);//从文件中读取信息 } fclose(fp);//关闭文件 } void print()//屏幕打印航班信息模块 { read();//调用读取文件函数 if(m==0) printf(“nn目前没有航班信息!n”);else { printf(“航班信息如下:n”); printf(“航班号 起始站 终点站 时间 for(i=0;i { printf(PRINT);//打印信息 } } printf(”n请按任意键回车键结束返回主菜单“); getchar();getchar();} void paixu()//对所有航班按航班价格排序 { int j;struct pai { int no; char name1[20]; 余票数 票价n”); } char name2[20];char time[20];int count;int prize;}p[1];//临时定义结构体,作为排序时的第三变量 read();//调用读取信息函数 for(j=0;j<(m-1);j++){ for(i=0;i<(m-(1+j));i++){ if(s[i].prize>s[i+1].prize) //按价格升序排列,p[0]为中间变量 { p[0].no=s[i].num;//替换航班号 strcpy(p[0].name1,s[i].start);//替换其始站 strcpy(p[0].name2,s[i].over);//替换终点站 strcpy(p[0].time,s[i].time);//替换时间 p[0].count=s[i].count;//替换机票数 p[0].prize=s[i].prize;//替换票价 s[i]=s[i+1]; s[i+1].num=p[0].no;//替换航班号 strcpy(s[i+1].start,p[0].name1);//替换其始站 strcpy(s[i+1].over,p[0].name2);//替换终点站 strcpy(s[i+1].time,p[0].time);//替换时间 s[i+1].count=p[0].count;//替换机票数 s[i+1].prize=p[0].prize; } } } save();//调用保存函数 system(“cls”);printf(“排序后,”);print();void search()//按航班号查询模块 { char ii[10]; int no,k;read();//调用读取函数 do { system(“cls”); k=0;//每次查找都初始化k为0 printf(“请输入你要找的航班号:”);//打印查询方式菜单 scanf(“%d”,&no);//航班号 for(i=0;i { if(s[i].num==no)//按航班号判断输出条件 { k=1; system(“cls”); printf(“n查找航班信息成功!n”); printf(“航班号 起始站 终点站 时间 余票数 价n”); printf(PRINT);//打印信息 break; } } no=0;//将航班号重新赋值为0 if(k==0) { printf(“没有您需要的信息n”); } printf(“n是否继续查找?请键入yes或no以回车键结束n”); scanf(“%s”,ii); } while(strcmp(ii,“yes”)==0);//判断结束 } void dingpiao()//订票模块 { int n; char a[10];search();//调用查询模块 do { printf(“请输入您要订的机票数以回车键结束:n”); scanf(“%d”,&n);//读取所订机票数 if(n<0) { printf(“请输入有效的机票数!n”);//判断机票数是否出错break; } if(s[i].count!=0&&s[i].count>=n)//判断是否出错 { s[i].count=s[i].count-n; save();//调用保存函数 printf(“订票成功!nn”); 票 } } break;} if(s[i].count { printf(“余票不足,请输入有效的机票数!n”); getchar();} printf(“是否继续订票? 请输入yes或no以回车键结束:n”);//判断是否继续订票 scanf(“%s”,a); while(!strcmp(a,“yes”));//判断结束 getchar();printf(“按ENTER键返回用户主界面。”);getchar(); #include //包含access函数的头文件 #include //定义最多的航班数 #define PRINT “%dtt%stt%stt星”,s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //宏定义输出格式 struct air { int num; char start[20];char over[20];char time[10];int count; }s[N]; int i,a,m=0;char ii[10];//定义结构体数组 //定义航班号 //航班起始站 //终点站 //飞行时间 //机票数量 期%stt%dn //定义全局变量 void add();//函数声明增加航班信息函数 void print(); //显示航班信息 void search();//查找航班信息 void dingpiao();//订票业务 void tuipiao();//退票 void read();//读取文件 void save();//保存文件 void output();//输出格式 void paixu();//航班排序 void chushihua();//系统初始化 void build();//建立数据文件 void paixu1();//按航班号从小到大排序 void paixu2();//从大到小 int head();//进入订票系统 int main()//主函数 { int j; system(“color b0”);chushihua();//系统初始化判断是否存在原始数据文件 system(“cls”); head();//打印出系统主界面 system(“cls”);do { printf(“================================== ”); printf(“1.增加航班信息n” “t2.浏览航班信息n” “tt3.查找航班信息(按航班号)ttn” “ttt4.航班排序(按航班号)n” “tttt5.订票业务n” “ttttt6.退票业务n” “tttttt0.退出n”);printf(“================================== ”); printf(“请在0-6中选择以回车键结束: ”);scanf(“%d”,&j);switch(j){ } case 1: add();system(“cls”); break; //调用增加航班函数 case 2:print();system(“cls”);//调用显示模块 break;case 3:search();system(“cls”);//调用查找模块 break;case 4:paixu();system(“cls”);//调用排序函数 break;case 5:dingpiao();system(“cls”);break; //调用订票模块 case 6:tuipiao();system(“cls”);//调用退票模块 break; case 0: //退出系统 save();system(“cls”); printf(“nnnttttnnt谢谢使用,再见!”); printf(“nnnnnnnnnnnnn”); break;} }while(j!=0);//判断是否调用其他函数 void chushihua()//定义系统初始化函数 { if(access(“hangban.dat”,0)){ build();} else read();} void build(){ //定义建立数据文件函数 FILE *fp;//定义文件指针 if((fp=fopen(“hangban.dat”,“wb”))==NULL){ //打开文件并判定是否出错 printf(“创建文件失败!”);//打印出错提示 getchar();return;} printf(“请依次输入航班信息(以回车键结束):n”); //打印提示信息 printf(“------------n”);for(i=0;i printf(“请输入航班号: ”); scanf(“%d”,&s[i].num);//输入航班号 printf(“请输入起始站: ”);scanf(“%s”,s[i].start);//输入起始站 printf(“请输入终点站: ”);scanf(“%s”,s[i].over);//输入终点站 printf(“请输入时间(星期几): ”);scanf(“%s”,s[i].time);//输入时间 printf(“请输入机票数: ”);scanf(“%d”,&s[i].count);//输入机票数 fwrite(&s[i],sizeof(struct air),1,fp);m++;printf(“添加完毕,是否继续添加?请键入y或n以回车键结束:”);scanf(“%s”,ii);if(strcmp(ii,“y”)!=0)//判断是否继续添加航班信息 { fclose(fp); //关闭文件 return;} } } void read() //定义读取文件函数 { FILE *fp;if((fp=fopen(“hangban.dat”,“r”))==NULL){ } printf(“创建文件失败!”);getchar();return;} i=0;while(!feof(fp)){ fread(&s[i],sizeof(struct air),1,fp); i++;m++;//计算存在航班数 } m--;fclose(fp);printf(“请稍候,正在初始化”);for(a=0;a<3;a++){ printf(“.”); Sleep(600);} printf(“n”); //逐块读取数据 void save()//定义保存函数 { FILE *fp;if((fp=fopen(“hangban.dat”,“wb”))==NULL) { printf(“创建文件失败!”);getchar();return;} for(i=0;i //逐块保存数据 fwrite(&s[i],sizeof(struct air),1,fp);fclose(fp);printf(“正在保存数据并退出”);for(a=0;a<3;a++) } { printf(“.”); Sleep(600);} printf(“n”);printf(“n”);void add(){ do{ 息 //定义增加航班信息函数 printf(“请依次输入您要增加的航班信息(以回车键结束): n”); //打印提示信printf(“------------n”); printf(“请输入航班号: ”); scanf(“%d”,&s[m].num);//读取航班号 printf(“请输入起始站: ”);scanf(“%s”,s[m].start);//读取起始站 printf(“请输入终点站: ”);scanf(“%s”,s[m].over);//读取终点站 printf(“请输入时间(星期几): ”);scanf(“%s”,s[m].time);//读取时间 printf(“请输入机票数: ”);scanf(“%d”,&s[m].count);//读取机票数 m++; printf(“添加完毕,是否继续添加?请键入y或n以回车键结束:”); scanf(“%s”,ii);}while(!strcmp(ii,“y”));//判断是否继续添加 printf(“正在保存,请稍候”);for(a=0;a<5;a++) { printf(“.”); Sleep(600); } printf(“n”);} void output()//定义输出格式函数 { printf(“航班号tt起始站tt终点站tt时间tt机票数n”);//信息标题 for(i=0;i } printf(PRINT);//打印出信息 void print()//定义显示航班信息函数 { printf(“正在加载,请稍候”); for(a=0;a<5;a++) { printf(“.”); Sleep(400); } printf(“n”); system(“cls”);printf(“n目前我们有如下航班:nn”);output(); //调用输出格式函数 printf(“n请按回车键返回上层菜单 ”);getchar();getchar();} void search()//定义查询函数 { int n; do { printf(“n请输入航班号: ”); scanf(“%d”,&n);//输入查询的航班号 printf(“正在查询”); for(a=0;a<5;a++) { printf(“.”); Sleep(400); } printf(“n”); for(i=0;i { if(s[i].num==n)//按航班号判定输出条件 { printf(“n您所查找的航班信息为:n ”); printf(“航班号tt起始站tt终点站tt时间tt机票数 nn”); printf(PRINT);//显示信息 printf(“n查询完毕,按回车键继续”); getchar(); getchar(); return; } } printf(“n对不起,没有您需要的信息!n ”);printf(“是否重新查找?请键入y或n以回车键结束 ”);scanf(“%s”,ii);}while(!strcmp(ii,“y”));//判定是否重新查找 } void dingpiao()//定义订票业务函数 { int n,x;char a[10]=“y”;do { search();//调用查询模块 if(!strcmp(ii,“n”)) { printf(“对不起!没有找到您所需要的航班,所以不能订票。n”);所需航班 printf(“n请按回车键返回上层菜单 ”); getchar(); getchar(); strcpy(ii,“n”); break; } do { printf(“请输入您要订的机票数(以回车键结束): ”); scanf(“%d”,&n);//输入所订机票数 printf(“请稍候,正在订票”); for(x=0;x<3;x++) { printf(“.”); Sleep(600); } printf(“n”); if(n<=0) //判定机票数是否出错 //未查找到 { printf(“输入错误!至少需订1张机票。n”);} else if(s[i].count==0)//判定机票是否售完 { } printf(“对不起,你所选择的航班的机票已售完!n”);break;else if(s[i].count!=0&&s[i].count>=n)//判定机票数是否大于等于订票数 { s[i].count=s[i].count-n;printf(“订票成功!”);break;} else if(s[i].count printf(“对不起,你所选择的航班只剩 %d张机票n”, s[i].count); printf(“是否需要重新输入机票数?n请输入y或n以回车键结束: ”);//判定是否重新输入订票数 scanf(“%s”,a); } printf(“请稍候,正在订票”); for(x=0;x<3;x++) { printf(“.”); Sleep(600); } printf(“n”); } }while(!strcmp(a,“y”));printf(“是否需要订其他航班的机票?n请输入y或n以回车键结束: ”);scanf(“%s”,a);}while(!strcmp(a,“y”));//判定是否继续订票 void tuipiao()//定义退票函数 { int n,x;char a[10];do { search();//调用查询函数 if(!strcmp(ii,“n”)) { printf(“对不起!没有找到您所需要的航班,所以不能退票。n”);printf(“n请按回车键返回上层菜单 ”);getchar();getchar();strcpy(ii,“n”);break;} printf(“请输入您要退的机票数目: ”);scanf(“%d”,&n); //输入所退票数 printf(“请稍候,正在退票”);for(x=0;x<3;x++){ printf(“.”); Sleep(600);} printf(“n”);if(n<=0) //判定票数是否有效 printf(“输入错误!至少需退1张机票。”);else { s[i].count=s[i].count+n;printf(“退票成功!”);} printf(“是否继续? 请键入y或n以回车键结束: ”);scanf(“%s”,a); //判定是否继续退票 }while(!strcmp(a,“y”));//判定并跳出循环 } void paixu()//定义排序函数 { int n; printf(“n******************************************************************************** ”); printf(“1.按航班号从小到大排序n” “t2.按航班号从大到小排序n”);printf(“******************************************************************************** ”); printf(“请在1-2中选择以回车键结束: ”);scanf(“%d”,&n);//输入排序方式 switch(n){ case 1:paixu1();//调用从小到大排序函数 break; case 2:paixu2();//调用从大到小排序函数 break;} printf(“排序后的航班信息为:n”);output(); //显示排序后航班信息 printf(“n请按回车键返回上层菜单 ”); getchar();getchar();/*for(a=0;a<5;a++) { printf(“.”); Sleep(400); } printf(“n”);*/ } void paixu1()//定义从小到大排序函数 { int k,j;struct air t;for(i=0;i { k=i; for(j=i+1;j if(s[k].num>s[j].num) k=j; if(i!=k) { t=s[k]; s[k]=s[i]; s[i]=t; } } printf(“正在排序,请稍后”); for(a=0;a<5;a++) { printf(“.”); Sleep(400); } printf(“n”);} void paixu2()//定义从大到小排序函数 { int k,j;struct air t;for(i=0;i k=i; for(j=i+1;j if(s[k].num k=j; if(i!=k) { t=s[k]; s[k]=s[i]; s[i]=t; } } printf(“正在排序,请稍后”); for(a=0;a<5;a++){ printf(“.”); Sleep(400);} printf(“n”);} int head() //进入订票系统 { printf(“===================n”);printf(“* *n”); printf(“* 欢迎使用机票订票管理系统 *n”);printf(“* *n”);printf(“* 此处可以适当的加点文字 *n”);printf(“* *n”);printf(“===================n”);printf(“请按回车键进入界面”);getchar();printf(“正在进入系统选项”);for(a=0;a<3;a++){ printf(“.”);Sleep(600); } } printf(“n”);return 0; 课 程 设 计 课程设计名称: C语言程序设计 题 目:学籍管理系统 学 生 姓 名: 学生学号 : 学 院(系): 软件学院 专 业 班 级: 112021 指 导 教 师: 设计时间: 2012 年 9 月 日 2012 年 9月_ 14 日 实验题目:学籍管理系统一、实验目的 综合应用所学的C语言程序设计知识,自行设计并实现一个较为完整的小型管理信息系统。通过系统分析、系统设计、编程实现,写实验报告等环节,初步掌握软件系统的设计方法和步骤,提高灵活运用程序语言进行软件开发的技能,提高程序设计水平和分析问题、解决问题的能力。 二、实验内容 1):熟悉C语言的开发环境,按照给定的上机步骤练习完成; 2):熟悉C程序的编辑,编译,链接和运行的过程。3):编译一个应用系统程序,形成一个软件系统。 三.实验要求 1.1、分析系统功能 (1)用户进入主菜单后,就会在看到,菜单选项中添加有系统的各项功能,进入的 应的选项就可进行相应的操作.其主要功能有: 1、录入学生信息 2、删除学生信息 3、查询学生信息 4、学生信息排序 5、改学生信息 6、保存退出系统 (2)用户选择所需操作的选项,进入相应的操作界面,在这里用户就可开始进行操作。 四、使用说明 学生学籍管理系统是针对学生信息的管理,主要功能是添加学生信息、删除学生信息、查询学生信息、学生信息排序、修改学生信息、保存信息。 1,用户打开程序,进入主界面,输入学生信息如图 2,按回车进入主菜单,列出各项功能如图 输入1,是查询整个班级的学生的信息,如图 输入2,是查询个别学生的信息,如查询第一学生的信息,如图 输入3,是删除个别学生的信息,如删除第一个学生,如图 输入4,是插入某些学生的信息,如插入第三个,如图 输入5,是修改某个同学的信息,如删除第一个,如图 三、心得体会 两周的课程过起来其实也是很快的。这是我第一次做课程设计,起初还没做的时候觉得很快自己就将得编一个较大的程序,将会很有意思。带着最初的好奇心,新鲜感就这样开始了第一天的编程,结果是大失所望。做课程设计并不是自己想象中的那样有意思,而是很枯燥,很乏味的。也没想象中的那样简单,并不是像我们平时上C语言课时,每次编的那些小程序,没那么简单。我们现在要做的就是将我们平时学的,做的那些小程序都合理的凑到一块儿来。而把这些小程序都加到一块儿来,并不是随意的将它们放到一个程序中就完事的,而是必须得合理,且得顾及到各个方面。 正是由于编程的纷繁复杂,且结构的严谨,因此编程的过程中到处是困难和问题。它考验的不仅是我们的平时用功程度,以及我们对所学知识的熟练掌握程度、应用的灵活程度,它还考验我们的毅力。在刚开始的几天时,由于前一阵忙于各科的考试,C语言已经好久没碰了,所学的知识都有点遗忘了,在编写时处处碰壁,一直会停顿翻书,编得自己都开始心烦意乱了,实在是编不下去了,于是索性就停了三天去看书,先把书给吃透。并在后期的程序调试中也碰到不少的问题,好多问题自己反复检查了几遍都没查出,但在老师的帮助下还是一下就查出了。并不是这些问题多难,而是不够心细。因此做课程设计、编程时,它还考验并锻炼我们的心细程度。 经过这次的课程设计的实践,我受益颇多,不仅是对我掌握知识、灵活运用知识的一次考验和锻炼,也是对我生活态度的一次锻炼,让我学会心细和拥有毅力,更具信心和恒心,碰到困难不再退缩,而是坚强面对。 四,程序编码 /*做一个学生的学籍管理系统,有输入,查询,删除,增加,修改等功能*/ #include #include /*声明数组的大小,可以任意改动*/ int board[50][50];/*声明一个表格的数组*/ int cur_x, cur_y;/*定义坐标*/ void init();/*声明一个初始化界面的函数*/ void clear();/*清除界面的函数*/ void draw_board();/*声明一个函数画表格*/ struct student{/*创建一个学生的结构体*/ char stuNo[8]; /*学生的学号*/ char name[10];/*学生的姓名*/ char sex[2];/*学生的性别*/ char score[4]; /*学生的分数*/ char address[10];/*学生的地址*/ };void init()/*初始化函数*/ { int gdriver, gmode, i, j; gdriver = DETECT;/*图形界面的驱动声明*/ registerbgidriver(EGAVGA_driver); initgraph(&gdriver, &gmode, “"); for(i = 0;i < 10;i ++) for(j = 0;j < 10;j++)/*声明坐标的间距*/ board[i][j] = 0; cur_x = 1; cur_y = 1;} void destroy()/*关闭图形驱动器*/ { closegraph();} void draw_board(int n)/*画表格的函数*/ { int i, j; for(i = 20;i <=5*160+80;i += 90)/*划横线的循环*/ { line(i, 20, i,(n+1)*60+20); } for(i = 20;i <=(n+1)*60+30;i += 60)/*划纵线的循环*/ { line(20, i, 5*110+10, i); } } void main(){ struct student stu[SIZE],stu_temp;/*声明结构体变量*/ FILE *fp; /*声明文件型的指针*/ int i,j,n,m,h; int c=1;/*c为循环次数*/ h=0; fp=fopen(”c:list.txt“,”wb+“);/*打开写入文件*/ init();/*调用函数*/ draw_board(SIZE); if(fp==NULL)/*验证文件是否为空*/ { printf(”cannot open this filen“); exit(0); } printf(”input all %d students's data.n“,SIZE);/*画输入学生信息的表*/ gotoxy(17,4); printf(”stuNo“); gotoxy(29,4); printf(”name“); gotoxy(41,4); printf(”sex“); gotoxy(52,4); printf(”score“); gotoxy(63,4); printf(”address“); for(i=0;i { gotoxy(7,4*(i+2)); printf(”%d“,i); gotoxy(17,4*(i+2)); scanf(”%s“,&stu[i].stuNo); gotoxy(29,4*(i+2)); scanf(”%s“,&stu[i].name); gotoxy(41,4*(i+2)); scanf(”%s“,&stu[i].sex); gotoxy(52,4*(i+2)); scanf(”%s“,&stu[i].score); gotoxy(63,4*(i+2)); scanf(”%s“,&stu[i].address); } for(i=0;i if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) { printf(”file write error!“); exit(0); } rewind(fp); clrscr(); for(c=1;c<100;c++)/*创建一个图形界面*/ { textbackground(0); textcolor(1); gotoxy(29,7); printf(”read->1“); gotoxy(29,9); printf(”find->2“); gotoxy(29,11); printf(”delete->3“); gotoxy(29,13); printf(”insert->4“); gotoxy(29,15); printf(”modify->5“); gotoxy(29,17); printf(”plese enter j= “); scanf(”%d“,&j); clrscr(); if(j==1)/*当输入为1时,显示整个班级 {的学生信息*/ draw_board(SIZE); gotoxy(17,4); printf(”stuNo“); gotoxy(29,4); printf(”name“); gotoxy(41,4); printf(”sex“); gotoxy(52,4); printf(”score“); gotoxy(63,4); printf(”address“); for(i=0;i { fread(&stu_temp,sizeof(struct student),1,fp);出每个学生的信息*/ gotoxy(7,4*(i+2)); printf(”%d“,i); gotoxy(17,4*(i+2)); printf(”%s“,stu[i].stuNo); gotoxy(29,4*(i+2)); printf(”%s“,stu[i].name); gotoxy(41,4*(i+2)); printf(”%s“,stu[i].sex); gotoxy(52,4*(i+2)); printf(”%s“,stu[i].score); gotoxy(63,4*(i+2)); printf(”%s“,stu[i].address); } fclose(fp); /*关闭文件*/ getch();/*留在当前界面*/ clrscr();/*清屏*/ } if(j==2)/*当输入为2时,查找某个学生的 {信息*/ rewind(fp);/*移动指针到最前*/ printf(”look up the nth(n<4)student,plese enter n= :n“);/*输入要查找的学生 scanf(”%d“,&i);位置*/ clrscr(); draw_board(1);/*画表格*/ gotoxy(17,4); printf(”stuNo“); gotoxy(29,4); printf(”name“); gotoxy(41,4); printf(”sex“); gotoxy(52,4); printf(”score“); gotoxy(63,4); printf(”address“); fseek(fp,(i-1)*sizeof(struct student),0);/*打开文件查找,读出信 fread(&stu_temp,sizeof(struct student),1,fp);息*/ gotoxy(7,8); printf(”%d“,i); gotoxy(17,8); printf(”%s“,stu[i].stuNo); gotoxy(29,8); printf(”%s“,stu[i].name); gotoxy(41,8); printf(”%s“,stu[i].sex); gotoxy(52,8); printf(”%s“,stu[i].score); gotoxy(63,8); printf(”%s“,stu[i].address); } fclose(fp); getch(); clrscr(); if(j==3)/*当输入为3,删除某个学生的信息*/ { h=h-1;/*表格少画一格*/ printf(”you want delete nth student,plese enter n= “); scanf(”%d“,&n); draw_board(SIZE+h);/*调用函数画表格*/ gotoxy(17,4); printf(”stuNo“); gotoxy(29,4); printf(”name“); gotoxy(41,4); printf(”sex“); gotoxy(52,4); printf(”score“); gotoxy(63,4); printf(”address“); for(m=n;m { strcpy(stu[m].stuNo,stu[m+1].stuNo); strcpy(stu[m].name,stu[m+1].name); strcpy(stu[m].sex,stu[m+1].sex); strcpy(stu[m].score,stu[m+1].score); strcpy(stu[m].address,stu[m+1].address); } for(i=0;i { fread(&stu_temp,sizeof(struct student),1,fp);个表格*/ gotoxy(7,4*(i+2)); printf(”%d“,i); gotoxy(17,4*(i+2)); printf(”%s“,stu[i].stuNo); gotoxy(29,4*(i+2)); printf(”%s“,stu[i].name); gotoxy(41,4*(i+2)); printf(”%s“,stu[i].sex); gotoxy(52,4*(i+2)); printf(”%s“,stu[i].score); gotoxy(63,4*(i+2)); printf(”%s“,stu[i].address); } fclose(fp); getch(); clrscr(); } if(j==4)/*当输入为4时,增加一个学生 {信息*/ h=h+1; printf(”you want insert nth student,plese enter n= “); scanf(”%d“,&n); for(m=n;m {息*/ strcpy(stu[m+1].stuNo,stu[m].stuNo); strcpy(stu[m+1].name,stu[m].name); strcpy(stu[m+1].sex,stu[m].sex); strcpy(stu[m+1].score,stu[m].score); strcpy(stu[m+1].address,stu[m].address); } draw_board(1);/*调用函数画表格*/ gotoxy(7,4*2); printf(”%d“,n); gotoxy(17,4); printf(”stuNo“); gotoxy(29,4); printf(”name“); gotoxy(41,4); printf(”sex“); gotoxy(52,4); printf(”score“); gotoxy(63,4); printf(”address“); gotoxy(17,8);/*输入一个新学生的 scanf(”%s“,&stu[n].stuNo);信息*/ gotoxy(29,8); scanf(”%s“,&stu[n].name); gotoxy(41,8); scanf(”%s“,&stu[n].sex); gotoxy(52,8); scanf(”%s“,&stu[n].score); gotoxy(63,8); scanf(”%s“,&stu[n].address); gotoxy(7,8); printf(”%d“,i); gotoxy(17,8); printf(”%s“,stu[n].stuNo); gotoxy(29,8); printf(”%s“,stu[n].name); gotoxy(41,8); printf(”%s“,stu[n].sex); gotoxy(52,8); printf(”%s“,stu[n].score); gotoxy(63,8); printf(”%s“,stu[n].address); clrscr(); draw_board(SIZE+h); gotoxy(17,4); printf(”stuNo“); gotoxy(29,4); printf(”name“); gotoxy(41,4); printf(”sex“); gotoxy(52,4); printf(”score“); gotoxy(63,4); printf(”address“); for(i=0;i { fread(&stu_temp,sizeof(struct student),1,fp);表格*/ gotoxy(7,4*(i+2)); printf(”%d“,i); gotoxy(17,4*(i+2)); printf(”%s“,stu[i].stuNo); gotoxy(29,4*(i+2)); printf(”%s“,stu[i].name); gotoxy(41,4*(i+2)); printf(”%s“,stu[i].sex); gotoxy(52,4*(i+2)); printf(”%s“,stu[i].score); gotoxy(63,4*(i+2)); printf(”%s“,stu[i].address); } fclose(fp); getch(); clrscr(); } if(j==5)/*当输入为5,修改某个学生 {信息*/ printf(”you want to modify nth student information,plese enter n= “); scanf(”%d“,&n); /*输入修改的学生的位置*/ draw_board(1); draw_board(1); gotoxy(7,4*2); printf(”%d“,n); gotoxy(17,4); printf(”stuNo“); gotoxy(29,4); printf(”name“); gotoxy(41,4); printf(”sex“); gotoxy(52,4); printf(”score“); gotoxy(63,4); printf(”address“); gotoxy(17,8); /*输入新的学生信息*/ scanf(”%s“,&stu[n].stuNo); gotoxy(29,8); scanf(”%s“,&stu[n].name); gotoxy(41,8); scanf(”%s“,&stu[n].sex); gotoxy(52,8); scanf(”%s“,&stu[n].score); gotoxy(63,8); scanf(”%s“,&stu[n].address); gotoxy(7,8); clrscr(); draw_board(SIZE); gotoxy(17,4); printf(”stuNo“); gotoxy(29,4); printf(”name“); gotoxy(41,4); printf(”sex“); gotoxy(52,4); printf(”score“); gotoxy(63,4); printf(”address“); for(i=0;i { fread(&stu_temp,sizeof(struct student),1,fp); gotoxy(7,4*(i+2)); printf(”%d“,i); gotoxy(17,4*(i+2)); printf(”%s“,stu[i].stuNo); gotoxy(29,4*(i+2)); printf(”%s“,stu[i].name); gotoxy(41,4*(i+2)); printf(”%s“,stu[i].sex); gotoxy(52,4*(i+2)); printf(”%s“,stu[i].score); gotoxy(63,4*(i+2)); printf(”%s",stu[i].address); } fclose(fp);/*关闭文件*/ getch();/*保留在这个界面上*/ clrscr();/*清屏*/ } } } 题目:用C/C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。 (一)功能要求 (1)查看功能:选择此功能时,列出下列三类选择。 A 办公类 B 个人类 C 商务类,当选中某类时,显示出此类所有数据中的姓名和电话号码) (2)增加功能:能录入新数据(一个结点包括:姓名、电话号码、分类(可选项有:A 办公类 B 个人类 C 商务类)、电子邮件)。例如 杨春 *** 商务类 Chuny@126.C++om 当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 (3)拔号功能:能显示通信录中所有人姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示此人电话号码中的各个数字,并伴随相应的拔号声音。 (4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改(5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。 (二)其它要求: (1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)建议使用结构和链表等数据结构 (4)学生可自动增加新功能模块(视情况可另外加分) 以下是源代码,相应的文档为《通讯录管理系统-数据结构课程设计报告》,搜索即可 #include #define MAXSIZE 15 //联系人信息 typedef struct { string name;//姓名 string teleNum;//电话号码 int classes;//分类 string email;//电子邮件 }contacts; //链表存储结构 typedef struct LNode { contacts data;//数据域 struct LNode* next;//指针域 }LNode,*LinkList; //初始化链表 int InitList(LinkList &L){ L = new LNode;L->next = NULL;return 0;} //前插法创建链表 void CreateList_H(LinkList &L,int n){ LinkList p; for(int i = 0;i < n;i++)//根据联系人个数创建链表 { p = new LNode; cout <<“请输入联系人的姓名:”; cin >> p->data.name; cout <<“请输入联系人的电话号码:”; cin >> p->data.teleNum; cout <<“请输入联系人的分类(分类如下,输入相应序号即可)”<< endl; cout <<“1 办公类 个人类 商务类”<< endl; cin >> p->data.classes; cout <<“请输入联系人的电子邮件:”; cin >> p->data.email; p->next = L->next; L->next=p; } } //根据类别查看联系人信息 void CheckAll(LinkList L,int c)//c是联系人类别 { LinkList p;p = L->next; } cout <<“姓名tt”<<“电话号码”<< endl;//表头 while(p)//当链表没到尾部时 { } if(p->data.classes==c)//若符合类别则输出联系人姓名和电话号码 { cout << p->data.name <<“tt”<< p->data.teleNum << endl;} p=p->next;//重载函数,查看所有联系人 void CheckAll(LinkList L){ LinkList p; p=L->next; while(p) { cout << p->data.name << endl; p=p->next; } } //根据姓名查找联系人 LinkList Search(LinkList L,string name){ LinkList p; p=L->next; while(p&&p->data.name!=name)//当链表没到尾部且没找到联系人时 { p=p->next; } return p;} //判断链表中是否存在联系人c char IfExist(LinkList L,contacts c) { LinkList p; p=L->next; while(p&&p->data.name!=c.name)//根据姓名查找是否存在该联系人 { p=p->next; } if(!p)//若到达链表尾部,则不存在return 'n'; if(p->data.teleNum==c.teleNum)//若找到联系人姓名 if(p->data.classes==c.classes)//依次判断电话号码、类别、电子邮件是否相同 if(p->data.email==c.email) return 'y'; return 'n';} //获取链表的长度 int Length(LinkList L){ int i=0; LinkList p=L->next; while(p) { ++i; p=p->next; } return i;} //增加联系人 int Add(LinkList &L,contacts c){ LinkList p,s; if(Length(L)>=MAXSIZE)//判断链表长度是否达到最大值 { cout <<“存储空间已满,无法新增联系人!”<< endl; return 0;} if(IfExist(L,c)=='y')//判断输入的联系人是否已经存在{ cout <<“对不起,您输入的联系人已存在!”<< endl; return 0; } //若通讯录中不存在该联系人,则增加到通信录 p=L;s=new LNode;s->data=c;s->next=p->next;p->next=s;return 0;} //拨号功能 void Dail(LinkList L,string name){ LinkList p,s; p=L->next; s=Search(L,name);//根据姓名查找联系人所在//模拟打字机效果,输出联系人电话号码 string tele=s->data.teleNum; for(int i=0;i { char c=tele[i];Sleep(500);cout << c;} cout << endl;//播放声音 //PlaySound(“E:670.wav”,NULL,SND_FILENAME|SND_ASYNC);} //修改联系人信息 void ChangeInfo(LinkList &L,string name){ LinkList p; p=Search(L,name);//找到联系人的位置所在 cout <<“ 请输入要修改的信息(输入对应序号即可):”<< endl; cout <<“1 姓名”<< endl; cout <<“2 电话号码”<< endl; cout <<“3 分类”<< endl; cout <<“4 电子邮件”<< endl; //根据选择修改联系人信息 int elec; cin >> elec; switch(elec) { case 1: { cout <<“姓名改为:”<< endl; string newName; cin >> newName; p->data.name=newName; break;} case 2: { cout <<“电话号码改为:”< string newTele; cin >> newTele; p->data.teleNum=newTele; break;} case 3: { cout <<“分类改为(分类如下,输入相应序号即可)”; cout <<“1 办公类 个人类 商务类”<< endl; int newCalsses; cin >> newCalsses; p->data.classes=newCalsses; break;} case 4: { cout <<“电子邮件改为:”<< endl; string newEmail; cin >> newEmail; p->data.email=newEmail; break;} } } //删除联系人 void Delete(LinkList &L,string name){ LinkList p=L,s; //找到需删除联系人的前一个位置 while(p->next&&p->next->data.name!=name) { p=p->next; } s=p->next; p->next=s->next; delete s;//删除联系人 } //导入通信录 void Read(LinkList L){ LinkList p; //打开文件导入通信录 ifstream fin;fin.open(“通信录.txt”,ios::in);string s1,s2,s3,s4;fin >> s1 >> s2 >> s3 >> s4;while(!fin.eof())//当没有到文件尾时 { string s5;contacts c;fin >> c.name >> c.teleNum >> s5 >> c.email;if(s5.compare(“办公类”)==0)c.classes=1; if(s5.compare(“个人类”)==0) c.classes=2; if(s5.compare(“商务类”)==0) c.classes=3; Add(L,c);//将联系人c增加到链表中 } fin.close(); } //导出通信录 void Write(LinkList L){ } LinkList p=L->next;int l=Length(L);//打开文件写入通信录 ofstream fout(“通信录.txt”,ios::out|ios::trunc);fout <<“姓名t”<<“电话号码t”<<“分类t”<<“电子邮件 ”<< endl;for(int i=0;i case 1: { fout <<“办公类”; break; } case 2: { fout <<“个人类”; break; } case 3: { fout <<“商务类”; break; } } fout <<“t”<< p->data.email;if(i<(l-1)) fout << endl;p=p->next;} fout.close();int Menu()//主菜单 { system(“cls”);//清屏 int choice;cout< cout<<“ ***************主菜单***************n”;cout<<“ * 新增联系人 *n”;cout<<“ * 查看通信录 *n”; } cout<<“ * 拨号 *n”;cout<<“ * 修改信息 *n”;cout<<“ * 删除联系人 *n”;cout<<“ * 导入通信录 *n”;cout<<“ * 导出通信录 *n”;cout<<“ * 0 退出系统 *n”;cout<<“ ************************************n”;cout<<“ 请根据您的需求,输入相应的数字:”;cin>>choice;//输入选择 return choice;int main()//主函数 { LinkList L;InitList(L);for(;;){ switch(Menu())//根据不同选择,执行不同的功能 { case 1: { cout <<“请选择批量增加或单个增加(输入相应序号即可):”<< endl;cout <<“1 批量增加 单个增加”<< endl;int c1;cin >> c1;if(c1==1){ cout <<“请输入新增联系人的个数:”<< endl;int number;cin >> number;CreateList_H(L,number);//用前插法批量增加联系人 } else //单个增加联系人 { contacts c;cout <<“请输入联系人的姓名:”;cin >> c.name;cout <<“请输入联系人的电话号码:”;cin >> c.teleNum;cout <<“请输入联系人的分类(分类如下,输入相应序号即可)”<< endl;cout <<“1 办公类 个人类 商务类”<< endl;cin >> c.classes;cout <<“请输入联系人的电子邮件:”; cin >> c.email; Add(L,c); } system(“pause”);break; } case 2://查看通信录 { cout <<“请输入查看联系人的类别(输入相应序号即可):”<< endl;cout <<“1 办公类 个人类 商务类 ”<< endl;int c2;cin >> c2; cout <<“已有联系人如下:”<< endl; CheckAll(L,c2);//根据分类查看联系人信息 system(“pause”);break; } case 3: { cout <<“已有联系人如下:”<< endl; CheckAll(L); string name;cout <<“请输入拨号人的姓名:”<< endl;cin >> name; Dail(L,name);//根据 system(“pause”);break; } case 4: { cout <<“已有联系人如下:”<< endl;CheckAll(L);string changeName;cout <<“请输入要修改信息的联系人姓名:”<< endl;cin >> changeName;ChangeInfo(L,changeName); system(“pause”);break; } case 5: { cout <<“已有联系人如下:”<< endl; CheckAll(L); string deleteName;cout <<“请输入要删除的联系人姓名:”<< endl;cin >> deleteName; Delete(L,deleteName); cout <<“联系人”<< deleteName <<“已删除!”<< endl; system(“pause”);break; } case 6: { Read(L);//导入通信录 cout <<“成功导入通信录!”<< endl; cout <<“已导入联系人姓名如下:”<< endl; CheckAll(L); system(“pause”); break; } case 7: { Write(L);//导出通信录 cout <<“成功导出通信录!”<< endl; system(“pause”); break; } case 0: { //退出系统 cout<<“ 感谢您对本通信录管理系统的使用!”< return 0;} default: 给予提示 } } } cout<<“ 您输入的指令有误,请重新输入!”< 环植学院深入开展创先争优活动实施方案 为贯彻落实中共中央、海南省委、省委教育工委及学校党委“关于在党的基层组织和党员中深入开展创先争优活动”的决定,根据相关文件精神,结合我院实际,特制定如下实施方案。 一、总体要求 根据上级党组织要求,以邓小平理论和“三个代表”重要思想为指导,以深入学习实践科学发展观、实现海南大学又好又快发展为主题,以加快“211工程”建设、促进新海大转型升级为载体,以树立优良校风学风和立足岗位奉献为重点,坚持服务学校教学科研和建设发展大局,振奋精神,改革创新,讲求实效,统筹推进党的建设及其他经常性工作,充分发挥基层党组织的战斗堡垒作用和共产党员的先锋模范作用,在推动科学发展、构建和谐校园、服务师生员工、加强基层组织以及服务海南国际旅游岛建设的实践中建功立业。 通过开展创先争优活动,整体提高学院各级党组织和党员队伍建设水平,树立一批充分发挥战斗堡垒作用、先锋模范作用的先进党支部和优秀共产党员,为学校顺利完成“211工程”项目建设、实现转型升级,进而更好地服务海南国际旅游岛建设提供坚强的政治保证和组织保证。 二、主要内容 创先争优活动的主要内容:创建先进基层党组织、争当优秀共产党员。 1、先进基层党组织的基本要求:建设学习型党组织,努力做到“五个好”: 一是领导班子好。深入学习实践科学发展观,全面贯彻党的教育方针,认真落实党建工作责任制,团结协作,求真务实,勤政廉洁,有较强的凝聚力、战斗力和创造力。二是党员队伍好。重视教职工党员的发展和教育,党员素质优良、党员意识较强、精神面貌良好,切实发挥先锋模范作用。三是工作机制好。围绕学院改革发展开展形式多样党建活动,规章制度健全完善,管理措施到位,长效机制建立务实有效。四是工作业绩好。在开展“211工程”项目建设、深化教育教学改革、推进学校各项事业中强化党的政治领导,围绕中心、服务大局,解决问题、促进发展,改革创新、成效明显。五是群众反映好。尊重爱护师生,为师生办实事;工作措施符合师生意愿,工作作风和工作实绩师生满意度高,党组织得到师生拥护,党群干群关系密切。 学生党支部主要突出“三个好”:党员培育好。能积极、有效做好大学生党员的发展、教育和管理工作,引导广大学生树立坚定的共产主义理想和信念;组织活动好。经常组织开展健康向上、丰富多样的支部活动,支部建设充满活力;发挥作用好。能较好地发挥支部的战斗堡垒作用,以党建带团建,以党建促进其他学生组织的健康发展和优良学风、班风、校风的形成,维护校园安全稳定,在学生中具有较强的感召力。 2、优秀共产党员的基本要求:模范履行党章规定的义务,努力争当“五个模范”。教工党员要争当:(1)学习钻研的模范。认真学习实践科学发展观,刻苦钻研业务知识,努力提高自身的党性修养和能力水平,成为热爱学习、学会学习和终身学习的楷模;(2)岗位奉献的模范。忠诚于党的教育事业,具有强烈的事业心、责任感,爱岗敬业,勇挑重担,在教学、科研、管理或服务岗位上做出显著业绩;(3)为人师表的模范。养成求真务实和严谨自律的治学态度,树立高尚的道德情操和精神追求,教书育人、管理育人、服务育人,言传身教,甘为人梯,以大德树良师形象;(4)团结协作的模范。热爱集体,服务师生,团结友爱,坚决维护集体荣誉。树立大局意识和团队精神,以团队协作争创教学、科研的高层次成果,提升单位的整体管理、服务水平;(5)遵纪守法的模范。自觉遵守党的纪律,带头遵守国家法律法规及学校各项规章制度,坚持原则,弘扬正气,敢于同不良风气、违纪违法行为作斗争。 学生党员要争当努力学习的模范、实践创新的模范、自强自立的模范、尊师爱友的模范、遵纪守法的模范,努力使自己成为志向远大、品德高尚、知识丰富、能力较强的高素质的优秀学生。 三、方法步骤 按照上级组织要求,创先争优活动通过公开承诺、领导点评、群众评议、评选表彰的方式,围绕迎接建党90周年、向党的十八大献礼两个重大节点推进展开。本次活动期间跨度2010-2012年的三个学年、六个学期。整个活动分四个步骤进行。 (一)动员部署、学习准备阶段(2010年4月—6月底)。主要抓好四项工作: 1、动员部署。学院党委召开动员大会,进行工作部署。 2、制定方案。学院党委围绕学校创先争优活动的主题、载体、重点和总体要求,从本单位实际情况出发,制定切实可行的活动实施方案;党员要围绕党性修养、作风养成、履行职责、岗位奉献等方面提出参加活动的具体打算。学院党委、党支部的活动方案和党员个人的具体打算要采取会议、网络、活动专栏等方式向群众公布,重点做出承-2- 诺,接受群众监督。 3、组织学习。各党支部组织党员认真学习胡锦涛总书记在全党深入学习实践科学发展观活动总结大会上的重要讲话及学校相关文件精神,统一思想认识,积极投入到创先争优活动中来。 4、党性分析。各党支部在2010年春季学期结束前,集中一周时间,组织党员进行一次党性分析,在职党员应撰写党性分析报告,并组织群众对党员进行评议。 (二)全面创争、扎实推进阶段(2010年9月—2011年6月底)。学院党委、党支部和党员根据实施方案和个人具体打算,紧密结合实际工作,认真扎实、机动灵活地开展创先争优活动。具体围绕几项主题活动展开: 1、“师德教育”活动。在教师节前后,对教职工党员普遍进行师德师风教育,对学生党员进行优良校风学风教育,促使一批优秀共产党员成为“三育人”标兵、师德标兵或学生标兵。 2、“岗位奉献”活动。从新学期开学开始,配合学校开展“211”建设先锋、新海大创建标兵、海大之星等推选评比活动。 3、“服务群众”活动。各党支部组织党员走向基层、走向社会,开展志愿服务、结对帮扶、走访慰问等活动;合理利用寒暑假时间,搞好调查研究和社会服务,使党员在联系基层、奉献社会的过程中增强责任感、使命感。 4、“亮牌示范”活动。通过设置党员先锋岗、示范岗或挂牌上岗等形式,树立党员形象,促使党员发挥骨干、先锋模范作用。 5、“强基创先”活动。优化组织设置,创新组织形式和活动方式,加强党组织班子、制度建设,强化组织功能,推动创新发展,真正发挥学院党组织的政治保证、战斗堡垒作用,努力提高学院党组织建设的科学化水平。 2011年“七一”前,向学校党委推荐表彰先进党组织、优秀共产党员和优秀党务工作者。 (三)典型带动、全面提升阶段(2011年9月—2012年6月底)。充分发挥先进典型的示范带动作用,全面提升活动的整体工作水平。主要抓好三项工作: 1、树立先进典型。学校将确定一批“五个好”先进基层党组织和“五个模范”优秀党员、优秀党务工作者,采取组织先进典型报告会、观摩学习、宣传报道等形式,扩大先进典型影响力。 2、开展向先进典型学习活动。各党支部和全体党员,都要对照先进典型,对照目标要求和岗位职责,查找自身差距,明确努力方向,制定跟进、赶超的具体措施。 3、实施全面提升工程。对照总体要求,着眼全面提升,进一步加强党组织建设,促进提升“五个好”先进基层党组织和“五个模范”优秀党员、优秀党务工作者的比例。 2012年“七一”前,学校将根据上级组织部署,推荐表彰“2010—2012年创先争优活动”先进基层党组织、优秀共产党员、优秀党务工作者。 (四)回顾总结、完善机制阶段(2012年9月——党的十八大召开前)。围绕向党的十八大献礼,这一阶段重点抓好四项工作: 1、展示成果。配合学校开展集中展示活动成果活动。 2、搞好总结。学院党委对开展创先争优活动进行系统总结,认真总结经验、查找不足,进一步研究制定改进措施。 3、考核评议。学校党委对学院党委、党支部、党员开展创先争优活动情况进行考核,并采取适当方式组织党员、群众进行评议。 4、完善机制。对开展创先争优活动中行之有效的科学做法用制度的形式固定下来,形成创先争优的长效机制。 四、组织领导 学院成立创先争优活动领导小组,在校党委指导、院党委领导下开展具体工作。各党支部为活动的落实单位,负责具体的学习、党内分析、主题活动、总结评议等工作。 1、领导小组成员包括:组长:沈秀清;副组长:崔昌华;成员:全体党委委员、综合办主任、各党支部书记。 2、按照校党委的要求,学院创先争优活动要坚持服务大局,围绕科教中心工作、密切联系群众、经常性为主的原则,并努力形成学习先进、崇尚先进、争当先进的活动氛围和风气。 3、各党支部要组织好各项具体工作,结合实际,力求实效,以创先争优活动的成果推进学院党的建设和各项工作,促进学院又好又快发展。 环境与植物保护学院党委 2010年5月31日第二篇:C语言机票订票管理系统源代码
第三篇:c语言课程设计-学籍管理系统(含源代码)
第四篇:通讯管理系统源代码
第五篇:图书管理系统源代码