自C语言程序设计 题库管理系统.docx
《自C语言程序设计 题库管理系统.docx》由会员分享,可在线阅读,更多相关《自C语言程序设计 题库管理系统.docx(25页珍藏版)》请在冰豆网上搜索。
![自C语言程序设计 题库管理系统.docx](https://file1.bdocx.com/fileroot1/2022-10/12/541236ed-fd4d-474c-81f0-79e54880846a/541236ed-fd4d-474c-81f0-79e54880846a1.gif)
自C语言程序设计题库管理系统
程序设计基础课程设计报告
班 级:
计算机科学与技术1103班
姓 名:
杨广宇
指导教师:
胡宏涛
完成日期:
2012年9月6日
(题目)
1.设计题目与要求
(简要介绍课程设计题目内容与要求。
)
1设计内容
要求输入试题(仅限选择题和填空题)基本信息,实现试题浏览.,查询,修改功能,并将数据保存至文本文件。
2要求ﻩ
功能完善,界面友好。
2. 算法设计与描述(要求有相关流程图)
2.1 算法设计与描述
(描述算法设计、实现过程。
)
1.提供可操作的主菜单:
输出主菜单,用户可根据菜单来选择操作。
根据客户输入的选项来运行不同的功能,运行不同的函数。
2.。
试题信息的录入函数:
按照提示输入题的题号,题目内容,并提示用户是否继续录入,每输入一个记录,全局变量n就自增,最后最为函数的返回值返回。
3.保存试题信息函数:
将文件的所有数据通过fprintf来写入指定文本文档,完成后关闭文件,没有返回值
4.载入试题信息函数:
通过fopen函数打开指定文件,通过fscanf来读取文件里的数据,最后返回记录数,避免了每次打开时都要输入数据的麻烦。
5.查询记录函数:
细分为按题号,题目两种方式来进行查询记录,并能对查询记录不存在进行提示。
遍历所有结构体找出符合的输出。
6.修改记录函数:
首先判断用户要修改的试题序号是否存在,进行相应的系统提示,然后遍历所有记录找出符合的,按照提示依次进行修改项目,返回记录值不变(没增加也没减少)。
7.删除记录函数:
首先判断用户要删除的试题序号是否存在,进行相应的系统提示,然后遍历所有记录找出符合的删除,冰讲后面的所有数据向前移动一个位置,记录数减一并返回。
2.2主要流程图
(用N—S图描述。
)
1,、输入函数
2、保存函数
3、载入函数
4、查询函数
5、修改函数
6、删除函数
3.设计软硬件环境
硬件设备 系统:
MicrosoftWindows XPProfessional版本2002
机型:
Inter®Core™2DuoCPUE8400 @3.00GHz2.99GHz,2.00GB内存
软件设备 MicrosoftVisualC++ 6.0应用程序调试
4.源程序代码清单
#include<stdio.h>
#include<stdlib.h>
#include
typedefstruct
ﻩ{
ﻩﻩchartihao[10];ﻩ //题号
ﻩchartimu[15];ﻩ //题目
}Data;
Datada[80];
intmenu_select()
ﻩ{
ﻩcharc;
ﻩﻩdo{
ﻩﻩsystem("cls");
ﻩﻩprintf("\t\t\t========题库管理系统========\n");
ﻩprintf("\t\t\t┌───────────┐ \n");
printf("\t\t\t│ 1.题目的输入 │\n");
ﻩﻩprintf("\t\t\t│2.题目的浏览 │\n");
ﻩﻩprintf("\t\t\t│3.题目信息更改│ \n"); //包括删除,插入和更改
ﻩprintf("\t\t\t│4.题目信息查询 │\n");
ﻩﻩprintf("\t\t\t│5.题目文件操作│ \n"); //包括保存,读取和复制
ﻩﻩprintf("\t\t\t │ 0. 退出管理系统 │ \n");
printf("\t\t\t└───────────┘\n");
ﻩﻩprintf("\t\t\t============================\n");
printf("\n\t\t请您选择(0-5):
");
ﻩc=getchar();
}while(c<'0'||c>'5');
ﻩﻩreturn(c-'0');
}
voidtihaosort(Datadat[],intn) //题号排序
{
inti,j;
Datatemp;
ﻩfor(i=0;ida[i]=dat[i];
ﻩfor(i=0;i<n-1;++i)
for(j=i+1;jﻩﻩif(strcmp(da[i].tihao,da[j].tihao)>0)
ﻩ{
ﻩﻩﻩtemp=da[i];da[i]=da[j];da[j]=temp;
ﻩ}
ﻩprintf("\t\t========排序成功========\n");
}
voidSaveText(Data dat[],int n) //保存函数
{
inti;
FILE*fp; /*指向文件的指针*/
if((fp=fopen("txl.txt","wb"))==NULL) /*打开文件,并判断打开是否正常*/
{
printf("\t不能打开文件\n"); /*没打开*/
exit
(1); /*退出*/
}
fprintf(fp,"%d",n); /*将记录数写入文件*/
ﻩfprintf(fp,"\r\n");
for(i=0;i {
ﻩfprintf(fp,"%-8s%-6s",dat[i].tihao,dat[i].timu);
fprintf(fp,"\r\n"); /*将换行符号写入文件*/
}
ﻩfclose(fp);
}
intLoadText(Datadat[]) //载入函数
{
inti,n;
ﻩFILE*fp;
if((fp=fopen("txl.txt","r"))==NULL)
{
ﻩﻩprintf("不能打开文件\n");
ﻩexit
(1);
ﻩ}
ﻩfscanf(fp,"%d",&n);ﻩ /*读入记录数*/
for(i=0;iﻩﻩfscanf(fp,"%s%s\n",dat[i].tihao,dat[i].timu);ﻩ/*按格式读入记录*/
fclose(fp);
ﻩreturn n;ﻩﻩ /*返回记录数*/
}
intCharu(Datadat[],intn) //插入函数
{
Datatemp;ﻩ /*新插入记录信息*/
ﻩint i=0,j,k;
ﻩchars[20];
ﻩdo
ﻩ{
ﻩprintf("\t请插入您的数据\n");
ﻩﻩprintf("\t题号:
");
ﻩscanf("\t%s",temp.tihao);
for(k=0;kﻩﻩ{
ﻩif(strcmp(dat[k].tihao,temp.tihao)==0)
ﻩ{
ﻩﻩﻩprintf("\t-------该记录已存在,请重新输入!
-------\n");
ﻩﻩﻩsystem("pause");
ﻩﻩsystem("cls");
ﻩﻩbreak;
ﻩﻩ}
}
ﻩ}while(strcmp(dat[k].tihao,temp.tihao)==0);
ﻩprintf("\t题目:
");
ﻩscanf("\t%s",temp.timu);
printf("\t请输入插入位置的题号:
");
ﻩscanf("\t%s",s);ﻩ /*输入插入位置的题号*/
while(strcmp(dat[i].tihao,s)!
=0&&i<n) i++;
if(i==n)
{
printf("\t------------题库中没有记录,请查询后再操作!
-------------\n");
ﻩreturn n;
ﻩ}
for(i=0;strcmp(dat[i].tihao,s)!
=0;i++);ﻩ
ﻩprintf("\n\t\t***********插入成功!
************\n");
ﻩfor(j=n-1;j>=i;j--)ﻩ /*从最后一个结点开始向后移动一条*/
{
ﻩstrcpy(dat[j+1].tihao,dat[j].tihao); /*当前记录的题号拷贝到后一条*/
ﻩstrcpy(dat[j+1].timu,dat[j].timu);
}
ﻩstrcpy(dat[i].tihao,temp.tihao);ﻩ /*将新插入记录的题号拷贝到第i个位置*/
ﻩstrcpy(dat[i].timu,temp.timu);
n++;ﻩ ﻩ /*记录数加1*/
ﻩreturn n;
}
int Shuru(Datadat[],intn) //输入函数
{
inti=0;
ﻩchar ch;
ﻩwhile(ch!
='n'&&ch!
='N') //用来判断是否继续输入
{
ﻩsystem("cls");
printf("\t题号:
");
ﻩscanf("\t%s",dat[n+i].tihao);
ﻩprintf("\t题目:
");
ﻩﻩscanf("\t%s",dat[n+i].timu);
ﻩprintf("\n\t是否继续添加?
(Y/N)");
ﻩscanf("\t%c",&ch);
ﻩi++;
ﻩ}
return (n+i); //其实输入除了N和n的任意键均能实现继续添加的功能
}
voidList(Datadat[],int n) //显示函数
{
int i;
ﻩprintf("========================共%d条记录============================\n",n);
printf("┌─────────────────────────────┐\n"); /*格式*/
printf("│题号│ 题目 │\n");
printf("└─────────────────────────────┘\n");
ﻩfor(i=0;i{
ﻩﻩprintf("%2s\t%3s\n",dat[i].tihao,dat[i].timu); /*按格式输出*/
ﻩprintf("───────────────────────────────\n");
}
system("pause");
}
intShanchu(Data dat[],intn) //删除函数
{
chars[20];ﻩ