C语言课程设计报告8822207Word格式文档下载.docx
- 文档编号:18595635
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:26
- 大小:21.07KB
C语言课程设计报告8822207Word格式文档下载.docx
《C语言课程设计报告8822207Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告8822207Word格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。
李四1234男217月1日东二333
e使用菜单实现功能的正确的选择
f所有节点信息都是动态生成。
6测试程序
应列出测试大纲对程序进行测试;
应保证测试用例测试到程序的各种边缘情况
二.总体设计
系统包括的函数有
Main.c:
整个系统的主函数
Menu.c:
系统的主界面
Creat.c:
创建链表
Add.c:
追加记录
Del.c:
删除记录
Modify.c:
修改记录
Read.c:
从外部文件读取记录
Save.c:
保存记录到外部文件
Search.c:
查找记录
Skim.c:
浏览记录
Headyy.h:
头文件
系统功能模块结构图:
Main—menu—Creat.c
Add.c
Del.c
Modify.c
Read.c
Save.c
Search.c
Skim.c
三.详细设计
程序清单:
headyy.h
#ifndefNULL
#defineNULL0
#endif
#include<
stdio.h>
malloc.h>
conio.h>
string.h>
stdlib.h>
#defineLENsizeof(structaddbok)
#definePRprintf("
%-12s%-12s%-12s%-10s%-10s%-10s%-12s\n"
"
Num."
Name"
Tel."
Sex"
Age"
Birtday"
Dormitory"
);
structaddbok/*声明结构体类型*/
{longnum;
charnam[16];
/*储存编号*/
chartel[18];
/*储存电话*/
charsex[4];
/*学生性别*/
intage;
/*学生年龄*/
charbir[10];
/*学生生日*/
chardor[13];
/*学生宿舍*/
structaddbok*next;
};
voidprint(structaddbok*);
具体实现:
创建了结构体变量addbok
main.c
#include<
headyy.h>
externintn=0;
voidmain()
{intc,color,i=0;
structaddbok*head;
head=NULL;
for(color=0;
color<
6;
color++)
{
textcolor(color);
/*字体颜色*/
textbackground(color+2);
/*屏幕颜色*/
clrscr();
printf("
\n\n\n\n\n\n\n\n\n\n\t\t\tWelcometoStudents'
AddressSystem"
\n\n"
\t\t\t\t\t\tDesignbyYangYing"
sleep
(1);
/*延时1秒*/
}
while(i==0)
{
system("
cls"
============================Students'
AddressSystem============================"
****************************************\n"
*NO.:
Name:
YangYingClass:
ScienceOfComputerClass1*\n"
================================================================================"
c=meun();
switch(c)
case1:
head=creat();
break;
/*指向creat.c*/
case2:
head=add(head);
/*指向add.c*/
case3:
skim(head);
/*指向skim.c*/
case4:
head=modify(head);
/*指向modify.c*/
case5:
search(head);
/*指向search.c*/
case6:
head=del(head);
/*指向del.c*/
case7:
head=read();
/*指向read.c*/
case8:
save(head);
/*指向save.c*/
case0:
exit(0);
/*退出系统*/
default:
\Discorrect!
Pleaseenteragain.\n\n"
getch();
}
设置了开始的欢迎词,并且对照参考书设置了背景色和字体颜色,每种颜色延时1秒,在此函数中输入了自己的学号班级姓名,并且用switch语句实验了选择功能操作的函数指向。
menu.c
externintn;
intmeun(void)
{
inti;
#####menu#####\n"
************************************************************\n"
|1:
Creat2:
Additem3:
Skimitems|\n"
|4:
Modifyitem5:
Searchitem6:
Deleteitem|\n"
|7:
Readfile8:
Saveitem0:
Exitsystem|\n"
\n\tPleasechoosethenumberwhichyouWANT:
"
scanf("
%d"
&
i);
return(i);
主要表现了主函数的菜单,供用户选择。
1选项是建立链表并且创建多个新记录
2选项是在链表后面追加若干个记录
3选项是浏览存储的记录
4选项是修改已有的记录
5选项是查找记录
6选项是删除系统中的记录
7选项是从外部文件读取记录
8选项是保存记录到外部文件
0选项是推出系统
creat.c
structaddbok*creat(void)/*引用结构体addbok*/
inti=2;
structaddbok*p1,*p2,*head;
floata;
p1=p2=(structaddbok*)malloc(LEN);
\n========================Enteranewrecord,STOPby\"
0\"
==========================="
\n"
NO.1:
\n"
Num.:
%ld"
p1->
num);
if(p1->
num==0)
{printf("
\nWrittenover\n"
return(head);
Name:
%s"
p1->
nam);
Tel.:
tel);
Sex:
sex);
Age:
age);
Birthday:
bir);
Dormitory:
dor);
while(p1->
num!
=0)
n=n+1;
if(n==1){head=p1;
elsep2->
next=p1;
p2=p1;
p1=(structaddbok*)malloc(LEN);
NO.%d:
i);
i=i+1;
{p2->
next=NULL;
p2->
创建链表并且输入若干个记录,返回菜单使用“0”。
add.c
structaddbok*add(structaddbok*head)
structaddbok*p1,*p2,*p0;
intyy=1;
\nTherecordsyouenteredwillbeaddtothelastrecord.\n"
while(yy!
p0=p2=head;
=====Enteranewrecord=====\n"
if(p2==NULL)
head=p1;
p1=NULL;
else
{if(p2->
next==NULL)
p1->
while(p2->
next!
=NULL)
p0=p2;
p2=p2->
next;
\n----Writtenover----\n"
\nEnter\"
tothemenu,Anykeygoon:
"
yy);
system("
return(head);
追加记录,具体操作方法和creat.c一样
del.c
structaddbok*del(structaddbok*head)
{structaddbok*p1,*p2;
longnum;
\n=================================Deleterecord=================================\n"
while(yy!
=0)
if(head==NULL)
\nEmpty\n"
gotoend;
\nEnterthenum.youwanttodelete:
p1=head;
while(num!
=p1->
num&
&
{p2=p1;
p1=p1->
if(num==p1->
num)
if(p1==head)
{head=p1->
n=n-1;
printf("
\n-----~Delete~------\n"
gotoend;
else
next=p1->
else{printf("
\nSorry,cannotfindtherecord!
end:
{printf("
tothemenu,Anynumbergoon:
scanf("
删除记录。
在没有记录的时候系统将会给出提示“空”,若有记录则按照记录的学生编号删除,若没有用户输入的学生则显示找不到该记录。
modify.c
structaddbok*modify(structaddbok*head)
structaddbok*p1,*p2;
intx,yy=1;
\n================================Modifyarecord================================\n"
\n===Norecordnow===\n"
\nPleaseinputtheNum.:
\nHOHO!
TheRecordyouwantisbelow:
%-12s%-12s%-12s%-10s%-10s%-10s%-12s"
Birthday"
%-12ld%-12s%-12s%-10s%-10d%-10s%-12s\n"
num,p1->
nam,p1->
tel,p1->
sex,p1->
age,p1->
bir,p1->
\n================================================================================\n"
{printf("
\n*************WhichonedoyouwanttoModify?
***************\n"
1:
Num.2:
Name\n"
3:
Tel.4:
Age\n"
\n************************************************************\n"
yourchoose:
x);
switch(x)
OriginNum.:
%ld\n"
PleaseinputanewNum.:
num=num;
\n**Success!
**\n"
break;
Originname\n"
\nPleaseinputanewname:
OriginTel.:
%s===\n"
\nPleaseinputanewTel.:
printf("
Originage:
%d===\n"
\nPleaseinputthenewage:
scanf("
}
\nSorry,cannotfindtherecordyouwant!
getch();
用了switch语句实现了按照学生编号,学生姓名,学生电话,学生年龄这4项功能的修改。
修改的记录将替换原有的记录。
read.c
structaddbok*read(void)
structaddbok*p1,*p2,*kt;
FILE*fp;
fp=fopen("
addbok.txt"
rb"
n=getw(fp);
kt=p1;
fread(p1,sizeof(structaddbok),1,fp);
for(i=0;
i<
(n-1);
i++)/*此语句可以这样用我不知道,网上翻来的*/
/*读写一个数据块*/
fclose(fp);
\n===AlreadyReading===\n\n"
return(kt);
从外部文件读取addbok.txt,addbok.txt是保存了用户所输入的记录的文件。
其中for语句有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 8822207