c语言程序设计 本 科 课 程 设 计.docx

上传人:b****3 文档编号:4585206 上传时间:2023-05-07 格式:DOCX 页数:14 大小:90.63KB
下载 相关 举报
c语言程序设计 本 科 课 程 设 计.docx_第1页
第1页 / 共14页
c语言程序设计 本 科 课 程 设 计.docx_第2页
第2页 / 共14页
c语言程序设计 本 科 课 程 设 计.docx_第3页
第3页 / 共14页
c语言程序设计 本 科 课 程 设 计.docx_第4页
第4页 / 共14页
c语言程序设计 本 科 课 程 设 计.docx_第5页
第5页 / 共14页
c语言程序设计 本 科 课 程 设 计.docx_第6页
第6页 / 共14页
c语言程序设计 本 科 课 程 设 计.docx_第7页
第7页 / 共14页
c语言程序设计 本 科 课 程 设 计.docx_第8页
第8页 / 共14页
c语言程序设计 本 科 课 程 设 计.docx_第9页
第9页 / 共14页
c语言程序设计 本 科 课 程 设 计.docx_第10页
第10页 / 共14页
c语言程序设计 本 科 课 程 设 计.docx_第11页
第11页 / 共14页
c语言程序设计 本 科 课 程 设 计.docx_第12页
第12页 / 共14页
c语言程序设计 本 科 课 程 设 计.docx_第13页
第13页 / 共14页
c语言程序设计 本 科 课 程 设 计.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c语言程序设计 本 科 课 程 设 计.docx

《c语言程序设计 本 科 课 程 设 计.docx》由会员分享,可在线阅读,更多相关《c语言程序设计 本 科 课 程 设 计.docx(14页珍藏版)》请在冰点文库上搜索。

c语言程序设计 本 科 课 程 设 计.docx

c语言程序设计本科课程设计

河北农业大学

本科课程设计

 

课程:

C语言程序设计

学院:

信息学院

专业班级:

学号:

学生姓名

指导教师:

教师职称:

教授

 

2012年6月17日

一.设计内容

1、编写模拟同学排队打饭程序,只允许在队尾排队不允许插队。

记录的学生信息可简可繁例如:

学号,姓名,金额,消费总额等。

实现学生排队、打饭、充值、查询(按学号和姓名)、删除(学号)、按消费总额排序等操作。

程序所显示的菜单内容如下:

请选择下面的一个项目:

1排队

2打饭

3充值

4查询

5删除

6按消费总额排序

7显示

8退出

 

二.设计要求

程序要求

1)各个题目所需信息均采用链表结构存储;

2)各项功能的使用通过选择菜单项实现;

3)显示或输出可根据需要显式输出(即选择菜单中的输出或显示)或隐式输出(完成某项操作后即刻输出);

4)可以选择使用文件存储系统中的数据

5)如果同学认为自己有特殊想法也可编程实现。

三.设计分析

(1)建立一个函数,用来保存学生的学号,姓名,电话号码,班级,饭卡余额,密码等信息,完成餐卡功能。

主函数用八个子函数,分别完成排队,打饭,充值,查询,删除,消费总额,显示,退出。

(2)main()主函数:

定义本程序用到的各个变量及函数,然后读取文件进行的流程图如图

(一)

 

二)

 

(三)

 

 

#include

#include

structnote{

intID;

charname[40];

floatmoney;

floatexpensemoney;

structnote*nextPtr;

};//结构

typedefstructnoteLISTNODE;

typedefLISTNODE*LISTNODEPTR;

LISTNODEPTRheadPtr=NULL,lastPtr=NULL,headPtr1=NULL;

intenterChoice(void);

voidnewstudent(void);

voidbuyfood(void);

voidrecharge(void);

voidfind(void);

voiddeleteNode(void);

voidprintList(LISTNODEPTRcurrentPtr);

intenterChoice(void);

voiddestroyList(LISTNODEPTRheadPtr);//函数原型

voidmain()

{

intchoice;

while((choice=enterChoice())!

=7){

switch(choice){

case1:

newstudent();

break;

case2:

buyfood();

break;

case3:

recharge();

break;

case4:

find();

break;

case5:

deleteNode();

break;

case6:

printList(headPtr);

break;

}

}

destroyList(headPtr);//选择功能

system("pause");

return;

}

voidnewstudent(void)//排队,新加入一个同学

{

LISTNODEPTRcurrentPtr=NULL;

currentPtr==malloc(sizeof(LISTNODE));/*分配结点内存*/

if(currentPtr!

=NULL){/*插入结点*/

if(headPtr==NULL){/*若创建的是头结点*/

headPtr=currentPtr;

lastPtr=currentPtr;

}

else{

lastPtr->nextPtr=currentPtr;/*将结点连上链表尾结点*/

lastPtr=currentPtr;/*使lastPtr指向当前链表的最后一个结点*/

}

printf("EnterID\n");

scanf("%d",¤tPtr->ID);

printf("Entername\n");

getchar();

gets(currentPtr->name);

printf("Entermoney\n");

scanf("%f",¤tPtr->money);

printf("Enterexpensemoney\n");

scanf("%f",¤tPtr->expensemoney);

}

lastPtr->nextPtr=NULL;/*设置链表结束标记*/

}

voidbuyfood(void)//买饭,并将第一个节点删掉

{

LISTNODEPTRcurrentPtr=NULL;

printf("买饭成功,退出队伍");

if(headPtr->nextPtr!

=NULL){

currentPtr=headPtr->nextPtr;

headPtr=currentPtr;

}

else{

headPtr=NULL;

}

}

voidrecharge(void){//充值

intnum;

printf("请输入您要充值的金额:

\n");

scanf("%d",&num);

headPtr->expensemoney=headPtr->expensemoney+num;

}

voidfind(void)//查找并打印

{

LISTNODEPTRcurrentPtr;

intID1;

currentPtr=headPtr;

printf("请输入要查询的学号:

\n");

scanf("%d",&ID1);

while(currentPtr!

=NULL&¤tPtr->ID!

=ID1){

currentPtr=currentPtr->nextPtr;

}

if(currentPtr==NULL){

printf("队列中无这名同学");

}

else{

printf("%-16s%-16s%-11s%10s\n","ID","name","money","expensemoney");

printf("%-16d%-16s%-11.2f%10.2f\n",currentPtr->ID,currentPtr->name,currentPtr->money,currentPtr->expensemoney);

}

}

voiddeleteNode(void)//查找并删除

{

LISTNODEPTRpreviousPtr,currentPtr;

intID1;

previousPtr=NULL;

currentPtr=headPtr;/*将头接点地址赋给currentPtr*/

printf("请输入要删除的学号:

\n");

scanf("%d",&ID1);

/*查找待删除结点,若找到,则由currentPt指向该结点*/

while(currentPtr!

=NULL&¤tPtr->ID!

=ID1){

previousPtr=currentPtr;

currentPtr=currentPtr->nextPtr;

}

if(currentPtr!

=NULL){/*如果找到要删除的结点*/

if(previousPtr==NULL)/*删除的是头结点*/

headPtr=currentPtr->nextPtr;/*更新头结点*/

else/*删除的是中间结点或者尾结点*/

previousPtr->nextPtr=currentPtr->nextPtr;

free(currentPtr);/*释放结点内存*/

}

else

printf("队列中无这名同学");//没有找到符合条件的结点

}

voidprintList(LISTNODEPTRcurrentPtr)//打印

{

if(currentPtr==NULL)

printf("thelistisempty\n");

else{

printf("%-16s%-16s%-11s%10s\n","ID","name","money","expensemoney");

while(currentPtr!

=NULL){

printf("%-16d%-16s%-11.2f%10.2f\n",currentPtr->ID,currentPtr->name,currentPtr->money,currentPtr->expensemoney);

currentPtr=currentPtr->nextPtr;

}

}

}

intenterChoice(void)//选项1,2,3,4,5代表不同的操作

{

intmenuChoice;

printf("\nEnteryourchoice\n"

"1.排队\n"

"2.第一个同学打饭,并删除该同学信息\n"

"3.第一个同学充值\n"

"4.查询一个同学的信息,并打印\n"

"5.删除一个同学的信息\n"

"6.显示当前所有排队同学的信息\n"

"7.退出\n");

scanf("%d",&menuChoice);

returnmenuChoice;//返回对应的选项序号

}

voiddestroyList(LISTNODEPTRheadPtr)//释放内存//释放动态空间

{

LISTNODEPTRtempPtr;

while(headPtr!

=NULL){

tempPtr=headPtr;

headPtr=headPtr->nextPtr;

free(tempPtr);

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2