做一个小项目 C语高手来救命啊!!谢谢 我会加分的

作者&投稿:谢勉 (若有异议请与网页底部的电邮联系)
C语言高手快来救命啊!高分~

用C写了一遍你看下行不行.注意不要输入错误了,要按格式,不然会出错.
#include
#include
#include

typedef struct _employee
{
int number;
char * name;
int sex;
int age;
}em;

struct simple
{
char * name;
int age;
};

#define NUM 10
em array[NUM];
int nowCount = 0;

bool delEm(int num)
{
bool flag = false;
for(int i = 0; i < nowCount; i++)
{
if(array[i].number == num)
{
for(int j = i + 1; j < nowCount; ++j)
{
array[j-1] = array[j];

}
flag = true;
--nowCount;
}
}
return flag;
}

bool insert(em e)
{
if(nowCount < NUM)
{
array[nowCount] = e;
++nowCount;
return true;
}
return false;
}

void input(em &e)
{
printf("请输入职工编号:");
scanf("%d", &e.number);
printf("请输入职工姓名:");
e.name = (char*)malloc(15);
memset(e.name, 0, 15);
scanf("%s", e.name);
printf("请输入职工性别(1代表男,0代表女):");
scanf("%d", &e.sex);
printf("请输入职工年龄:");
scanf("%d", &e.age);
printf("
");
}

void print()
{
printf("
现在共有%d个职工的信息.
", nowCount);
for(int i = 0; i < nowCount; ++i)
{
printf("第%d个职工的信息如下:
", i + 1);
printf("职工序号:%d
", array[i].number);
printf("职工姓名:%s
", array[i].name);
printf("职工性别:%s
", (array[i].sex ? "男" : "女"));
printf("职工年龄:%d
", array[i].age);
printf("
");
}
}

void main()
{
bool flag = true;
while(flag)
{
printf("
");
printf("--------------------菜单---------------------
");
printf("1.输入职工信息
");
printf("2.显示现有职工信息
");
printf("3.删除某职工信息
");
printf("4.退出
");
printf("请输入操作代号:");
int choice;
scanf("%d", &choice);
printf("
");
switch(choice)
{
case 1:
printf("现在共有%d个职工的信息,共可以存%d个,最多还可以输入%d个
", nowCount, NUM, NUM - nowCount);
if(nowCount == NUM)
{
printf("人数已经达上限%d个.不再接受输入", NUM);
break;
}
em e;
input(e);
insert(e);
break;
case 2:
print();
break;
case 3:
int num;
printf("请输入要删除的职业序号:");
scanf("%d", &num);
if(delEm(num))
printf("删除完成
");
else
printf("删除失败
");
break;
case 4:
flag = false;
break;
default:
break;
}
}
}

argc是指参数的个数.
argv[]是一个字符串,是指参数
例如:
运行---->cmd---->就可以打开命令行窗口了.
然后用cd去到你的程式所在的目录.
然后输入test.exe c d再按回车.
test.exe是你的这个程式的名字.
c 和d就是参数了.
argc = 3;
argv[0]="test.ext"
argv[1]="c";
argv[2]="d"

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
struct record
{
char id[10];
char name[20];
char phone[20];
char adress[40];
char postcode[10];
char e_mail[30];
}student[500];
int num=0;//外部变量num为文件中的纪录数
FILE *fp;
void mainmenu();//主菜单
void newrecord();//新添纪录
void searchmenu();//查询菜单
void searchbyid();//按学号查询
void searchbyname();//按姓名查询
void searchbyphone();//按电话查询
void deletemenu();//删除菜单
void deleteall();//删除所有
void deleteone();//删除单个
void showall();//显示所有
void readfromfile();//读取文件
void writetofile();//写入文件
void deletebyid();//按学号删除
void deletebyname();//按姓名删除
void listbyid();//按学号排序
void listbyname();//按姓名排序
void listmenu();//排序菜单
void main()
{
readfromfile();
while (1)
{
mainmenu();
}
}
void readfromfile()//从文件导入
{
if((fp=fopen("student.bin","rb"))==NULL)
{
printf("\n\t\t通讯录文件不存在");
if ((fp=fopen("student.bin","wb"))==NULL)
{
printf("\n\t\t建立失败");
exit(0);
}
else
{
printf("\n\t\t通讯录文件已建立");
printf("\n\t\t按任意键进入主菜单");
getch();
return;
}
exit(0);
}
fseek(fp,0,2); /*文件位置指针移动到文件末尾*/
if (ftell(fp)>0) /*文件不为空*/
{
rewind(fp); /*文件位置指针移动到文件开始位置*/
for (num=0;!feof(fp) && fread(&student[num],sizeof(struct record),1,fp);num++);
printf("\n\t\t文件导入成功");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
printf("\n\t\t文件导入成功");
printf("\n\t\t通讯录文件中无任何纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
void mainmenu()//主菜单
{
char choic;
system("cls");
printf("\n\t\t******************** 主菜单 ********************");
printf("\n\t\t*********** 1-新添纪录 2-查询菜单 ************");
printf("\n\t\t*********** 3-删除菜单 4-记录排序 ************");
printf("\n\t\t*********** 5-保存退出 6-不保存退出***********");
printf("\n\t\t************************************************");
printf("\n\t\t请选择:");
choic=getch();
switch (choic)
{
case '1':newrecord();break;
case '2':searchmenu();break;
case '3':deletemenu();break;
case '4':listmenu();break;
case '5':writetofile();break;
case '6':exit(0);
default:mainmenu();
}
}
void searchmenu()//查询菜单
{
char choic;
system("cls");
printf("\n\t\t******************* 查询菜单 *******************");
printf("\n\t\t********** 1-显示所有 2-按学号查询 ************");
printf("\n\t\t********** 3-按姓名查询4-按电话查询 ************");
printf("\n\t\t********** 5-返回主菜单 ************");
printf("\n\t\t************************************************");
printf("\n\t\t请选择:");
choic=getch();
switch (choic)
{
case '1':showall();break;
case '2':searchbyid();break;
case '3':searchbyname();break;
case '4':searchbyphone();break;
case '5':mainmenu();break;
}
}
void deletemenu()//删除菜单
{
char choic;
if(num==0)
{
printf("\n\t\t对不起,文件中无任何纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
system("cls");
printf("\n\t\t******************* 删除菜单 *******************");
printf("\n\t\t*********** 1-删除所有 2-删除单个 ***********");
printf("\n\t\t*********** 3-返回主菜单 ***********");
printf("\n\t\t************************************************");
printf("\n\t\t请选择:");
choic=getch();
switch (choic)
{
case '1':deleteall();break;
case '2':deleteone();break;
case '3':mainmenu();break;
default:mainmenu();break;
}
}
void deleteall()//删除所有
{
printf("\n\t\t确认删除?(y/n)");
if (getch()=='y')
{
fclose(fp);
if ((fp=fopen("student.bin","wb"))==NULL)
{
printf("\n\t\t不能打开文件,删除失败");
readfromfile();
}
num=0;
printf("\n\t\t纪录已删除,按任意键返回主菜单");
getch();
return;
}
else
return;
}
void deletebyname()//按姓名删除
{
int a=0;
int findmark=0;
int j;
int deletemark=0;
int i;
char name[20];
printf("\n\t\t请输入要删除学生姓名:");
scanf("%s",name);
for (i=a;i<num;i++)
{
if (strcmp(student[i].name,name)==NULL)
{
printf("\n\t\t以下是您要删除的学生纪录:");
findmark++;
printf("\n\t\t________________________________");
printf("\n\t\t学号: %s",student[i].id);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t电话: %s",student[i].phone);
printf("\n\t\t地址: %s",student[i].adress);
printf("\n\t\te-mail:%s",student[i].e_mail);
printf("\n\t\t________________________________");
printf("\n\t\t是否删除?(y/n)");
if (getch()=='y')
{
for (j=i;j<num-1;j++) /*纪录移动,从stud数组中删除之*/
student[j]=student[j+1];
num--;
deletemark++;
printf("\n\t\t删除成功");
if((i+1)<num)
{
printf("\n\t\t是否继续删除相同姓名的同学信息?(y/n)");
if (getch()=='y')
{
a=i;
continue;
}
}
printf("\n\t\t是否继续删除?(y/n)");
if (getch()=='y')
deletebyname();
return;
}
if((i+1)<num)
{
printf("\n\t\t是否继续删除相同姓名的同学信息?(y/n)");
if (getch()=='y')
{
a=i;
continue;
}
}
}
else
continue;
}
if ((deletemark==0)&&(findmark==0))
{
printf("\n\t\t没有该同学的纪录");
printf("\n\t\t是否继续删除?(y/n)");
if (getch()=='y')
deletebyid();
return;
return;
}
else if (findmark!=0)
{
printf("\n\t\t没有重名信息");
printf("\n\t\t没有该同学的纪录");
printf("\n\t\t是否继续删除?(y/n)");
if (getch()=='y')
deletebyid();
return;
return;
}
}
void deletebyid()//按学号删除
{
int i,j;
int deletemark=0;
char id[20];
printf("\n\t\t请输入要删除学生学号:");
scanf("%s",id);
if(num==0)
{
printf("\n\t\t对不起,文件中无任何纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
for (i=0;i<num;i++)
{
if (strcmp(student[i].id,id)==NULL)
{
printf("\n\t\t以下是您要删除的学生纪录:");
printf("\n\t\t学号: %s",student[i].id);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t电话: %s",student[i].phone);
printf("\n\t\t地址: %s",student[i].adress);
printf("\n\t\te-mail:%s",student[i].e_mail);
printf("\n\t\t是否删除?(y/n)");
if (getch()=='y')
{
for (j=i;j<num-1;j++) /*纪录移动,从stud数组中删除之*/
student[j]=student[j+1];
num--;
deletemark++;
printf("\n\t\t删除成功");
printf("\n\t\t是否继续删除?(y/n)");
if (getch()=='y')
deletebyid();
return;
}
else
return;
}
continue;

}
if (deletemark==0)
{
printf("\n\t\t没有该同学的纪录");
printf("\n\t\t是否继续删除?(y/n)");
if (getch()=='y')
deletebyid();
return;
}
}
void newrecord()//添加纪录
{
printf("\n\t\t**************** 请输入学生信息 ****************\n");
printf("\n\t\t输入学号:");
scanf("%s",&student[num].id);
printf("\n\t\t输入姓名:");
scanf("%s",&student[num].name);
printf("\n\t\t输入电话号码:");

scanf("%s",&student[num].phone);
printf("\n\t\t输入地址:");
scanf("%s",&student[num].adress);
printf("\n\t\t输入邮编:");
scanf("%s",&student[num].postcode);
printf("\n\t\t输入e-mail:");
scanf("%s",&student[num].e_mail);
num++;
printf("\n\t\t是否继续添加?(Y/N):");
if (getch()=='y')
newrecord();
return;
}
void showall()//显示所有
{
int i;
system("cls");
if(num!=0)
{
printf("\n\t\t*************** 以下为通讯录所有信息************");
for (i=0;i<num;i++)
{
printf("\n\t\t学号: %s",student[i].id);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t电话: %s",student[i].phone);
printf("\n\t\t地址: %s",student[i].adress);
printf("\n\t\t邮编: %s",student[i].postcode);
printf("\n\t\te-mail:%s",student[i].e_mail);

printf("\t\t");
if (i+1<num)
{
printf("\n\t\t__________________________");
system("pause");
}
}
printf("\n\t\t************************************************");
}
else
printf("\n\t\t通讯录中无任何纪录");
printf("\n\t\t按任意键返回主菜单:");
getch();
return;
}

//按电话查询
void searchbyphone()
{
int mark=0;
int i;
int a=0;
printf("\n\t\t****************** 按电话查找 ******************");
char phone[10];
printf("\n\t\t请输入学号:");
scanf("%s",phone);
for(i=0;i<num;i++)
{
if (strcmp(student[i].phone,phone)==0)
{
printf("\n\t\t************** 以下是您查找的学生信息 **********");
printf("\n\t\t学号: %s",student[i].id);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t电话: %s",student[i].phone);
printf("\n\t\t地址: %s",student[i].adress);
printf("\n\t\te-mail:%s",student[i].e_mail);
printf("\n\t\t************************************************");
printf("\n\t\t按任意键返回主菜单:");
mark++;
getch();
return;
}
}
if (mark==0)
{
printf("\n\t\t没有改学生的信息");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
}
void searchbyname()//按姓名查询
{
int mark=0;
int i;
int a=0;
printf("\n\t\t***************** 按姓名查找 *******************");
char name[20];
printf("\n\t\t请输入姓名:");
scanf("%s",name);
for(i=a;i<num;i++)
{
if (strcmp(student[i].name,name)==0)
{
printf("\n\t\t************* 以下是您查找的学生信息 ***********");
printf("\n\t\t学号: %s",student[i].id);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t电话: %s",student[i].phone);
printf("\n\t\t地址: %s",student[i].adress);
printf("\n\t\te-mail:%s",student[i].e_mail);
printf("\n\t\t************************************************");
mark++;
if ((i+1)<num)
{
printf("\n\t\t是否继续查找相同名字的学生信息:(y/n)");
if (getch()=='y')
{
a=i;
continue;
}
else
return;
}
else
{
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
}
}
if(mark!=0)
{
printf("\n\t\t没有相同姓名的学生纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
else
{
printf("\n\t\t没有相同姓名的学生纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
}
void searchbyid()//按学号查询
{
int mark=0;
int i;
int a=0;
printf("\n\t\t****************** 按学号查找 ******************\n");
char id[10];
printf("\n\t\t请输入学号:");
scanf("%s",id);
for(i=0;i<num;i++)
{
if (strcmp(student[i].id,id)==0)
{
printf("\n\t\t************** 以下是您查找的学生信息 **********");
printf("\n\t\t学号: %s",student[i].id);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t电话: %s",student[i].phone);
printf("\n\t\t地址: %s",student[i].adress);
printf("\n\t\te-mail:%s",student[i].e_mail);
printf("\n\t\t************************************************");
printf("\n\t\t按任意键返回主菜单:");
mark++;
getch();
return;
}

}
if (mark==0)
{
printf("\n\t\t没有改学生的信息");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
}
void writetofile()//写入文件
{
int i;
if ((fp=fopen("student.bin","wb"))==NULL)
{
printf("\n\t\t文件打开失败");
}
for (i=0;i<num;i++)
{
if (fwrite(&student[i],sizeof(struct record),1,fp)!=1)
{
printf("\n\t\t写入文件错误!\n");
}
}
fclose(fp);
printf("\n\t\t通讯录文件已保存");
printf("\n\t\t按任意键退出程序\n\t\t");
exit(0);

}
void deleteone()//删除单个
{
char choic;
printf("\n\t\t1-按学号删除 2-按姓名删除");
printf("\n\t\t请选择:");
choic=getch();
switch (choic)
{
case '1':deletebyid();break;
case '2':deletebyname();break;
}
}
void listbyname()//按姓名排序
{
int i,j;
struct record tmp;
for (i=1;i<num;i++)
{
if(strcmp(student[i].name,student[i-1].name)<0)
{
tmp=student[i];
j=i-1;
do
{
student[j+1]=student[j];
j--;
}while ((strcmp(tmp.name,student[j].name)<0&&j>=0));
student[j+1]=tmp;
}
}
printf("\n\t\t排序成功,是否显示?(y/n)");
if (getch()=='y')
showall();
return;
}
void listbyid()//按学号排序
{
int i,j;
struct record tmp;
for (i=1;i<num;i++)
{
if(strcmp(student[i].id,student[i-1].id)<0)
{
tmp=student[i];
j=i-1;
do
{
student[j+1]=student[j];
j--;
}while ((strcmp(tmp.id,student[j].id)<0)&&j>=0);
student[j+1]=tmp;
}
}
printf("\n\t\t排序成功,是否显示?(y/n)");
if (getch()=='y')
showall();
return;
}
void listmenu()//排序菜单
{
char choic;
if(num==0)
{
printf("\n\t\t对不起,文件中无任何纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
system("cls");
printf("\n\t\t******************* 排序菜单 *******************");
printf("\n\t\t********** 1-按学号排序 2-按姓名排序 **********");
printf("\n\t\t********** 3-返回主菜单 **********");
printf("\n\t\t************************************************");
printf("\n\t\t请选择:");
choic=getch();
switch(choic)
{
case '1':listbyid();break;
case '2':listbyname();break;
case '3':mainmenu();break;
default:mainmenu();break;
}
}

我也运行过了..可以执行...

记得加分哦


安乡县17898724601: 高手来帮个忙!C语言做一个小系统,怎么跳回最初界面?给个思路就行. -
申尚司巴: main() {while(1){scanf("%d",&a);switch(a){case 1:fun1();case 2:fun2();}} } fun1() {/*这个函数里面在死循环里面应该是会有输入的吧.你就给用户在输入你程序需要的数据项之余再输入其他的数据表示推出这里的死循环就行了*//*比如你的死循环里给用户选择的菜单有1、2、3、4,那就再加一个选项5表示退出就可以了*/ }

安乡县17898724601: 请c语言高手帮忙 写个小程序 -
申尚司巴: #include <stdio.h>#include <string.h>void main(){int i;char buffer[80];//输入字符长度不超过80gets(buffer);for(i=0;i<strlen(buffer);i++)printf("%c",buffer[strlen(buffer)-i-1]);}测试已运行成功

安乡县17898724601: C语言高手快来救命啊!高分 -
申尚司巴: 用C写了一遍你看下行不行.注意不要输入错误了,要按格式,不然会出错. #include...

安乡县17898724601: 求助编程高手,帮忙用C语言编个小程序
申尚司巴: 已测试,测试环境VS2008,多字集是使用多字节字符集: #include <windows.h> #include <stdio.h> LRESULT CALLBACK WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { switch(uMsg) { case WM_...

安乡县17898724601: 怎么用C语言做项目 -
申尚司巴: 所谓项目,在一定的时间内,利用有限的资源和时间,完成特定的目的,这就是项目.Turbo C 是一种工具,它有它擅长的地方,也有它不擅长的地方我98年接过一个项目,用TC开发,结果失败,前前后后写了10000多行代码,只完成了一个...

安乡县17898724601: 求助,用C语言做一个小游戏(不要太复杂),最最最基础的C语言就可以,并赋予代码,谢谢! -
申尚司巴: 猜数字 超简单 去掉说明文字,也就十几行 简单说明见注释#include <stdio.h>#include <stdlib.h>#include<time.h> int main() { int i; int a; int t; printf("欢迎玩猜数字小游戏!\n"); printf("玩法介绍:\n"); printf("每次游戏会设置一个数...

安乡县17898724601: 救命啊! 哪位高手能帮我用C语言编写一个通讯录管理的程序 -
申尚司巴: 本人的C++通讯录程序代码#include#include#include#include#include#include#define SPACE "\t\t\t" using namespace std; struct Record{ string name; string tel; public: friend ostream& operator return osnametel }; friend istream& operator>>(...

安乡县17898724601: 怎么才能用c语言中的指针与数组做一个简单的项目? -
申尚司巴: 我估计有可能你的问题在于:把char t定义在了for循环里面,而不是开始就声明.vc里面,如果写c文件而不是cpp 函数里面所有的变量都要在开头声明好.如果仅仅是定义char型,我试过了,没问题. 补充答复:楼主:我把示例给你看:void ...

安乡县17898724601: C语言一个小程序怎么写 -
申尚司巴: //main.cpp//根据你的要求,在有数字相同时输出“相同的数字”,出现不是2的n次方的数字时输出“还可以化简”//没有使用链表,因为太麻烦,realloc足以满足.//#include #include #include int main() { int number=0; size_t array_length = 1; int *...

安乡县17898724601: c语言程序设计,编写一段小程序
申尚司巴:#include<stdio.h> int main() { int a[20][8]; /定义二维数组a 有20个元素存储20个选手,每个元素有8个二维元素 ,存储8个得分 int i,j; float max,min,n=0,m; printf(" 请输入得分 \n"); / 提示输入分数 for(i=0;i<20;i++) { for(j=0;j<8;j++) scanf("%f...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网