1. 个人账务管理系统 用C或者C++设计,拜托要尽量详尽。
/ / / / / / / / / / / / / / / / / / / / / / / / /
这是我大二的数据结构课堂作业,而现在的电脑放在给你,它应该符合你的老师的要求。编译环境是VC + + 6.0
如果你不使用的话,问题补充说,“患者”是暂时的,我给你了,随便写,你不会失去命令要求我看明白例子。
/ ********************************************* ******************** /
包括
包括是否</ #包括
#包括
#包括WINDOWS.H>
/ /清除当前的屏幕...... />#ClearScreen()系统(“CLS”)
/ /显示字符串szPrompt并等待用户按任意键
定义暂停(szPrompt),printf(“请% “,szPrompt)参考getch()
类型定义结构carinformation的/ /车辆信息
{
字符szRegistrationMark [64]; /?? /车牌号
>和字符szArrivalTime [16]; / /到达时间
字符szEntranceTime [16]; / /进入停车场开始计费的时间
字符szDepartureTime [16]; / /发车时间 BR />} TCARINFORMATION,LPTCARINFORMATION;
typedef结构carstack的
{
LPTCARINFORMATION lpCarInformation; / /车辆信息
诠释NTOP / /顶部的元素的下标
诠释nStackSize / /堆栈容量
} TCARSTACK,* LPTCARSTACK;
> / /初始化堆栈lpCarStack的,它的容量设置为n大小
无效InitStack(LPTCARSTACK lpCarStack,n大小)
{
lpCarStack =(LPTCARSTACK)的malloc(sizeof(TCARSTACK)的);
lpCarStack - > lpCarInformation =( LPTCARINFORMATION)的malloc(
n大小sizeof(TCARINFORMATION)的
)
lpCarStack - > NTOP = -1;
lpCarStack - > nStackSize = n大小;
}
/ /车辆信息carinfo堆栈lpCarStack
无效的Push(LPTCARSTACK lpCarStack TCARINFORMATION carinfo)
{
lpCarStack - > NTOP + +;
> lpCarStack lpCarInformation [lpCarStack - > NTOP] = carinfo;
}
/ /车辆信息从堆栈中lpCarStack,流行的和存款carinfo的
“无效流行(LPTCARSTACK lpCarStack TCARINFORMATION carinfo)
{
carinfo = lpCarStack - > lpCarInformation [lpCarStack - > NTOP];
lpCarStack - > NTOP - ;}
/ /如果堆栈lpCarstack是空的??,则返回TRUE,否则返回FALSE
的BOOL IsStackEmpty(LPTCARSTACK lpCarStack)
返回lpCarStack - > NTOP = = -1;
}
/ /堆栈lpStackFull的完整的,则返回TRUE,否则返回FALSE
,BOOL IsStackFull(LPTCARSTACK lpCarStack)
{ BR />的回报lpCarStack - > NTOP ==(lpCarStack - > nStackSize - 1);
}
/ /被破坏的堆栈lpCarStack,设置为NULL指针lpCarStack BR />的的无效DestroyStack(LPTCARSTACK lpCarStack)
{
免费(lpCarStack - > lpCarInformation);
免费(lpCarStack);
lpCarStack = NULL;
} BR />
typedef结构carnode / /链团队节点
{
TCARINFORMATION carinfo; / /车辆信息
结构carnode * lpNext; / /指向下一个元素的指针
} TCARNODE LPTCARNODE;
typedef结构
carqueue / /链团队
{
LPTCARNODE lpHead / /头节点
LPTCARNODE lpRear; / /指向尾指针
诠释nEffectiveSize / /在球队中的元素个数
} TCARQUEUE LPTCARQUEUE;
/ /初始化链团队lpCarQueue
的无效InitQueue(LPTCARQUEUE lpCarQueue)
{
lpCarQueue =(LPTCARQUEUE)的malloc(大小(TCARQUEUE));
lpCarQueue - > lpHead =(LPTCARNODE )的malloc(大小(TCARNODE));
lpCarQueue> lpHead - > lpNext = NULL;
lpCarQueue - > lpRear = lpCarQueue - > lpHead;
lpCarQueue - > nEffectiveSize = 0;
}
/ /的车辆信息carinfo排队lpCarQueue
无效排队(LPTCARQUEUE lpCarQueue,TCARINFORMATION carinfo)
{
LPTCARNODE lpCarNode (LPTCARNODE)?的malloc(大小(carnode));
lpCarNode - > carinfo = carinfo;
lpCarNode> lpNext = NULL;
lpCarQueue - > lpRear> lpNext = lpCarNode;
lpCarQueue - > lpRear = lpCarQueue,> lpRear - > lpNext,
lpCarQueue - > nEffectiveSize + +;
}
/ / HOL元素链团队lpCarQueue在一个团队和存款carinfo的
无效DEQUEUE(LPTCARQUEUE,与lpCarQueue TCARINFORMATION的carinfo)
{
LPTCARNODE lpTemp = lpCarQueue - > lpHead - > lpNext中;
carinfo = lpTemp - > carinfo的;
lpCarQueue> lpHead - > lpNext = lpTemp - > lpNext;
免费(lpTemp);
lpCarQueue - > nEffectiveSize -
}
a>
/ /链团队lpCarQueue的,否则,返回FALSE
,BOOL IsQueueEmpty(LPTCARQUEUE lpCarQueue)
{
回报lpCarQueue - > nEffectiveSize == 0; />}
/ /破坏链团队lpCarQueue
的无效DestroyQueue(LPTCARQUEUE lpCarQueue)
{
LPTCARNODE lpNextCarNode = NULL;
(LPTCARNODE lpCarNode,以lpCarQueue lpHead; lpCarNode!= NULL; lpCarNode = lpNextCarNode)
{
lpNextCarNode lpCarNode - > lpNext;
免费(lpCarNode );
}
免费(lpCarQueue);
lpCarQueue = NULL;
}
/ /字符串转换为数字格式(分钟)格式,例如12:36将被转换为756(12 * 60 + 36)
诠释ConvertTimeFormat(CHAR * lpTime)
{
诠释nHour = 0;
>诠释nMinute = 0;
sscanf的(lpTime,“%d:%d”的,与nHour,与nMinute);
回报nHour * 60 + nMinute; />}
/ /在停车场的停留时间nContinuanceMinutes的时间(分钟)费用
的双CalculateExpense(诠释第nContinuanceMinutes)
{
回报nContinuanceMinutes *(5.0 / 60);
}
诠释的主要(无效)
{
诠释nParkCapability = 0; / /停车容量 / a>
的putchar('\ n');
printf的(“请输入一个停车场容量:”);
scanf的(“%d”,&nParkCapability);
LPTCARSTACK lpCarStack = NULL; / /停车场栈模拟
InitStack(lpCarStack,nParkCapability);
LPTCARQUEUE lpCarQueue = NULL; / /人行道上,一个链团队的模拟
InitQueue(lpCarQueue);
字符cCommandType = NULL; / /命令类型
字符szUserInput [128] = / /用户输入
{
ClearScreen();
的putchar('\ n');
看跌期权(“-------------------- “);
看跌期权(”命令“);
看跌期权(”A - 车辆到达),
看跌期权(D - 车辆离开“); ...... />看跌期权(“E - 停止输入);
看跌期权(”O - 显示当前的停车场和人行道的使用);
道理也适用于函数putchar('\ n');提出(“示例:”);
看跌期权(“A,吉A1234,14:26”);
看跌期权(“D 16:51,河北A1234”);
看跌期权( “E”);
看跌期权(“O”);
的putchar('\ n');
printf的(“请输入以下命令:”);
scanf函数(“%s”,szUserInput);
看跌期权(“--------------------”);
字符szCarInformation [128] =
分别
%?%S“,
和cCommandType / /用户输入上半年,而且sscanf的(szUserInput / /命令类型车辆信息存储是
下半年的szCarInformation / /用户输入的命令的类型,即车辆信息
)
字符* lpCommaLocation = NULL; / /字符串中的小数点的位置车辆信息
(lpCommaLocation中= szCarInformation; * lpCommaLocation!='\ 0'; lpCommaLocation + +)
{
(* lpCommaLocation ==',') /> {
突破;
}
}
* lpCommaLocation ='\ 0';
TCARINFORMATION carinfo =; / /存储用户输入车辆信息
的strcpy(carinfo.szRegistrationMark,szCarInformation)的;
(cCommandType =='A')
{
使用strcpy(carinfo.szArrivalTime, lpCommaLocation + 1);
(FALSE == IsStackFull(lpCarStack))
{
的strcpy(carinfo.szEntranceTime,carinfo.szArrivalTime)的;
推(lpCarStack carinfo)
printf的(“进入停车场第%d空间\ n”,
lpCarStack - > NTOP + 1
)
printf的(车牌号: \ t \ t%S \ n“,carinfo.szRegistrationMark);
printf的(”输入时间:\ t%S \ n“,carinfo.szEntranceTime);
看跌期权(”是否收费: \ t“);
}
其他
{
排队(lpCarQueue carinfo);
printf的(”停车场满了,停在人行道上%d的停车空间\ n“,
lpCarQueue nEffectiveSize
)
的printf(车牌号:\ t \ t其中%s \ n”,carinfo.szRegistrationMark); <BR /输出(“停车时间:\ t%S \ n”,carinfo.szArrivalTime);
看跌期权(“是否收费:\ t”);
}
}
否则,如果(cCommandType =='D')
{
使用strcpy(carinfo.szDepartureTime,lpCommaLocation + 1);
LPTCARSTACK lpTempCarStack = NULL;
InitStack (lpTempCarStack,nParkCapability);
TCARINFORMATION carinfoOut =;
BOOL bIsCarFound = FALSE;
(FALSE == IsStackEmpty(lpCarStack))
{
流行(lpCarStack,carinfoOut);
(0!=的strcmp(carinfoOut.szRegistrationMark,carinfo.szRegistrationMark)的)
{
的的推(lpTempCarStack,carinfoOut);
>}
其他
{
bIsCarFound = TRUE;
突破;
}
}
(FALSE == IsStackEmpty (lpTempCarStack))
{
TCARINFORMATION tempcarinfo =;
流行(lpTempCarStack,tempcarinfo);
的的推(lpCarStack,tempcarinfo);
}
(FALSE == bIsCarFound)
{
printf的(“%s的车的车牌号为没有进入停车场。\ n”,carinfo.szRegistrationMark);
暂停(“-------------------- \ n按任意键即可进入下一个消息... \ n”);
继续;
>}
的strcpy(carinfoOut.szDepartureTime,carinfo.szDepartureTime)的;
诠释nEntranceTime ConvertTimeFormat(carinfoOut.szEntranceTime);
诠释nDepartureTime = ConvertTimeFormat(carinfoOut.szDepartureTime); BR />诠释nContinuanceMinutes = nDepartureTime - nEntranceTime;
printf的(“计费周期:\ T%S - %S(%d分钟)\ n”,
carinfoOut.szEntranceTime
carinfoOut.szDepartureTime
nContinuanceMinutes
)在
一个双rExpense的:= CalculateExpense(nContinuanceMinutes);
printf(“请应缴纳的费用:\ t%.1如果\ n”, rExpense);
(FALSE == IsQueueEmpty(lpCarQueue))
{
TCARINFORMATION tempcarinfo =;
DEQUEUE(lpCarQueue,tempcarinfo);
STRCPY (tempcarinfo.szEntranceTime,carinfoOut.szDepartureTime);
的推(lpCarStack,tempcarinfo);
看跌期权(“--------------------”)
printf的(“在人行道上停放%的汽车进入停车场的一个车位,车牌号\ n”,
tempcarinfo.szRegistrationMark
);
}
}
其他(cCommandType =='E')
{
看跌期权(“****************** *“);
看跌期权(陈赛 - Build20090507 \ n”);
看跌期权(“********************”)
突破;
}
其他(cCommandType =='O')
{
ClearScreen();
道理也适用于函数putchar('\ N');
看跌期权(“[停车场] \ n”);
看跌期权(“[停车场] \ t [车牌号] \ T抵达时间\ T [时间] \ N“)到(计费);
(INT I = 0;的我的NTOP,我+ +)
{
printf的(”%d \ t%的小号\ t \ t其中%s \ t \ t%S \ n“,
+ 1,
lpCarStack - > lpCarInformation [I]。szRegistrationMark,
lpCarStack - > lpCarInformation [I]。 szArrivalTime,
lpCarStack - > lpCarInformation [I]。szEntranceTime
);
}
的putchar('\ n');
的putchar('\ n') ;
的putchar('\ n');
看跌期权(“人行道使用的情况下] \ n”);
看跌期权(“[停车场] \ T [车牌号] \ T抵达时间] \ T [输入(计费)时间] \ n“);
诠释nNum = 0;
(LPTCARNODE lpCarNode = lpCarQueue - > lpHead - > lpNext; BR /> lpCarNode!= NULL; lpCarNode = lpCarNode> lpNext)
{
nNum + +;
printf的(“%d \ T%\吨\ t%S \ T \ t其中%s \ n“,
nNum,
lpCarNode - > carinfo.szRegistrationMark,
lpCarNode - > carinfo.szArrivalTime,
lpCarNode - > carinfo.szEntranceTime
) ;
}
的putchar('\ n');
}
其他
{
看跌期权(“输入的信息是否正确的第一个字符为'A '或'D'或'E'或'O'(区分大小写)。“);
}
暂停(”---------------- ---- \ n按任意键即可进入下一个消息。\ n“);
},而(TRUE);
DestroyStack的(lpCarStack);
< /暂停(“\ n按任意键退出程序... \ n”); <BR的
DestroyQueue(lpCarQueue); />
返回0;
}
2. 求C++程序设计大神点拨点拨。😁😁😁 设计一个考试
简单
1 要有容器 建议 双链表 简单,方便 实现这个足够
2 oo思想 面向对象 class CStudent;类中有struct 关于学生的属性 还有各种方法 ,比如封装查询的方法,输入学号,姓名,课程,查出成绩,排名
3 保存文件,读取文件 就有数据库的思想了,可以写进去结构体,读也按结构体读 记住,什么格式写,什么格式读。
你就往现实去想流程 每一个学生就是类的一个对象,这个对象能选课,保存,能录入成绩。保存。。。。等
理解吗?
3. 设计一个程序来实现个人财务管理。。。C语言编程,求解答
你想达到什么效果。把要求发过来我看看 我帮你写
4. c语言程序设计中做一个个人消费信息管理系统,求大神,在线急求,谢谢啦!
钱没有也就算了,毕竟我是个是金钱如粪土的好人,去把结构体,文件操作,好好看看把,感觉不是很难。
5. C/C++程序设计课程设计员工管理系统
/////////////////////////////////////////////////////////////////////
///////////// List.h: 类的所有成员都在头文件里声明 //////////////////
/////////////////////////////////////////////////////////////////////
#include // cin 及 cout
#include // 用到申请内存函数 malloc() 和释放内存函数 free()
#include // 字符串处理
#include // 文件操作(读文件)
#include // system("cls")
struct address /*家庭地址*/
{
char city[10]; /*城市*/
char town[10]; /*县城*/
char village[10]; /*乡镇*/
};
struct telephone /*联系方式*/
{
char SJ[50]; /*手机*/
char JD[30]; /*家庭电话*/
char XD[30]; /*学校电话*/
};
struct person /*个人信息*/
{
char name[20]; /*名字*/
char sex[10] ; /*性别*/
char MZ[16]; /*民族*/
char GJ[17]; /*国籍*/
char XL[19]; /*学历*/
};
struct score //成绩
{
char num[20]; //学号
char english[20];
char chinese[20];
char math[20];
char physics[20];
};
typedef struct linknode //定义节点的类型
{
char address[100]; //地址
char birthday[100]; //出生日期
struct score sc; //成绩
struct person pe; //个人信息
struct telephone te; //联系方式
bool flag;
struct linknode* next;
}nodetype;
class List
{
nodetype* head;
public:
List();
List::~List();
linknode* creatlist(int); //创建链表
int listlen(); //返回链表长度
nodetype* findnode(int); //通过查找序号返回节点的指针
nodetype* find(char c[]); //通过查找姓名返回节点的指针
int find2(char c[]); //通过查找姓名返回节点的序号
nodetype* insnode(int); //插入节点
void delnode(int); //删除节点
nodetype* load(); //初始化:从外部读入数据
void readstr(FILE *f,char *string); //读行函数
bool check(char *a, char *b); //对比两个字符串是否相等
void help(); //显示帮助菜单
void editperson(nodetype*); //编辑个人说明
void editscore(nodetype*); //编辑学科成绩
void edittelephone(nodetype*); //编辑联系方式
void dispname(); //显示所有学生姓名
void dispnode(nodetype* p); //显示一个学生的所有信息
void dispperson(nodetype*); //显示一个学生的个人说明
void dispscore(nodetype*); //显示一个学生的学科成绩
void disptelephone(nodetype*); //显示一个学生的联系方式
};
class Operater
{
List L1;
public:
void Loop(); //主循环
void display(); //显示菜单
};
List::List()
{
head = NULL;
}
bool List::check(char *a, char *b) //对比两个字符串是否相等
{
int i;
int j=strlen(b);
for(i=0; i<j; i++)
{
if(*a==*b)
{
a++;
b++;
}
else
return 0;
}
return 1;
}
nodetype* List::creatlist (int n) //创建链表
{
nodetype *h=NULL, *s, *t;
int i=1;
for(int j=0; j<n; j++)
{
if(i==1) //创建第一个节点
{
h=(nodetype*)malloc(sizeof(nodetype));
h->next=NULL;
t=h;
}
else //创建其余节点
{
s=(nodetype*)malloc(sizeof(nodetype));
s->next=NULL;
t->next=s;
t=s; //t 始终指向生成的单链表的最后一个节点
}
i++;
}
head=h;
return h;
}
/*
nodetype* List::creatlist (int n) //创建链表
{
nodetype *h=NULL;
int i=1;
for(int j=0; j<n; j++)
{
h=insnode(0);
}
head=h;
return h;
}
*/
void List::readstr(FILE *f,char *string)
{
do
{
//①: 先读入一行文本
fgets(string, 255, f); //fgets(): 从文件 f 读入长度为 255-1 的字符串
// 并存入到 string 中
} while ((string[0] == '/') || (string[0] == '\n'));
return;
}
nodetype* List::load()
{
FILE *fp;
nodetype *p;
char c[255];
int num;
if((fp=fopen("student.txt", "r"))==NULL)
{
cout<<"打开文件失败"<<endl;
return 0;
}
readstr(fp, c);
sscanf(c, "The Length Of Link: %d", &num); //获取链表长度
p=creatlist(num); //创建链表
for(int i=0; i<num; i++)
{
readstr(fp, c);
strcpy(p->address, c);
readstr(fp, c);
strcpy(p->birthday, c);
readstr(fp, c);
strcpy(p->sc.num, c);
readstr(fp, c);
strcpy(p->sc.chinese, c);
readstr(fp, c);
strcpy(p->sc.english, c);
readstr(fp, c);
strcpy(p->sc.math, c);
readstr(fp, c);
strcpy(p->sc.physics, c);
readstr(fp, c);
strcpy(p->pe.name, c);
readstr(fp, c);
strcpy(p->pe.sex, c);
readstr(fp, c);
strcpy(p->pe.GJ, c);
readstr(fp, c);
strcpy(p->pe.MZ, c);
readstr(fp, c);
strcpy(p->pe.XL, c);
readstr(fp, c);
strcpy(p->te.SJ, c);
readstr(fp, c);
strcpy(p->te.JD, c);
readstr(fp, c);
strcpy(p->te.XD, c);
p=p->next;
}
fclose(fp);
return p;
}
void List::dispnode(nodetype* p) //显示一个学生的所有信息
{
if(p!=NULL)
{
dispperson(p);
dispscore(p);
disptelephone(p);
}
}
void List::dispname() //显示所有学生姓名
{
nodetype* p=head;
cout<<"现有的学生: "<<endl;
if(p==NULL)
cout<<"没有任何学生数据"<<endl;
while(p!=NULL)
{
coutpe.name;
p=p->next;
}
}
int List::listlen() //返回链表长度
{
int i=0;
nodetype* p=head;
while(p!=NULL)
{
p=p->next;
i++;
}
return i;
}
nodetype* List::findnode (int i) //通过查找序号返回节点的指针
{
nodetype* p=head;
int j=1;
if( i>listlen()||i<=0 ) // i 上溢或下溢
return NULL;
else
{
while( p!=NULL && j<i ) //查找第 i 个节点并由 p 指向该节点
{
j++;
p=p->next;
}
return p;
}
}
nodetype* List::find(char c[]) //通过查找姓名返回节点的指针
{
nodetype* p=head;
int j=1;
strcat(c, "\n"); //从外部读入的字符串末尾都带了一个换行符
while( p!=NULL && !(check(c, p->pe.name))) //查找第 i 个节点并由 p 指向该节点
{
j++;
p=p->next;
}
return p;
}
int List::find2(char c[]) //通过查找姓名返回节点的序号
{
nodetype* p=head;
int j=1;
strcat(c, "\n"); //从外部读入的字符串末尾都带了一个换行符
while( p!=NULL && !(check(c, p->pe.name))) //查找第 i 个节点并由 p 指向该节点
{
j++;
p=p->next;
}
return j;
}
nodetype* List::insnode(int i)
{
nodetype *h=head, *p, *s;
s=(nodetype*)malloc(sizeof(nodetype)); //创建节点 s
s->next=NULL;
if(i==0) //i=0 时 s 作为该单链表的第一个节点
{
s->next = h;
h=s; //重新定义头节点
}
else
{
p=findnode(i); //查找第 i 个节点,并由 p 指向该节点
if(p!=NULL)
{
s->next=p->next;
p->next=s;
}
else cout<<"输入的 i 值不正确"<<endl;
}
head=h;
return s;
}
void List::delnode(int i) //删除第 i 个节点
{
nodetype *h=head, *p=head, *s;
int j=1;
if(i==1) //删除第一个节点
{
h=h->next;
free(p);
}
else
{
p=findnode(i-1); //查找第 i-1 个节点,并由 p 指向这个节点
if(p!=NULL && p->next!=NULL)
{
s=p->next; // s 指向要删除的节点
p->next=s->next;
free(s);
}
else
cout<<"输入的 i 值不正确"<<endl;
}
head=h;
}
void List::editperson(nodetype* p)
{
char c[100];
cout<<"请输入姓名: "<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->pe.name, c);
cout<<"请输入性别:"<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->pe.sex, c);
cout<<"请输入生日(格式举例:1982-1-1): "<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->birthday, c);
cout<<"请输入民族:"<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->pe.MZ, c);
cout<<"请输入国籍:"<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->pe.GJ, c);
cout<<"请输入学历:"<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->pe.XL, c);
cout<<"请输入家庭住址(例如:广西玉林市解放路11号"<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->address, c);
cout<<"编辑个人信息完成!"<<endl;
dispperson(p);
}
void List::editscore(nodetype* p)
{
char a[50];
cout<<"请输入学号: "<<endl;
cin>>a;
strcat(a, "\n");
strcpy(p->sc.num, a);
cout<<"请输入大学语文成绩: "<<endl;
cin>>a;
strcat(a, "\n");
strcpy(p->sc.chinese, a);
cout<<"请输入英语成绩: "<<endl;
cin>>a;
strcat(a, "\n");
strcpy(p->sc.english, a);
cout<<"请输入数学成绩: "<<endl;
cin>>a;
strcat(a, "\n");
strcpy(p->sc.math, a);
cout<<"请输入物理成绩: "<<endl;
cin>>a;
strcat(a, "\n");
strcpy(p->sc.physics, a);
cout<<"编辑学科成绩完成!"<<endl;
dispscore(p);
}
void List::edittelephone(nodetype* p)
{
char c[50];
cout<<"请输入手机号码: "<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->te.SJ, c);
cout<<"请输入家庭电话号码: "<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->te.JD, c);
cout<<"请输入学校电话号码: "<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->te.XD, c);
cout<<"编辑联系方式完成!"<<endl;
disptelephone(p);
}
void List::dispperson(nodetype* p)
{
coutpe.name;
coutpe.sex;
coutpe.MZ;
coutpe.GJ;
coutpe.XL;
coutbirthday;
coutaddress;
}
void List::dispscore(nodetype* p)
{
coutsc.num;
coutsc.chinese;
coutsc.english;
coutsc.math;
coutsc.physics;
}
void List::disptelephone(nodetype* p)
{
coutte.SJ;
coutte.JD;
coutte.XD;
}
void List::help()
{
cout<<endl<<endl;
cout<<"*********************************************************"<<endl;
cout<<"1: 编辑个人信息"<<endl;
cout<<"2: 编辑学科成绩"<<endl;
cout<<"3: 编辑联系方式"<<endl;
cout<<"4: 显示个人信息"<<endl;
cout<<"5: 显示学科成绩"<<endl;
cout<<"6: 显示联系方式"<<endl;
cout<<"7: 显示该学生所有信息"<<endl;
cout<<"8: 帮助菜单"<<endl;
cout<<"9: 返回上一级菜单"<<endl;
cout<<"*********************************************************"<<endl;
}
List::~List()
{
nodetype *pa=head, *pb;
if(pa!=NULL)
{
pb=pa->next;
if(pb==NULL)
free(pa);
else
{
while(pb!=NULL)
{
free(pa);
pa=pb;
pb=pb->next;
}
free(pa);
}
}
}
void Operater::display()
{
cout<<endl<<endl;
cout<<"**************************** 学生管理系统 **************************"<<endl;
cout<<"1: 添加一个学生信息"<<endl;
cout<<"2: 删除一个学生信息"<<endl;
cout<<"3: 显示所有学生的姓名"<<endl;
cout<<"4: 根据姓名显示单个学生所有信息"<<endl;
cout<<"5: 根据姓名对单个学生进行编辑"<<endl;
cout<<"6: 帮助菜单"<<endl;
cout<<"7: 保存数据"<<endl;
cout<<"0: 退出系统"<<endl;
cout<<"********************************************************************"<<endl;
}
void Operater::Loop()
{
List L1; //List 对象
char ch[20];
nodetype *p, *head;
int i; //存放节点序号
p=L1.load(); //初始化:从外部读入数据创建链表
head=p;
display();
while(1)
{
cout<<endl<<endl;
cout 6 ): "<<endl;
cin>>ch;
system("cls");
if(L1.check(ch, "1"))
{
p=L1.insnode(0);
head=p;
system("cls");
cout<<endl;
cout<<"************** 添加一个学生信息 ******************"<<endl;
cout<<"下面输入个人信息: "<<endl;
L1.editperson(p);
cout<<"下面输入学科成绩: "<<endl;
L1.editscore(p);
cout<<"下面输入联系方式: "<<endl;
L1.edittelephone(p);
}
if(L1.check(ch, "2"))
{
system("cls");
cout<<endl;
cout<<"************** 删除一个学生信息 ******************"<<endl;
L1.dispname();
cout<<"请输入学生姓名: "<<endl;
cin>>ch;
i=L1.find2(ch);
L1.delnode(i);
}
if(L1.check(ch, "3"))
{
system("cls");
cout<<endl;
cout<<"************** 显示所有学生姓名 ******************"<<endl;
L1.dispname();
}
if(L1.check(ch, "4"))
{
system("cls");
cout<<endl;
cout<<"************** 根据姓名显示单个学生所有信息 ******************"<<endl;
L1.dispname();
cout<<"请输入学生姓名: "<<endl;
cin>>ch;
p=L1.find(ch);
L1.dispnode(p);
}
if(L1.check(ch, "6"))
{
display();
}
if(L1.check(ch, "7")) //保存数据
{
FILE *fp;
if((fp=fopen("student.txt", "w"))==NULL)
{
cout<<"打开文件失败"<<endl;
return;
}
int i;
char t[255];
//将 L1.listlen() 赋予字符串中的数字
sprintf(t, "The Length Of Link: %d\n", L1.listlen());
fputs(t, fp);
strcpy(t, "\n");
fputs(t, fp);
p=L1.findnode(1); //将链表头指针赋予 p
for(i=0; i<L1.listlen(); i++)
{
fputs(p->address, fp); //输出地址
fputs(p->birthday, fp); //输出生日
fputs(p->sc.num, fp); //输出学号
fputs(p->sc.chinese, fp); //输出语文成绩
fputs(p->sc.english, fp); //输出英语成绩
fputs(p->sc.math, fp); //输出数学成绩
fputs(p->sc.physics, fp); //输出物理成绩
fputs(p->pe.name, fp); //输出姓名
fputs(p->pe.sex, fp); //输出性别
fputs(p->pe.GJ, fp); //输出国籍
fputs(p->pe.MZ, fp); //输出民族
fputs(p->pe.XL, fp); //输出学历
fputs(p->te.SJ, fp); //输出手机
fputs(p->te.JD, fp); //输出家庭电话
fputs(p->te.XD, fp); //输出学校电话
fputs(t, fp);
p=p->next;
}
p=head;
fclose(fp);
}
if(L1.check(ch, "5"))
{
char c[20];
system("cls");
cout<<endl;
cout<<"************** 根据姓名对单个学生进行编辑 ******************"<<endl;
L1.dispname();
cout<<"请输入学生姓名: "<<endl;
cin>>c;
p=L1.find(c);
system("cls");
cout<<endl<<endl;
cout<<"*********************************************************"<<endl;
cout<<"1: 编辑个人信息"<<endl;
cout<<"2: 编辑学科成绩"<<endl;
cout<<"3: 编辑联系方式"<<endl;
cout<<"4: 显示个人信息"<<endl;
cout<<"5: 显示学科成绩"<<endl;
cout<<"6: 显示联系方式"<<endl;
cout<<"7: 显示该学生所有信息"<<endl;
cout<<"8: 帮助菜单"<<endl;
cout<<"9: 返回上一级菜单"<<endl;
cout<<"*********************************************************"<<endl;
while(1)
{
cout<<endl<<endl;
cout 8 ): "<<endl;
cin>>c;
system("cls");
if(L1.check(c, "1"))
{
system("cls");
cout<<endl;
cout<<"************** 编辑个人信息 ******************"<<endl;
L1.editperson(p);
}
else if(L1.check(c, "2"))
{
system("cls");
cout<<endl;
cout<<"************** 编辑学科成绩 ******************"<<endl;
L1.editscore(p);
}
else if(L1.check(c, "3"))
{
system("cls");
cout<<endl;
cout<<"************** 编辑联系方式 ******************"<<endl;
L1.edittelephone(p);
}
else if(L1.check(c, "4"))
{
system("cls");
cout<<endl;
cout<<"************** 显示个人信息 ******************"<<endl;
L1.dispperson(p);
}
else if(L1.check(c, "5"))
{
system("cls");
cout<<endl;
cout<<"************** 显示学科成绩 ******************"<<endl;
L1.dispscore(p);
}
else if(L1.check(c, "6"))
{
system("cls");
cout<<endl;
cout<<"************** 显示联系方式 ******************"<<endl;
L1.disptelephone(p);
}
else if(L1.check(c, "7"))
{
system("cls");
L1.dispnode(p);
}
else if(L1.check(c, "8"))
{
system("cls");
L1.help();
}
else if(L1.check(c, "9"))
{
display();
break; //用 break 跳出本循环,不要用 return ,return 是退出程序
}
}
}
else if(L1.check(ch, "0"))
return;
}
return;
}
void main()
{
Operater O1;
O1.Loop();
}
自己看看吧,改改就好了,我也不太会
6. C/C++高校工资管理系统 程序设计
要是要报告就留邮箱
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
const int N=7;
class teacher
{
public:
void set(int i); //录入信息
void add(teacher p); //增加资料
void modification(); //修改资料
void expurgate(); //删除资料
int checkout(int n,int age1,string courseform1); //查找资料
void show(); //输出该档案
int fanhui(int a); //返回一数判断是否是所要选的档案
private:
string name;
int number; //教工号
char sex;
int age;
int comeworktime; //参加工作时间
string call; //职称
string courseform; //课程组成
};
void teacher::set(int i) //录入信息
{
cout<<" 录入档案 "<<i<<":"<<endl;
cout<<"输入教师的教工号:";
cin>>number;
cout<<"输入教师姓名:";
cin>>name;
cout<<"输入教师姓别:";
cin>>sex;
cout<<"输入教师职称:";
cin>>call;
cout<<"输入教师年龄:";
cin>>age;
cout<<"输入教师参加工作时间:";
cin>>comeworktime;
cout<<"输入教师课程组成:";
cin>>courseform;
cout<<" 档案"<<i<<" 录入结束"<<endl;
}
void teacher::add(teacher p) //增加信息
{
cout<<"输入新增教师档案"<<endl;
p.set(N-4);
}
void teacher::expurgate() //删除信息
{
name="0";
number=0;
sex='\0';
age=0;
comeworktime=0;
call="0";
courseform="0";
cout<<"删除教师信息成功"<<endl;
}
int teacher::checkout(int n,int age1,string courseform1) //查找信息
{
int p;
switch(n)
{
case 1:
if(age==age1) p=1;
else p=0;
break;
case 2:
if(courseform==courseform1) p=1;
else p=0;
break;
}
return p;
}
void teacher::show() //输出信息
{
cout<<"输出一档案**********"<<endl;
cout<<setiosflags(ios_base::left)
<<setw(16)<<"教工号"<<setw(16)<<number<<endl
<<setw(16)<<"姓名"<<setw(16)<<name<<endl
<<setw(16)<<"姓别"<<setw(16)<<sex<<endl
<<setw(16)<<"职称"<<setw(16)<<call<<endl
<<setw(16)<<"年龄"<<setw(16)<<age<<endl
<<setw(16)<<"参加工作时间"<<setw(16)<<comeworktime<<endl
<<setw(16)<<"课程组成"<<setw(16)<<courseform<<endl
<<resetiosflags(ios_base::left);
cout<<"**********输出结束"<<endl;
}
void teacher::modification() //修改信息
{
int n,renumber,recomeworktime,reage,flag=1;
string rename,recall,recourseform;
char resex;
do
{
cout<<" ***子菜单:修改资料***"<<endl
<<" 修改哪项信息?"<<endl
<<"1(教工号) 2(姓名) 3(姓别) 4(职称) 5(年龄) 6(参加工作时间) 7(课程组成) 8(退出)"<<endl
<<" 输入数字1-8进行修改或退出:";
cin>>n;
if(n<9&&n>0)
switch(n)
{
case 1:
cout<<"输入正确的教工号:";
cin>>renumber;
number=renumber;
cout<<"教工号修改成功"<<endl;
break;
case 2:
cout<<"输入正确的姓名:";
cin>>rename;
name=rename;
cout<<"姓名修改成功"<<endl;
break;
case 3:
cout<<"输入正确的姓别:";
cin>>resex;
sex=resex;
cout<<"姓别修改成功"<<endl;
break;
case 4:
cout<<"输入正确的职称:";
cin>>recall;
call=recall;
cout<<"职称修改成功"<<endl;
break;
case 5:
cout<<"输入正确的年龄:";
cin>>reage;
age=reage;
cout<<"年龄修改成功"<<endl;
break;
case 6:
cout<<"输入正确的参加工作时间:";
cin>>recomeworktime;
comeworktime=recomeworktime;
cout<<"参加工作时间修改成功"<<endl;
break;
case 7:
cout<<"输入正确的课程组成:";
cin>>recourseform;
courseform=recourseform;
cout<<"课程组成修改成功"<<endl;
break;
case 8:
cout<<"退出到主菜单"<<endl;
flag=0;
break;
}
else
{
cout<<"输入的数字不在1-8之间,请重新输入."<<endl;
flag=0;
}
}while(flag!=0);
}
int teacher::fanhui(int a)
{
if(a==number) return 1;
else return 0;
}
void main()
{
int n,m=0,a,i,flag=1;
teacher p[N],pt;
int age1=0;
string courseform1="0";
cout<<"首先输入教师信息"<<endl;
for(i=0;i<N-5;i++)
p[i].set(i+1);
do
{
cout<<" ***************"<<endl
<<" 主菜单"<<endl
<<" ***************"<<endl
<<"(1)修改资料(2)增加资料(3)删除资料(4)显示资料(5)根据工龄或课程组成查找并显示"
<<"(6)退出"<<endl
<<"然后选择1-5进行操作:";
cin>>n;
switch(n)
{
case 1:
cout<<"输入要修改的教师的教工号:";
cin>>a;
for(i=0;i<N-5;i++)
{
if(p[i].fanhui(a)) p[i].modification();
}
break;
case 2:
pt.add(p[N-5+m]);
m++;
break;
case 3:
cout<<"输入要删除的教师的教工号:";
cin>>a;
for(i=0;i<N-5;i++)
{
if(p[i].fanhui(a)) p[i].expurgate();
}
break;
case 4:
cout<<"输入要显示的教师的教工号:";
cin>>a;
for(i=0;i<N-5;i++)
{
if(p[i].fanhui(a)) p[i].show();
}
break;
case 5:
cout<<" ***子菜单:查找资料***"<<endl
<<"(1)按教工年龄查找 (2)按担任课程组成查找 "<<endl
<<"输入1-2:";
cin>>n;
if(n==1)
{
cout<<"输入教工年龄:";
cin>>age1;
}
else if(n==2)
{
cout<<"输入担任课程组成:";
cin>>courseform1;
}
for(i=0;i<N-5;i++)
if(p[i].checkout(n,age1,courseform1))
{
cout<<"已查找到"<<endl;
p[i].show();
}
break;
case 6:
flag=0;
break;
default:
cout<<"输入错误,不在1-5之间"<<endl;
flag=0;
}
}while(flag!=0);
cout<<" !!!程序运行结束!!!"<<endl;
}
7. 大家好,我是一个C语言初学者,我有一个项目,学员管理系统,我已经做得乱七八糟了,个人能力有限。
把代码发上来吧,大家一起学习学习。
关键的发上来。
8. 求一C语言课程设计,有关个人物品管理系统的源代码,不用找网上的那些 我都看过,有雷同,请原创,谢谢!
链表的题目嘛~可惜100分太少~估计没人帮你打
我自己做的时候花了几个小时~