导航:首页 > 编程语言 > 总体设计程序设计组成框图

总体设计程序设计组成框图

发布时间:2023-05-16 09:12:05

1. 用 C语言 编写 综合实验 职工信息管理系统

# include <iostream>
# include <fstream>
# include <string>
# include <iomanip>
# include <stdlib.h>
using namespace std;

struct worker_inf
{
int month; //月份
int code; //工人编号
string name; //姓名
float get[4]; //基本工资,津贴,房帖,交通补贴
float pay[4]; //房枯滑租,储蓄,交通费,会费
float tax; //个人所得税
float theory_num; //应发书
float rece_num; //应扣数
float practice_num; //实发数
worker_inf *next;
};
/////////////////////////////////////////////////////////////////
class worker //定义职工类
{
private:
worker_inf *head;
void print(worker_inf *); //输出一条指定职工的工资记录,并返回该记录的指针
worker_inf *find(int); //查找条例条件的记录,并返回该记录的指针

public:
worker(){head=NULL;}
worker_inf *get_head(){return head;}
int listcount(); //统计当前链表的记录总数,并返回一个整数
void additem(int month,int code,string name,float get[4],float pay[4]); //添加一条工资记录表尾
void removeitem(int); //删除一条指定职谨败简工的工资记录
int menu(); //修改某职工工资的菜单
void changemonth(); //修改月份
void changeitem(int); //修改职工的工资信息
void list(); //输出当月全体职工的工资信息
void search(int); //输出指定编号职工的工资信息
float tax_num(); //计算职工个人所得税
float theorynumber(); //计算应发工资
float recenumber(); //计算应扣工资
float practicenumber(); //计算实发工资
};
//////////////////////////////////////////////////////////////////
int worker::listcount() //统计当前链表数,并返回一个整数
{

if(!head)return 0;
worker_inf *p=head;
int n=0;
while(p)
{n++;p=p->next;}
return n;
}
//////////////////////////////////////////////////////////////////
void worker::additem(int month,int code,string name,float get[4],float pay[4]) //添加一条工资记录到表尾
{
if(!head)
{
head=new worker_inf;
for(int i=0;i<4;i++)
{
head->get[i]=get[i];
head->pay[i]=pay[i];
}
head->code=code;
head->month=month;
head->name=name;
head->next=NULL;
return;
}
worker_inf *t=head;
while(t && t->code!=code)
t=t->next;
if(t)
{
cout<<"操作失败:编号为"<<code<<祥裤"的记录已经存在!"<<endl;
return;
}
worker_inf *p=head;
while(p->next)p=p->next;
worker_inf *p1=new worker_inf;
p1->code=code;
for(int i=0;i<4;i++)
{
p1->get[i]=get[i];
p1->pay[i]=pay[i];
}
p1->code=code;
p1->month=month;
p1->name=name;
p1->next=NULL;
p->next=p1;
return;
}
////////////////////////////////////////////////////////////////////
void worker::removeitem(int code) //删除一条指定职工的工资记录
{
worker_inf *t=find(code);
if(!t)return;
worker_inf *p=head;//如果要删除的记录位于表头
if(head==t)
{
head=head->next;
delete p;
cout<<"成功删除编号为"<<code<<"的记录!"<<endl<<endl;
return;
}
while(p->next!=t)p=p->next;
worker_inf *p1=p->next;
p->next=p1->next;
delete p1;
cout<<"成功删除编号为"<<code<<"的记录!"<<endl<<endl;
return;
}
////////////////////////////////////////////////////////////////
int worker::menu() //修改某一职工信息的菜单
{
int select=-1;
cout<<"\t\t\t\t\t\t**************修改菜单**************"<<endl<<endl;
cout<<"1.基本工资"<<endl<<endl;
cout<<"2.津贴"<<endl<<endl;
cout<<"3.房帖"<<endl<<endl;
cout<<"4.交通补贴"<<endl<<endl;
cout<<"5.房租"<<endl<<endl;
cout<<"6.储蓄"<<endl<<endl;
cout<<"7.交通费"<<endl<<endl;
cout<<"8.会费"<<endl<<endl;
cout<<"0.退出修改系统"<<endl<<endl;
cout<<"[请选择(输入相应数字)]:";
cin>>select;
if(select<0||select>9)
{
cout<<"对不起您输入错误!请重新输入【0-9】:"<<endl;
cin>>select;
}
return select;
}
/////////////////////////////////////////////////////////////////
int menu();
void worker::changeitem(int code) //修改某职工部分工资信息
{
worker_inf *p=find(code);
if(!p){cout<<"不存在职工编号为"<<code<<"的职工工资信息"<<endl;return;}
int select;
while(1)
{
float m;
select=menu();
if(select==0){system("cls");break;}
cout<<"请输入修改后的值";
cin>>m;
int n;
if(select<=4){
n=select-1;
p->get[n]=m;}
else{
n=select-5;
p->pay[n]=m;}
tax_num();
theorynumber();
recenumber();
practicenumber();
cout<<"修改成功"<<endl;
}
}
////////////////////////////////////////////////////////////////////
void worker::changemonth() //修改月份
{
worker_inf *p=head;
while(p)
{
if(p->month==12)p->month=1;
else
p->month++;
p=p->next;
}
}
//////////////////////////////////////////////////////////////////////
void worker::print(worker_inf *p)//输出worker_inf制定的记录
{
cout.precision(0);
cout<<p->month<<" ";
cout<<p->code<<" ";
cout<<p->name<<"\t";
for(int i=0;i<4;i++)
{cout<<setiosflags(ios::fixed)<<p->get[i]<<"\t";}
for(int j=0;j<4;j++)
{cout<<p->pay[j]<<"\t";}
cout<<p->tax<<"\t";
cout<<p->theory_num<<"\t";
cout<<p->rece_num<<"\t";
cout<<p->practice_num<<endl<<endl;
return;
}

///////////////////////////////////////////////////////////////////////
void worker::list() //列出当前链表中的所有记录
{
if(listcount==0)
{
cout<<"错误:当前的列表为空!"<<endl;
return;
}
worker_inf *p=head;
cout<<"共有记录:"<<listcount()<<endl;
cout<<"月份\t编号\t姓名\t基本工资\t津贴\t房帖\t交通补贴\t房租\t储蓄\t交通费\t会费\t个人所得税\t应发工资\t应扣工资\t实际工资"<<endl;
while(p)
{
print(p);
p=p->next;
}
cout<<endl;
return;
}
/////////////////////////////////////////////////////////////////////////
void worker::search(int code) //在当前链表查找指定记录并输出
{
cout<<"searching....."<<endl;
worker_inf *p=find(code);
if(p)
{
cout<<"月份\t编号\t姓名\t基本工资\t津贴\t房帖\t交通补贴\t房租\t储蓄\t交通费\t会费\t个人所得税\t应发工资\t应扣工资\t实际工资"<<endl;
print(p);
}
cout<<endl;
}
//////////////////////////////////////////////////////////////////////////
worker_inf *worker::find(int code) //查找条例条件的记录,并返回该指针
{
if(listcount==0)
{
cout<<"错误:当前列表为空!"<<endl;
return NULL;
}
worker_inf *p=head;
while(p)
{
if(p->code==code)break;
p=p->next;
}
if(!p)
{
cout<<"错误:找不到该记录!\n";
return NULL;
}
return p;
}
//////////////////////////////////////////////////////////////////////////
float worker::theorynumber() //计算应发数
{
int i;
if(listcount()==0)
{
cout<<"错误:当前的列表为空!"<<endl;
return -1;
}
float sum;
worker_inf *p=head;
while(p)
{
sum=0;
for(i=0;i<4;i++)
sum+=p->get[i];
p->theory_num=sum;
p=p->next;
}
return 0;
}
//////////////////////////////////////////////////////////////////
float worker::tax_num() //计算个人所得税
{
if(listcount==0)
{
cout<<"错误:当前的列表为空!"<<endl;
return -1;
}
worker_inf *p=head;
while(p)
{
float s;
s=p->theory_num;
if(s<=800)
p->theory_num=0;
else if(s<=2000) p->theory_num=(s-800)*0.05;
else if(s<=5000)
p->theory_num=(s-2000)*0.1+60;
else p->theory_num=(s-5000)*0.2+360;
p=p->next;
}
return 0;
}
///////////////////////////////////////////////////////////////////////
float worker::recenumber() //计算应扣数
{
int i;
if(listcount==0)
{
cout<<"错误:当前的列表为空!"<<endl;
}
float sum;
worker_inf *p=head;
while(p)
{
sum=0;
for(i=0;i<4;i++)
sum+=p->pay[i];
p->rece_num=p->tax+sum;
p=p->next;
}
return 0;
}
/////////////////////////////////////////////////////////////////////////
float worker::practicenumber() //计算实发数
{
if(listcount()==0)
{
cout<<"错误:当前的列表为空!"<<endl;
return -1;
}
worker_inf *p=head;
while(p)
{
float a,b;
a=p->theory_num;
b=p->rece_num;
p->practice_num=a-b;
p=p->next;
}
return 0;
}
////////////////////////////////////////////////////////////////////////////
worker worker; //定义全局变量
int menu()
{
int select=-1;
cout<<"*****************主菜单***********************"<<endl<<endl;
cout<<"1.添加职工信息;"<<endl<<endl;
cout<<"2.删除职工信息;"<<endl<<endl;
cout<<"3.修改职工的工资信息;"<<endl<<endl;
cout<<"4.按职工编号查找记录;"<<endl<<endl;
cout<<"5.列出所有记录;"<<endl<<endl;
cout<<"6.从数据文件导入当月工资信息;"<<endl<<endl;
cout<<"7.将当月工资信息导出到磁盘文件;"<<endl<<endl;
cout<<"0.安全退出系统;"<<endl<<endl;
cout<<"[请选择(输入相应的数字)]:";
cin>>select;
return select;
}
/////////////////////////////////////////////////////////////////////////////
char exit()
{
char s;
cout<<"确定要退出程序吗?[Y/N]:";
cin>>s;
return s;
}
//////////////////////////////////////////////////////////////////////////////
void input(int *month,int*code,string *name,float get[4],float pay[4]) //输入职工信息
{
cout<<"请输入月份 编号 姓名 基本工资 津贴 房帖 交通补贴 房租 储蓄 交通费 会费:"<<endl;
cin>>*month;
cin>>*code;
if(*code==-1)return;
cin>>*name>>get[0]>>get[1]>>get[2]>>get[3]>>pay[0]>>pay[1]>>pay[2]>>pay[3];
return;
}
///////////////////////////////////////////////////////////////////////////////
void addnew() //增加记录
{
int month=0,code=0;float get[4]={0},pay[4]={0};
string name="";
cout<<endl<<"当输入的职工编号为-1时表示输入结束。"<<endl;
input(&month,&code,&name,get,pay);
while(code!=-1)
{
worker.additem(month,code,name,get,pay);
worker.tax_num();
worker.theorynumber();
worker.recenumber();
worker.practicenumber();
input(&month,&code,&name,get,pay);
}
return;
}
////////////////////////////////////////////////////////////////////////////////
void dofind() //按职工编号查找
{
int code;
cout<<endl<<"当输入的编号为-1时表示结束输入."<<endl;
do
{
cout<<"请输入要查找的职工的编号:";
cin>>code;
if(code==-1)continue;
worker.search(code);
}while(code!=-1);
return;
}
/////////////////////////////////////////////////////////////////////////////////
void dodelete() //删除职工信息
{
cout<<endl<<"当输入的编号为-1时表示输入结束."<<endl;
int code;
do
{
cout<<"请输入要删除的职工的编号:";
cin>>code;
if(code==-1)continue;
worker.removeitem(code);
}while(code!=-1);
return;
}
///////////////////////////////////////////////////////////////////////////////////
void domodify() //修改职工信息
{
int code;
cout<<"当输入职工编号为-1时表示结束修改"<<endl;
while(1){
cout<<"请输入所需修改职工编号";
cin>>code;
if(code==-1)return;
else
worker.changeitem(code);
}
return;
}
///////////////////////////////////////////////////////////////////////////////////
void SaveFilethism()//将当月工资信息写入文件
{
worker_inf *p;
char name[20];
fstream iofile;
int i=0;
iofile.open("Worker_5th.dat",ios::out|ios::binary);
if(!iofile)
{
cerr<<"open error!"<<endl;
abort();
}
p=worker.get_head();
while(p)
{
p->name.(name,20,0);
name[p->name.length()]=0;
iofile.write((char *) &p->code,sizeof(int));
iofile.write((char *) &p->month,sizeof(int));
iofile.write((char *) name,20);
for(int i=0;i<4;i++)
{
iofile.write((char *) &p->get[i],sizeof(float));
}
for(int j=0;j<4;j++)
{
iofile.write((char *) &p->pay[j],sizeof(float));
}
p=p->next;
}
iofile.close();
cout<<"成功将工资信息存入文件"<<endl;
}
////////////////////////////////////////////////////////////////////////
void Loadfilethism() //读取当月全体职工的工资信息文件
{
int month,code;
char name[20]="";
float get[4],pay[4];
fstream iofile;
int i=0;
iofile.open("Worker_5th.dat",ios::in|ios::binary);
if(!iofile)
{
cout<<"数据文件不存在,请先建立该文件"<<endl;
return;
}
if(iofile.eof())
{
cout<<"数据库为空,请先添加数据"<<endl;
iofile.close();
}
else
{
while(iofile.peek()!=EOF)//peek()是取文件当前指针,EOF是文件尾标符
{
iofile.read((char *) &code,sizeof(int));
iofile.read((char *) &month,sizeof(int));
iofile.read((char *) name,20);
for(int i=0;i<4;i++)
{
iofile.read((char *) &get[i],sizeof(float));
} for(int j=0;j<4;j++)
{
iofile.read((char *) &pay[j],sizeof(float));
}
worker.additem(code,month,name,get,pay);
}
worker.tax_num();
worker.theorynumber();
worker.recenumber();
worker.practicenumber();
iofile.close();
cout<<"成功导入工资信息"<<endl;
}
}
/////////////////////////////////////////////////////////////////////////
void list()
{
worker.list();
}
/////////////////////////////////////////////////////////////////////////
int main()
{
cout<<"******************欢迎进入职工工资管理系统*******************"<<endl<<endl;
int select;
char s;
while(1)
{
select=menu();
switch(select)
{
case 0: //退出程序
s=exit();
if(s=='y'||s=='Y') return 0;
break;
case 1: //增加新记录
addnew();
break;
case 2: //删除记录
dodelete();
break;
case 3: //修改记录
domodify();
break;
case 4: //按条件查找
dofind();
break;
case 5: //列出全部记录
list();
break;
case 6: //导入当月职工记录
Loadfilethism();
break;
case 7: //将职工记录存入磁盘
SaveFilethism();
break;
default:
cout<<"此输入无效!"<<endl;
}
}
return 0;
}

2. 用C语言编辑程序:教小学生学算术。

#include<stdlib.h>
#include<graphics.h>
#include<conio.h>
#include<stdio.h>

int n;

void voice(void);

void welcome_text();
void c_text();

int gwjj();

int swjj();

int gwcc();

int swcc();

int szhh();

void graph()
{ clrscr();
textcolor(YELLOW);
gotoxy(10,10);
cprintf("*********************************************************");
gotoxy(10,11);
cprintf("*");
gotoxy(10,12);
cprintf("*");
gotoxy(10,13);
cprintf("*");
gotoxy(10,14);
cprintf("*");
gotoxy(10,15);
cprintf("*");
gotoxy(10,16);
cprintf("*");
gotoxy(10,17);
cprintf("*");
gotoxy(10,18);
cprintf("**********************************************************");
gotoxy(67,10);
cprintf("*");
gotoxy(67,11);
cprintf("*");
gotoxy(67,12);
cprintf("*");
gotoxy(67,13);
cprintf("*");
gotoxy(67,14);
cprintf("*");
gotoxy(67,15);
cprintf("*");
gotoxy(67,16);
cprintf("*");
gotoxy(67,17);
cprintf("*");
}

void choose()
{textcolor(RED);
gotoxy(25,11);
cprintf("Welcome to Pupil's CAI System");
textcolor(11);
gotoxy(35,12);
cprintf("MENU");
textcolor(WHITE);
gotoxy(11,13);
cprintf("Ge wei jia jian(press 1)");
gotoxy(39,13);
cprintf("Shi wei jia jian(press 2)");
gotoxy(11,15);
cprintf("Ge wei cheng chu(press 3)");
gotoxy(39,15);
cprintf("Shi wei cheng chu(press 4)"昌梁扮);
gotoxy(27,17);
cprintf("si ze hun he (press 5)");
}

void main()
{ int c,l1,l2,l3,l4,l5;

graph();
choose();
printf("\r\n\n\n\n");

scanf("%d",&c);

switch(c)
{case 1:clrscr();l1=gwjj();if(l1==0) break;
case 2:clrscr();l2=swjj();if(l2==0) break;
case 3:clrscr();l3=gwcc();if(l3==0) break;
case 4:clrscr();l4=swcc();if(l4==0) break;
case 5:clrscr();l5=szhh();if(l5==0) break;
}
graph();
choose();
}

int gwjj()
{ int k1,k2,k,t=0,f=0,p,v,l1,a;
welcome_text();
printf("how many subject do you want to do?\n");
scanf("渣启%d",&n);
do
{for(p=0;p<n;p++)
{ k1=rand()%10;
k2=rand()%10;
if(rand()%2)
printf("耐灶%d+%d= ",k1,k2);
else
{if(k1<k2){ a=k2;k2=k1;k1=a;}
printf("%d-%d= ",k1,k2);
k2=-k2;
}
scanf("%d",&k);
if(k==k1+k2)
{t++;printf("Very good,you are right!\n");}
else
{f++;
printf("Sorry,you answer is wrong,you could input again:");voice();
scanf("%d",&k);
if(k!=k1+k2)
{k=k1+k2;
printf("The answer is:%d\n",k);
}
else
printf("Now you answer is true\n");
}
}
v=(t/n)*100;
if(v>=80)
{ c_text();
scanf("%d",&l1);
if(l1==1)return 1;
else return 0;
}
else
{printf("You should try again,are you?1 yes,0 no\n");
scanf("%d",&l1);
if(l1==1)continue;
else
return 0;
}
}while(1);
}
int swjj()
{int k1,k2,k,t=0,f=0,v,p,l2,a;
welcome_text();
printf("how many subject do you want to do?\n");
scanf("%d",&n);
do
{ for(p=0;p<n;p++)
{k1=rand()%100;
k2=rand()%100;
if(rand()%2)
printf("%d+%d= ",k1,k2);
else
{ if(k1<k2){a=k2;k2=k1;k1=a;}
printf("%d-%d= ",k1,k2);
k2=-k2;
}
scanf("%d",&k);
if(k==k1+k2)
{t++;printf("Very good,you are right!\n"); }
else
{f++;
printf("Sorry,you answer is wrong,you could input again:");voice();
scanf("%d",&k);
if(k!=k1+k2)
{k=k1+k2;
printf("The answer is:%d\n",k);
}
else
printf("Now your answer is true!\n");
}
v=(t/n)*100;
if(v>=80)
{c_text();
scanf("%d",&l2);
if(l2==1)return 1;
else return 0;
}
else
{printf("You should try again,are you?1 yes,2 no\n");
scanf("%d",&l2);
if(l2==1)continue;
else
return 0;
}
}
}while(1);
}
int gwcc()
{int k1,k2,k,t=0,f=0,v,p,l3,a=0;
welcome_text();
printf("how many subject do you want to do?\n");
scanf("%d",&n);
do
{for(p=0;p<n;p++)
{k1=rand()%10;
k2=rand()%10;
if(rand()%2)
printf("%d*%d= ",k1,k2);
else
{k2=k2+1;
k1=k1*k2;
printf("%d/%d= ",k1,k2);
a=1;
}
scanf("%d",&k);
if(a==0)
{if(k==k1*k2)
{t++;printf("Very good,you are right!\n");}
else
{f++;
printf("Sorry,you answer is wrong,you could input again:");
voice();
scanf("%d",&k);
if(k!=k1*k2)
{k=k1*k2;
printf("The answer is:%d\n",k);
}
else
printf("Now your answer is true!\n");
}
}
else
{if(k==k1/k2){t++;printf("Very good,you are right!\n");}
else
{ f++;
printf("Sorry,you answer is wrong,you could input again:");
voice();
scanf("%d",&k);
if(k!=k1/k2)
{k=k1/k2;
printf("The answer is:%d",k);
}
else
printf("Now your answer is true!\n");
}
}
}
v=(t/n)*100;
if(v>=80)
{c_text();
scanf("%d",&l3);
if(l3==1) return 1;
else return 0;
}
else
{printf("You should try again,are you?1 yes,0 no\n");
scanf("%d ",&l3);
if(l3==1)continue;
else
{return 0;}
}
}while(1);
}
int swcc()
{ int k1,k2,k,t=0,f=0,p,v,l4,a=0;
welcome_text();
printf("how many subject do you want to do?\n");
scanf("%d",&n);
do
{ for(p=0;p<n;p++)
{
k1=rand()%100;
k2=rand()%100;
if(rand()%2)
printf("%d*%d= ",k1,k2);
else
{k2=k2+1;
k1=k2*k1;
printf("%d/%d= ",k1,k2);
a=1;
}
scanf("%d",&k);
if(a==0)
{if(k==k1*k2)
{t++;printf("Very good,you are right!\n");}
else
{f++;
printf("Sorry,you answer is wrong,you could input again:");
voice();
scanf("%d",&k);
if(k==k1*k2)
{k=k1*k2;
printf("The anwser is:%d",k);
}
else
printf("Now your answer is true!\n");
}
}
else
{
if(k==k1/k2)
{t++;printf("True\n");}
else
{f++;printf("Wrong\n");voice();}
}
}
v=(t/n)*100;
if(v>=80)
{c_text();
scanf("%d",&l4);
if(l4==1) return 1;
else return 0;
}
else
{printf("You should try again,are you?1 yes,0 no\n");
scanf("%d",&l4);
if(l4==1)continue;
else
return 0;
}
}while(1);
}
int szhh()
{ int k1,k2,t=0,f=0,p,v,k,x,l5;
printf("How many subject do you want to do?/n");
scanf("%d",&n);
do
{ for(p=0;p<n;p++)
{k1=rand()%10;
k2=rand()%10;
if(rand()%2)
{printf("%d*%d-%d= ",k1,k2,k1);
scanf("&d",&k);
if(k==k1*k2-k1)
{t++;printf("Very good,you are right!\n"); }
else
{f++;
printf("sorry,your answer is wrong,you could input again:");
scanf("%d",&k);
if(k!=k1*k2-k1)
{x=k1*k2-k1;
printf("The answer is:%d\n",x);
}
else
{printf("Now your answer is true\n");}
}
}
else
{if(k1>k2)
{k2=k2+1;
k1=k2*k1;
printf("%d+%d/%d= ",k2,k1,k2);
scanf("%d",&k);
if(k==k2+k1/k2)
{t++;printf("Very good,you are right!\n");}
else
{f++;
printf("Sorry,your answer is wrong,you could input again:");
scanf("%d",&k);
if(k!=k2+k1/k2)
{x=k2+k1/k2;
printf("the answer is:%d\n",x);
}
else
{printf("This time your answer is true\n"); }

}
}
else
{k1=k1+1;
k2=k1*k2;
printf("%d-%d/%d= ",k2,k2,k1);
scanf("%d",&k);
if(k==k2-k2/k1)
{t++;printf("Very good,you are right!\n");}
else
{f++;
printf("Sorry,your answer is wrong,you could input again:");
scanf("%d",&k);
if(k!=k2-k2/k1)
{x=k2-k2/k1;
printf("The answer is:%d\n",x);
}
else
{printf("This time your answer is true\n");}
}
}
}
}
v=(t/n)*100;
if(v>=80)
{c_text();
scanf("%d",&l5);
if(l5==1) return 1;
else return 0;
}
else
{printf("You should try again,are you?1 yes,0 no\n");
scanf("%d ",&l5);
if(l5==1)continue;
else
{return 0;}
}
}while(1);
}

void voice()
{sound(500);
delay(100000);
nosound();
}

void welcome_text()
{textcolor(RED);
gotoxy(2,2);
cprintf("Welcome Here:\r\n");
}

void c_text()
{textcolor(RED);
cprintf("Congratulations,whether go to next step?1 yes,0 no\n");
}

3. 挑战c-free

这些事情还是应该自己做!

4. 用C语言设计一个简单计算器的课程设计(希望能尽可能的详细,多一些)

//名字记不太清了,这个叫递归下降算法,但这个算法肯定是首先在编译原理中的,主要用在
//各种编译器中。就是现扫描整个表达式字符串,把其中的运算符找出来,判断它们的优先级
//然后按从左到右的顺序先计算把优先级低的运算符和它两边的数据压入,这样循环做过以后
//再从头取出一个一个计算,表达式的结构类似与二叉树,遍历二叉树后把结果存在连表中供
//计算。你这个程序问题好像比较多啊。用的数据结构类型和函数名根本就不配套
#include <stdio.h>
struct s_node //节点结构体
{
int data;

struct s_node *next;
};
typedef struct s_node s_list;
typedef s_list *link;
link operator=NULL;
link operand=NULL;

link push(link stack,int value) //向链表添加数据
{
link newnode;

newnode=(link) malloc(sizeof(s_list));
if(!newnode)
{
printf("\nMemory allocation failure!!!");
return NULL;
}
newnode->data=value;
newnode->next=stack;
stack=newnode;
return stack;
}

link pop(link stack,int *value) //从链表取出数据
{
link top;
if(stack !=NULL)
{
top=stack;
stack=stack->next;
*value=top->data;
free(top);
return stack;
}
else
*value=-1;
}

int empty(link stack) //判断链表是否为空
{
if(stack==NULL)
return 1;
else
return 0;

}

int is_operator(char operator) //判断是否是运算符号
{
switch (operator)
{
case '+': case '-': case '*': case '/': return 1;
default:return 0;
}
}

int priority(char operator) //判断运算符优先级
{
switch(operator)
{
case '+': case '-' : return 1;
case '*': case '/' : return 2;
default: return 0;
}
}

int two_result(int operator,int operand1,int operand2) //计算数值,计算器的核心
{
switch(operator)
{
case '+':return(operand2+operand1);
case '-':return(operand2-operand1);
case '*':return(operand2*operand1);
case '/':return(operand2/operand1);
}
}

void main()
{
char expression[50];
int position=0;
int op=0;
int operand1=0;
int operand2=0;
int evaluate=0;

printf("\nPlease input the inorder expression:");
gets(expression);

while(expression[position]!='\0'&&expression[position]!='\n')
{
if(is_operator(expression[position]))
{
if(!empty(operator))
while(priority(expression[position])<= priority(operator->data)&&
!empty(operator))
{
operand=pop(operand,&operand1);
operand=pop(operand,&operand2);
operator=pop(operator,&op);
operand=push(operand,two_result(op,operand1,operand2));
}
operator=push(operator,expression[position]);
}
else
operand=push(operand,expression[position]-48);
position++;
}
while(!empty(operator))
{
operator=pop(operator,&op);
operand=pop(operand,&operand1);
operand=pop(operand,&operand2);

operand=push(operand,two_result(op,operand1,operand2));
}
operand=pop(operand,&evaluate);
printf("The expression [%s] result is '%d' ",expression,evaluate);
getch();
}

5. 学生信息管理系统设计 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一

北科大? qq122465000 有问题可以问我
我的自己弄得 你试试 我科大的

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
struct student{
int id;
char name[10];
int age;
char sex[3];
int year;
int month;
int day;
char address[100];
char email[100];
}st[50];
int i=0;
void shuru() //输入学员信息函数
{
char a;
do{
printf("\n请输入学号:");
scanf("%d",&st[i].id);
fflush(stdin);
printf("\n请输入姓名:");
gets(st[i].name);
printf("请输入年龄:");
scanf("%d",&st[i].age);
printf("\n请输入性别:");
桐铅此scanf("%s",&st[i].sex);
fflush(stdin);
printf("\n请输入出生年,月,日:");
scanf("%d,%d,%d",&st[i].year,&st[i].month,&st[i].day);
fflush(stdin);
printf("\n请输入地址:");
scanf("%s",&st[i].address);
printf("\n请输入email:");
scanf("%s",&st[i].email);
printf("\n是否继续输入另外一个学员信息?(y/n)");
fflush(stdin);
a=getchar();
i++;
}while(a=='y' && i<=50);

}

void xianshi() //显示输入后的学员信息函数
{
int j;
for(j=0;j<i;j++)
printf("学号\t%d\n姓名\t%d\局迅n性别\t%s\n出生日期\t%d-%d-%d\n地址\t%s\nemail\t%s\n",st[j].id,st[j].name,st[j].sex,st[j].year,st[j].month,st[j].day,st[j].address,st[j].email);
}

void paixu() //按学号分从大到小排序函数
{
int j,k;
int temp;
for(j=0;j<i;j++)
{
for(k=0;k<i-1-j;k++)
{
if(st[k].id>st[k+1].id)
{
temp=st[k].id;
st[k].id=st[k+1].id;
st[k+1].id=temp;
}
}
}
xianshi(); //排序后输出
}

void chazhao() //查找某个学员的信息函数
{
int m;
char name[20],b;
do
{
printf("\n请输入想查找的学员姓名:");
fflush(stdin);
gets(name);
for(m=0;m<i;m++)
{
if(strcmp(name,st[m].name)==0)
{
printf("\n\t\t您查找的学员在第%d个位置找到了!!!\n",m+1);
break;
}
}
if(m>=20)
printf("\n\t\t没有找到这个学员!!!\n");
else
{
printf("学号\t%d\n姓名\t%d\n性别\t%s\n出生日期\t%d-%d-%d\n地址\t%s\nemail\t%s\n",st[m].id,st[m].name,st[m].sex,st[m].year,st[m].month,st[m].day,st[m].address,st[m].email);
}
printf("\n是否查找另一个学员的信息?(y/n)");
fflush(stdin);
b=getchar();

激腊}while(b=='y');

}

void shanchu() //删除学员信息函数
{
char name[20],c;
int a,b;
do
{
printf("\n请输入要删除的学员姓名:\n");
fflush(stdin);
gets(name);
for(a=0;a<i;a++)
{
if(strcmp(name,st[a].name)==0)
break;
}

for(b=a;b<i;b++)
st[b]=st[b+1];
if(a>i)
printf("\t\t没有找到这个学员!!!\n");

else
{
i--;
xianshi();
}

printf("\n是否继续删除另一个学员信息?(y/n) ");
fflush(stdin);
c=getchar();
}while(c=='y');

}

void main() //主函数
{
int change;
do{
system("cls");
printf("============================学员信息管理系统===================================\n");
printf("\t\t\t一: 输入学员信息\n");
printf("\t\t\t二: 显示学员信息\n");
printf("\t\t\t三: 查找学员信息\n");
printf("\t\t\t四: 删除学员信息\n");
printf("\t\t\t五: 按学号排序信息\n");
printf("\t\t\t六: 退出程序\n");
fflush(stdin);
printf("\t\t\t请输入功能选项:");
scanf("%d",&change);
switch(change)
{
case 1:
shuru(); break;
case 2:
xianshi(); break;
case 3:
chazhao(); break;
case 4:
shanchu(); break;
case 5:
paixu(); break;
case 6:
break;
}
getch();
}while(change!=6);
}

6. C语言中程序设计组成框图与流程图的区别

设计组成框图其实就是模块图,主要是表示软件的模块结构及模块间的关系;
程序流程图则表示的是程序的执行流程;
还有数据流程图表示的是数据的加工情况。

7. 系统组成框图怎么画

系统组成框图画法如下:

1、首先需要把文字写上,添加边框和底纹。

2、特殊符号用插入里面的特殊符号。

3、使用MATLAB软件的simulation画系统方框图。

系统结构图是对软件系统结构的总体设计的图形显示,在需芦模缓求分析阶段,已经从系统开发的陪模角度出发,把系统按功能逐次分割成层次结构,使每一部分完成简单的功能且各个部分之间又保持一定的联系,这就是功能设计。在设计阶段,基于这个功能的层次结构把各个部分组合起来成为系统。结构化设计方法使用的描述方式是系统结构图,也称结构图或控制结构图。它表示了一个系统(或功能模块)的层次分解关系,模块之间的调用关系,以及模块之间数据流和控制流信息的传递关系系统结构图反映的是系统中模块的码纳调用关系和层次关系,谁调用谁,有一个先后次序(时序)关系。所以系统结构图既不同于数据流图,也不同于程序流程图。

8. 单片机总体设计框图怎么画

大概是这样画的
1开始,2开发键闹板块初始州汪化,3点亮第一个LED,4延时1S,5左移经过8次,是的话转到第3步,册亮仔否的话po左移一位,转到第5步。

9. C++学习问题

要看你有没有决心啦!
你只要完完整整的做几个课程设计,基本上你就学会了!
课程设计题目蛮多的!
你可以自己搜搜,也可做下面的!做完后在搜搜答案,看看别人的代码与自己的不同,还有自己的代码可以改进的地方!
C语言课程设计题目

学生选题说明

以学院所发课程设计要求为准,请同学们仔细阅读。

C语言课程设计

设计要求与设计报告

设计要求:

可自己选定一题目,限1人选的题目只能由1人单独完成,限2人选的题目可由1-2人完成。

模块化程序设计l

锯齿型书写格式l

必须上机调试通过

设计报告格式:

1、设计目的

2、总体设计(程序设计组成框图、流程图)

3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)

4、调腊神试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施

5、源程序清单和执行结果:清单中应有足够的注释

检查要求:

1、每个人必须有可运行的程序(学期末检查);

2、每个人必须交《C语言课程设计报告》(打印稿)

打分标准:

1、根据平时上机考勤;注重平时上机成绩,教师要不定轮乱亏期检查学生进度,学生不得以自己有私人电脑为借口而不来上机。

2、根据程序运行结果;

3、根据《C语言课程设计报告》,学生能对自己的程序面对教师提问并能熟练地解释清楚

以上三项缺一不可,否则不能到得相应学分

1、职工信息管理系统设计(限最多2人完成)

职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能:

系统以菜单方式工作v
职工信息录入功能(职工信息用文件保存)--输入v
职工信息浏览功能 --输出v
查询和排序功能:(至少一种查询方式) --算法v
l 按工资查询
l 按学历查询等
职工信息删除、修改功能(任选项)v

2、图书信息管理系统设计(限最多2人完成)

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:

系统以菜单方式工作v

图书信息录入功能(图书信息用文件保存)--输入v

图书信息浏览功能--输出v

查询和排序功能:(至少一种查询方式)--算法v

l 按书名查询

l 按作者名查询

图书信息的删除与修改(可选项)v

3、学生信息管理系统设计(限最多2人完成)

学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:

系统以菜单方式工作

学生信息录入功能(学生信息用文件保存)---输入

学生信息浏览功能---输出

查询、排序功能---算法

按学号查询

按姓名查询

学生信息的删除与修改(可选项)

4、学生选修课程系统设计(限最多2人完成)

假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能:

系统以菜单方式工作v

课程信息录入功能(课程信息用文件保存)--输入v

课程信息浏览功能--输出v

查询功能:(至少一种查询方式)--算法v

按学分查询l

按课程性质查询l

学生选修课程(可选项)v

5、销售管理系统 (限最多2人完成)

某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:

1)销售员的代号

2)产品的代号

3)这种产品的当天的销售额

每位销售员每天可能上缴0-5张便条。假设,收集到了上个月的所有便条,编写一陪告个处理系统,读取上个月的销售情况(自己设定),进行如下处理。

1)计算上个月每个人每种产品的销售额。

2)按销售额对销售员进行排序,输出排序结果(销售员代号)

3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)

4)输出统计报表

销售统计报表

产品代号 销售之和

销售员代号 1 2 3 4 5

1

2

3

4

每种产品之和 总和

6、设计一个简单计算器(限最多1人完成)

要求: 在功能上功能尽量模拟windows操作系统中的计算器,系统界面不做强制要求。

7、编写一万年历系统(限最多1人完成)

要求: 模仿现实生活中的挂历.

当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几).

当系统日期变到下一月时,系统自动翻页到下一月.

8、学生成绩管理(限最多2人完成)

1.主要功能:

(1)能按学期、按班级完成对学生成绩的录入、修改

(2)能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序

(3)能查询学生成绩,不及格科目及学生名单

(4)能按班级输出学生的成绩单

9、通讯录管理(限最多1人完成)

1.主要功能:

(1)能建立、修改和增删学生通讯录

(2)能够按多种方式进行查询

2.要求:界面友好,易于操作

10、一元多项式简单的计算器(限最多1人完成)

1主要功能:

(1)输入并建立多项式;

(2)输出多项式;

(3)两个多项式相加,建立并输出和多项式;

(4)两个多项式相减,建立并输出差多项式。

(5)算法的时间复杂度、另外可以提出算法的改进方法

实现提示:可选择带头结点的单向循环链表或单链表存储多项式,头结点可存放多项式的参数,如项数等。

2.要求:一元多项式简单计算器的基本功能

11、图书管理系统(限最多2人完成)
1、功能描述

新进图书基本信息的输入。

2. 图书基本信息的查询。

3. 对撤消图书信息的删除。

4. 为借书人办理注册。

5.办理借书手续(非注册会员不能借书)。

6.办理还书手续

信息描述:有关该系统基本信息的描述,如:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等

12、校园导游咨询(限最多1人完成)

1、功能描述:设计你的学校的校园平面图,所含景点不少于10个。以图中顶点表示学校各景点,存放景点名称,代号,简介等信息;以边表示路径,存放路径长度等相关信息。

2、为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。

3、为来访客人提供图中任意景点相关信息的查询。

测试数据:由读者根据实际情况指定。

实现提示:一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网,顶点和边均含有相关信息。

13、简单的行编缉器(限最多1人完成)

要求:设置一个简单的行编缉器,每行以回车结束。

数据以文件形式存储

编辑器具有查找、替换、修改数据的功能。

14、用栈来设置密码(限最多1人完成)

要求:用栈来做一个密码验证程序,密码验证只有三次机会。

15、双向链表的排序(限最多1人完成)

要求:输入一个双向链表,显示些双向链表并对此双向链表排序

16、成绩记录簿(限最多2人完成)

编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。具体功能:

(1)创建信息链表并以磁盘文件保存;

考核方式课程设计完成情况; ?课程?设计报告; ?课程设计期间的表现.参考评定依据
?
课程设计成绩评定的依据有设计文档资料、具体实现设计方案的程序及课程设计考勤登记表,其中平时成绩占总成绩的20%。

优:按要求完成题目,有完整的符合标准的文档,文档有条理、文笔通顺,格式正确,其中有总体设计思想的论述,有正确的流程图,程序完全实现设计方案,设计方案先进,软件可靠性好;

良:完成设计题目,有完整的符合标准的文档,文档有条理、文笔通顺,格式正确;有完全实现设计方案的软件,设计方案较先进;

中:基本完成题目,有完整的符合标准的文档,有基本实现设计方案的软件,设计方案正确;

及格:基本完成题目,有完整的符合标准的文档,有基本实现设计方案的软件,设计方案基本正确;

不及格:没有完成题目的要求,没有完整的符合标准的文档,软件没有基本实现设计方案,设计方案不正确。 ?提交资料: ??课程设计报告 提交报告的内容?一、题目内容的描述 ?二、应用程序功能的详细说明 ?三、输入数据类型、格式和内容限制; ?四、主要模块的算法描述 –以程序流程图的方式给出 –简要的语言描述 ?五、结束语 ?六、程序的源代码清单 ?
七、报告的字数,不算源代码清单不少于4页
?按规定的模板封面输出,不准自定义封面格式
提交报告的格式?
正文宋体小四号字

每个自然段开始空两格.

文中英文用新罗马(time new roman),四号

源程序清单用英文新罗马五号

正文宋体小四号字

每个自然段开始空两格.

文中英文用新罗马(time new roman),四号

源程序清单用英文新罗马五号
提交报告封面
软件:需提供源程序,并能正常运行。

注:对于程序中未能实现的部分需要加以说明。对于程序中所参考的部分代码需要加以声明,并说明出处。

10. 总体设计(程序设计组成框图、流程图

你好 我可以 .

阅读全文

与总体设计程序设计组成框图相关的资料

热点内容
ubuntuqt创建工程没有配置文件 浏览:126
网站登录变成其他网站怎么处理 浏览:202
ug数控编程学校有哪些 浏览:203
java图片上传显示 浏览:402
ppt的文件名后缀 浏览:902
ug编程软件下载到哪个盘 浏览:359
炫酷字体APP下载的文件在哪里 浏览:668
廊坊哪里有少儿编程机构 浏览:312
cad新文件能找回来吗 浏览:951
导出手机qq文件到u盘 浏览:456
电脑如何打开ppt文件怎么打开方式 浏览:782
魅族锁定区文件夹 浏览:357
刻字cnc怎么编程 浏览:182
学校的网络拓扑结构图 浏览:784
收集100个pdf文件里关键词 浏览:594
苹果关闭4g网络设置 浏览:289
如何监测数据库 浏览:967
拷贝过来的pdf文件 浏览:751
抖音小店的访客数据怎么看 浏览:670
怎么把c语言编程的字符向下移动 浏览:786

友情链接