c语言程序设计本科课程设计.docx
- 文档编号:9061765
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:10
- 大小:42.97KB
c语言程序设计本科课程设计.docx
《c语言程序设计本科课程设计.docx》由会员分享,可在线阅读,更多相关《c语言程序设计本科课程设计.docx(10页珍藏版)》请在冰豆网上搜索。
c语言程序设计本科课程设计
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;
stnictnote*nextPtr;
};//结构
typedefstructnoteLISTNODE;
typedefLISTNODE*LISTNODEPTR;
LISTNODEPTRheadPtr=NULLJastPtr=NULL,headPtrl=NULL;
intenterChoice(void);
voidnewstudent(void);
voidbuyfood(void);
voidrecharge(void);
voidfind(void);
voiddeleteNode(void);
voidprintList(LISTNODEPTRcurrentPtr);
intenterChoice(void);
voiddestroyList(LISTNODEPTRheadPtr);〃函数原型
voidmain(){
intchoice;
whiIe((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(Hpause,r);return;
)
voidnewstudent(void)〃排队,新加入一个同学{
LISTNODEPTRcurrentPlr=NULL;
currentPtr==malk)c(sizeof(LISTNODE));/*分配结点内存*/
if(currentPtr!
=NULL){/*插入结点号
if(headPtr=NULL){/*若创建的是头结点*/
headPtr=currentPtr;
lastPtr=currcntPtr:
)
else{
lastPtr->nextPtr=currcntPtr;/*将结点连上链表尾结点*/
lastPtr=currentPtr;/*使lastPtr指向当前链表的最后一个结点*/
)
printf(MEnterID\nH);
scanf(,,%d,\¤tPtr->ID);
printf(MEntername\nH);
getcharO;
gets(currentPtr->name);
printf(MEntermoney\i)H);
scanf(n%f\¤tPtr->money);
printf(HEnterexpensemoney\n,r);
scanf(n%f\&currcntPtr->expensemoney);
)
lastPtr->nextPtr=NULLJ*设置链表结束标记*/
)
voidbuyfood(void)〃买饭,并将第一个在点册U掉
(
LISTNODEPTRcurrentPlr=NULL;
printf("买饭成功,退出队伍");
if(headPtr->nextPtr!
=NULL){
currentPtr=headPtr->nextPtr;
headPtr=currentPtr;
else{
headPtr=NULL;
)
)
voidrecharge(void){〃充值
intnum;
printf("请输入您要充值的金额:
\n");
scanf(M%d'\&num);
headPtr->expensemoney=headPtr->expcnsemoney+nunK
)
voidfind(void)〃查找并打印
(
LISTNODEPTRcurrentPtr;
intID1;
currentPtr=headPtr;
printf("请输入要查询的学号:
\n");
scanf(M%dH.&IDl);
while(currentPtr!
=NULL&¤tPtr->ID!
=ID1){
currentPtr=currentPtr->nextPtr:
)
if(currentPtr=NULL){
printf("队列中无这名同学)
}else{printf(H%-l6s%-16s%-lls%lOs\n”JID",“name","money"Jexpensenioney”);
printf(N%-l6d%-l6s%-11.2f%10.2f\n,\currentPtr->IDxurrentPtr->nanie,currentPtr->moneyxurrentPtr->expensemoney);
)
voiddeleteNode(void)〃查找并删除
(
LISTNODEPTRpreviousPtncurrentPtr;
intID1;
previousPtr=NULL;
currentPtr=headPtr:
/*将头接点地址赋给currentPtr*/printf(”请输入要删除的学号:
\n”);
scanf(H%dM.&IDl);
/*查找待删除结点,若找到,则由current指向该结点*/
while(currentPtr!
=NULL&¤tPtr->ID!
=ID1){
previousPtr=currentPtr:
currcntPtr=currentPtr->nextPtr;
)
if(currentPtr!
=NULL){/*如果找到要删除的结点*/
if(previousPtr==NULL)/*删除的是头结点*/
headPtr=currentPtr->nextPtr;/*更新头结点
else/*删除的是中间结点或者尾结点*/
previousPtr->nextPtr=currentPtr->nextPtr:
free(currentPtr);/*释放结点内存*/
)else
printf("队列中无这名同学")”没有找到符合条件的结点
)
voidprintLisULISTNODEPTRcuirentPtr)〃打印(
if(currentPlr==NULL)
printf("thelistisempty\nM);
else{
printf(v%-l6s%-16s%-lls%lOs\n”JID”「name”「money”,“expensemoney”);while(currentPtr!
=NULL){
printf(N%-l6d%-l6s%-11.2f%10.2f\n,\currentPtr->IDxurrentPtr->nanie,currenlPtr->money,currentPtr->expensemoney);
currentPtr=currentPtr->nextPtr:
)
)
)
intenterChoice(void)
〃选项1.2,345代表不同的操作
I
intmenuChoice;
printf(u\nEnteryourchoice"】"
”1,排队宿”
”2,第一个同学打饭,并删除该同学信息\n”
"3.第一个同学充值\n”
"4.查询一个同学的信息,并打印\n"
"5.删除一个同学的信息也"
"6.显示当前所有排队同学的信息\n”
"7,退出\n");
scanf(M%dH.&menuChoice);
returnmenuChoice;
〃返回对应的选项序号
)
voiddestroyList(LISTNODEPTRheadPtr)〃释放内存〃释放动态空间
(
LISTNODEPTRtempPtr;
while(headPtr!
=NULL){
teinpPtr=headPtr;
headPtr=headPtr->nextPtr;
free(tempPtr);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 本科 课程设计