网上银行系统
望采纳,谢谢
<span class="language-xml">#include<span class="hljs-tag"><<span class="hljs-name">stdio.h</span>></span>
#include<span class="hljs-tag"><<span class="hljs-name">stdlib.h</span>></span>
#include<span class="hljs-tag"><<span class="hljs-name">malloc.h</span>></span>
#include<span class="hljs-tag"><<span class="hljs-name">string.h</span>></span>
#include<span class="hljs-tag"><<span class="hljs-name">conio.h</span>></span>
#define MAXNUM 10000
#define Num 100
typedef struct train
{
int Train_num;//火车编号
char Train_end[10];//终点站
int Train_price;//票价
int leftnum;//余票数量
}Train_Ticket;
typedef struct person{
int mark;//标记
int snum;//身份号码
char sex[10];//买票人性别
//char Train_start[8];
char name[10];//买票人姓名
}Person;
typedef struct node
{
Train_Ticket data[MAXNUM];
int len;
}SeqList;
Person pa1[Num],pa2[Num];
void init_Seqlist(SeqList*);
void Sale(SeqList*,FILE*);
void Withdraw(FILE*);
void Inquiry(SeqList*);
void Select(SeqList*,FILE*);
void Delete(SeqList*);
void Init(SeqList*,struct train t);
void Input(SeqList*);
void Exchange(SeqList*,FILE *fp);
int main()
{
SeqList*q;
FILE *fp;
fp=fopen("train.dat","wb");
q=(SeqList*)malloc(sizeof(SeqList));
int sel;
Input(q);
system("cls");
system("color 3f");//改变颜色
system("cls");
while(1){
printf("-------------------------------------\n");
printf("-----Welcome to YaiTai trainstation--\n");
printf("1-- Set Tickets --");//初始化
printf("\n2-- Book Ticket --");//买票
printf("\n3-- Exchange Ticket --");//改签
printf("\n4-- Withdraw Ticket --");//退票
printf("\n5-- Delete Ticket --");//删除车次
printf("\n6-- Select Ticket --");//查询
printf("\n7-- Inquiry --");//
printf("\n8-- Exit --");//退出
printf("\n-------------------------------------");
printf("\nPlease input your choice:");
scanf("%d",&sel);
getchar();
switch(sel)
{
case 1:
init_Seqlist(q); break;
case 2:
if(q->len==0)
{
printf("------------------\n");
printf(" No tickets!\n");
printf("------------------\n");break;
}else{
Sale(q,fp); break;
}
case 3:
Exchange(q,fp); break;
case 4:
Withdraw(fp);break;
case 5:
Delete(q); break;
case 6:
Select(q,fp); break;
case 7:
Inquiry(q);break;
case 8:
printf("------------------------------\n");
printf("---Thank you for your use!---\n");
printf("------------------------------\n");
exit(1);
default : printf("Enter error!!\n");
}
printf("请按ENTER返回主菜单\n");
getchar();
}
return 0;
}
void Input(SeqList*L)
{
int i;
struct train tra[5]=</span><span class="hljs-template-variable">{{<span class="hljs-name">206</span>,<span class="hljs-string">"beijing"</span>,<span class="hljs-number">200</span>,<span class="hljs-number">20</span>},
{<span class="hljs-number">301</span>,<span class="hljs-string">"chengdu"</span>,<span class="hljs-number">350</span>,<span class="hljs-number">20</span>},
{<span class="hljs-number">432</span>,<span class="hljs-string">"shangha"</span>,<span class="hljs-number">400</span>,<span class="hljs-number">20</span>},
{<span class="hljs-number">783</span>,<span class="hljs-string">"qingdao"</span>,<span class="hljs-number">175</span>,<span class="hljs-number">20</span>},
{<span class="hljs-number">312</span>,<span class="hljs-string">"hangzho"</span>,<span class="hljs-number">480</span>,<span class="hljs-number">20</span>}
};
for(<span class="hljs-name">i</span>=<span class="hljs-number">0</span>;i<<span class="hljs-number">5</span>;i++)
Init(<span class="hljs-name">L</span>,tra[i]);
}
void Init(<span class="hljs-name">SeqList</span>*L,struct train t)
{
int <span class="hljs-attr">i</span>=L->len;
L->data[i].Train_num=t.Train_num;
strcpy(<span class="hljs-name">L-</span>>data[i].Train_end,t.Train_end);
L->data[i].Train_price=t.Train_price;
L->data[i].leftnum=t.leftnum;
L->len++;
}
void init_Seqlist(<span class="hljs-name">SeqList</span>*L)
{
int i,d,n;
<span class="hljs-attr">d</span>=L->len;
printf(<span class="hljs-name">"-------------车次设置-------------\n"</span>);
printf(<span class="hljs-name">"请输入你想设置的车次数量: "</span>);
scanf(<span class="hljs-name">"%d"</span>,&n);
for(<span class="hljs-name">i</span>=d;i<d+n;i++){
printf(<span class="hljs-name">"请输入车次编号:"</span>);
scanf(<span class="hljs-name">"%d"</span>,&L->data[i].Train_num);
printf(<span class="hljs-name">"请输入车次终点站:"</span>);
scanf(<span class="hljs-name">"%s"</span>,&L->data[i].Train_end);
printf(<span class="hljs-name">"请输入设置的票价:"</span>);
scanf(<span class="hljs-name">"%d"</span>,&L->data[i].Train_price);
printf(<span class="hljs-name">"请输入余票的数量:"</span>);
scanf(<span class="hljs-name">"%d"</span>,&L->data[i].leftnum);
L->len++;
if((<span class="hljs-name">L-</span>>len)><span class="hljs-number">1</span>&&i<(<span class="hljs-name">L-</span>>len-1))
{
printf(<span class="hljs-name">"请输入下班车次信息\n"</span>);
}
}
printf(<span class="hljs-name">"Initiation finish!\n"</span>);
}
void Sale(<span class="hljs-name">SeqList</span>*L,FILE *fp)
{
int <span class="hljs-attr">i</span>=<span class="hljs-number">0</span>,k,a,j;
if((<span class="hljs-name">fp</span>=fopen(<span class="hljs-name">"train.dat"</span>,<span class="hljs-string">"ab+"</span>))==<span class="hljs-literal">NULL</span>)
{
printf(<span class="hljs-name">"Cannot open file!\n"</span>);
exit(<span class="hljs-name">1</span>);
}
printf(<span class="hljs-name">"------------买票服务------------\n"</span>);
printf(<span class="hljs-name">"请输入你想购置车票数:\n"</span>);
scanf(<span class="hljs-name">"%d"</span>,&a);
if(<span class="hljs-name">a</span>><span class="hljs-number">1</span>){
printf(<span class="hljs-name">"请分别输入%d名乘客信息\n"</span>,a);
}
else if(<span class="hljs-name">a</span><=<span class="hljs-number">1</span>)
{
printf(<span class="hljs-name">"请输入该名乘客信息\n"</span>);
}
for(<span class="hljs-name">i</span>=<span class="hljs-number">0</span>;i<a;i++)
{
printf(<span class="hljs-name">"请先输入你的姓名:"</span>);
scanf(<span class="hljs-name">"%s"</span>,&pa1[i].name);
printf(<span class="hljs-name">"请选择性别<男>F<女>M:"</span>);
scanf(<span class="hljs-name">"%s"</span>,&pa1[i].sex);
do{
if(<span class="hljs-name">strcmp</span>(<span class="hljs-name">pa1</span>[i].sex,<span class="hljs-string">"F"</span>)!=<span class="hljs-number">0</span> && strcmp(<span class="hljs-name">pa1</span>[i].sex,<span class="hljs-string">"M"</span>)!=<span class="hljs-number">0</span>){
printf(<span class="hljs-name">"性别输入错误!请重新输入!\n"</span>);
scanf(<span class="hljs-name">"%s"</span>,&pa1[i].sex);
}
}while(<span class="hljs-name">strcmp</span>(<span class="hljs-name">pa1</span>[i].sex,<span class="hljs-string">"F"</span>)!=<span class="hljs-number">0</span> && strcmp(<span class="hljs-name">pa1</span>[i].sex,<span class="hljs-string">"M"</span>)!=<span class="hljs-number">0</span>);
printf(<span class="hljs-name">"请先输入你的身份证号码:"</span>);
scanf(<span class="hljs-name">"%d"</span>,&pa1[i].snum);
}
Inquiry(<span class="hljs-name">L</span>);
for(<span class="hljs-name">j</span>=<span class="hljs-number">0</span>;j<a;j++){
printf(<span class="hljs-name">"\nPlease <span class="hljs-built_in">input</span> the Train_number you want to book(1~%d):"</span>);
scanf(<span class="hljs-name">"%d"</span>,&k);
char answer[10];
for(<span class="hljs-name">i</span>=<span class="hljs-number">0</span>;i<L->len;i++){
if(<span class="hljs-name">k</span>==L->data[i].Train_num){
pa1[j].mark=i;//标记点位
printf(<span class="hljs-name">"确定选择购买 %d 车次的列车吗(yes or no)\n"</span>,L->data[i].Train_num);
scanf(<span class="hljs-name">"%s"</span>,&answer);
do
{
if(<span class="hljs-name">strcmp</span>(<span class="hljs-name">answer</span>,<span class="hljs-string">"yes"</span>)!=<span class="hljs-number">0</span>){
printf(<span class="hljs-name">"你的输入有误,请重新输入!\n"</span>);
scanf(<span class="hljs-name">"%s"</span>,&answer);
}
}while(<span class="hljs-name">strcmp</span>(<span class="hljs-name">answer</span>,<span class="hljs-string">"yes"</span>)!=<span class="hljs-number">0</span>);
if(<span class="hljs-name">strcmp</span>(<span class="hljs-name">answer</span>,<span class="hljs-string">"yes"</span>)==<span class="hljs-number">0</span>){
printf(<span class="hljs-name">"你已支付该车票的价格%d元\n"</span>,L->data[i].Train_price);
L->data[i].leftnum--;
}else if(<span class="hljs-name">strcmp</span>(<span class="hljs-name">answer</span>,<span class="hljs-string">"no"</span>)==<span class="hljs-number">0</span>){
printf(<span class="hljs-name">"请重新选择你要购买的车次编号\n"</span>);
}
}
}
printf(<span class="hljs-name">"Tickets purchased success!\n"</span>);
}
for(<span class="hljs-name">i</span>=<span class="hljs-number">0</span>;i<a;i++)
//printf(<span class="hljs-name">"%d\n"</span>,pa1[i].mark);
fwrite((<span class="hljs-name">void</span>*)pa1,sizeof(<span class="hljs-name">Person</span>),a,fp);
fclose(<span class="hljs-name">fp</span>);
}
void Delete(<span class="hljs-name">SeqList</span>*L)
{
int n,i,<span class="hljs-attr">true</span>=<span class="hljs-number">0</span>;
SeqList*q;
<span class="hljs-attr">q</span>=(<span class="hljs-name">SeqList</span>*)malloc(<span class="hljs-name">sizeof</span>(<span class="hljs-name">SeqList</span>));
printf(<span class="hljs-name">"\n--------------按照车次编号删除车次-------------\n"</span>);
printf(<span class="hljs-name">"请输入要删除的车次编号\n"</span>);
scanf(<span class="hljs-name">"%d"</span>,&n);
for(<span class="hljs-name">i</span>=<span class="hljs-number">0</span>;i<L->len;i++){
if(<span class="hljs-name">L-</span>>data[i].Train_num==n)
{
<span class="hljs-attr">true</span>=<span class="hljs-number">1</span>;
if(<span class="hljs-name">i</span><L->len-1)
{
L->data[i].Train_num=L->data[i+1].Train_num;
L->data[i].Train_price=L->data[i+1].Train_price;
L->data[i].leftnum=L->data[i+1].leftnum;
strcpy(<span class="hljs-name">L-</span>>data[i].Train_end,L->data[i+1].Train_end);L->len--;
printf(<span class="hljs-name">"--------------------\n"</span>);
printf(<span class="hljs-name">"--已删除该车次信息--\n"</span>);
printf(<span class="hljs-name">"--------------------\n"</span>);
}
if(<span class="hljs-name">i</span>==L->len-1)
{
L->len--;
printf(<span class="hljs-name">"--------------------\n"</span>);
printf(<span class="hljs-name">"--已删除该车次信息--\n"</span>);
printf(<span class="hljs-name">"--------------------\n"</span>);
}
}
}
if(<span class="hljs-name">true</span>==<span class="hljs-number">0</span>)
{
printf(<span class="hljs-name">"No this ticket numbers!\n"</span>);
}
}
void Select(<span class="hljs-name">SeqList</span>*L,FILE *fp)
{
SeqList*q;
<span class="hljs-attr">q</span>=(<span class="hljs-name">SeqList</span>*)malloc(<span class="hljs-name">sizeof</span>(<span class="hljs-name">SeqList</span>));
int i,a,b,<span class="hljs-attr">true</span>=<span class="hljs-number">0</span>;
printf(<span class="hljs-name">"-------------------查询服务-------------\n"</span>);
printf(<span class="hljs-name">"----------------------------------------\n"</span>);
printf(<span class="hljs-name">"1.按乘客的名称查询 2.按乘客证件号查询\n"</span>);
printf(<span class="hljs-name">"---------------------------------------\n"</span>);
if((<span class="hljs-name">fp</span>=fopen(<span class="hljs-name">"train.dat"</span>,<span class="hljs-string">"rb+"</span>))==<span class="hljs-literal">NULL</span>)
{
printf(<span class="hljs-name">"Canot open file !\n"</span>);
}
fseek(<span class="hljs-name">fp</span>,<span class="hljs-number">0</span>L,SEEK_END);
int <span class="hljs-attr">d</span>=ftell(<span class="hljs-name">fp</span>)/sizeof(<span class="hljs-name">Person</span>);
rewind(<span class="hljs-name">fp</span>);
fread((<span class="hljs-name">void</span>*)&pa2,sizeof(<span class="hljs-name">Person</span>),d,fp);
scanf(<span class="hljs-name">"%d"</span>,&a);
switch(<span class="hljs-name">a</span>)
{
case <span class="hljs-number">1</span>:
{
char na[20];
printf(<span class="hljs-name">"请输入该乘客的姓名:\n"</span>);
scanf(<span class="hljs-name">"%s"</span>,&na);
for(<span class="hljs-name">i</span>=<span class="hljs-number">0</span>;i<d;i++)
{
if(<span class="hljs-name">strcmp</span>(<span class="hljs-name">pa2</span>[i].name,na)==<span class="hljs-number">0</span>){
<span class="hljs-attr">b</span>=pa2[i].mark;
<span class="hljs-attr">true</span>=<span class="hljs-number">1</span>;
printf(<span class="hljs-name">"-------------%s的车次信息-------\n"</span>,pa2[i].name);
printf(<span class="hljs-name">"始发站:Yantai 终点站:%s\n"</span>,L->data[b].Train_end);
printf(<span class="hljs-name">"第%d号列车 票价: %d\n"</span>,L->data[b].Train_num,L->data[b].Train_price);
printf(<span class="hljs-name">"乘客姓名:%s\n"</span>,pa2[i].name);
printf(<span class="hljs-name">"乘客证件信息:%d\n"</span>,pa2[i].snum);
printf(<span class="hljs-name">"---------------------------------\n"</span>);
}
}
}
break;
case <span class="hljs-number">2</span>:
{
int w;
printf(<span class="hljs-name">"请输入你的证件号:\n"</span>);
scanf(<span class="hljs-name">"%d"</span>,&w);
for(<span class="hljs-name">i</span>=<span class="hljs-number">0</span>;i<Num;i++)
{
if(<span class="hljs-name">pa1</span>[i].snum==w)
{
<span class="hljs-attr">b</span>=pa2[i].mark;
printf(<span class="hljs-name">"-------------%s的车次信息-------\n"</span>,pa2[i].name);
printf(<span class="hljs-name">"始发站:Yantai 终点站:%s\n"</span>,L->data[b].Train_end);
printf(<span class="hljs-name">"第%d号列车 票价: %d\n"</span>,L->data[b].Train_num,L->data[b].Train_price);
printf(<span class="hljs-name">"乘客姓名:%s\n"</span>,pa2[i].name);
printf(<span class="hljs-name">"乘客证件信息:%d\n"</span>,pa2[i].snum);
printf(<span class="hljs-name">"---------------------------------\n"</span>);
}
}
}break;
default:
printf(<span class="hljs-name">"------------------------------\n"</span>);
printf(<span class="hljs-name">"--你的输入有误,请重新输入!--\n"</span>);
printf(<span class="hljs-name">"------------------------------\n"</span>);
Select(<span class="hljs-name">q</span>,fp);
break;
}
if(<span class="hljs-name">true</span>==<span class="hljs-number">0</span>)
{
printf(<span class="hljs-name">"没有该乘客的信息!\n"</span>);
}
fclose(<span class="hljs-name">fp</span>);
//getchar();
}
void Exchange(<span class="hljs-name">SeqList</span>*L,FILE *fp)
{
printf(<span class="hljs-name">"------------改签服务-----------\n"</span>);
printf(<span class="hljs-name">"请输入你的姓名:\n"</span>);
char ta[10];
if((<span class="hljs-name">fp</span>=fopen(<span class="hljs-name">"train.dat"</span>,<span class="hljs-string">"rb+"</span>))==<span class="hljs-literal">NULL</span>)
{
printf(<span class="hljs-name">"Canot open file !\n"</span>);
}
Person p[Num];
fseek(<span class="hljs-name">fp</span>,<span class="hljs-number">0</span>L,SEEK_END);
int <span class="hljs-attr">r</span>=ftell(<span class="hljs-name">fp</span>)/sizeof(<span class="hljs-name">Person</span>);
rewind(<span class="hljs-name">fp</span>);
fread((<span class="hljs-name">void</span>*)&p,sizeof(<span class="hljs-name">Person</span>),r,fp);
int m,i,d,j,y,h;
scanf(<span class="hljs-name">"%s"</span>,&ta);
for(<span class="hljs-name">i</span>=<span class="hljs-number">0</span>;i<r;i++)
{
if(<span class="hljs-name">strcmp</span>(<span class="hljs-name">p</span>[i].name,ta)==<span class="hljs-number">0</span>){
<span class="hljs-attr">d</span>=p[i].mark;
printf(<span class="hljs-name">"你目前的目的地是%s站\n"</span>,L->data[d].Train_end);
L->data[d].leftnum++;
}
}
Inquiry(<span class="hljs-name">L</span>);
printf(<span class="hljs-name">"请重新输入你想去的目的地的车次编号:"</span>);
scanf(<span class="hljs-name">"%d"</span>,&m);
for(<span class="hljs-name">j</span>=<span class="hljs-number">0</span>;j<L->len;j++)
{
if(<span class="hljs-name">m</span> == L->data[j].Train_num)
{
L->data[j].leftnum--;
printf(<span class="hljs-name">"-------------------------\n"</span>);
printf(<span class="hljs-name">"---你的改签服务已完成!--\n"</span>);
printf(<span class="hljs-name">"-------------------------\n"</span>);
<span class="hljs-attr">d</span>=j;
}
}
for(<span class="hljs-name">i</span>=<span class="hljs-number">0</span>;i<r;i++)
{
if(<span class="hljs-name">strcmp</span>(<span class="hljs-name">p</span>[i].name,ta)==<span class="hljs-number">0</span>){
p[i].mark=d;
<span class="hljs-attr">h</span>=i;
}
}
fseek(<span class="hljs-name">fp</span>,h*sizeof(<span class="hljs-name">Person</span>),SEEK_SET);
fwrite((<span class="hljs-name">void</span>*)&p,sizeof(<span class="hljs-name">Person</span>),<span class="hljs-number">1</span>,fp);
fclose(<span class="hljs-name">fp</span>);
}
void Withdraw(<span class="hljs-name">FILE</span> *fp)
{
printf(<span class="hljs-name">"----------退票服务-------\n"</span>);
char na[10];
printf(<span class="hljs-name">"请输入你的姓名:\n"</span>);
scanf(<span class="hljs-name">"%s"</span>,&na);
Person *pe;
int i,j;
if((<span class="hljs-name">fp</span>=fopen(<span class="hljs-name">"train.dat"</span>,<span class="hljs-string">"rb"</span>))==<span class="hljs-literal">NULL</span>)
{
printf(<span class="hljs-name">"The file cannot be opened!\n"</span>);
}
fseek(<span class="hljs-name">fp</span>,<span class="hljs-number">0</span>L,SEEK_END);
int <span class="hljs-attr">n</span>=ftell(<span class="hljs-name">fp</span>)/sizeof(<span class="hljs-name">Person</span>);
if(<span class="hljs-name">n</span>==<span class="hljs-number">1</span>)
{
fclose(<span class="hljs-name">fp</span>);
<span class="hljs-attr">fp</span>=fopen(<span class="hljs-name">"train.dat"</span>,<span class="hljs-string">"wb"</span>);
}
<span class="hljs-attr">pe</span>=(<span class="hljs-name">Person</span>*)malloc(<span class="hljs-name">sizeof</span>(<span class="hljs-name">Person</span>)*(<span class="hljs-name">n-1</span>));
rewind(<span class="hljs-name">fp</span>);
for(<span class="hljs-name">j</span>=<span class="hljs-attr">i</span>=<span class="hljs-number">0</span>;i<n;i++)
{
fread((<span class="hljs-name">void</span>*)(<span class="hljs-name">pe</span>+j),sizeof(<span class="hljs-name">Person</span>),<span class="hljs-number">1</span>,fp);
if((<span class="hljs-name">strcmp</span>((<span class="hljs-name">pe</span>+j)->name,na))==<span class="hljs-number">0</span>)
continue;
j++;
}
fclose(<span class="hljs-name">fp</span>);
<span class="hljs-attr">fp</span>=fopen(<span class="hljs-name">"train.dat"</span>,<span class="hljs-string">"wb"</span>);
fwrite((<span class="hljs-name">void</span>*)pe,sizeof(<span class="hljs-name">Person</span>),n-1,fp);
printf(<span class="hljs-name">"-------------------------\n"</span>);
printf(<span class="hljs-name">"---你的退票服务已完成!--\n"</span>);
printf(<span class="hljs-name">"-------------------------\n"</span>);
}
void Inquiry(<span class="hljs-name">SeqList</span>*L)
{
int i;
if(<span class="hljs-name">L-</span>><span class="hljs-attr">len</span>==<span class="hljs-number">0</span>)
{
printf(<span class="hljs-name">"No ticket left!\n"</span>);
}
else
{
printf(<span class="hljs-name">"----------------------------Tickets information----------------------\n"</span>);
printf(<span class="hljs-name">"火车车次编号 车 次 路 线 车票售价 剩余票数 "</span>);
for(<span class="hljs-name">i</span>=<span class="hljs-number">0</span>;i<L->len;i++){
printf(<span class="hljs-name">"\n %d Yantai--%s %d %d\n"</span>,L->data[i].Train_num,L->data[i].Train_end,L->data[i].Train_price,L->data[i].leftnum);
printf(<span class="hljs-name">"---------------------------------------------------------------------\n"</span>);
}
}
}</span>